hydra/release.nix

128 lines
3.8 KiB
Nix
Raw Normal View History

2008-11-28 16:13:06 +00:00
let
jobs = rec {
tarball =
2009-03-09 15:53:03 +00:00
{ hydraSrc ? {outPath = ./.; rev = 1234;}
, nixpkgs ? ../nixpkgs
2008-11-28 16:13:06 +00:00
, officialRelease ? false
}:
2009-03-09 15:53:03 +00:00
with import nixpkgs {};
2008-11-28 16:13:06 +00:00
releaseTools.makeSourceTarball {
name = "hydra-tarball";
2009-03-06 10:35:27 +00:00
version = "0.1";
2008-11-28 16:13:06 +00:00
src = hydraSrc;
inherit officialRelease;
buildInputs = [zip unzip];
jquery = fetchurl {
url = http://jqueryui.com/download/jquery-ui-1.7.2.custom.zip;
sha256 = "1l9dwaaqvdysmzlkg1vb8j0s0xn63d475gh53pjjwxw85668krdh";
};
tablesorter = fetchurl {
url = http://tablesorter.com/jquery.tablesorter.zip;
sha256 = "013zgglvifvy0yg0ybjrl823sswy9v1ihf5nmighmcyigfd6nrhb";
};
flot = fetchurl {
url = http://flot.googlecode.com/files/flot-0.6.zip;
sha256 = "1k2mfijvr1jwga65wcd78lp9ia17v99f1cfm5nlmc0k8glllbj5a";
};
2008-11-28 16:13:06 +00:00
# Since we don't have a `make dist', just tar everything.
distPhase = ''
ensureDir src/root/static/js/jquery
unzip -d src/root/static/js/jquery $jquery
2009-04-20 12:51:47 +00:00
rm -rf src/root/static/js/tablesorter
2009-03-06 10:23:41 +00:00
unzip -d src/root/static/js $tablesorter
unzip -d src/root/static/js $flot
make -C src/sql
2008-11-28 16:13:06 +00:00
releaseName=hydra-0.1$VERSION_SUFFIX;
ensureDir $out/tarballs
mkdir ../$releaseName
cp -prd . ../$releaseName
cd ..
tar cfj $out/tarballs/$releaseName.tar.bz2 $releaseName
tar cfz $out/tarballs/$releaseName.tar.gz $releaseName
zip -9r $out/tarballs/$releaseName.zip $releaseName
2008-11-28 16:13:06 +00:00
'';
};
build =
2009-03-06 10:35:27 +00:00
{ tarball ? jobs.tarball {}
, nixpkgs ? ../nixpkgs
, system ? "x86_64-linux"
2008-11-28 16:13:06 +00:00
}:
let pkgs = import nixpkgs {inherit system;}; in
with pkgs;
2009-03-09 15:53:03 +00:00
let nix = nixSqlite; in
2008-11-28 16:13:06 +00:00
2009-04-27 13:08:15 +00:00
stdenv.mkDerivation {
2009-03-06 10:35:27 +00:00
name = "hydra" + (if tarball ? version then "-" + tarball.version else "");
2008-11-28 16:13:06 +00:00
buildInputs =
[ perl makeWrapper libtool ]
++ (import ./deps.nix) { inherit pkgs; };
2008-11-28 16:13:06 +00:00
preUnpack = ''
2009-03-06 10:35:27 +00:00
src=$(ls ${tarball}/tarballs/*.tar.bz2)
2008-11-28 16:13:06 +00:00
''; # */
hydraPath = stdenv.lib.concatStringsSep ":" (map (p: "${p}/bin") ( [
libxslt sqlite subversion openssh nix coreutils findutils
2009-11-17 15:45:02 +00:00
gzip bzip2 lzma gnutar unzip git
gnused graphviz
] ++ ( if stdenv.isLinux then [rpm dpkg cdrkit] else [] )));
2008-11-28 16:13:06 +00:00
installPhase = ''
2008-12-01 20:22:03 +00:00
ensureDir $out/nix-support
2008-11-28 16:13:06 +00:00
ensureDir $out/libexec
2009-03-06 10:23:41 +00:00
cp -prd src $out/libexec/hydra
2008-11-28 16:13:06 +00:00
mv $out/libexec/hydra/script $out/bin
2009-03-09 15:53:03 +00:00
cp ${"${nixpkgs}/pkgs/build-support/fetchsvn/nix-prefetch-svn"} $out/bin/nix-prefetch-svn
2009-11-17 15:16:41 +00:00
cp ${"${nixpkgs}/pkgs/build-support/fetchgit/nix-prefetch-git"} $out/bin/nix-prefetch-git
2009-03-09 15:53:03 +00:00
2010-02-24 15:11:52 +00:00
make -C src/c NIX=${nix} ATERM=${aterm}
2009-03-09 15:53:03 +00:00
cp src/c/hydra_eval_jobs $out/bin
2008-11-28 16:13:06 +00:00
for i in $out/bin/*; do
wrapProgram $i \
--prefix PERL5LIB ':' $out/libexec/hydra/lib:$PERL5LIB \
2009-07-09 15:45:56 +00:00
--prefix PATH ':' $out/bin:$hydraPath \
--set HYDRA_HOME $out/libexec/hydra \
--set HYDRA_RELEASE ${tarball.version} \
--set NIX_RELEASE ${nix.name}
2008-11-28 16:13:06 +00:00
done
2008-12-01 20:22:03 +00:00
ensureDir $out/share/doc/hydra/manual
cp doc/manual/* $out/share/doc/hydra/manual/
ln -s manual.html $out/share/doc/hydra/manual/index.html
echo "doc manual $out/share/doc/hydra/manual" >> $out/nix-support/hydra-build-products
2008-12-15 14:52:21 +00:00
echo "nix-build none $out" >> $out/nix-support/hydra-build-products
2008-11-28 16:13:06 +00:00
''; # */
meta = {
description = "Build of Hydra on ${system}";
};
2008-11-28 16:13:06 +00:00
};
};
in jobs