From 3fc83370e0cdae7cebf73d74d71fa71b68e3d790 Mon Sep 17 00:00:00 2001 From: hectorj Date: Sun, 9 Jul 2017 12:44:34 +0200 Subject: zipkin-server: init at 1.28.1 --- pkgs/servers/monitoring/zipkin/default.nix | 26 ++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 28 insertions(+) create mode 100644 pkgs/servers/monitoring/zipkin/default.nix diff --git a/pkgs/servers/monitoring/zipkin/default.nix b/pkgs/servers/monitoring/zipkin/default.nix new file mode 100644 index 000000000000..2925a8f2dc53 --- /dev/null +++ b/pkgs/servers/monitoring/zipkin/default.nix @@ -0,0 +1,26 @@ +{stdenv, fetchurl, makeWrapper, jre}: +stdenv.mkDerivation rec { + version = "1.28.1"; + name = "zipkin-server-${version}"; + src = fetchurl { + url = "https://search.maven.org/remotecontent?filepath=io/zipkin/java/zipkin-server/${version}/zipkin-server-${version}-exec.jar"; + sha256 = "02369fkv0kbl1isq6y26fh2zj5wxv3zck522m5wypsjlcfcw2apa"; + }; + buildInputs = [ makeWrapper ]; + + buildCommand = + '' + mkdir -p $out/share/java + cp ${src} $out/share/java/zipkin-server-${version}-exec.jar + mkdir -p $out/bin + makeWrapper ${jre}/bin/java $out/bin/zipkin-server \ + --add-flags "-cp $out/share/java/zipkin-server-${version}-exec.jar org.springframework.boot.loader.JarLauncher" + ''; + meta = with stdenv.lib; { + description = "Zipkin distributed tracing system"; + homepage = "http://zipkin.io/"; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = [ maintainers.hectorj ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b62908e2798b..d839dd8f7fc8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11560,6 +11560,8 @@ with pkgs; zabbix20 = callPackage ../servers/monitoring/zabbix/2.0.nix { }; zabbix22 = callPackage ../servers/monitoring/zabbix/2.2.nix { }; + zipkin-server = callPackage ../servers/monitoring/zipkin { }; + ### OS-SPECIFIC -- cgit 1.4.1 From 6e9f0f6dede257ab7ac6aa6ef2fc7bc40f8583d8 Mon Sep 17 00:00:00 2001 From: hectorj Date: Sun, 9 Jul 2017 18:19:20 +0200 Subject: remove extra-line --- pkgs/top-level/all-packages.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d839dd8f7fc8..360dcba7a464 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11562,7 +11562,6 @@ with pkgs; zipkin-server = callPackage ../servers/monitoring/zipkin { }; - ### OS-SPECIFIC afuse = callPackage ../os-specific/linux/afuse { }; -- cgit 1.4.1 From 8317144e43965d3d6b2e3aa74d8440322e39e202 Mon Sep 17 00:00:00 2001 From: hectorj Date: Sun, 9 Jul 2017 18:26:09 +0200 Subject: zipkin-server => zipkin in all-packages --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 360dcba7a464..ca483059c161 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11560,7 +11560,7 @@ with pkgs; zabbix20 = callPackage ../servers/monitoring/zabbix/2.0.nix { }; zabbix22 = callPackage ../servers/monitoring/zabbix/2.2.nix { }; - zipkin-server = callPackage ../servers/monitoring/zipkin { }; + zipkin = callPackage ../servers/monitoring/zipkin { }; ### OS-SPECIFIC -- cgit 1.4.1 From 9826f5cc3cd9d1c2e31d8110952018bdf8f1a956 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 15 Nov 2017 15:33:30 +0100 Subject: nixos/nsd: automatic DNSSEC using BIND toolset --- nixos/modules/services/networking/nsd.nix | 135 ++++++++++++++++++++++++++++-- pkgs/servers/dns/bind/default.nix | 11 ++- pkgs/top-level/all-packages.nix | 5 +- 3 files changed, 141 insertions(+), 10 deletions(-) diff --git a/nixos/modules/services/networking/nsd.nix b/nixos/modules/services/networking/nsd.nix index c8b8ed547ebb..636af4bbc31b 100644 --- a/nixos/modules/services/networking/nsd.nix +++ b/nixos/modules/services/networking/nsd.nix @@ -248,6 +248,46 @@ let Use imports or pkgs.lib.readFile if you don't want this data in your config file. ''; }; + + dnssec = mkEnableOption "DNSSEC"; + + dnssecPolicy = { + algorithm = mkOption { + type = types.str; + default = "RSASHA256"; + description = "Which algorithm to use for DNSSEC"; + }; + keyttl = mkOption { + type = types.str; + default = "1h"; + description = "TTL for dnssec records"; + }; + coverage = mkOption { + type = types.str; + default = "1y"; + description = '' + The length of time to ensure that keys will be correct; no action will be taken to create new keys to be activated after this time. + ''; + }; + zsk = mkOption { + type = keyPolicy; + default = { keySize = 2048; + prePublish = "1w"; + postPublish = "1w"; + rollPeriod = "1mo"; + }; + description = "Key policy for zone signing keys"; + }; + ksk = mkOption { + type = keyPolicy; + default = { keySize = 4096; + prePublish = "1mo"; + postPublish = "1mo"; + rollPeriod = "0"; + }; + description = "Key policy for key signing keys"; + }; + }; maxRefreshSecs = mkOption { type = types.nullOr types.int; @@ -365,10 +405,61 @@ let and stats_noreset. ''; }; + }; + }; + keyPolicy = types.submodule { + options = { + keySize = mkOption { + type = types.int; + description = "Key size in bits"; + }; + prePublish = mkOption { + type = types.str; + description = "How long in advance to publish new keys"; + }; + postPublish = mkOption { + type = types.str; + description = "How long after deactivation to keep a key in the zone"; + }; + rollPeriod = mkOption { + type = types.str; + description = "How frequently to change keys"; + }; }; }; + dnssecZones = (filterAttrs (n: v: if v ? dnssec then v.dnssec else false) zoneConfigs); + + dnssec = length (attrNames dnssecZones) != 0; + + signZones = optionalString dnssec '' + mkdir -p ${stateDir}/dnssec + chown ${username}:${username} ${stateDir}/dnssec + chmod 0600 ${stateDir}/dnssec + + ${concatStrings (mapAttrsToList signZone dnssecZones)} + ''; + signZone = name: zone: '' + ${pkgs.bind}/bin/dnssec-keymgr -g ${pkgs.bind}/bin/dnssec-keygen -s ${pkgs.bind}/bin/dnssec-settime -K ${stateDir}/dnssec -c ${policyFile name zone.dnssecPolicy} ${name} + ${pkgs.bind}/bin/dnssec-signzone -S -K ${stateDir}/dnssec -o ${name} -O full -N date ${stateDir}/zones/${name} + ${nsdPkg}/sbin/nsd-checkzone ${name} ${stateDir}/zones/${name}.signed && mv -v ${stateDir}/zones/${name}.signed ${stateDir}/zones/${name} + ''; + policyFile = name: policy: pkgs.writeText "${name}.policy" '' + zone ${name} { + algorithm ${policy.algorithm}; + key-size zsk ${toString policy.zsk.keySize}; + key-size ksk ${toString policy.ksk.keySize}; + keyttl ${policy.keyttl}; + pre-publish zsk ${policy.zsk.prePublish}; + pre-publish ksk ${policy.ksk.prePublish}; + post-publish zsk ${policy.zsk.postPublish}; + post-publish ksk ${policy.ksk.postPublish}; + roll-period zsk ${policy.zsk.rollPeriod}; + roll-period ksk ${policy.ksk.rollPeriod}; + coverage ${policy.coverage}; + }; + ''; in { # options are ordered alphanumerically @@ -378,6 +469,14 @@ in bind8Stats = mkEnableOption "BIND8 like statistics"; + dnssecInterval = mkOption { + type = types.str; + default = "1h"; + description = '' + How often to check whether dnssec key rollover is required + ''; + }; + extraConfig = mkOption { type = types.str; default = ""; @@ -739,7 +838,6 @@ in }; - zones = mkOption { type = types.attrsOf zoneOptions; default = {}; @@ -783,7 +881,6 @@ in serverGroup1. ''; }; - }; config = mkIf cfg.enable { @@ -828,9 +925,9 @@ in mkdir -m 0700 -p "${stateDir}/var" cat > "${stateDir}/don't touch anything in here" << EOF - Everything in this directory except NSD's state in var is - automatically generated and will be purged and redeployed - by the nsd.service pre-start script. + Everything in this directory except NSD's state in var and dnssec + is automatically generated and will be purged and redeployed by + the nsd.service pre-start script. EOF chown ${username}:${username} -R "${stateDir}/private" @@ -844,5 +941,33 @@ in ''; }; + nixpkgs.config = mkIf dnssec { + bind.enablePython = true; + }; + + systemd.timers."nsd-dnssec" = mkIf dnssec { + description = "Automatic DNSSEC key rollover"; + + wantedBy = [ "nsd.service" ]; + + timerConfig = { + OnActiveSec = cfg.dnssecInterval; + OnUnitActiveSec = cfg.dnssecInterval; + }; + }; + + systemd.services."nsd-dnssec" = mkIf dnssec { + description = "DNSSEC key rollover"; + + wantedBy = [ "nsd.service" ]; + before = [ "nsd.service" ]; + + script = signZones; + + postStop = '' + ${pkgs.systemd}/bin/systemctl kill -s SIGHUP nsd.service + ''; + }; + }; } diff --git a/pkgs/servers/dns/bind/default.nix b/pkgs/servers/dns/bind/default.nix index bf7a7266022e..c52761e66b6f 100644 --- a/pkgs/servers/dns/bind/default.nix +++ b/pkgs/servers/dns/bind/default.nix @@ -1,7 +1,9 @@ { stdenv, lib, fetchurl, openssl, libtool, perl, libxml2 -, enableSeccomp ? false, libseccomp ? null }: +, enableSeccomp ? false, libseccomp ? null +, enablePython ? false, python ? null }: assert enableSeccomp -> libseccomp != null; +assert enablePython -> python != null; let version = "9.11.2"; in @@ -18,8 +20,9 @@ stdenv.mkDerivation rec { patches = [ ./dont-keep-configure-flags.patch ./remove-mkdir-var.patch ] ++ stdenv.lib.optional stdenv.isDarwin ./darwin-openssl-linking-fix.patch; - buildInputs = [ openssl libtool perl libxml2 ] ++ - stdenv.lib.optional enableSeccomp libseccomp; + buildInputs = [ openssl libtool perl libxml2 ] + ++ lib.optional enableSeccomp libseccomp + ++ lib.optional enablePython python; STD_CDEFINES = [ "-DDIG_SIGCHASE=1" ]; # support +sigchase @@ -28,6 +31,7 @@ stdenv.mkDerivation rec { "--with-libtool" "--with-libxml2=${libxml2.dev}" "--with-openssl=${openssl.dev}" + (if enablePython then "--with-python" else "--without-python") "--without-atf" "--without-dlopen" "--without-docbook-xsl" @@ -36,7 +40,6 @@ stdenv.mkDerivation rec { "--without-idnlib" "--without-pkcs11" "--without-purify" - "--without-python" ] ++ lib.optional enableSeccomp "--enable-seccomp"; postInstall = '' diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 46a1976adc1c..35bf5e73d1c4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11462,7 +11462,10 @@ with pkgs; bftpd = callPackage ../servers/ftp/bftpd {}; - bind = callPackage ../servers/dns/bind { }; + bind = callPackage ../servers/dns/bind { + enablePython = config.bind.enablePython or false; + python = python.withPackages (ps: with ps; [ ply ]); + }; dnsutils = bind.dnsutils; bird = callPackage ../servers/bird { }; -- cgit 1.4.1 From a2e40f72547a888066698a41fa54ca4c675aaad0 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Fri, 17 Nov 2017 14:03:30 +0100 Subject: nixpkgs/bind: use python3 --- pkgs/servers/dns/bind/default.nix | 6 +++--- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/servers/dns/bind/default.nix b/pkgs/servers/dns/bind/default.nix index c52761e66b6f..427497bff0f9 100644 --- a/pkgs/servers/dns/bind/default.nix +++ b/pkgs/servers/dns/bind/default.nix @@ -1,9 +1,9 @@ { stdenv, lib, fetchurl, openssl, libtool, perl, libxml2 , enableSeccomp ? false, libseccomp ? null -, enablePython ? false, python ? null }: +, enablePython ? false, python3 ? null }: assert enableSeccomp -> libseccomp != null; -assert enablePython -> python != null; +assert enablePython -> python3 != null; let version = "9.11.2"; in @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { buildInputs = [ openssl libtool perl libxml2 ] ++ lib.optional enableSeccomp libseccomp - ++ lib.optional enablePython python; + ++ lib.optional enablePython python3; STD_CDEFINES = [ "-DDIG_SIGCHASE=1" ]; # support +sigchase diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 35bf5e73d1c4..3ff006b36caa 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11464,7 +11464,7 @@ with pkgs; bind = callPackage ../servers/dns/bind { enablePython = config.bind.enablePython or false; - python = python.withPackages (ps: with ps; [ ply ]); + python3 = python3.withPackages (ps: with ps; [ ply ]); }; dnsutils = bind.dnsutils; -- cgit 1.4.1 From 9fad70f1de9918ad6a280fe8ac243173b0329789 Mon Sep 17 00:00:00 2001 From: Kier Davis Date: Sat, 28 Oct 2017 22:29:53 +0100 Subject: boinc service: use an FHS environment While BOINC itself is open source, many of the project applications it runs are not. Additionally, these project applications are checksummed before they are run, so they can't be patched. This means we can't make the project applications find required binaries/libraries on a NixOS system. The solution is therefore to make said binaries and libraries appear in the expected locations, by wrapping BOINC in an FHS-compatible environment [1]. An `extraEnvPackages` is also added to allow more packages to be added into this environment. The documentation for this option describes some practical use cases for it. [1] https://nixos.org/nixpkgs/manual/#sec-fhs-environments Version 2: fixed Docbook list formatting, minor rewording Version 3: rebase onto master (9c048f4fb66adc33c6b379f2edefcb615fd53de6) Version 4: fix usage of targetPkgs argument to buildFHSUserEnv --- nixos/modules/services/computing/boinc/client.nix | 46 ++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/computing/boinc/client.nix b/nixos/modules/services/computing/boinc/client.nix index e43b6bbb2536..8abe3c5b8c9b 100644 --- a/nixos/modules/services/computing/boinc/client.nix +++ b/nixos/modules/services/computing/boinc/client.nix @@ -6,6 +6,13 @@ let cfg = config.services.boinc; allowRemoteGuiRpcFlag = optionalString cfg.allowRemoteGuiRpc "--allow_remote_gui_rpc"; + fhsEnv = pkgs.buildFHSUserEnv { + name = "boinc-fhs-env"; + targetPkgs = pkgs': [ cfg.package ] ++ cfg.extraEnvPackages; + runScript = "/bin/boinc_client"; + }; + fhsEnvExecutable = "${fhsEnv}/bin/${fhsEnv.name}"; + in { options.services.boinc = { @@ -49,6 +56,43 @@ in See also: ''; }; + + extraEnvPackages = mkOption { + type = types.listOf types.package; + default = []; + example = "[ pkgs.virtualbox ]"; + description = '' + Additional packages to make available in the environment in which + BOINC will run. Common choices are: + + + pkgs.virtualbox + + The VirtualBox virtual machine framework. Required by some BOINC + projects, such as ATLAS@home. + + + + pkgs.ocl-icd + + OpenCL infrastructure library. Required by BOINC projects that + use OpenCL, in addition to a device-specific OpenCL driver. + + + + pkgs.linuxPackages.nvidia_x11 + + Provides CUDA libraries. Required by BOINC projects that use + CUDA. Note that this requires an NVIDIA graphics device to be + present on the system. + + Also provides OpenCL drivers for NVIDIA GPUs; + pkgs.ocl-icd is also needed in this case. + + + + ''; + }; }; config = mkIf cfg.enable { @@ -70,7 +114,7 @@ in chown boinc ${cfg.dataDir} ''; script = '' - ${cfg.package}/bin/boinc_client --dir ${cfg.dataDir} --redirectio ${allowRemoteGuiRpcFlag} + ${fhsEnvExecutable} --dir ${cfg.dataDir} --redirectio ${allowRemoteGuiRpcFlag} ''; serviceConfig = { PermissionsStartOnly = true; # preStart must be run as root -- cgit 1.4.1 From 38516ba27e673ea711e1b96448a19e152b4d93cd Mon Sep 17 00:00:00 2001 From: Christian Kögler Date: Sun, 9 Jul 2017 07:43:07 +0200 Subject: emsciptenStdenv: allow reuse without ./autogen.sh The configure phase of emscriptenStdenv exspects an ./autogen.sh script, which is anoying when this step is not needed. Good example is emscriptenPackages.zlib which needs to override configurePhase. --- pkgs/development/em-modules/generic/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/development/em-modules/generic/default.nix b/pkgs/development/em-modules/generic/default.nix index 332fab8e14aa..f03e6e42739a 100644 --- a/pkgs/development/em-modules/generic/default.nix +++ b/pkgs/development/em-modules/generic/default.nix @@ -22,8 +22,6 @@ pkgs.stdenv.mkDerivation ( HOME=$TMPDIR runHook preConfigure - # probably requires autotools as dependency - ./autogen.sh emconfigure ./configure --prefix=$out runHook postConfigure -- cgit 1.4.1 From d79df63ea2acd5b1a6f895d134c036305d852bbc Mon Sep 17 00:00:00 2001 From: Jörg Thalheim Date: Sat, 21 Apr 2018 20:57:22 +0100 Subject: cloudfoundry-cli: 6.32.0 -> 6.36.1 --- pkgs/development/tools/cloudfoundry-cli/default.nix | 8 ++++---- pkgs/top-level/all-packages.nix | 4 +--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/pkgs/development/tools/cloudfoundry-cli/default.nix b/pkgs/development/tools/cloudfoundry-cli/default.nix index fc085b3e5ea5..22c2f0774182 100644 --- a/pkgs/development/tools/cloudfoundry-cli/default.nix +++ b/pkgs/development/tools/cloudfoundry-cli/default.nix @@ -2,17 +2,17 @@ buildGoPackage rec { name = "cloudfoundry-cli-${version}"; - version = "6.32.0"; + version = "6.36.1"; goPackagePath = "code.cloudfoundry.org/cli"; subPackages = [ "." ]; src = fetchFromGitHub { + owner = "cloudfoundry"; + repo = "cli"; rev = "v${version}"; - owner = "cloudfoundry-attic"; - repo = "cli-with-i18n"; - sha256 = "16r8zvahn4b98krmyb8zq9370i6572dhz88bfxb3fnddcv6zy1ng"; + sha256 = "19inl7qs2acs59p3gnl5zdsxym0wp2rn05q0zfg7rwf5sjh68amp"; }; outputs = [ "out" ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b56c0de69397..3b1d9e0b340a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7644,9 +7644,7 @@ with pkgs; cl-launch = callPackage ../development/tools/misc/cl-launch {}; - cloudfoundry-cli = callPackage ../development/tools/cloudfoundry-cli { - go = go_1_9; - }; + cloudfoundry-cli = callPackage ../development/tools/cloudfoundry-cli { }; coan = callPackage ../development/tools/analysis/coan { }; -- cgit 1.4.1 From 0a92fb93155f0b9fa5e95157dc0b8e96a0c4d118 Mon Sep 17 00:00:00 2001 From: Jörg Thalheim Date: Sat, 21 Apr 2018 21:05:00 +0100 Subject: Revert "libupnp: 1.6.21 -> 1.8.3" This reverts commit ee45689f1430c564acda19efa5d2b12dd267cafb. 1.8.x branch break compatibility. This should become a new package instead. --- pkgs/development/libraries/pupnp/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/pupnp/default.nix b/pkgs/development/libraries/pupnp/default.nix index 018a57ad0571..fd738faf5074 100644 --- a/pkgs/development/libraries/pupnp/default.nix +++ b/pkgs/development/libraries/pupnp/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "libupnp-${version}"; - version = "1.8.3"; + version = "1.6.21"; src = fetchFromGitHub { owner = "mrjimenez"; repo = "pupnp"; rev = "release-${version}"; - sha256 = "1w0kfq1pg3y2wl6gwkm1w872g0qz29w1z9wj08xxmwnk5mkpvsrl"; + sha256 = "07ksfhadinaa20542gblrxi9pqz0v6y70a836hp3qr4037id4nm9"; }; nativeBuildInputs = [ autoreconfHook ]; -- cgit 1.4.1 From 595efb966d38eb9480cf332adc0ffcb92855e685 Mon Sep 17 00:00:00 2001 From: berdario Date: Sat, 21 Apr 2018 21:30:24 +0100 Subject: hydra-eval-faliures: Print Dependency failures as well as direct failures and update to Python3 (#29760) * Print Dependency failures as well as direct failures and update to Python3 some package fail due to non-exposed dependencies and would thus not appear in the list, for example gcj * hydra-eval-failures: simpler hashbang --- maintainers/scripts/hydra-eval-failures.py | 33 +++++++++++++++++------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/maintainers/scripts/hydra-eval-failures.py b/maintainers/scripts/hydra-eval-failures.py index d0bd1913ba8a..23669502e46d 100755 --- a/maintainers/scripts/hydra-eval-failures.py +++ b/maintainers/scripts/hydra-eval-failures.py @@ -1,5 +1,5 @@ #!/usr/bin/env nix-shell -#!nix-shell -i python -p pythonFull pythonPackages.requests pythonPackages.pyquery pythonPackages.click +#!nix-shell -i python3 -p 'python3.withPackages(ps: with ps; [ requests pyquery click ])' # To use, just execute this script with --help to display help. @@ -16,7 +16,7 @@ maintainers_json = subprocess.check_output([ 'nix-instantiate', '-E', 'import ./maintainers/maintainer-list.nix {}', '--eval', '--json' ]) maintainers = json.loads(maintainers_json) -MAINTAINERS = {v: k for k, v in maintainers.iteritems()} +MAINTAINERS = {v: k for k, v in maintainers.items()} def get_response_text(url): @@ -45,6 +45,17 @@ def get_maintainers(attr_name): except: return [] +def print_build(table_row): + a = pq(table_row)('a')[1] + print("- [ ] [{}]({})".format(a.text, a.get('href')), flush=True) + + maintainers = get_maintainers(a.text) + if maintainers: + print(" - maintainers: {}".format(", ".join(map(lambda u: '@' + u, maintainers)))) + # TODO: print last three persons that touched this file + # TODO: pinpoint the diff that broke this build, or maybe it's transient or maybe it never worked? + + sys.stdout.flush() @click.command() @click.option( @@ -73,23 +84,17 @@ def cli(jobset): # TODO: aborted evaluations # TODO: dependency failed without propagated builds + print('\nFailures:') for tr in d('img[alt="Failed"]').parents('tr'): - a = pq(tr)('a')[1] - print("- [ ] [{}]({})".format(a.text, a.get('href'))) + print_build(tr) - sys.stdout.flush() - - maintainers = get_maintainers(a.text) - if maintainers: - print(" - maintainers: {}".format(", ".join(map(lambda u: '@' + u, maintainers)))) - # TODO: print last three persons that touched this file - # TODO: pinpoint the diff that broke this build, or maybe it's transient or maybe it never worked? - - sys.stdout.flush() + print('\nDependency failures:') + for tr in d('img[alt="Dependency failed"]').parents('tr'): + print_build(tr) if __name__ == "__main__": try: cli() - except: + except Exception as e: import pdb;pdb.post_mortem() -- cgit 1.4.1