diff --git a/nixbld-etc-nixos/configuration.nix b/nixbld-etc-nixos/configuration.nix index 019f193..dc95162 100644 --- a/nixbld-etc-nixos/configuration.nix +++ b/nixbld-etc-nixos/configuration.nix @@ -111,7 +111,7 @@ ACTION=="add", SUBSYSTEM=="tty", \ ]; services.hydra = { enable = true; - package = pkgs.callPackage ./hydra.nix {}; + package = pkgs.hydra.overrideAttrs(oa: { patches = oa.patches ++ [ ./hydra-conda.patch ./hydra-retry.patch ]; } ); useSubstitutes = true; hydraURL = "https://nixbld.m-labs.hk"; notificationSender = "hydra@m-labs.hk"; diff --git a/nixbld-etc-nixos/hydra-conda.patch b/nixbld-etc-nixos/hydra-conda.patch new file mode 100644 index 0000000..606cdcf --- /dev/null +++ b/nixbld-etc-nixos/hydra-conda.patch @@ -0,0 +1,47 @@ +commit 5aa5f8d5742883d41d7278a2c8bc2c9a2ddfef45 +Author: Sebastien Bourdeauducq +Date: Sun Apr 14 18:25:27 2019 +0800 + + add SVG icon for conda package + +diff --git a/src/root/product-list.tt b/src/root/product-list.tt +index 298d0a66..85914bbd 100644 +--- a/src/root/product-list.tt ++++ b/src/root/product-list.tt +@@ -157,6 +157,11 @@ + DEB + + Debian package ++ [% CASE "conda" %] ++ ++ Conda ++ ++ Conda package + [% CASE "iso" %] + + ISO +diff --git a/src/root/static/images/conda.svg b/src/root/static/images/conda.svg +new file mode 100644 +index 00000000..67859731 +--- /dev/null ++++ b/src/root/static/images/conda.svg +@@ -0,0 +1,18 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +\ No newline at end of file diff --git a/nixbld-etc-nixos/hydra-retry.patch b/nixbld-etc-nixos/hydra-retry.patch new file mode 100644 index 0000000..36f22c3 --- /dev/null +++ b/nixbld-etc-nixos/hydra-retry.patch @@ -0,0 +1,19 @@ +commit 86bf81c0b8a51bffa4b4b566e1caaac6f0e041d3 +Author: Sebastien Bourdeauducq +Date: Thu Mar 14 17:45:32 2019 +0800 + + add option to disable retries on transient failures + +diff --git a/src/hydra-queue-runner/build-remote.cc b/src/hydra-queue-runner/build-remote.cc +index 69c430eb..bdbc808d 100644 +--- a/src/hydra-queue-runner/build-remote.cc ++++ b/src/hydra-queue-runner/build-remote.cc +@@ -344,7 +344,7 @@ void State::buildRemote(ref destStore, + break; + case BuildResult::TransientFailure: + result.stepStatus = bsFailed; +- result.canRetry = true; ++ result.canRetry = get(step->drv.env, "__hydraRetry", "1") == "1"; + result.errorMsg = ""; + break; + case BuildResult::TimedOut: diff --git a/nixbld-etc-nixos/hydra.nix b/nixbld-etc-nixos/hydra.nix deleted file mode 100644 index 8b5cad5..0000000 --- a/nixbld-etc-nixos/hydra.nix +++ /dev/null @@ -1,155 +0,0 @@ -{ stdenv, nix, perlPackages, buildEnv, releaseTools, fetchFromGitHub -, makeWrapper, autoconf, automake, libtool, unzip, pkgconfig, sqlite, libpqxx -, gitAndTools, mercurial, darcs, subversion, bazaar, openssl, bzip2, libxslt -, guile, perl, postgresql, nukeReferences, git, boehmgc, nlohmann_json -, docbook_xsl, openssh, gnused, coreutils, findutils, gzip, lzma, gnutar -, rpm, dpkg, cdrkit, pixz, lib, fetchpatch, boost, autoreconfHook -}: - -with stdenv; - -if lib.versions.major nix.version == "1" - then throw "This Hydra version doesn't support Nix 1.x" -else - -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; - [ ModulePluggable - CatalystActionREST - CatalystAuthenticationStoreDBIxClass - CatalystDevel - CatalystDispatchTypeRegex - CatalystPluginAccessLog - CatalystPluginAuthorizationRoles - CatalystPluginCaptcha - CatalystPluginSessionStateCookie - CatalystPluginSessionStoreFastMmap - CatalystPluginStackTrace - CatalystRuntime - CatalystTraitForRequestProxyBase - CatalystViewDownload - CatalystViewJSON - CatalystViewTT - CatalystXScriptServerStarman - CatalystXRoleApplicator - CryptRandPasswd - DBDPg - DBDSQLite - DataDump - DateTime - DigestSHA1 - EmailMIME - EmailSender - FileSlurp - IOCompress - IPCRun - JSON - JSONAny - JSONXS - LWP - LWPProtocolHttps - NetAmazonS3 - NetStatsd - PadWalker - Readonly - SQLSplitStatement - SetScalar - Starman - SysHostnameLong - TextDiff - TextTable - XMLSimple - nix - nix.perl-bindings - git - boehmgc - ]; - }; -in releaseTools.nixBuild rec { - name = "hydra-${version}"; - version = "2019-04-01mlabs"; - - inherit stdenv; - - src = fetchFromGitHub { - owner = "m-labs"; - repo = "hydra"; - rev = "dbe142aba7606ea6e4b9edddbecd21e42cec95cd"; - sha256 = "1jc0rfp580zkxmjhd73xz47sv18d967j7fy5fkr57dr8r4x49r7g"; - }; - - buildInputs = - [ makeWrapper autoconf automake libtool unzip nukeReferences sqlite libpqxx - gitAndTools.topGit mercurial darcs subversion bazaar openssl bzip2 libxslt - guile # optional, for Guile + Guix support - perlDeps perl nix - postgresql # for running the tests - nlohmann_json - ] ++ 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 ] ); - - nativeBuildInputs = [ autoreconfHook pkgconfig ]; - - # 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" ]; - - NIX_CFLAGS_COMPILE = [ "-pthread" ]; - - shellHook = '' - PATH=$(pwd)/src/script:$(pwd)/src/hydra-eval-jobs:$(pwd)/src/hydra-queue-runner:$(pwd)/src/hydra-evaluator:$PATH - PERL5LIB=$(pwd)/src/lib:$PERL5LIB; - ''; - - enableParallelBuilding = true; - - preCheck = '' - patchShebangs . - export LOGNAME=''${LOGNAME:-foo} - ''; - - postInstall = '' - mkdir -p $out/nix-support - for i in $out/bin/*; do - read -n 4 chars < $i - if [[ $chars =~ ELF ]]; then continue; fi - wrapProgram $i \ - --prefix PERL5LIB ':' $out/libexec/hydra/lib:$PERL5LIB \ - --prefix PATH ':' $out/bin:$hydraPath \ - --set HYDRA_RELEASE ${version} \ - --set HYDRA_HOME $out/libexec/hydra \ - --set NIX_RELEASE ${nix.name or "unknown"} - done - ''; # */ - - dontStrip = true; - - passthru.perlDeps = perlDeps; - - meta = with stdenv.lib; { - description = "Nix-based continuous build system"; - license = licenses.gpl3; - platforms = platforms.linux; - maintainers = with maintainers; [ ma27 ]; - }; -}