Cabal revisions of Grow-1.1.0.3
Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.
revision 1
--- content information-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.---- meta-information-author: Marc Coiffier-maintainer: marc.coiffier@gmail.com-version: 1.1.0.3-license: OtherLicense-license-file: LICENSE---- build information-build-type: Simple-cabal-version: >=1.10--library- exposed-modules: Grow Language.Grow Language.Syntax.Grow- build-depends: base (== 4.6.*), definitive-base (== 1.2.*), containers (== 0.5.*), deepseq (== 1.3.*), array (== 0.5.*), bytestring (== 0.10.*), vector (== 0.10.*), primitive (== 0.5.*), definitive-parser (== 1.2.*), definitive-filesystem (== 1.2.*), definitive-reactive (== 1.0.*), clock (== 0.4.*), directory (== 1.2.*), filepath (== 1.3.*), time (== 1.4.*), old-locale (== 1.0.*), unix (== 2.7.*), process (== 1.2.*)- default-extensions: RebindableSyntax NoMonomorphismRestriction GeneralizedNewtypeDeriving FlexibleInstances LambdaCase FlexibleContexts MultiParamTypeClasses ImplicitParams- ghc-options: - default-language: Haskell2010+-- content information +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. + +-- meta-information +author: Marc Coiffier +maintainer: marc.coiffier@gmail.com +version: 1.1.0.3 +x-revision: 1 +license: OtherLicense +license-file: LICENSE + +-- build information +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: Grow Language.Grow Language.Syntax.Grow + build-depends: base (== 4.6.*), definitive-base (== 1.2.*), containers (== 0.5.*), deepseq (== 1.3.*), array (== 0.5.*), bytestring (== 0.10.*), vector (== 0.10.*), primitive (== 0.5.*), definitive-parser (== 1.2.*), definitive-filesystem (== 1.2.*), definitive-reactive (== 1.0.*), clock (== 0.4.*), directory (== 1.2.*), filepath (== 1.3.*), time (== 1.4.*), old-locale (== 1.0.*), unix (== 2.7.*), process (== 1.2.*) + default-extensions: RebindableSyntax NoMonomorphismRestriction GeneralizedNewtypeDeriving FlexibleInstances LambdaCase FlexibleContexts MultiParamTypeClasses ImplicitParams + ghc-options: + default-language: Haskell2010
revision 2
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] + > 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. author: Marc Coiffier maintainer: marc.coiffier@gmail.com version: 1.1.0.3 -x-revision: 1 +x-revision: 2 license: OtherLicense license-file: LICENSE
revision 3
name: Grow category: Build synopsis: A declarative make-like interpreter. +homepage: http://coiffier.net/projects/grow.html description: Grow is a well-defined replacement for Makefiles and the like to build complex hierarchies of files with minimal effort. author: Marc Coiffier maintainer: marc.coiffier@gmail.com version: 1.1.0.3 -x-revision: 2 +x-revision: 3 license: OtherLicense license-file: LICENSE