packages feed

Grow 1.1 → 1.1.0.1

raw patch · 1 files changed

+44/−44 lines, 1 files

Files

Grow.cabal view
@@ -2,54 +2,54 @@ name:          Grow category:      Build synopsis:      A declarative make-like interpreter.-description:     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]-      }-  -  Notice the `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 `cc` and `ld` that accept-  arguments in the form "<destination>... <source>...". They are pretty-  trivial to write since they only involve renaming variables and-  swapping arguments.-  -  Here are sample `cc` and `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.+description:   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]+                   }+               .+               Notice the `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 `cc` and `ld` that accept+               arguments in the form "<destination>... <source>...". They are pretty+               trivial to write since they only involve renaming variables and+               swapping arguments.+               .+               Here are sample `cc` and `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.  -- meta-information author:        Marc Coiffier maintainer:    marc.coiffier@gmail.com-version:       1.1+version:       1.1.0.1 license:       OtherLicense license-file:  LICENSE