diff --git a/pkgs/development/tools/build-managers/buildbot-slave/default.nix b/pkgs/development/tools/build-managers/buildbot-slave/default.nix new file mode 100644 index 000000000000..da38bc0a1338 --- /dev/null +++ b/pkgs/development/tools/build-managers/buildbot-slave/default.nix @@ -0,0 +1,64 @@ +{ stdenv, buildPythonPackage, fetchurl, coreutils, twisted }: + +buildPythonPackage (rec { + name = "buildbot-slave-0.8.7p1"; + namePrefix = ""; + + src = fetchurl { + url = "http://buildbot.googlecode.com/files/${name}.tar.gz"; + sha256 = "1p7a0srab6ifljh9vi25awvxfrxljj9s0hi1jipiiykyhjihgnxv"; + }; + + patchPhase = '' + substituteInPlace buildslave/scripts/logwatcher.py --replace /usr/bin/tail ${coreutils}/bin/tail + ''; + + propagatedBuildInputs = [ twisted ]; + + # 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 = { + homepage = http://buildbot.net/; + + license = "GPLv2+"; + + 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. + ''; + }; +}) diff --git a/pkgs/development/tools/build-managers/buildbot/default.nix b/pkgs/development/tools/build-managers/buildbot/default.nix index 71862ec1cf75..239a20510348 100644 --- a/pkgs/development/tools/build-managers/buildbot/default.nix +++ b/pkgs/development/tools/build-managers/buildbot/default.nix @@ -1,12 +1,20 @@ -{ fetchurl, stdenv, buildPythonPackage, twisted, texinfo }: +{ stdenv, buildPythonPackage, fetchurl, twisted, dateutil, jinja2 +, sqlalchemy , sqlalchemy_migrate +, enableDebugClient ? false, pygobject ? null, pyGtkGlade ? null +}: + +# enableDebugClient enables "buildbot debugclient", a Gtk-based debug control +# panel. Its mostly for developers. + +assert enableDebugClient -> pygobject != null && pyGtkGlade != null; buildPythonPackage (rec { - name = "buildbot-0.7.11p3"; + name = "buildbot-0.8.7p1"; namePrefix = ""; src = fetchurl { - url = "mirror://sourceforge/buildbot/${name}.tar.gz"; - sha256 = "0h77ijf5iqvc8bnfxpsh3hvpr7wj23pkcywd3hcyphv1wwlhmhjv"; + url = "http://buildbot.googlecode.com/files/${name}.tar.gz"; + sha256 = "0xjpk8510fhryl1g4mczz319h62il8hw9rh1rzvsfmffgf43zvld"; }; patchPhase = @@ -19,17 +27,27 @@ buildPythonPackage (rec { done ''; - buildInputs = [ texinfo ]; - propagatedBuildInputs = [ twisted ]; + buildInputs = [ ]; - # FIXME: Some tests fail. + propagatedBuildInputs = + [ twisted dateutil jinja2 sqlalchemy sqlalchemy_migrate + ] ++ stdenv.lib.optional enableDebugClient [ pygobject pyGtkGlade ]; + + # 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/info" - make -C docs buildbot.info - cp -v "docs/buildbot.info"* "$out/share/info" - ''; + postInstall = '' + mkdir -p "$out/share/man/man1" + cp docs/buildbot.1 "$out/share/man/man1" + ''; meta = { homepage = http://buildbot.net/; @@ -37,7 +55,7 @@ buildPythonPackage (rec { license = "GPLv2+"; # Of course, we don't really need that on NixOS. :-) - description = "BuildBot, a system to automate the software compile/test cycle"; + description = "Continuous integration system that automates the build/test cycle"; longDescription = '' The BuildBot is a system to automate the compile/test cycle diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2c4eed50ee69..fefc427cd9e6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3114,6 +3114,11 @@ let bison = callPackage ../development/tools/parsing/bison { }; buildbot = callPackage ../development/tools/build-managers/buildbot { + inherit (pythonPackages) twisted jinja2 sqlalchemy sqlalchemy_migrate; + dateutil = pythonPackages.dateutil_1_5; + }; + + buildbotSlave = callPackage ../development/tools/build-managers/buildbot-slave { inherit (pythonPackages) twisted; }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ce0e52de86b2..ecc553f85e4f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -869,6 +869,24 @@ pythonPackages = python.modules // rec { }; }); + # Buildbot 0.8.7p1 needs dateutil==1.5 + dateutil_1_5 = buildPythonPackage (rec { + name = "dateutil-1.5"; + + src = fetchurl { + url = "http://pypi.python.org/packages/source/p/python-dateutil/python-${name}.tar.gz"; + sha256 = "02dhw57jf5kjcp7ng1if7vdrbnlpb9yjmz7wygwwvf3gni4766bg"; + }; + + propagatedBuildInputs = [ pythonPackages.six ]; + + meta = { + description = "Powerful extensions to the standard datetime module"; + homepage = http://pypi.python.org/pypi/python-dateutil; + license = "BSD-style"; + }; + }); + decorator = buildPythonPackage rec { name = "decorator-3.3.1";