Home > Archive > Fortran > February 2008 > [ANN] TCBuild: A New Build Tool for Fortran
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
[ANN] TCBuild: A New Build Tool for Fortran
|
|
|
|
|
| > I've just released a build tool (TCBuild) that I developed especially
> for Fortran projects. It is covered by a BSD open-source license._
>
> The tool is written in python and has some advanced features.
Fortran indeed lacks good build tools... but that sentence just kills
TCBuild for me, and maybe for other people as well:
[from http://www.macresearch.org/tcbuild-...ld-tool-fortran]
"TCBuild Conventions
I mentioned earlier that TCBuild is based on conventions, rather than
lots of configurations. [...] TCBuild assumes all source code is below a
single directory called the project root. Each target in the project must
exist in a subdirectory of the project root directory."
--
FX
| |
| Paul van Delst 2008-02-20, 7:17 pm |
| FX wrote:
> Fortran indeed lacks good build tools... but that sentence just kills
> TCBuild for me, and maybe for other people as well:
>
> [from http://www.macresearch.org/tcbuild-...ld-tool-fortran]
> "TCBuild Conventions
>
> I mentioned earlier that TCBuild is based on conventions, rather than
> lots of configurations. [...] TCBuild assumes all source code is below a
> single directory called the project root. Each target in the project must
> exist in a subdirectory of the project root directory."
Hello,
I don't think that's an unreasonable convention. It depends on what you define as the
"project root". The project root could be "/", no? I mean, at some point you have to tell
whatever build system you are using *where* the source code is, right? :o)
I have a subdirectory heirarchy that some people find overly complex (although it makes
sense to me). Users don't have to worry about targets and dependencies because my makefile
uses a shell script to link in all my targets to a build directory:
# Assign command line arguments
LINKFILE_ROOT=$1
shift 1
LINKFILE_LIST=$*
# Search for and link the file
for FILE in ${LINKFILE_LIST}; do
# Skip if file already exists
if [ -f ${FILE} ]; then
continue
fi
# Search
LINKFILE=$(find ${LINKFILE_ROOT}/ -name ${FILE} -type f)
# Link
if [ -n "${LINKFILE}" ]; then
ln -sf ${LINKFILE} .
else
echo "File ${FILE} not found in ${LINKFILE_ROOT} heirarchy."
fi
done
Here, my "LINKFILE_ROOT" would be equivalent to a "project root". But, by using the script
I can easily change my "project root", e.g. from ${HOME}/trunk to
${HOME}/branches/REL-1.1, or ${HOME}/branches/EXP-Extra_Layers, or .....
So, I can simultaneously build multiple versions of the same project, or a bunch of
different projects.
Seems simple to me. One could even say, conventional? :o)
cheers,
paulv
p.s. I also have a ruby version of the above shell script that is a bit faster when you
have ginormous (100s of TBs), but "find-slow", filesystems.
p.p.s. The TCBuild config files look an awful lot like rakefiles to me.
| |
| Athanasios Migdalas 2008-02-23, 7:13 pm |
| Drew McCormack wrote:
> I've just released a build tool (TCBuild) that I developed especially
> for Fortran projects. It is covered by a BSD open-source license.
>
> The tool is written in python and has some advanced features.
Hi,
I downloaded to test it on Linux (suSE 10.2 & Python 2.5). However, I'm
getting:
Traceback (most recent call last):
File "../tcbuild", line 1202, in <module>
buildInfo = eval( file('buildinfo', 'r').read() )
IOError: [Errno 2] No such file or directory: 'buildinfo'
As I don't speak Python, I really don't understand why it refuses to run.
Can you advise?
/Sakis
|
|
|
|
|