From 80d72a7243408cfd1e31011f1f67a03fd4f27cc8 Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Tue, 25 Jul 2017 15:04:16 +0200
Subject: [PATCH] buildbot: override sources instead of repackage

---
 krebs/3modules/buildbot/master.nix            | 16 ++++-
 krebs/3modules/buildbot/slave.nix             | 15 ++++-
 .../simple/buildbot-classic-slave/default.nix | 60 -----------------
 .../5pkgs/simple/buildbot-classic/default.nix | 65 -------------------
 4 files changed, 29 insertions(+), 127 deletions(-)
 delete mode 100644 krebs/5pkgs/simple/buildbot-classic-slave/default.nix
 delete mode 100644 krebs/5pkgs/simple/buildbot-classic/default.nix

diff --git a/krebs/3modules/buildbot/master.nix b/krebs/3modules/buildbot/master.nix
index dce3745dc..12c685b82 100644
--- a/krebs/3modules/buildbot/master.nix
+++ b/krebs/3modules/buildbot/master.nix
@@ -2,8 +2,22 @@
 
 with import <stockholm/lib>;
 let
+  # https://github.com/NixOS/nixpkgs/issues/14026
+  nixpkgs-fix = import (pkgs.fetchgit {
+    url = https://github.com/nixos/nixpkgs;
+    rev = "e026b5c243ea39810826e68362718f5d703fb5d0";
+    sha256 = "11lqd480bi6xbi7xbh4krrxmbp6a6iafv1d0q3sj461al0x0has8";
+  }) {};
+
+  buildbot = nixpkgs-fix.buildbot.overrideDerivation (old: { 
+  postUnpack = "sourceRoot=\${sourceRoot}/master";
+  patches = [];
+  src = pkgs.fetchFromGitHub { 
+    owner = "krebscode";
+    repo = "buildbot-classic";
+    rev = "5b4f5f6f1";
+    sha256 = "1j3xn1gjzvsf90jvfmyln71fzlhjx642ivrqf47zfxpkacljja93"; };});
 
-  buildbot = pkgs.buildbot-classic;
   buildbot-master-config = pkgs.writeText "buildbot-master.cfg" ''
     # -*- python -*-
     from buildbot.plugins import *
diff --git a/krebs/3modules/buildbot/slave.nix b/krebs/3modules/buildbot/slave.nix
index 345d4a3ea..698bf3bcd 100644
--- a/krebs/3modules/buildbot/slave.nix
+++ b/krebs/3modules/buildbot/slave.nix
@@ -2,7 +2,20 @@
 
 with import <stockholm/lib>;
 let
-  pkg = pkgs.buildbot-classic-slave;
+  # https://github.com/NixOS/nixpkgs/issues/14026
+  nixpkgs-fix = import (pkgs.fetchgit {
+    url = https://github.com/nixos/nixpkgs;
+    rev = "e026b5c243ea39810826e68362718f5d703fb5d0";
+    sha256 = "11lqd480bi6xbi7xbh4krrxmbp6a6iafv1d0q3sj461al0x0has8";
+  }) {};
+  pkg = nixpkgs-fix.buildbot-slave.overrideDerivation (old: { 
+  postUnpack = "sourceRoot=\${sourceRoot}/slave";
+  patches = [];
+  src = pkgs.fetchFromGitHub { 
+    owner = "krebscode";
+    repo = "buildbot-classic";
+    rev = "5b4f5f6f1";
+    sha256 = "1j3xn1gjzvsf90jvfmyln71fzlhjx642ivrqf47zfxpkacljja93"; };});
   buildbot-slave-init = pkgs.writeText "buildbot-slave.tac" ''
     import os
 
