An aggregate is a trivial build that depends on other builds. This is intended to provide a declarative replacement of Hydra's "view" mechanism. For instance, you can define an aggregate named "critical" that depends on a selected set of jobs: critical = releaseTools.aggregate { name = "foo-${tarball.version}"; members = [ tarball build.x86_64-linux ... ]; meta.description = "Release-critical builds"; }; The "critical" build will only succeed if all its members (dependencies) succeed.
53 lines
1 KiB
Nix
53 lines
1 KiB
Nix
{pkgs}:
|
|
|
|
with pkgs;
|
|
|
|
rec {
|
|
|
|
sourceTarball = args: import ./source-tarball.nix (
|
|
{ inherit stdenv autoconf automake libtool;
|
|
} // args);
|
|
|
|
makeSourceTarball = sourceTarball; # compatibility
|
|
|
|
binaryTarball = args: import ./binary-tarball.nix (
|
|
{ inherit stdenv;
|
|
} // args);
|
|
|
|
antBuild = args: import ./ant-build.nix (
|
|
{ inherit pkgs;
|
|
} // args);
|
|
|
|
mvnBuild = args: import ./maven-build.nix (
|
|
{ inherit stdenv;
|
|
} // args);
|
|
|
|
nixBuild = args: import ./nix-build.nix (
|
|
{ inherit stdenv;
|
|
} // args);
|
|
|
|
coverageAnalysis = args: nixBuild (
|
|
{ inherit lcov;
|
|
doCoverageAnalysis = true;
|
|
} // args);
|
|
|
|
rpmBuild = args: import ./rpm-build.nix (
|
|
{ inherit vmTools;
|
|
} // args);
|
|
|
|
debBuild = args: import ./debian-build.nix (
|
|
{ inherit stdenv vmTools checkinstall;
|
|
} // args);
|
|
|
|
aggregate =
|
|
{ name, members, meta ? { } }:
|
|
pkgs.runCommand name
|
|
{ inherit members meta;
|
|
_hydraAggregate = true;
|
|
}
|
|
''
|
|
echo $members > $out
|
|
'';
|
|
|
|
}
|