[Cook] Three items to be discussed

Jerry Pendergraft jerry at endocardial.com
Sat Nov 30 03:38:54 EST 2002


On Fri, 29 Nov 2002, Gottfried Hegmanns wrote:

> I'm currently evaluating cook to find something better than make to build
> our product (about 4000 compiles/links). cook seems to be a very good
> candidate because it's fast and is what I need to do a multi platform
> build. But I'm still facing three items I have to solve first:
> 
> 1) The way to search for includes ( see our discussion 'How does c_incl
> search for included files?'),
> 2) The !#/bin/bash line in the file handed over to the remote machine for
> execution (see my update 'remote execution linux-AIX') also under the
> aspect that a remote execution should even be possible on a windows or an
> OS/2 machine,
> 3) The 'backward travel in time problem' where I build in a sandbox against
> a repository with a changed source file in my sandbox, then remove the
> changed source file (the source file in the repository becomes visible
> again) and build again. My target will not be built because the source file
> is older than my target.
> 
> to 1) I could solve it myself writing an own dependency scanner if there is
> no other way to go.
We generate "cascade" files using c_incl. Works very well.

> to 2) could you make this line somehow configurable so I can put my own
> text in there (or even leave it out)? Considering a build tree having
> targets to be built on various platforms, it would be necessary to specify
> such a line by build event according to the remote operating system.
Some parts to this issue solution:

Actually "build" your executable scripts from sources using a recipe, this
allows what you want and also a way to syntax check the scripts.

Set up your recipes so there is an architecture component in the target
directory and use host_binding as well.

Make the top line of you script sources contain:
#!_SHELL_

Define variables for which shell to use on each architecture.
Use those in the recipe.

i686-Linux-2.4_sh = /bin/bash;
sun4-SunOS-5.8_sh = /bin/ksh;

%1/bin/%3 : shell/%3.sh
    host_binding %1_C
{
    sed -e \'s\=_SHELL_\=/[%1_sh]\=g\' [resolve shell/%3.sh] > [target] &&
    [%1_sh] -n [target];
}

> to 3) I suggest an option to omit the time stamp dependency checking and to
> use the fingerprint method only. I know that this would be a performance
> degradation but build consistency for us has priority over performance. Or
> to store the modification time of the source files used for a first build
> as kind of signature and to check the time stamp of the current files
> against the stored one.

Use the copy_file_undo command to either remove its target automatically,
or possibly remove all targets ala clean.

> 
> Hope we find a way.
> 
> Regards
> Gottfried Hegmanns
> IBM Entwicklung GmbH
> internet: hegmanns at de.ibm.com
> 
> _______________________________________________
> Cook-users mailing list
> Cook-users at auug.org.au
> http://www.auug.org.au/mailman/listinfo/cook-users
> 

-- 
Jerry Pendergraft                        jerry.pendergraft at endocardial.com
Endocardial Solutions                    voice: 651-523-6935
1350 Energy Lane, Suite 110                fax: 651-644-7897
St Paul, MN 55108-5254






More information about the Cook-users mailing list