diff --git a/nixos/doc/manual/release-notes/rl-1903.xml b/nixos/doc/manual/release-notes/rl-1903.xml index 9cb5b93f27c..c4847b60e27 100644 --- a/nixos/doc/manual/release-notes/rl-1903.xml +++ b/nixos/doc/manual/release-notes/rl-1903.xml @@ -113,6 +113,15 @@ (i.e. users.users.yourusername.extraGroups = ["video"];). + + + Buildbot now supports Python 3 and its packages have been moved to + pythonPackages. The options + and + can be used to select + the Python 2 or 3 version of the package. + + diff --git a/nixos/modules/services/continuous-integration/buildbot/master.nix b/nixos/modules/services/continuous-integration/buildbot/master.nix index 8d767de37f0..0f07e6133bb 100644 --- a/nixos/modules/services/continuous-integration/buildbot/master.nix +++ b/nixos/modules/services/continuous-integration/buildbot/master.nix @@ -6,8 +6,12 @@ with lib; let cfg = config.services.buildbot-master; + + python = cfg.package.pythonModule; + escapeStr = s: escape ["'"] s; - masterCfg = if cfg.masterCfg == null then pkgs.writeText "master.cfg" '' + + defaultMasterCfg = pkgs.writeText "master.cfg" '' from buildbot.plugins import * factory = util.BuildFactory() c = BuildmasterConfig = dict( @@ -27,8 +31,28 @@ let factory.addStep(step) ${cfg.extraConfig} - '' - else cfg.masterCfg; + ''; + + tacFile = pkgs.writeText "buildbot-master.tac" '' + import os + + from twisted.application import service + from buildbot.master import BuildMaster + + basedir = '${cfg.buildbotDir}' + + configfile = '${cfg.masterCfg}' + + # Default umask for server + umask = None + + # note: this line is matched against to check that this is a buildmaster + # directory; do not edit it. + application = service.Application('buildmaster') + + m = BuildMaster(basedir, configfile, umask) + m.setServiceParent(application) + ''; in { options = { @@ -66,9 +90,9 @@ in { }; masterCfg = mkOption { - type = types.nullOr types.path; + type = types.path; description = "Optionally pass master.cfg path. Other options in this configuration will be ignored."; - default = null; + default = defaultMasterCfg; example = "/etc/nixos/buildbot/master.cfg"; }; @@ -175,18 +199,25 @@ in { package = mkOption { type = types.package; - default = pkgs.buildbot-full; - defaultText = "pkgs.buildbot-full"; + default = pkgs.pythonPackages.buildbot-full; + defaultText = "pkgs.pythonPackages.buildbot-full"; description = "Package to use for buildbot."; - example = literalExample "pkgs.buildbot-full"; + example = literalExample "pkgs.python3Packages.buildbot-full"; }; packages = mkOption { - default = with pkgs; [ python27Packages.twisted git ]; + default = [ pkgs.git ]; example = literalExample "[ pkgs.git ]"; type = types.listOf types.package; description = "Packages to add to PATH for the buildbot process."; }; + + pythonPackages = mkOption { + default = pythonPackages: with pythonPackages; [ ]; + defaultText = "pythonPackages: with pythonPackages; [ ]"; + description = "Packages to add the to the PYTHONPATH of the buildbot process."; + example = literalExample "pythonPackages: with pythonPackages; [ requests ]"; + }; }; }; @@ -210,14 +241,15 @@ in { description = "Buildbot Continuous Integration Server."; after = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; - path = cfg.packages; + path = cfg.packages ++ cfg.pythonPackages python.pkgs; + environment.PYTHONPATH = "${python.withPackages (self: cfg.pythonPackages self ++ [ cfg.package ])}/${python.sitePackages}"; preStart = '' - env > envvars - mkdir -vp ${cfg.buildbotDir} - ln -sfv ${masterCfg} ${cfg.buildbotDir}/master.cfg - rm -fv $cfg.buildbotDir}/buildbot.tac - ${cfg.package}/bin/buildbot create-master ${cfg.buildbotDir} + mkdir -vp "${cfg.buildbotDir}" + # Link the tac file so buildbot command line tools recognize the directory + ln -sf "${tacFile}" "${cfg.buildbotDir}/buildbot.tac" + ${cfg.package}/bin/buildbot create-master --db "${cfg.dbUrl}" "${cfg.buildbotDir}" + rm -f buildbot.tac.new master.cfg.sample ''; serviceConfig = { @@ -225,12 +257,11 @@ in { User = cfg.user; Group = cfg.group; WorkingDirectory = cfg.home; - ExecStart = "${cfg.package}/bin/buildbot start --nodaemon ${cfg.buildbotDir}"; + # NOTE: call twistd directly with stdout logging for systemd + ExecStart = "${python.pkgs.twisted}/bin/twistd -o --nodaemon --pidfile= --logfile - --python ${tacFile}"; }; - }; }; meta.maintainers = with lib.maintainers; [ nand0p mic92 ]; - } diff --git a/nixos/modules/services/continuous-integration/buildbot/worker.nix b/nixos/modules/services/continuous-integration/buildbot/worker.nix index 67c541570b9..4130ec918a7 100644 --- a/nixos/modules/services/continuous-integration/buildbot/worker.nix +++ b/nixos/modules/services/continuous-integration/buildbot/worker.nix @@ -7,6 +7,40 @@ with lib; let cfg = config.services.buildbot-worker; + python = cfg.package.pythonModule; + + tacFile = pkgs.writeText "aur-buildbot-worker.tac" '' + import os + from io import open + + from buildbot_worker.bot import Worker + from twisted.application import service + + basedir = '${cfg.buildbotDir}' + + # note: this line is matched against to check that this is a worker + # directory; do not edit it. + application = service.Application('buildbot-worker') + + master_url_split = '${cfg.masterUrl}'.split(':') + buildmaster_host = master_url_split[0] + port = int(master_url_split[1]) + workername = '${cfg.workerUser}' + + with open('${cfg.workerPassFile}', 'r', encoding='utf-8') as passwd_file: + passwd = passwd_file.read().strip('\r\n') + keepalive = 600 + umask = None + maxdelay = 300 + numcpus = None + allow_shutdown = None + + s = Worker(buildmaster_host, port, workername, passwd, basedir, + keepalive, umask=umask, maxdelay=maxdelay, + numcpus=numcpus, allow_shutdown=allow_shutdown) + s.setServiceParent(application) + ''; + in { options = { services.buildbot-worker = { @@ -59,6 +93,23 @@ in { description = "Specifies the Buildbot Worker password."; }; + workerPassFile = mkOption { + type = types.path; + description = "File used to store the Buildbot Worker password"; + }; + + hostMessage = mkOption { + default = null; + type = types.nullOr types.str; + description = "Description of this worker"; + }; + + adminMessage = mkOption { + default = null; + type = types.nullOr types.str; + description = "Name of the administrator of this worker"; + }; + masterUrl = mkOption { default = "localhost:9989"; type = types.str; @@ -67,23 +118,24 @@ in { package = mkOption { type = types.package; - default = pkgs.buildbot-worker; - defaultText = "pkgs.buildbot-worker"; + default = pkgs.pythonPackages.buildbot-worker; + defaultText = "pkgs.pythonPackages.buildbot-worker"; description = "Package to use for buildbot worker."; - example = literalExample "pkgs.buildbot-worker"; + example = literalExample "pkgs.python3Packages.buildbot-worker"; }; packages = mkOption { - default = with pkgs; [ python27Packages.twisted git ]; + default = with pkgs; [ git ]; example = literalExample "[ pkgs.git ]"; type = types.listOf types.package; description = "Packages to add to PATH for the buildbot process."; }; - }; }; config = mkIf cfg.enable { + services.buildbot-worker.workerPassFile = mkDefault (pkgs.writeText "buildbot-worker-password" cfg.workerPass); + users.groups = optional (cfg.group == "bbworker") { name = "bbworker"; }; @@ -104,11 +156,16 @@ in { after = [ "network.target" "buildbot-master.service" ]; wantedBy = [ "multi-user.target" ]; path = cfg.packages; + environment.PYTHONPATH = "${python.withPackages (p: [ cfg.package ])}/${python.sitePackages}"; preStart = '' - mkdir -vp ${cfg.buildbotDir} - rm -fv $cfg.buildbotDir}/buildbot.tac - ${cfg.package}/bin/buildbot-worker create-worker ${cfg.buildbotDir} ${cfg.masterUrl} ${cfg.workerUser} ${cfg.workerPass} + mkdir -vp "${cfg.buildbotDir}/info" + ${optionalString (cfg.hostMessage != null) '' + ln -sf "${pkgs.writeText "buildbot-worker-host" cfg.hostMessage}" "${cfg.buildbotDir}/info/host" + ''} + ${optionalString (cfg.adminMessage != null) '' + ln -sf "${pkgs.writeText "buildbot-worker-admin" cfg.adminMessage}" "${cfg.buildbotDir}/info/admin" + ''} ''; serviceConfig = { @@ -116,11 +173,9 @@ in { User = cfg.user; Group = cfg.group; WorkingDirectory = cfg.home; - Environment = "PYTHONPATH=${cfg.package}/lib/python2.7/site-packages:${pkgs.python27Packages.future}/lib/python2.7/site-packages"; # NOTE: call twistd directly with stdout logging for systemd - #ExecStart = "${cfg.package}/bin/buildbot-worker start --nodaemon ${cfg.buildbotDir}"; - ExecStart = "${pkgs.python27Packages.twisted}/bin/twistd -n -l - -y ${cfg.buildbotDir}/buildbot.tac"; + ExecStart = "${python.pkgs.twisted}/bin/twistd --nodaemon --pidfile= --logfile - --python ${tacFile}"; }; }; diff --git a/nixos/release.nix b/nixos/release.nix index 86383f502a7..5412080cca1 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -257,7 +257,7 @@ in rec { tests.boot = callSubTests tests/boot.nix {}; tests.boot-stage1 = callTest tests/boot-stage1.nix {}; tests.borgbackup = callTest tests/borgbackup.nix {}; - tests.buildbot = callTest tests/buildbot.nix {}; + tests.buildbot = callSubTests tests/buildbot.nix {}; tests.cadvisor = callTestOnMatchingSystems ["x86_64-linux"] tests/cadvisor.nix {}; tests.ceph = callTestOnMatchingSystems ["x86_64-linux"] tests/ceph.nix {}; tests.certmgr = callSubTests tests/certmgr.nix {}; diff --git a/nixos/tests/buildbot.nix b/nixos/tests/buildbot.nix index cf408dc7fec..399fd39005e 100644 --- a/nixos/tests/buildbot.nix +++ b/nixos/tests/buildbot.nix @@ -1,111 +1,117 @@ -# Test ensures buildbot master comes up correctly and workers can connect +{ system ? builtins.currentSystem }: -import ./make-test.nix ({ pkgs, ... } : { - name = "buildbot"; +with import ../lib/testing.nix { inherit system; }; - nodes = { - bbmaster = { pkgs, ... }: { - services.buildbot-master = { - enable = true; - package = pkgs.buildbot-full; +let + # Test ensures buildbot master comes up correctly and workers can connect + mkBuildbotTest = python: makeTest { + name = "buildbot"; - # NOTE: use fake repo due to no internet in hydra ci - factorySteps = [ - "steps.Git(repourl='git://gitrepo/fakerepo.git', mode='incremental')" - "steps.ShellCommand(command=['bash', 'fakerepo.sh'])" - ]; - changeSource = [ - "changes.GitPoller('git://gitrepo/fakerepo.git', workdir='gitpoller-workdir', branch='master', pollinterval=300)" - ]; + nodes = { + bbmaster = { pkgs, ... }: { + services.buildbot-master = { + enable = true; + package = python.pkgs.buildbot-full; + + # NOTE: use fake repo due to no internet in hydra ci + factorySteps = [ + "steps.Git(repourl='git://gitrepo/fakerepo.git', mode='incremental')" + "steps.ShellCommand(command=['bash', 'fakerepo.sh'])" + ]; + changeSource = [ + "changes.GitPoller('git://gitrepo/fakerepo.git', workdir='gitpoller-workdir', branch='master', pollinterval=300)" + ]; + }; + networking.firewall.allowedTCPPorts = [ 8010 8011 9989 ]; + environment.systemPackages = with pkgs; [ git python.pkgs.buildbot-full ]; }; - networking.firewall.allowedTCPPorts = [ 8010 8011 9989 ]; - environment.systemPackages = with pkgs; [ git buildbot-full ]; - }; - bbworker = { pkgs, ... }: { - services.buildbot-worker = { - enable = true; - masterUrl = "bbmaster:9989"; + bbworker = { pkgs, ... }: { + services.buildbot-worker = { + enable = true; + masterUrl = "bbmaster:9989"; + }; + environment.systemPackages = with pkgs; [ git python.pkgs.buildbot-worker ]; + }; + + gitrepo = { pkgs, ... }: { + services.openssh.enable = true; + networking.firewall.allowedTCPPorts = [ 22 9418 ]; + environment.systemPackages = with pkgs; [ git ]; }; - environment.systemPackages = with pkgs; [ git buildbot-worker ]; }; - gitrepo = { pkgs, ... }: { - services.openssh.enable = true; - networking.firewall.allowedTCPPorts = [ 22 9418 ]; - environment.systemPackages = with pkgs; [ git ]; - }; + testScript = '' + #Start up and populate fake repo + $gitrepo->waitForUnit("multi-user.target"); + print($gitrepo->execute(" \ + git config --global user.name 'Nobody Fakeuser' && \ + git config --global user.email 'nobody\@fakerepo.com' && \ + rm -rvf /srv/repos/fakerepo.git /tmp/fakerepo && \ + mkdir -pv /srv/repos/fakerepo ~/.ssh && \ + ssh-keyscan -H gitrepo > ~/.ssh/known_hosts && \ + cat ~/.ssh/known_hosts && \ + cd /srv/repos/fakerepo && \ + git init && \ + echo -e '#!/bin/sh\necho fakerepo' > fakerepo.sh && \ + cat fakerepo.sh && \ + touch .git/git-daemon-export-ok && \ + git add fakerepo.sh .git/git-daemon-export-ok && \ + git commit -m fakerepo && \ + git daemon --verbose --export-all --base-path=/srv/repos --reuseaddr & \ + ")); + + # Test gitrepo + $bbmaster->waitForUnit("network-online.target"); + #$bbmaster->execute("nc -z gitrepo 9418"); + print($bbmaster->execute(" \ + rm -rfv /tmp/fakerepo && \ + git clone git://gitrepo/fakerepo /tmp/fakerepo && \ + pwd && \ + ls -la && \ + ls -la /tmp/fakerepo \ + ")); + + # Test start master and connect worker + $bbmaster->waitForUnit("buildbot-master.service"); + $bbmaster->waitUntilSucceeds("curl -s --head http://bbmaster:8010") =~ /200 OK/; + $bbworker->waitForUnit("network-online.target"); + $bbworker->execute("nc -z bbmaster 8010"); + $bbworker->execute("nc -z bbmaster 9989"); + $bbworker->waitForUnit("buildbot-worker.service"); + print($bbworker->execute("ls -la /home/bbworker/worker")); + + + # Test stop buildbot master and worker + print($bbmaster->execute(" \ + systemctl -l --no-pager status buildbot-master && \ + systemctl stop buildbot-master \ + ")); + $bbworker->fail("nc -z bbmaster 8010"); + $bbworker->fail("nc -z bbmaster 9989"); + print($bbworker->execute(" \ + systemctl -l --no-pager status buildbot-worker && \ + systemctl stop buildbot-worker && \ + ls -la /home/bbworker/worker \ + ")); + + + # Test buildbot daemon mode + $bbmaster->execute("buildbot create-master /tmp"); + $bbmaster->execute("mv -fv /tmp/master.cfg.sample /tmp/master.cfg"); + $bbmaster->execute("sed -i 's/8010/8011/' /tmp/master.cfg"); + $bbmaster->execute("buildbot start /tmp"); + $bbworker->execute("nc -z bbmaster 8011"); + $bbworker->waitUntilSucceeds("curl -s --head http://bbmaster:8011") =~ /200 OK/; + $bbmaster->execute("buildbot stop /tmp"); + $bbworker->fail("nc -z bbmaster 8011"); + + ''; + + meta.maintainers = with pkgs.stdenv.lib.maintainers; [ nand0p ]; + }; - - testScript = '' - #Start up and populate fake repo - $gitrepo->waitForUnit("multi-user.target"); - print($gitrepo->execute(" \ - git config --global user.name 'Nobody Fakeuser' && \ - git config --global user.email 'nobody\@fakerepo.com' && \ - rm -rvf /srv/repos/fakerepo.git /tmp/fakerepo && \ - mkdir -pv /srv/repos/fakerepo ~/.ssh && \ - ssh-keyscan -H gitrepo > ~/.ssh/known_hosts && \ - cat ~/.ssh/known_hosts && \ - cd /srv/repos/fakerepo && \ - git init && \ - echo -e '#!/bin/sh\necho fakerepo' > fakerepo.sh && \ - cat fakerepo.sh && \ - touch .git/git-daemon-export-ok && \ - git add fakerepo.sh .git/git-daemon-export-ok && \ - git commit -m fakerepo && \ - git daemon --verbose --export-all --base-path=/srv/repos --reuseaddr & \ - ")); - - # Test gitrepo - $bbmaster->waitForUnit("network-online.target"); - #$bbmaster->execute("nc -z gitrepo 9418"); - print($bbmaster->execute(" \ - rm -rfv /tmp/fakerepo && \ - git clone git://gitrepo/fakerepo /tmp/fakerepo && \ - pwd && \ - ls -la && \ - ls -la /tmp/fakerepo \ - ")); - - # Test start master and connect worker - $bbmaster->waitForUnit("buildbot-master.service"); - $bbmaster->waitUntilSucceeds("curl -s --head http://bbmaster:8010") =~ /200 OK/; - $bbworker->waitForUnit("network-online.target"); - $bbworker->execute("nc -z bbmaster 8010"); - $bbworker->execute("nc -z bbmaster 9989"); - $bbworker->waitForUnit("buildbot-worker.service"); - print($bbworker->execute("ls -la /home/bbworker/worker")); - - - # Test stop buildbot master and worker - print($bbmaster->execute(" \ - systemctl -l --no-pager status buildbot-master && \ - systemctl stop buildbot-master \ - ")); - $bbworker->fail("nc -z bbmaster 8010"); - $bbworker->fail("nc -z bbmaster 9989"); - print($bbworker->execute(" \ - systemctl -l --no-pager status buildbot-worker && \ - systemctl stop buildbot-worker && \ - ls -la /home/bbworker/worker \ - ")); - - - # Test buildbot daemon mode - # NOTE: daemon mode tests disabled due to broken PYTHONPATH child inheritence - # - #$bbmaster->execute("buildbot create-master /tmp"); - #$bbmaster->execute("mv -fv /tmp/master.cfg.sample /tmp/master.cfg"); - #$bbmaster->execute("sed -i 's/8010/8011/' /tmp/master.cfg"); - #$bbmaster->execute("buildbot start /tmp"); - #$bbworker->execute("nc -z bbmaster 8011"); - #$bbworker->waitUntilSucceeds("curl -s --head http://bbmaster:8011") =~ /200 OK/; - #$bbmaster->execute("buildbot stop /tmp"); - #$bbworker->fail("nc -z bbmaster 8011"); - - ''; - - meta.maintainers = with pkgs.stdenv.lib.maintainers; [ nand0p ]; - -}) +in { + python2 = mkBuildbotTest pkgs.python2; + python3 = mkBuildbotTest pkgs.python3; +} diff --git a/pkgs/development/python-modules/astroid/1.6.nix b/pkgs/development/python-modules/astroid/1.6.nix new file mode 100644 index 00000000000..ca26da5a373 --- /dev/null +++ b/pkgs/development/python-modules/astroid/1.6.nix @@ -0,0 +1,39 @@ +{ lib, fetchPypi, buildPythonPackage, pythonOlder, isPyPy +, lazy-object-proxy, six, wrapt, enum34, singledispatch, backports_functools_lru_cache +, pytest +}: + +buildPythonPackage rec { + pname = "astroid"; + version = "1.6.5"; + + src = fetchPypi { + inherit pname version; + sha256 = "0fir4b67sm7shcacah9n61pvq313m523jb4q80sycrh3p8nmi6zw"; + }; + + # From astroid/__pkginfo__.py + propagatedBuildInputs = [ + lazy-object-proxy + six + wrapt + enum34 + singledispatch + backports_functools_lru_cache + ]; + + checkInputs = [ pytest ]; + + checkPhase = '' + # test_builtin_help is broken + pytest -k "not test_builtin_help" astroid + ''; + + meta = with lib; { + description = "An abstract syntax tree for Python with inference support"; + homepage = https://github.com/PyCQA/astroid; + license = licenses.lgpl2; + platforms = platforms.all; + maintainers = with maintainers; [ nand0p ]; + }; +} diff --git a/pkgs/development/python-modules/astroid/default.nix b/pkgs/development/python-modules/astroid/default.nix index ccf6f405526..d773c08e189 100644 --- a/pkgs/development/python-modules/astroid/default.nix +++ b/pkgs/development/python-modules/astroid/default.nix @@ -22,8 +22,8 @@ buildPythonPackage rec { checkInputs = [ pytestrunner pytest ]; meta = with lib; { - description = "A abstract syntax tree for Python with inference support"; - homepage = https://bitbucket.org/logilab/astroid; + description = "An abstract syntax tree for Python with inference support"; + homepage = https://github.com/PyCQA/astroid; license = licenses.lgpl2; platforms = platforms.all; maintainers = with maintainers; [ nand0p ]; diff --git a/pkgs/development/python-modules/autobahn/default.nix b/pkgs/development/python-modules/autobahn/default.nix index 04aa9411247..f618b05373a 100644 --- a/pkgs/development/python-modules/autobahn/default.nix +++ b/pkgs/development/python-modules/autobahn/default.nix @@ -1,7 +1,6 @@ -{ stdenv, buildPythonPackage, fetchPypi, isPy3k, isPy33, - unittest2, mock, pytest, trollius, asyncio, - pytest-asyncio, futures, cffi, - six, twisted, txaio, zope_interface +{ lib, buildPythonPackage, fetchPypi, isPy3k, isPy33, + six, txaio, twisted, zope_interface, cffi, asyncio, trollius, futures, + mock, pytest }: buildPythonPackage rec { pname = "autobahn"; @@ -12,21 +11,18 @@ buildPythonPackage rec { sha256 = "b69858e0be4bff8437b0bd82a0db1cbef7405e16bd9354ba587c043d6d5e1ad9"; }; - # Upstream claim python2 support, but tests require pytest-asyncio which - # is pythn3 only. Therefore, tests are skipped for python2. - doCheck = isPy3k; - checkInputs = stdenv.lib.optionals isPy3k [ unittest2 mock pytest pytest-asyncio ]; - propagatedBuildInputs = [ cffi six twisted zope_interface txaio ] ++ - (stdenv.lib.optional isPy33 asyncio) ++ - (stdenv.lib.optionals (!isPy3k) [ trollius futures ]); + propagatedBuildInputs = [ six txaio twisted zope_interface cffi ] ++ + (lib.optional isPy33 asyncio) ++ + (lib.optionals (!isPy3k) [ trollius futures ]); + checkInputs = [ mock pytest ]; checkPhase = '' runHook preCheck USE_TWISTED=true py.test $out runHook postCheck ''; - meta = with stdenv.lib; { + meta = with lib; { description = "WebSocket and WAMP in Python for Twisted and asyncio."; homepage = "https://crossbar.io/autobahn"; license = licenses.mit; diff --git a/pkgs/development/python-modules/buildbot/default.nix b/pkgs/development/python-modules/buildbot/default.nix new file mode 100644 index 00000000000..0110aa92c06 --- /dev/null +++ b/pkgs/development/python-modules/buildbot/default.nix @@ -0,0 +1,94 @@ +{ stdenv, lib, buildPythonPackage, fetchPypi, makeWrapper, isPy3k, + python, twisted, jinja2, zope_interface, future, sqlalchemy, + sqlalchemy_migrate, dateutil, txaio, autobahn, pyjwt, treq, txrequests, + txgithub, pyjade, boto3, moto, mock, lz4, setuptoolsTrial, isort, pylint, + flake8, buildbot-worker, buildbot-pkg, glibcLocales }: + +let + withPlugins = plugins: buildPythonPackage { + name = "${package.name}-with-plugins"; + phases = [ "installPhase" "fixupPhase" ]; + buildInputs = [ makeWrapper ]; + propagatedBuildInputs = plugins ++ package.propagatedBuildInputs; + + installPhase = '' + makeWrapper ${package}/bin/buildbot $out/bin/buildbot \ + --prefix PYTHONPATH : "${package}/${python.sitePackages}:$PYTHONPATH" + ln -sfv ${package}/lib $out/lib + ''; + + passthru = package.passthru // { + withPlugins = morePlugins: withPlugins (morePlugins ++ plugins); + }; + }; + + package = buildPythonPackage rec { + pname = "buildbot"; + version = "1.4.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "0dfa926nh642i3bnpzlz0q347zicyx6wswjfqbniri59ya64fncx"; + }; + + propagatedBuildInputs = [ + # core + twisted + jinja2 + zope_interface + future + sqlalchemy + sqlalchemy_migrate + dateutil + txaio + autobahn + pyjwt + + # tls + twisted.extras.tls + ]; + + checkInputs = [ + treq + txrequests + pyjade + boto3 + moto + mock + lz4 + setuptoolsTrial + isort + pylint + flake8 + buildbot-worker + buildbot-pkg + glibcLocales + ]; + + patches = [ + # This patch disables the test that tries to read /etc/os-release which + # is not accessible in sandboxed builds. + ./skip_test_linux_distro.patch + ]; + + LC_ALL = "en_US.UTF-8"; + + # TimeoutErrors on slow machines -> aarch64 + doCheck = !stdenv.isAarch64; + + postPatch = '' + substituteInPlace buildbot/scripts/logwatcher.py --replace '/usr/bin/tail' "$(type -P tail)" + ''; + + passthru = { + inherit withPlugins; + }; + + meta = with lib; { + homepage = http://buildbot.net/; + description = "Buildbot is an open-source continuous integration framework for automating software build, test, and release processes"; + maintainers = with maintainers; [ nand0p ryansydnor ]; + license = licenses.gpl2; + }; + }; +in package diff --git a/pkgs/development/tools/build-managers/buildbot/pkg.nix b/pkgs/development/python-modules/buildbot/pkg.nix similarity index 65% rename from pkgs/development/tools/build-managers/buildbot/pkg.nix rename to pkgs/development/python-modules/buildbot/pkg.nix index 11f5be4e98e..b9358b1c420 100644 --- a/pkgs/development/tools/build-managers/buildbot/pkg.nix +++ b/pkgs/development/python-modules/buildbot/pkg.nix @@ -1,24 +1,21 @@ -{ stdenv, buildPythonPackage, fetchPypi, setuptools }: +{ lib, buildPythonPackage, fetchPypi, setuptools }: buildPythonPackage rec { - name = "${pname}-${version}"; pname = "buildbot-pkg"; - version = "1.2.0"; + version = "1.4.0"; src = fetchPypi { inherit pname version; - sha256 = "70f429311c5812ffd334f023f4f50b904be5c672c8674ee6d28a11a7c096f18a"; + sha256 = "06f4jvczbg9km0gfmcd1ljplf5w8za27i9ap9jnyqgh3j77smd7a"; }; - propagatedBuildInputs = [ setuptools ]; - postPatch = '' # Their listdir function filters out `node_modules` folders. # Do we have to care about that with Nix...? substituteInPlace buildbot_pkg.py --replace "os.listdir = listdir" "" ''; - meta = with stdenv.lib; { + meta = with lib; { homepage = http://buildbot.net/; description = "Buildbot Packaging Helper"; maintainers = with maintainers; [ nand0p ryansydnor ]; diff --git a/pkgs/development/python-modules/buildbot/plugins.nix b/pkgs/development/python-modules/buildbot/plugins.nix new file mode 100644 index 00000000000..bdc67d178d4 --- /dev/null +++ b/pkgs/development/python-modules/buildbot/plugins.nix @@ -0,0 +1,103 @@ +{ lib, buildPythonPackage, fetchPypi, buildbot, buildbot-pkg }: + +{ + www = buildPythonPackage rec { + pname = "buildbot_www"; + inherit (buildbot-pkg) version; + + # NOTE: wheel is used due to buildbot circular dependency + format = "wheel"; + + src = fetchPypi { + inherit pname version format; + sha256 = "1m5dsp1gn9m5vfh5hnqp8g6hmhw1f1ydnassd33nhk521f2akz0v"; + }; + + meta = with lib; { + homepage = http://buildbot.net/; + description = "Buildbot UI"; + maintainers = with maintainers; [ nand0p ryansydnor ]; + license = licenses.gpl2; + }; + }; + + console-view = buildPythonPackage rec { + pname = "buildbot-console-view"; + inherit (buildbot-pkg) version; + + src = fetchPypi { + inherit pname version; + sha256 = "0vblaxmihgb4w9aa5q0wcgvxs7qzajql8s22w0pl9qs494g05s9r"; + }; + + propagatedBuildInputs = [ buildbot-pkg ]; + checkInputs = [ buildbot ]; + + meta = with lib; { + homepage = http://buildbot.net/; + description = "Buildbot Console View Plugin"; + maintainers = with maintainers; [ nand0p ryansydnor ]; + license = licenses.gpl2; + }; + }; + + waterfall-view = buildPythonPackage rec { + pname = "buildbot-waterfall-view"; + inherit (buildbot-pkg) version; + + src = fetchPypi { + inherit pname version; + sha256 = "18v1a6dapwjc2s9hi0cv3ry3s048w84md908zwaa3033gz3zwzy7"; + }; + + propagatedBuildInputs = [ buildbot-pkg ]; + checkInputs = [ buildbot ]; + + meta = with lib; { + homepage = http://buildbot.net/; + description = "Buildbot Waterfall View Plugin"; + maintainers = with maintainers; [ nand0p ryansydnor ]; + license = licenses.gpl2; + }; + }; + + grid-view = buildPythonPackage rec { + pname = "buildbot-grid-view"; + inherit (buildbot-pkg) version; + + src = fetchPypi { + inherit pname version; + sha256 = "0iawsy892v6rn88hsgiiwaf689jqzhnb2wbxh6zkz3c0hvq4g0qd"; + }; + + propagatedBuildInputs = [ buildbot-pkg ]; + checkInputs = [ buildbot ]; + + meta = with lib; { + homepage = http://buildbot.net/; + description = "Buildbot Grid View Plugin"; + maintainers = with maintainers; [ nand0p ]; + license = licenses.gpl2; + }; + }; + + wsgi-dashboards = buildPythonPackage rec { + pname = "buildbot-wsgi-dashboards"; + inherit (buildbot-pkg) version; + + src = fetchPypi { + inherit pname version; + sha256 = "00cpjna3bffh1qbq6a3sqffd1g7qhbrmn9gpzxf9k38jam6jgfpz"; + }; + + propagatedBuildInputs = [ buildbot-pkg ]; + checkInputs = [ buildbot ]; + + meta = with lib; { + homepage = http://buildbot.net/; + description = "Buildbot WSGI dashboards Plugin"; + maintainers = with maintainers; [ ]; + license = licenses.gpl2; + }; + }; +} diff --git a/pkgs/development/tools/build-managers/buildbot/skip_test_linux_distro.patch b/pkgs/development/python-modules/buildbot/skip_test_linux_distro.patch similarity index 100% rename from pkgs/development/tools/build-managers/buildbot/skip_test_linux_distro.patch rename to pkgs/development/python-modules/buildbot/skip_test_linux_distro.patch diff --git a/pkgs/development/tools/build-managers/buildbot/worker.nix b/pkgs/development/python-modules/buildbot/worker.nix similarity index 60% rename from pkgs/development/tools/build-managers/buildbot/worker.nix rename to pkgs/development/python-modules/buildbot/worker.nix index 4fabad9d370..4e54276f8ae 100644 --- a/pkgs/development/tools/build-managers/buildbot/worker.nix +++ b/pkgs/development/python-modules/buildbot/worker.nix @@ -1,23 +1,23 @@ -{ stdenv, pythonPackages }: +{ lib, buildPythonPackage, fetchPypi, python, setuptoolsTrial, mock, twisted, future }: -pythonPackages.buildPythonApplication (rec { - name = "${pname}-${version}"; +buildPythonPackage (rec { pname = "buildbot-worker"; version = "1.4.0"; - src = pythonPackages.fetchPypi { + src = fetchPypi { inherit pname version; sha256 = "12zvf4c39b6s4g1f2w407q8kkw602m88rc1ggi4w9pkw3bwbxrgy"; }; - buildInputs = with pythonPackages; [ setuptoolsTrial mock ]; - propagatedBuildInputs = with pythonPackages; [ twisted future ]; + propagatedBuildInputs = [ twisted future ]; + + checkInputs = [ setuptoolsTrial mock ]; postPatch = '' substituteInPlace buildbot_worker/scripts/logwatcher.py --replace '/usr/bin/tail' "$(type -P tail)" ''; - meta = with stdenv.lib; { + meta = with lib; { homepage = http://buildbot.net/; description = "Buildbot Worker Daemon"; maintainers = with maintainers; [ nand0p ryansydnor ]; diff --git a/pkgs/development/python-modules/hyperlink/default.nix b/pkgs/development/python-modules/hyperlink/default.nix index 53a245c45dc..2e2e4e1cb77 100644 --- a/pkgs/development/python-modules/hyperlink/default.nix +++ b/pkgs/development/python-modules/hyperlink/default.nix @@ -11,12 +11,6 @@ buildPythonPackage rec { propagatedBuildInputs = [ idna ]; - checkInputs = [ pytest ]; - - checkPhase = '' - py.test $out - ''; - meta = with stdenv.lib; { description = "A featureful, correct URL for Python"; license = licenses.mit; diff --git a/pkgs/development/python-modules/pylint/1.9.nix b/pkgs/development/python-modules/pylint/1.9.nix new file mode 100644 index 00000000000..ad3140cf157 --- /dev/null +++ b/pkgs/development/python-modules/pylint/1.9.nix @@ -0,0 +1,49 @@ +{ stdenv, lib, buildPythonPackage, fetchPypi, python, astroid, six, isort, + mccabe, configparser, backports_functools_lru_cache, singledispatch, + pytest, pytestrunner, pyenchant }: + +buildPythonPackage rec { + pname = "pylint"; + version = "1.9.2"; + + src = fetchPypi { + inherit pname version; + sha256 = "1cxr1j037hsm4spmvl64v2j2rdq72pc2z0gnn3iggd4np6y21wpz"; + }; + + checkInputs = [ pytest pytestrunner pyenchant ]; + + propagatedBuildInputs = [ astroid six isort mccabe configparser backports_functools_lru_cache singledispatch ]; + + postPatch = lib.optionalString stdenv.isDarwin '' + # Remove broken darwin test + rm -vf pylint/test/test_functional.py + ''; + + checkPhase = '' + pytest pylint/test -k "not ${lib.concatStringsSep " and not " ( + [ # Broken test + "test_good_comprehension_checks" + # See PyCQA/pylint#2535 + "test_libmodule" ] ++ + # Disable broken darwin tests + lib.optionals stdenv.isDarwin [ + "test_parallel_execution" + "test_py3k_jobs_option" + ] + )}" + ''; + + postInstall = '' + mkdir -p $out/share/emacs/site-lisp + cp "elisp/"*.el $out/share/emacs/site-lisp/ + ''; + + meta = with lib; { + homepage = https://github.com/PyCQA/pylint; + description = "A bug and style checker for Python"; + platforms = platforms.all; + license = licenses.gpl1Plus; + maintainers = with maintainers; [ nand0p ]; + }; +} diff --git a/pkgs/development/python-modules/pylint/default.nix b/pkgs/development/python-modules/pylint/default.nix index c9a44548c14..4f4eb3cfc73 100644 --- a/pkgs/development/python-modules/pylint/default.nix +++ b/pkgs/development/python-modules/pylint/default.nix @@ -1,5 +1,5 @@ -{ stdenv, buildPythonPackage, fetchPypi, python, pythonOlder, astroid, isort, - pytest, pytestrunner, mccabe, pytest_xdist, pyenchant }: +{ stdenv, lib, buildPythonPackage, fetchPypi, python, pythonOlder, astroid, + isort, mccabe, pytest, pytestrunner, pyenchant }: buildPythonPackage rec { pname = "pylint"; @@ -12,21 +12,25 @@ buildPythonPackage rec { sha256 = "31142f764d2a7cd41df5196f9933b12b7ee55e73ef12204b648ad7e556c119fb"; }; - checkInputs = [ pytest pytestrunner pytest_xdist pyenchant ]; + checkInputs = [ pytest pytestrunner pyenchant ]; propagatedBuildInputs = [ astroid isort mccabe ]; - postPatch = '' + postPatch = lib.optionalString stdenv.isDarwin '' # Remove broken darwin test rm -vf pylint/test/test_functional.py ''; checkPhase = '' - cat pylint/test/test_self.py - # Disable broken darwin tests - pytest pylint/test -k "not test_parallel_execution \ - and not test_py3k_jobs_option \ - and not test_good_comprehension_checks" + pytest pylint/test -k "not ${lib.concatStringsSep " and not " ( + # Broken test + [ "test_good_comprehension_checks" ] ++ + # Disable broken darwin tests + lib.optionals stdenv.isDarwin [ + "test_parallel_execution" + "test_py3k_jobs_option" + ] + )}" ''; postInstall = '' @@ -34,8 +38,8 @@ buildPythonPackage rec { cp "elisp/"*.el $out/share/emacs/site-lisp/ ''; - meta = with stdenv.lib; { - homepage = https://www.logilab.org/project/pylint; + meta = with lib; { + homepage = https://github.com/PyCQA/pylint; description = "A bug and style checker for Python"; platforms = platforms.all; license = licenses.gpl1Plus; diff --git a/pkgs/development/python-modules/sphinx-jinja/default.nix b/pkgs/development/python-modules/sphinx-jinja/default.nix new file mode 100644 index 00000000000..375f59ec3f9 --- /dev/null +++ b/pkgs/development/python-modules/sphinx-jinja/default.nix @@ -0,0 +1,27 @@ +{ lib, buildPythonPackage, fetchPypi, pbr, sphinx, sphinx-testing, nose, glibcLocales }: + +buildPythonPackage rec { + pname = "sphinx-jinja"; + version = "1.1.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "02pgp9pbn0zrs0lggrc74mv6cvlnlq8wib84ga6yjvq30gda9v8q"; + }; + + buildInputs = [ pbr ]; + propagatedBuildInputs = [ sphinx ]; + + checkInputs = [ sphinx-testing nose glibcLocales ]; + + checkPhase = '' + # Zip (epub) does not support files with epoch timestamp + LC_ALL="en_US.UTF-8" nosetests -e test_build_epub + ''; + + meta = with lib; { + description = "Sphinx extension to include jinja templates in documentation"; + maintainers = with maintainers; [ nand0p ]; + license = licenses.mit; + }; +} diff --git a/pkgs/development/python-modules/sqlalchemy-migrate/default.nix b/pkgs/development/python-modules/sqlalchemy-migrate/default.nix index 8a5609c1cd9..41269aa6567 100644 --- a/pkgs/development/python-modules/sqlalchemy-migrate/default.nix +++ b/pkgs/development/python-modules/sqlalchemy-migrate/default.nix @@ -1,4 +1,4 @@ -{ stdenv, buildPythonPackage, fetchPypi, python +{ stdenv, buildPythonPackage, fetchPypi, fetchpatch, python , unittest2, scripttest, pytz, pylint, mock , testtools, pbr, tempita, decorator, sqlalchemy , six, sqlparse, testrepository @@ -12,6 +12,12 @@ buildPythonPackage rec { sha256 = "0ld2bihp9kmf57ykgzrfgxs4j9kxlw79sgdj9sfn47snw3izb2p6"; }; + # See: https://review.openstack.org/#/c/608382/ + patches = [ (fetchpatch { + url = https://github.com/openstack/sqlalchemy-migrate/pull/18.patch; + sha256 = "1qyfq2m7w7xqf0r9bc2x42qcra4r9k9l9g1jy5j0fvlb6bvvjj07"; + }) ]; + checkInputs = [ unittest2 scripttest pytz mock testtools testrepository ]; propagatedBuildInputs = [ pbr tempita decorator sqlalchemy six sqlparse ]; @@ -32,10 +38,8 @@ buildPythonPackage rec { ${python.interpreter} setup.py test ''; - doCheck = true; - meta = with stdenv.lib; { - homepage = http://code.google.com/p/sqlalchemy-migrate/; + homepage = https://github.com/openstack/sqlalchemy-migrate; description = "Schema migration tools for SQLAlchemy"; license = licenses.asl20; maintainers = with maintainers; [ makefu ]; diff --git a/pkgs/development/python-modules/tempita/default.nix b/pkgs/development/python-modules/tempita/default.nix new file mode 100644 index 00000000000..318c47d2160 --- /dev/null +++ b/pkgs/development/python-modules/tempita/default.nix @@ -0,0 +1,21 @@ +{ lib, buildPythonPackage, fetchFromGitHub, nose }: + +buildPythonPackage rec { + version = "0.5.3-2016-09-28"; + name = "tempita-${version}"; + + src = fetchFromGitHub { + owner = "gjhiggins"; + repo = "tempita"; + rev = "47414a7c6e46a9a9afe78f0bce2ea299fa84d10"; + sha256 = "0f33jjjs5rvp7ar2j6ggyfykcrsrn04jaqcq71qfvycf6b7nw3rn"; + }; + + buildInputs = [ nose ]; + + meta = { + homepage = https://github.com/gjhiggins/tempita; + description = "A very small text templating language"; + license = lib.licenses.mit; + }; +} diff --git a/pkgs/development/python-modules/trollius/default.nix b/pkgs/development/python-modules/trollius/default.nix index 6d43aa8da86..01ad57e55d7 100644 --- a/pkgs/development/python-modules/trollius/default.nix +++ b/pkgs/development/python-modules/trollius/default.nix @@ -1,45 +1,49 @@ -{ lib, stdenv, buildPythonPackage, fetchPypi, isPy27, isPyPy, mock, futures }: +{ lib, stdenv, buildPythonPackage, fetchPypi, isPy3k, mock, unittest2, six, futures }: + buildPythonPackage rec { pname = "trollius"; - version = "1.0.4"; + version = "2.2"; src = fetchPypi { inherit pname version; - sha256 = "0xny8y12x3wrflmyn6xi8a7n3m3ac80fgmgzphx5jbbaxkjcm148"; + sha256 = "093978388qvw5hyscbbj062dbdc2761xs9yzrq26mh63g689lnxk"; }; - checkInputs = [ mock ]; + checkInputs = [ mock ] ++ lib.optional (!isPy3k) unittest2; - propagatedBuildInputs = lib.optionals (isPy27 || isPyPy) [ futures ]; + propagatedBuildInputs = [ six ] ++ lib.optional (!isPy3k) futures; patches = [ ./tests.patch ]; - # Some of the tests fail on darwin with `error: AF_UNIX path too long' - # because of the *long* path names for sockets - patchPhase = lib.optionalString stdenv.isDarwin '' - sed -i -e "s|test_create_ssl_unix_connection|skip_test_create_ssl_unix_connection|g" tests/test_events.py - sed -i -e "s|test_create_unix_connection|skip_test_create_unix_connection|g" tests/test_events.py - sed -i -e "s|test_create_unix_server_existing_path_nonsock|skip_test_create_unix_server_existing_path_nonsock|g" tests/test_unix_events.py - sed -i -e "s|test_create_unix_server_existing_path_sock|skip_test_create_unix_server_existing_path_sock|g" tests/test_unix_events.py - sed -i -e "s|test_create_unix_server_ssl_verified|skip_test_create_unix_server_ssl_verified|g" tests/test_events.py - sed -i -e "s|test_create_unix_server_ssl_verify_failed|skip_test_create_unix_server_ssl_verify_failed|g" tests/test_events.py - sed -i -e "s|test_create_unix_server_ssl|skip_test_create_unix_server_ssl|g" tests/test_events.py - sed -i -e "s|test_create_unix_server|skip_test_create_unix_server|g" tests/test_events.py - sed -i -e "s|test_open_unix_connection_error|skip_test_open_unix_connection_error|g" tests/test_streams.py - sed -i -e "s|test_open_unix_connection_no_loop_ssl|skip_test_open_unix_connection_no_loop_ssl|g" tests/test_streams.py - sed -i -e "s|test_open_unix_connection|skip_test_open_unix_connection|g" tests/test_streams.py - sed -i -e "s|test_pause_reading|skip_test_pause_reading|g" tests/test_subprocess.py - sed -i -e "s|test_read_pty_output|skip_test_read_pty_output|g" tests/test_events.py - sed -i -e "s|test_start_unix_server|skip_test_start_unix_server|g" tests/test_streams.py - sed -i -e "s|test_unix_sock_client_ops|skip_test_unix_sock_client_ops|g" tests/test_events.py - sed -i -e "s|test_write_pty|skip_test_write_pty|g" tests/test_events.py + postPatch = '' + # Overrides PYTHONPATH causing dependencies not to be found + sed -i -e "s|test_env_var_debug|skip_test_env_var_debug|g" tests/test_tasks.py + '' + lib.optionalString stdenv.isDarwin '' + # Some of the tests fail on darwin with `error: AF_UNIX path too long' + # because of the *long* path names for sockets + sed -i -e "s|test_create_ssl_unix_connection|skip_test_create_ssl_unix_connection|g" tests/test_events.py + sed -i -e "s|test_create_unix_connection|skip_test_create_unix_connection|g" tests/test_events.py + sed -i -e "s|test_create_unix_server_existing_path_nonsock|skip_test_create_unix_server_existing_path_nonsock|g" tests/test_unix_events.py + sed -i -e "s|test_create_unix_server_existing_path_sock|skip_test_create_unix_server_existing_path_sock|g" tests/test_unix_events.py + sed -i -e "s|test_create_unix_server_ssl_verified|skip_test_create_unix_server_ssl_verified|g" tests/test_events.py + sed -i -e "s|test_create_unix_server_ssl_verify_failed|skip_test_create_unix_server_ssl_verify_failed|g" tests/test_events.py + sed -i -e "s|test_create_unix_server_ssl|skip_test_create_unix_server_ssl|g" tests/test_events.py + sed -i -e "s|test_create_unix_server|skip_test_create_unix_server|g" tests/test_events.py + sed -i -e "s|test_open_unix_connection_error|skip_test_open_unix_connection_error|g" tests/test_streams.py + sed -i -e "s|test_open_unix_connection_no_loop_ssl|skip_test_open_unix_connection_no_loop_ssl|g" tests/test_streams.py + sed -i -e "s|test_open_unix_connection|skip_test_open_unix_connection|g" tests/test_streams.py + sed -i -e "s|test_pause_reading|skip_test_pause_reading|g" tests/test_subprocess.py + sed -i -e "s|test_read_pty_output|skip_test_read_pty_output|g" tests/test_events.py + sed -i -e "s|test_start_unix_server|skip_test_start_unix_server|g" tests/test_streams.py + sed -i -e "s|test_unix_sock_client_ops|skip_test_unix_sock_client_ops|g" tests/test_events.py + sed -i -e "s|test_write_pty|skip_test_write_pty|g" tests/test_events.py ''; meta = with stdenv.lib; { - description = "Port of the Tulip project (asyncio module, PEP 3156) on Python 2"; - homepage = "https://bitbucket.org/enovance/trollius"; + description = "Port of the asyncio project to Python 2.7"; + homepage = https://github.com/vstinner/trollius; license = licenses.asl20; maintainers = with maintainers; [ garbas ]; }; diff --git a/pkgs/development/tools/build-managers/buildbot/default.nix b/pkgs/development/tools/build-managers/buildbot/default.nix deleted file mode 100644 index adb279cdea6..00000000000 --- a/pkgs/development/tools/build-managers/buildbot/default.nix +++ /dev/null @@ -1,95 +0,0 @@ -{ stdenv, openssh, buildbot-worker, buildbot-pkg, pythonPackages, runCommand, makeWrapper }: - -let - withPlugins = plugins: runCommand "wrapped-${package.name}" { - buildInputs = [ makeWrapper ] ++ plugins; - propagatedBuildInputs = package.propagatedBuildInputs; - passthru.withPlugins = moarPlugins: withPlugins (moarPlugins ++ plugins); - } '' - makeWrapper ${package}/bin/buildbot $out/bin/buildbot \ - --prefix PYTHONPATH : "${package}/lib/python2.7/site-packages:$PYTHONPATH" - ln -sfv ${package}/lib $out/lib - ''; - - package = pythonPackages.buildPythonApplication rec { - name = "${pname}-${version}"; - pname = "buildbot"; - version = "1.2.0"; - - src = pythonPackages.fetchPypi { - inherit pname version; - sha256 = "02gwmls8kgm6scy36hdy0bg645zs1pxlrgwkcn79wrl7cfmabcbv"; - }; - - buildInputs = with pythonPackages; [ - lz4 - txrequests - pyjade - boto3 - moto - txgithub - mock - setuptoolsTrial - isort - pylint - astroid - pyflakes - openssh - buildbot-worker - buildbot-pkg - treq - ]; - - propagatedBuildInputs = with pythonPackages; [ - # core - twisted - jinja2 - zope_interface - sqlalchemy - sqlalchemy_migrate - future - dateutil - txaio - autobahn - pyjwt - distro - - # tls - pyopenssl - service-identity - idna - - # docs - sphinx - sphinxcontrib-blockdiag - sphinxcontrib-spelling - pyenchant - docutils - ramlfications - sphinx-jinja - - ]; - - patches = [ - # This patch disables the test that tries to read /etc/os-release which - # is not accessible in sandboxed builds. - ./skip_test_linux_distro.patch - ]; - - # TimeoutErrors on slow machines -> aarch64 - doCheck = !stdenv.isAarch64; - - postPatch = '' - substituteInPlace buildbot/scripts/logwatcher.py --replace '/usr/bin/tail' "$(type -P tail)" - ''; - - passthru = { inherit withPlugins; }; - - meta = with stdenv.lib; { - homepage = http://buildbot.net/; - description = "Buildbot is an open-source continuous integration framework for automating software build, test, and release processes"; - maintainers = with maintainers; [ nand0p ryansydnor ]; - license = licenses.gpl2; - }; - }; -in package diff --git a/pkgs/development/tools/build-managers/buildbot/plugins.nix b/pkgs/development/tools/build-managers/buildbot/plugins.nix deleted file mode 100644 index 430cdee3ca8..00000000000 --- a/pkgs/development/tools/build-managers/buildbot/plugins.nix +++ /dev/null @@ -1,105 +0,0 @@ -{ stdenv, pythonPackages, buildbot-pkg }: - -{ - www = pythonPackages.buildPythonPackage rec { - name = "${pname}-${version}"; - pname = "buildbot_www"; - version = buildbot-pkg.version; - - # NOTE: wheel is used due to buildbot circular dependency - format = "wheel"; - - src = pythonPackages.fetchPypi { - inherit pname version format; - sha256 = "001kxjcyn5sxiq7m1izy4djj7alw6qpgaid4f518s9xgm4a8hwcb"; - }; - - meta = with stdenv.lib; { - homepage = http://buildbot.net/; - description = "Buildbot UI"; - maintainers = with maintainers; [ nand0p ryansydnor ]; - license = licenses.gpl2; - }; - }; - - console-view = pythonPackages.buildPythonPackage rec { - name = "${pname}-${version}"; - pname = "buildbot-console-view"; - version = buildbot-pkg.version; - - src = pythonPackages.fetchPypi { - inherit pname version; - sha256 = "11p9l9r9rh8cq0ihzjcdxfbi55n7inbsz45zqq67rkvqn5nhj5b6"; - }; - - propagatedBuildInputs = with pythonPackages; [ buildbot-pkg ]; - - meta = with stdenv.lib; { - homepage = http://buildbot.net/; - description = "Buildbot Console View Plugin"; - maintainers = with maintainers; [ nand0p ryansydnor ]; - license = licenses.gpl2; - }; - }; - - waterfall-view = pythonPackages.buildPythonPackage rec { - name = "${pname}-${version}"; - pname = "buildbot-waterfall-view"; - version = buildbot-pkg.version; - - src = pythonPackages.fetchPypi { - inherit pname version; - sha256 = "1yx63frfpbvwy4hfib1psyq5ad0wysyzfrla8d7lgbdaip021wzw"; - }; - - propagatedBuildInputs = with pythonPackages; [ buildbot-pkg ]; - - meta = with stdenv.lib; { - homepage = http://buildbot.net/; - description = "Buildbot Waterfall View Plugin"; - maintainers = with maintainers; [ nand0p ryansydnor ]; - license = licenses.gpl2; - }; - }; - - grid-view = pythonPackages.buildPythonPackage rec { - name = "${pname}-${version}"; - pname = "buildbot-grid-view"; - version = buildbot-pkg.version; - - src = pythonPackages.fetchPypi { - inherit pname version; - sha256 = "06my75hli3w1skdkx1qz6zqw2wckanhrcvlqm4inylj9v9pcrgv6"; - }; - - propagatedBuildInputs = with pythonPackages; [ buildbot-pkg ]; - - meta = with stdenv.lib; { - homepage = http://buildbot.net/; - description = "Buildbot Grid View Plugin"; - maintainers = with maintainers; [ nand0p ]; - license = licenses.gpl2; - }; - }; - - wsgi-dashboards = pythonPackages.buildPythonPackage rec { - name = "${pname}-${version}"; - pname = "buildbot-wsgi-dashboards"; - version = buildbot-pkg.version; - - src = pythonPackages.fetchPypi { - inherit pname version; - sha256 = "073gz44fa5k1p8k46k0ld9gg16j8zdj6sc297qfyqpiw28ybhc5s"; - }; - - propagatedBuildInputs = with pythonPackages; [ buildbot-pkg ]; - - meta = with stdenv.lib; { - homepage = http://buildbot.net/; - description = "Buildbot WSGI dashboards Plugin"; - maintainers = with maintainers; [ ]; - license = licenses.gpl2; - }; - }; - -} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index fe0d3816413..0abf0e60846 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -49,6 +49,11 @@ mapAliases ({ bashCompletion = bash-completion; # Added 2016-09-28 bridge_utils = bridge-utils; # added 2015-02-20 btrfsProgs = btrfs-progs; # added 2016-01-03 + buildbot = pythonPackages.buildbot; # added 2018-10-11 + buildbot-full = pythonPackages.buildbot-full; # added 2018-10-11 + buildbot-pkg = pythonPackages.buildbot-pkg; # added 2018-10-11 + buildbot-ui = pythonPackages.buildbot-ui; # added 2018-10-11 + buildbot-worker = pythonPackages.buildbot-worker; # added 2018-10-11 bundler_HEAD = bundler; # added 2015-11-15 cantarell_fonts = cantarell-fonts; # added 2018-03-03 checkbashism = checkbashisms; # added 2016-08-16 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5495b34960d..cac87f62a2b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8135,21 +8135,6 @@ with pkgs; buck = callPackage ../development/tools/build-managers/buck { }; - buildbot = callPackage ../development/tools/build-managers/buildbot { - pythonPackages = python2Packages; - }; - buildbot-worker = callPackage ../development/tools/build-managers/buildbot/worker.nix { - pythonPackages = python2Packages; - }; - buildbot-pkg = callPackage ../development/tools/build-managers/buildbot/pkg.nix { - inherit (python2Packages) buildPythonPackage fetchPypi setuptools; - }; - buildbot-plugins = callPackages ../development/tools/build-managers/buildbot/plugins.nix { - pythonPackages = python2Packages; - }; - buildbot-ui = buildbot.withPlugins (with self.buildbot-plugins; [ www ]); - buildbot-full = buildbot.withPlugins (with self.buildbot-plugins; [ www console-view waterfall-view grid-view wsgi-dashboards ]); - buildkite-agent = buildkite-agent2; buildkite-agent2 = callPackage ../development/tools/continuous-integration/buildkite-agent/2.x.nix { }; buildkite-agent3 = callPackage ../development/tools/continuous-integration/buildkite-agent/3.x.nix { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1b4abe4a327..57f8c947fcc 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -738,7 +738,8 @@ in { # argparse is part of stdlib in 2.7 and 3.2+ argparse = null; - astroid = callPackage ../development/python-modules/astroid { }; + astroid = if isPy3k then callPackage ../development/python-modules/astroid { } + else callPackage ../development/python-modules/astroid/1.6.nix { }; attrdict = callPackage ../development/python-modules/attrdict { }; @@ -1420,6 +1421,13 @@ in { bugzilla = callPackage ../development/python-modules/bugzilla { }; + buildbot = callPackage ../development/python-modules/buildbot { }; + buildbot-plugins = pkgs.recurseIntoAttrs (callPackage ../development/python-modules/buildbot/plugins.nix { }); + buildbot-ui = self.buildbot.withPlugins (with self.buildbot-plugins; [ www ]); + buildbot-full = self.buildbot.withPlugins (with self.buildbot-plugins; [ www console-view waterfall-view grid-view wsgi-dashboards ]); + buildbot-worker = callPackage ../development/python-modules/buildbot/worker.nix { }; + buildbot-pkg = callPackage ../development/python-modules/buildbot/pkg.nix { }; + check-manifest = callPackage ../development/python-modules/check-manifest { }; devpi-common = callPackage ../development/python-modules/devpi-common { }; @@ -10226,7 +10234,8 @@ in { pygpgme = callPackage ../development/python-modules/pygpgme { }; - pylint = callPackage ../development/python-modules/pylint { }; + pylint = if isPy3k then callPackage ../development/python-modules/pylint { } + else callPackage ../development/python-modules/pylint/1.9.nix { }; pyopencl = callPackage ../development/python-modules/pyopencl { }; @@ -12977,26 +12986,7 @@ in { }; }); - sphinx-jinja = buildPythonPackage (rec { - name = "${pname}-${version}"; - pname = "sphinx-jinja"; - version = "0.2.1"; - src = pkgs.fetchurl { - url = "mirror://pypi/s/${pname}/${name}.tar.gz"; - sha256 = "1zsnhc573rvaww9qqyzs4f5h4hhvxklvppv14450vi5dk8rij81z"; - }; - buildInputs = with self; [ sphinx-testing pytest pbr]; - propagatedBuildInputs = with self; [ sphinx blockdiag ]; - checkPhase = '' - py.test -k "not test_build_epub" - ''; - disabled = isPy3k; - meta = { - description = "includes jinja templates in a documentation"; - maintainers = with maintainers; [ nand0p ]; - license = licenses.mit; - }; - }); + sphinx-jinja = callPackage ../development/python-modules/sphinx-jinja { }; sphinx_pypi_upload = buildPythonPackage (rec { name = "Sphinx-PyPI-upload-0.2.1"; @@ -13329,24 +13319,7 @@ in { }; }; - tempita = buildPythonPackage rec { - version = "0.5.2"; - name = "tempita-${version}"; - - src = pkgs.fetchurl { - url = "mirror://pypi/T/Tempita/Tempita-${version}.tar.gz"; - sha256 = "cacecf0baa674d356641f1d406b8bff1d756d739c46b869a54de515d08e6fc9c"; - }; - - disabled = isPy3k; - - buildInputs = with self; [ nose ]; - - meta = { - homepage = http://pythonpaste.org/tempita/; - description = "A very small text templating language"; - }; - }; + tempita = callPackage ../development/python-modules/tempita { }; terminado = callPackage ../development/python-modules/terminado { };