 bad05cd2b6
			
		
	
	
		bad05cd2b6
		
	
	
	
	
		
			
			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
		
	
			
		
			
				
	
	
		
			86 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #! /bin/sh -v
 | |
| 
 | |
| buildinputs="$make $automake $autoconf $libtool $which $withsdf"
 | |
| . $stdenv/setup || exit 1
 | |
| 
 | |
| echo "pwd = `pwd`"
 | |
| echo "PATH = $PATH"
 | |
| 
 | |
| # configuration flags
 | |
| 
 | |
| config_flags=""
 | |
| 
 | |
| for pack in `env | grep with | sed "s/^with\([A-Za-z]*\)=.*/\1/"`
 | |
| do
 | |
|   config_flags="${config_flags} --with-${pack}=$(printenv with${pack})"
 | |
| done
 | |
| 
 | |
| for feat in `env | grep enable | sed "s/^enable\([A-Za-z]*\)=.*/\1/"`
 | |
| do
 | |
|   config_flags="${config_flags} --enable-${feat}=$(printenv enable${feat})"
 | |
| done
 | |
| 
 | |
| echo "config_flags : $config_flags"
 | |
| 
 | |
| # keep a log
 | |
| 
 | |
| distdir=$out/www/strategoxt/$version-$rev
 | |
| logdir=$distdir/log
 | |
| mkdir -p $distdir || exit 1
 | |
| mkdir -p $logdir || exit 1
 | |
| 
 | |
| # get the source
 | |
| 
 | |
| cp -r $src src || exit 1
 | |
| chmod -R +w src
 | |
| cd src || exit 1
 | |
| 
 | |
| echo ${rev} > svn-revision
 | |
| 
 | |
| # build it
 | |
| 
 | |
| GO="true"
 | |
| 
 | |
| ./bootstrap                               2>&1 | tee $logdir/bootstrap.txt
 | |
| ./configure --prefix=$out ${config_flags} 2>&1 | tee $logdir/configure.txt
 | |
| 
 | |
| if ! make install                         2>&1 | tee $logdir/install.txt 
 | |
| then 
 | |
|   GO="false"
 | |
| fi
 | |
| 
 | |
| if test $GO = "true"
 | |
| then
 | |
|   if ! make check                         2>&1 | tee $logdir/check.txt
 | |
|   then 
 | |
|     GO="false"
 | |
|   fi
 | |
| fi
 | |
| 
 | |
| # make a distribution
 | |
| 
 | |
| if test $GO = "true"
 | |
| then
 | |
|   if make dist                            2>&1 | tee $logdir/dist.txt
 | |
|   then
 | |
|     if test "x${status}" = "xrelease"
 | |
|     then
 | |
|       cp ${packagename}-${version}.tar.gz $distdir || exit 1
 | |
|     else
 | |
|       tar zxf ${packagename}-${version}.tar.gz
 | |
|       mv ${packagename}-${version} ${name}
 | |
|       tar zcf ${name}.tar.gz ${name}
 | |
|       cp ${name}.tar.gz $distdir || exit 1
 | |
|     fi
 | |
|   fi
 | |
| fi
 | |
| 
 | |
| # distribute documentation data
 | |
| 
 | |
| if test -f news/NEWS-$version
 | |
| then
 | |
|   cp news/NEWS-$version $distdir || exit 1
 | |
| fi
 | |
| 
 | |
| cp NEWS ChangeLog AUTHORS README COPYING $distdir || exit 1
 |