hydra/release.nix

176 lines
4.7 KiB
Nix
Raw Normal View History

2012-03-13 10:03:32 +00:00
{ hydraSrc ? { outPath = ./.; revCount = 1234; gitTag = "abcdef"; }
2010-03-05 17:52:43 +00:00
, officialRelease ? false
}:
rec {
2013-01-23 14:47:42 +00:00
2013-01-22 13:41:02 +00:00
tarball =
2012-03-13 10:03:32 +00:00
with import <nixpkgs> { };
2010-09-30 14:29:15 +00:00
releaseTools.makeSourceTarball {
name = "hydra-tarball";
src = hydraSrc;
inherit officialRelease;
version = builtins.readFile ./version;
buildInputs =
2013-01-23 14:47:42 +00:00
[ perl libxslt dblatex tetex nukeReferences pkgconfig boehmgc git openssl ];
2011-12-05 14:53:23 +00:00
versionSuffix = if officialRelease then "" else "pre${toString hydraSrc.revCount}-${hydraSrc.gitTag}";
preConfigure = ''
# TeX needs a writable font cache.
export VARTEXFONTS=$TMPDIR/texfonts
'';
configureFlags =
[ "--with-nix=${nix}"
"--with-docbook-xsl=${docbook_xsl}/xml/xsl/docbook"
];
postDist = ''
make -C doc/manual install prefix="$out"
nuke-refs "$out/share/doc/hydra/manual.pdf"
echo "doc manual $out/share/doc/hydra manual.html" >> \
"$out/nix-support/hydra-build-products"
echo "doc-pdf manual $out/share/doc/hydra/manual.pdf" >> \
"$out/nix-support/hydra-build-products"
'';
2010-09-30 14:29:15 +00:00
};
2010-03-05 17:52:43 +00:00
2013-01-23 14:47:42 +00:00
2013-01-22 13:41:02 +00:00
build =
2010-03-05 17:52:43 +00:00
{ system ? "x86_64-linux" }:
2012-03-13 10:03:32 +00:00
let pkgs = import <nixpkgs> {inherit system;}; in
2010-03-05 17:52:43 +00:00
with pkgs;
2008-11-28 16:13:06 +00:00
let
nix = nixUnstable;
perlDeps = buildEnv {
name = "hydra-perl-deps";
paths = with perlPackages;
[ CatalystAuthenticationStoreDBIxClass
CatalystPluginAccessLog
CatalystPluginAuthorizationRoles
CatalystPluginCaptcha
CatalystPluginSessionStateCookie
CatalystPluginSessionStoreFastMmap
CatalystPluginStackTrace
CatalystViewDownload
CatalystViewJSON
CatalystViewTT
CatalystXScriptServerStarman
CatalystTraitForRequestProxyBase
CryptRandPasswd
DBDPg
DBDSQLite
DataDump
DateTime
DigestSHA1
EmailSender
FileSlurp
IOCompress
IPCRun
JSONXS
PadWalker
CatalystDevel
Readonly
SQLSplitStatement
Starman
Switch # XXX: seems to be an indirect dep of `hydra-build'
SysHostnameLong
TestMore
TextDiff
TextTable
XMLSimple
nix git
];
};
in
2010-03-05 17:52:43 +00:00
2010-09-30 14:29:19 +00:00
releaseTools.nixBuild {
2010-09-30 15:09:34 +00:00
name = "hydra";
2013-01-22 13:41:02 +00:00
src = tarball;
2010-09-30 14:29:19 +00:00
configureFlags = "--with-nix=${nix}";
2010-03-05 17:52:43 +00:00
buildInputs =
[ makeWrapper libtool unzip nukeReferences pkgconfig boehmgc sqlite
gitAndTools.topGit mercurial subversion bazaar openssl bzip2
guile # optional, for Guile + Guix support
perl perlDeps
];
2010-03-05 17:52:43 +00:00
2013-01-23 14:47:42 +00:00
hydraPath = lib.makeSearchPath "bin" (
[ libxslt sqlite subversion openssh nix coreutils findutils
gzip bzip2 lzma gnutar unzip git gitAndTools.topGit mercurial gnused graphviz bazaar
] ++ lib.optionals stdenv.isLinux [ rpm dpkg cdrkit ] );
2010-03-05 17:52:43 +00:00
2011-11-30 17:03:50 +00:00
preConfigure = "patchShebangs .";
2010-09-30 14:29:19 +00:00
postInstall = ''
2013-01-23 14:47:42 +00:00
mkdir -p $out/nix-support
nuke-refs $out/share/doc/hydra/manual/manual.pdf
2010-03-05 17:52:43 +00:00
for i in $out/bin/*; do
wrapProgram $i \
--prefix PERL5LIB ':' $out/libexec/hydra/lib:$PERL5LIB \
--prefix PATH ':' $out/bin:$hydraPath \
--set HYDRA_RELEASE ${tarball.version} \
2010-10-18 10:34:54 +00:00
--set HYDRA_HOME $out/libexec/hydra \
2010-03-05 17:52:43 +00:00
--set NIX_RELEASE ${nix.name}
done
''; # */
2011-08-19 15:28:32 +00:00
2012-04-30 15:57:13 +00:00
LOGNAME = "foo";
2011-08-19 15:28:32 +00:00
2013-01-23 14:47:42 +00:00
meta.description = "Build of Hydra on ${system}";
2010-03-05 17:52:43 +00:00
};
tests =
{ nixos ? ../nixos, system ? "x86_64-linux" }:
let hydra = build { inherit system; }; in
2012-03-13 10:03:32 +00:00
with import <nixos/lib/testing.nix> { inherit system; };
{
2013-01-22 13:41:02 +00:00
install = simpleTest {
2013-01-22 13:41:02 +00:00
machine =
{ config, pkgs, ... }:
{ services.postgresql.enable = true;
2013-04-11 23:23:03 +00:00
services.postgresql.package = pkgs.postgresql92;
environment.systemPackages = [ hydra ];
};
testScript =
''
$machine->waitForJob("postgresql");
# Initialise the database and the state.
$machine->mustSucceed
( "createdb -O root hydra",
2013-01-23 11:55:29 +00:00
, "psql hydra -f ${hydra}/libexec/hydra/sql/hydra-postgresql.sql"
, "mkdir /var/lib/hydra"
);
# Start the web interface.
2013-01-23 12:00:07 +00:00
$machine->mustSucceed("HYDRA_DATA=/var/lib/hydra HYDRA_DBI='dbi:Pg:dbname=hydra;user=hydra;' hydra-server >&2 &");
$machine->waitForOpenPort("3000");
'';
2013-01-22 13:41:02 +00:00
};
2013-01-22 13:41:02 +00:00
};
2010-03-05 17:52:43 +00:00
}