diff --git a/krebs/5pkgs/simple/buildbot-classic-slave/default.nix b/krebs/5pkgs/simple/buildbot-classic-slave/default.nix
deleted file mode 100644
index 0b1ea73a3..000000000
--- a/krebs/5pkgs/simple/buildbot-classic-slave/default.nix
+++ /dev/null
@@ -1,60 +0,0 @@
-{ stdenv, buildbot-classic, python2Packages, fetchFromGitHub, coreutils }:
-
-python2Packages.buildPythonApplication (rec {
-  name = "buildbot-slave-classic-2017-07-23";
-
-  src = buildbot-classic.src;
-
-  postUnpack = "sourceRoot=\${sourceRoot}/slave";
-
-  propagatedBuildInputs = with python2Packages; [ twisted pathlib ];
-
-  # What's up with this?! 'trial' should be 'test', no?
-  #
-  # running tests
-  # usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
-  #    or: setup.py --help [cmd1 cmd2 ...]
-  #    or: setup.py --help-commands
-  #    or: setup.py cmd --help
-  #
-  # error: invalid command 'trial'
-  doCheck = false;
-
-  postInstall = ''
-    mkdir -p "$out/share/man/man1"
-    cp docs/buildslave.1 "$out/share/man/man1"
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = http://buildbot.net/;
-
-    license = stdenv.lib.licenses.gpl2Plus;
-
-    description = "Continuous integration system that automates the build/test cycle";
-
-    longDescription =
-      '' The BuildBot is a system to automate the compile/test cycle
-         required by most software projects to validate code changes.  By
-         automatically rebuilding and testing the tree each time something
-         has changed, build problems are pinpointed quickly, before other
-         developers are inconvenienced by the failure.  The guilty
-         developer can be identified and harassed without human
-         intervention.  By running the builds on a variety of platforms,
-         developers who do not have the facilities to test their changes
-         everywhere before checkin will at least know shortly afterwards
-         whether they have broken the build or not.  Warning counts, lint
-         checks, image size, compile time, and other build parameters can
-         be tracked over time, are more visible, and are therefore easier
-         to improve.
-
-         The overall goal is to reduce tree breakage and provide a platform
-         to run tests or code-quality checks that are too annoying or
-         pedantic for any human to waste their time with.  Developers get
-         immediate (and potentially public) feedback about their changes,
-         encouraging them to be more careful about testing before checking
-         in code.
-      '';
-    maintainers = with maintainers; [ bjornfor ];
-    platforms = platforms.all;
-  };
-})
diff --git a/krebs/5pkgs/simple/buildbot-classic/default.nix b/krebs/5pkgs/simple/buildbot-classic/default.nix
deleted file mode 100644
index 5f1081278..000000000
--- a/krebs/5pkgs/simple/buildbot-classic/default.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{ stdenv, python2Packages, fetchFromGitHub
-, enableDebugClient ? false
-}:
-
-# enableDebugClient enables "buildbot debugclient", a Gtk-based debug control
-# panel. Its mostly for developers.
-
-assert enableDebugClient -> python2Packages.pygobject != null && python2Packages.pyGtkGlade != null;
-
-with python2Packages; buildPythonApplication (rec {
-  name = "buildbot-classic-2017-07-23";
-
-  src = fetchFromGitHub {
-    owner = "krebscode";
-    repo = "buildbot-classic";
-    rev = "5b4f5f6f1";
-    sha256 = "1j3xn1gjzvsf90jvfmyln71fzlhjx642ivrqf47zfxpkacljja93";
-  };
-
-  propagatedBuildInputs =
-    [ twisted dateutil jinja2 sqlalchemy_migrate
-    ] ++ stdenv.lib.optional enableDebugClient [ pygobject pyGtkGlade ];
-  postUnpack = "sourceRoot=\${sourceRoot}/master";
-
-  # checkPhase = "trial buildbot";
-  #doCheck = true;
-
-  doCheck = false;
-
-  postInstall = ''
-    mkdir -p "$out/share/man/man1"
-    cp docs/buildbot.1 "$out/share/man/man1"
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = http://buildbot.net/;
-    license = stdenv.lib.licenses.gpl2Plus;
-    # Of course, we don't really need that on NixOS.  :-)
-    description = "Continuous integration system that automates the build/test cycle";
-    longDescription =
-      '' The BuildBot is a system to automate the compile/test cycle
-         required by most software projects to validate code changes.  By
-         automatically rebuilding and testing the tree each time something
-         has changed, build problems are pinpointed quickly, before other
-         developers are inconvenienced by the failure.  The guilty
-         developer can be identified and harassed without human
-         intervention.  By running the builds on a variety of platforms,
-         developers who do not have the facilities to test their changes
-         everywhere before checkin will at least know shortly afterwards
-         whether they have broken the build or not.  Warning counts, lint
-         checks, image size, compile time, and other build parameters can
-         be tracked over time, are more visible, and are therefore easier
-         to improve.
-
-         The overall goal is to reduce tree breakage and provide a platform
-         to run tests or code-quality checks that are too annoying or
-         pedantic for any human to waste their time with.  Developers get
-         immediate (and potentially public) feedback about their changes,
-         encouraging them to be more careful about testing before checking
-         in code.
-      '';
-    maintainers = with maintainers; [ bjornfor ];
-    platforms = platforms.all;
-  };
-})