 79d875ae77
			
		
	
	
		79d875ae77
		
	
	
	
	
		
			
			No functional change, was just reading through these and cleaning/sanitizing them a bit while I'm here.
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| /* This function builds a binary tarball.  The resulting binaries are
 | |
|    usually only useful if they are don't have any runtime dependencies
 | |
|    on any paths in the Nix store, since those aren't distributed in
 | |
|    the tarball.  For instance, the binaries should be statically
 | |
|    linked: they can't depend on dynamic libraries in the store
 | |
|    (including Glibc).
 | |
| 
 | |
|    The binaries are built and installed with a prefix of /usr/local by
 | |
|    default.  They are installed by setting DESTDIR to a temporary
 | |
|    directory, so the Makefile of the package should support DESTDIR.
 | |
| */
 | |
| 
 | |
| { src, stdenv
 | |
| , name ? "binary-tarball"
 | |
| , ... } @ args:
 | |
| 
 | |
| stdenv.mkDerivation (
 | |
| 
 | |
|   {
 | |
|     # Also run a `make check'.
 | |
|     doCheck = true;
 | |
| 
 | |
|     showBuildStats = true;
 | |
| 
 | |
|     prefix = "/usr/local";
 | |
| 
 | |
|     postPhases = "finalPhase";
 | |
|   }
 | |
| 
 | |
|   // args //
 | |
| 
 | |
|   {
 | |
|     name = name + (if src ? version then "-" + src.version else "");
 | |
| 
 | |
|     postHook = ''
 | |
|       mkdir -p $out/nix-support
 | |
|       echo "$system" > $out/nix-support/system
 | |
|       . ${./functions.sh}
 | |
| 
 | |
|       origSrc=$src
 | |
|       src=$(findTarball $src)
 | |
| 
 | |
|       if test -e $origSrc/nix-support/hydra-release-name; then
 | |
|           releaseName=$(cat $origSrc/nix-support/hydra-release-name)
 | |
|       fi
 | |
| 
 | |
|       installFlagsArray=(DESTDIR=$TMPDIR/inst)
 | |
| 
 | |
|       # Prefix hackery because of a bug in stdenv (it tries to `mkdir
 | |
|       # $prefix', which doesn't work due to the DESTDIR).
 | |
|       configureFlags="--prefix=$prefix $configureFlags"
 | |
|       dontAddPrefix=1
 | |
|       prefix=$TMPDIR/inst$prefix
 | |
|     '';
 | |
| 
 | |
|     doDist = true;
 | |
| 
 | |
|     distPhase = ''
 | |
|       mkdir -p $out/tarballs
 | |
|       tar cvfj $out/tarballs/''${releaseName:-binary-dist}.tar.bz2 -C $TMPDIR/inst .
 | |
|     '';
 | |
| 
 | |
|     finalPhase = ''
 | |
|       for i in $out/tarballs/*; do
 | |
|           echo "file binary-dist $i" >> $out/nix-support/hydra-build-products
 | |
|       done
 | |
| 
 | |
|       # Propagate the release name of the source tarball.  This is
 | |
|       # to get nice package names in channels.
 | |
|       test -n "$releaseName" && (echo "$releaseName" >> $out/nix-support/hydra-release-name)
 | |
|     '';
 | |
| 
 | |
|     meta = (if args ? meta then args.meta else {}) // {
 | |
|       description = "Build of a generic binary distribution";
 | |
|     };
 | |
| 
 | |
|   }
 | |
| )
 |