The Grow package
Grow is a well-defined replacement for Makefiles and the like to build complex hierarchies of files with minimal effort.
Like many Makefile-like tools, Grow depends on the notion of timestamps to determine whether a file should be recompiled or not. Grow is much simpler than those, though, and I might argue way easier to use as well.
On startup, Grow will look for a file named Seed in the current directory, and evaluate the grow expressions contained within.
For example, here is a simple Seed file to compile a single C file into an executable.
tee $$arg:in all = ($main:seq "All done !"):in $execs execs = hook ld [main] [main.o] :in $objects objects = hook cc [main.o] [main.c]
hook function ? It is the Grow primitive that calls an
external program to perform actual tasks.
In Grow, hooks are expected to only accept files as their arguments,
so we have to write the wrapper scripts
ld that accept
arguments in the form "destination... source...". They are pretty
trivial to write since they only involve renaming variables and
Here are sample
ld scripts to show you there is nothing
magical about them :
#!/bin/bash obj="$1" ; shift ; src="$1" gcc -c "$src" -o "$obj"
#!/bin/bash bin="$1" ; shift ; obj="$1" gcc "$obj" -o "$bin"
In grow, instead of writing recipes in the configuration, we just declare hooks and then write the appropriate wrapper scripts to call compilers with the correct flags and arguments.
|Versions||1.0, 1.1, 188.8.131.52, 184.108.40.206, 220.127.116.11|
|Dependencies||array (==0.5.*), base (==4.6.*), bytestring (==0.10.*), clock (==0.4.*), containers (==0.5.*), deepseq (==1.3.*), definitive-base (==1.2.*), definitive-filesystem (==1.2.*), definitive-parser (==1.2.*), definitive-reactive (==1.0.*), directory (==1.2.*), filepath (==1.3.*), old-locale (==1.0.*), primitive (==0.5.*), process (==1.2.*), time (==1.4.*), unix (==2.7.*), vector (==0.10.*) [details]|
|Uploaded||Sun Jul 13 11:32:13 UTC 2014 by MarcCoiffier|
|Updated||Sun Jul 13 15:03:59 UTC 2014 by MarcCoiffier to revision 3 [What is this?]|
|Downloads||1582 total (164 in the last 30 days)|
|Rating||(no votes yet) [estimated by rule of succession]|
|Status||Docs not available [build log]
Successful builds reported [all 16 reports]
Hackage Matrix CI
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
For package maintainers and hackage trustees