This is yet another attempt at a build tool, akin to make(1), in Scheme.
Conjure is used as a build tool for the spells[0] and sbank[1], where it’s task is mostly file generation by substition, similiar to what autoconf-generated “configure” scripts do.
It currently contains the following functionality to fulfill the above purpose:
This is currently using file modifiction times (no MD5 goodness yet)
Acts as a “build language”, embedded in Scheme. An example from spells:
(task cc (cc-conf))
(task (configure
(produce '((("spells" "foreign") "config.sls")
<= (("libraries" "foreign") "config.sls.in")))
(fetchers (cc-fetcher 'cc)
(hostinfo-fetcher))))
Allows tailoring files to a specific environment by doing substitions on template files. An example from spells:
(define c-type-alignof
(let ((target '("#!@(host-info os)"
"#!@(host-info cpu)")))
...))
In this code fragment, the #!@(…) “forms” are substituted at build time with the hosts’ operating system and CPU.
The configuration module uses a cache, avoiding a potentially costly re-calculation of substitution value on each source file change.