nixpkgs/strategoxt-dist/build+upload.sh
Eelco Visser bad05cd2b6 A first attempt at generic release management. The goal
is to fully automate the building of distributions and
their release for distribution through a web-site, ftp
directory, etc. Inspired by nix-dist, but more generic
in order to deal with StrategoXT and related packages. 

The assumptions are the following:

  - package source is a subversion repository
  - the package is under autotool configuration
    (at least it has a configure.in with an AC_INIT)
  - standard autotools build interface:
    - bootstrap; configure; make install; 
      make check; make dist
  - optionally the release status can be indicated by
    a status="..." definition in configure.in

Creation of distributions is a two-step process:

  urls-to-nix.sh  # nix expressions for most recent commits
  build+upload.sh # instantiate the expressions

svn-to-nix.sh 

   Generates nix expression for head revision of the
   package; revision number, package name, and version
   are obtained from the source and do not have to
   be declared.

urls-to-nix.sh

   Contains a list of URLs to which svn-to-nix.sh is applied.

build+upload.sh

   Builds the packages and creates distributions in a www
   directory. Including the log of the build process (buildfarm)
   and files such as NEWS and README (for release management).
   (upload part of the script is currently turned off)

do-it.nix

   Top nix expression; collects pointers to required packages
   (e.g., stdenv, autotools, aterms, ...) and binds them
   to the parameters of the source-dist.nix packages.

package-source-dist.nix

   Generic Nix expression for a package parameterized with
   version info from svn and dependency info from do-it.nix.

package-dist.nix

   Generated; just imports 

package-version-rev.nix

   Generated; instantiates package-source-dist.nix with version,
   name, packagename, rev.

build-from-svn.sh

   Generic build script; obtains configuration flags from
   with... and enable... attributes of the Nix expression.
   Creates logs of the various parts of the build process.
   Creates distribution

Generalizations:

- Currently some information about a package resides in
  this directory, e.g., the generic Nix expression for
  a package, and the composition of the overall do-it.nix
  This information should also be obtained from the source
  tree.

- Upload facility lacking.
 



svn path=/nixpkgs/trunk/; revision=605
2003-12-30 21:14:48 +00:00

23 lines
653 B
Bash
Executable File

#! /bin/sh -v
# Build the distribution
echo "building revision $rev of $url"
if ! storeexprs=($(nix-instantiate -vvvv do-it.nix)); then exit 1; fi
srcexpr=${storeexprs[0]}
#testexpr=${storeexprs[1]}
if ! nix-store -vvvv -r "$srcexpr" > /dev/null; then exit 1; fi
if ! outpath=$(nix-store -qn "$srcexpr"); then exit 1; fi
#uploader="http://losser.st-lab.cs.uu.nl/~eelco/cgi-bin/upload.pl/"
#curl --silent -T "$outpath/manual.html" "$uploader" || exit 1
#curl --silent -T "$outpath/style.css" "$uploader" || exit 1
#curl --silent -T "$outpath"/nix-*.tar.bz2 "$uploader" || exit 1
#if ! nix-store -vvvv -r "$testexpr" > /dev/null; then exit 1; fi