hydra: 2017-11-21 -> 2018-08-07

This bumps Hydra to the latest revision available. As Hydra doesn't have
a release model (and therefore no tags) ATM, the derivation will pin
against the actual git revision and the date of the commit in the
derivation name.

Additionally the following changes have been made:

* Dropped `postUnpack` phase. It is useful when working with the Hydra
  source (and no dirty changes shall be used in `release.nix`, but is has
  no use in `nixpkgs`).

* Added myself as maintainer to have more folks available in case of
  future breakage.

* Implemented support for Nix 2.0 and `unstable` (currently 2.1):

  Since 1672bcd230447f1ce0c3291950bdd9a662cee974 in NixOS/nix the
  evaluator differentiates between `settings` and `evalSettings`.
  Previously `restrictEval` in `hydra-eval-jobs.cc` has been set in
  `settings`, this doesn't work anymore in Nix 2.1 and is therefore
  incompatible to Nix 2.0 on an API level.

  To resolve this, the flag `isGreaterNix20` parses the version string
  of `pkgs.nix` and applies a patch if nix.version<=2.0.

  Furthermore the Hydra build with Nix 2.1 requires `boost` as build input
  which is not needed for Nix 2.0. To avoid unnecessary increase in the
  closure size this library will only used as build input for
  nix.version>2.0.

* Fixed the NixOS test for `hydra`:
  disabled binary cache to allow sandbox builds (otherwise it would
  query `cache.nixos.org` during the Hydra build inside the test).

  Additionally the trivial.nix jobset required simplification (as done
  in NixOS/hydra, e.g. tests/api-test.nix) as bash is not available in
  the build sandbox as builder (even when adding pkgs.bash to
  systemPackages).

  The easiest workaround to confirm a the functionality of a jobset
  without importing nixpkgs is to use the default shell /bin/sh which
  is mounted from `pkgs.busybox` into the build env
  (https://github.com/NixOS/nixpkgs/pull/44841#discussion_r209751972) in the
  VM and a named pipe to create $out.

Closes #44044
This commit is contained in:
Maximilian Bosch 2018-08-09 22:32:27 +02:00
parent a7685f7697
commit 7682c2fd61
No known key found for this signature in database
GPG key ID: 091DBF4D1FC46B8E
2 changed files with 31 additions and 20 deletions

View file

@ -2,14 +2,11 @@ import ../make-test.nix ({ pkgs, ...} :
let
trivialJob = pkgs.writeTextDir "trivial.nix" ''
with import <nix/config.nix>;
{ trivial = builtins.derivation {
name = "trivial";
system = "x86_64-linux";
PATH = coreutils;
builder = shell;
args = ["-c" "touch $out; exit 0"];
builder = "/bin/sh";
args = ["-c" "echo success > $out; exit 0"];
};
}
'';
@ -27,7 +24,7 @@ let
in {
name = "hydra-init-localdb";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ pstn lewo ];
maintainers = [ pstn lewo ma27 ];
};
machine =
@ -50,6 +47,8 @@ in {
hostName = "localhost";
systems = [ "x86_64-linux" ];
}];
binaryCaches = [];
};
};
@ -74,5 +73,5 @@ in {
$machine->succeed("create-trivial-project.sh");
$machine->waitUntilSucceeds('curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq');
'';
'';
})

View file

@ -3,11 +3,18 @@
, gitAndTools, mercurial, darcs, subversion, bazaar, openssl, bzip2, libxslt
, guile, perl, postgresql, nukeReferences, git, boehmgc
, docbook_xsl, openssh, gnused, coreutils, findutils, gzip, lzma, gnutar
, rpm, dpkg, cdrkit, pixz }:
, rpm, dpkg, cdrkit, pixz, lib, fetchpatch, boost, autoreconfHook
}:
with stdenv;
let
isGreaterNix20 = with lib.versions;
let
inherit (nix) version;
inherit (lib) toInt;
in major version == "2" && toInt (minor version) >= 1 || toInt (major version) > 2;
perlDeps = buildEnv {
name = "hydra-perl-deps";
paths = with perlPackages;
@ -63,15 +70,15 @@ let
};
in releaseTools.nixBuild rec {
name = "hydra-${version}";
version = "2017-11-21";
version = "2018-08-07";
inherit stdenv;
src = fetchFromGitHub {
owner = "NixOS";
repo = "hydra";
rev = "b7bc4384b7b471d1ddf892cb03f16189a66d5a0d";
sha256 = "05g37z3ilazzqa5rqj5zljndwxjbvpc18xibh6jlwjwpvg3kpbbh";
rev = "4dca8fe14d3f782bdf927f37efce722acefffff3";
sha256 = "1yas4psmvfp7lhcp81ia2sy93b78j9hiw9a6n3q2m1a616hwpm25";
};
buildInputs =
@ -80,17 +87,24 @@ in releaseTools.nixBuild rec {
guile # optional, for Guile + Guix support
perlDeps perl nix
postgresql # for running the tests
];
] ++ lib.optionals isGreaterNix20 [ boost ];
hydraPath = lib.makeBinPath (
[ sqlite subversion openssh nix coreutils findutils pixz
gzip bzip2 lzma gnutar unzip git gitAndTools.topGit mercurial darcs gnused bazaar
] ++ lib.optionals stdenv.isLinux [ rpm dpkg cdrkit ] );
postUnpack = ''
# Clean up when building from a working tree.
(cd $sourceRoot && (git ls-files -o --directory | xargs -r rm -rfv)) || true
'';
nativeBuildInputs = [ autoreconfHook ];
# adds a patch which ensures compatibility with the API of Nix 2.0.
# it has been reverted in https://github.com/NixOS/hydra/commit/162d671c48a418bd10a8a171ca36787ef3695a44,
# for Nix 2.1/unstable compatibility. Reapplying helps if Nix 2.0 is used to keep the build functional.
patches = lib.optionals (!isGreaterNix20) [
(fetchpatch {
url = "https://github.com/NixOS/hydra/commit/08de434bdd0b0a22abc2081be6064a6c846d3920.patch";
sha256 = "0kz77njp5ynn9l81g3q8zrryvnsr06nk3iw0a60187wxqzf5fmf8";
})
];
configureFlags = [ "--with-docbook-xsl=${docbook_xsl}/xml/xsl/docbook" ];
@ -99,8 +113,6 @@ in releaseTools.nixBuild rec {
PERL5LIB=$(pwd)/src/lib:$PERL5LIB;
'';
preConfigure = "autoreconf -vfi";
enableParallelBuilding = true;
preCheck = ''
@ -130,6 +142,6 @@ in releaseTools.nixBuild rec {
description = "Nix-based continuous build system";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ domenkozar ];
maintainers = with maintainers; [ domenkozar ma27 ];
};
}
}