gnu: python2-stevedore: Enable tests.
[jackhill/guix/guix.git] / gnu / packages / openstack.scm
index fc865d3..461006f 100644 (file)
@@ -1,7 +1,9 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2016, 2017 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages openstack)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages gnupg)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
   #:use-module (guix build-system python)
@@ -49,9 +57,8 @@
         ("python-pyyaml" ,python-pyyaml)
         ("python-six" ,python-six)
         ("python-stevedore" ,python-stevedore)))
-    (inputs
+    (native-inputs
       `(("python-pbr" ,python-pbr)
-        ("python-setuptools" ,python-setuptools)
         ;; Tests
         ("python-fixtures" ,python-fixtures)
         ("python-mock" ,python-mock)
@@ -82,16 +89,17 @@ all the files it generates a report.")
           (base32
            "0g4dfskaiy47rhsh4gh66l5vmdsrgq0qk68pl3ix1cj3ffvfndzv"))))
     (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ;FIXME: Requires packaging python-doc8.
     (propagated-inputs
      `(("python-six" ,python-six)
        ("python-wrapt" ,python-wrapt)))
-    (inputs
+    (native-inputs
       `(("python-babel" ,python-babel)
         ("python-pbr" ,python-pbr)
-        ("python-setuptools" ,python-setuptools)
         ;; Tests.
         ("python-oslotest" ,python-oslotest)))
-    (home-page "http://www.openstack.org/")
+    (home-page "https://www.openstack.org/")
     (synopsis
       "Find deprecated patterns and strategies in Python code")
     (description
@@ -106,30 +114,33 @@ manner.")
 (define-public python-hacking
   (package
     (name "python-hacking")
-    (version "0.10.2")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "hacking" version))
        (sha256
         (base32
-         "1a310k3dv04jg7zvmk37h2ql7y9kf4hvdxb74bjlwdxgmy6h4wap"))))
+         "0s9l99s64jsyvm28fa4hzllbdi21sb7jn4gzdf1pd5ckvy7p4b0k"))))
     (build-system python-build-system)
     (propagated-inputs
-      `(("python-flake8-2.2.4" ,python-flake8-2.2.4)
-        ("python-mccabe-0.2.1" ,python-mccabe-0.2.1)
-        ("python-pbr" ,python-pbr)
-        ("python-pep8-1.5.7" ,python-pep8-1.5.7)
-        ("python-pyflakes-0.8.1" ,python-pyflakes-0.8.1)
-        ("python-six" ,python-six)))
-    (inputs
-      `(("python-setuptools" ,python-setuptools)
-        ;; Tests
-        ("python-testscenarios" ,python-testscenarios)))
-    (home-page "http://github.com/openstack-dev/hacking")
+     `(("python-flake8" ,python-flake8-2.5)
+       ("python-mccabe-0.2.1" ,python-mccabe-0.2.1)
+       ("python-pbr" ,python-pbr)
+       ("python-pep8-1.5.7" ,python-pep8-1.5.7)
+       ("python-pyflakes-0.8.1" ,python-pyflakes-0.8.1)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `( ;; Tests
+       ("python-eventlet" ,python-eventlet)
+       ("python-mock" ,python-mock)
+       ("python-reno" ,python-reno)
+       ("python-testrepository" ,python-testrepository)
+       ("python-testscenarios" ,python-testscenarios)))
+    (home-page "https://github.com/openstack-dev/hacking")
     (synopsis "OpenStack hacking guideline enforcement")
     (description
-      "Python-hacking is a set of flake8 plugins that test and enforce the
+     "Python-hacking is a set of flake8 plugins that test and enforce the
 @uref{http://docs.openstack.org/developer/hacking/, OpenStack style
 guidelines}.")
     (license asl2.0)))
@@ -140,33 +151,66 @@ guidelines}.")
 (define-public python-mox3
   (package
     (name "python-mox3")
-    (version "0.14.0")
+    (version "0.24.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "mox3" version))
+        (patches (search-patches "python-mox3-python3.6-compat.patch"))
         (sha256
           (base32
-           "0njmh40i1lg5mzn9hc2ax83adj6dli455j6xifilrw27c4wlkjzx"))))
+           "0w58adwv7q9wzvmq9mlrk2asfk73myq9fpwy7mjkzsz3baa95zf5"))))
     (build-system python-build-system)
+    (propagated-inputs
+     `(("python-fixtures" ,python-fixtures)
+       ("python-pbr" ,python-pbr)))
     (native-inputs
-      `(("python-fixtures" ,python-fixtures)
-        ("python-pbr" ,python-pbr)
-        ("python-setuptools" ,python-setuptools)
-        ("python-six" ,python-six)
+      `(("python-openstackdocstheme" ,python-openstackdocstheme)
+        ("python-sphinx" ,python-sphinx-1.6)
+        ("python-subunit" ,python-subunit)
+        ("python-testrepository" ,python-testrepository)
         ("python-testtools" ,python-testtools)))
-    (home-page "http://www.openstack.org/")
+    (home-page "https://www.openstack.org/")
     (synopsis "Mock object framework for Python")
     (description
-      "Mox3 is an unofficial port of the Google mox framework
-(http://code.google.com/p/pymox/) to Python 3.  It was meant to be as compatible
-with mox as possible, but small enhancements have been made.  The library was
-tested on Python version 3.2, 2.7 and 2.6.")
+      "Mox3 is an unofficial port of the @uref{https://code.google.com/p/pymox/,
+Google mox framework} to Python 3.  It was meant to be as compatible
+with mox as possible, but small enhancements have been made.")
     (license asl2.0)))
 
 (define-public python2-mox3
   (package-with-python2 python-mox3))
 
+(define-public python-openstackdocstheme
+  (package
+    (name "python-openstackdocstheme")
+    (version "1.18.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "openstackdocstheme" version))
+              (sha256
+               (base32
+                "1ki5204rjdqjvr8xr9w2qc1z6b6d2i5jas0i70xzkf9njlzjzv2r"))))
+    (build-system python-build-system)
+    (arguments
+     ;; FIXME: Tests require an old version of python-hacking, which in
+     ;; turn depends on mox3 which depends on this package.
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-dulwich" ,python-dulwich)
+       ("python-pbr" ,python-pbr)))
+    (native-inputs
+     `(("python-sphinx" ,python-sphinx-1.6)))
+    (home-page "https://docs.openstack.org/openstackdocstheme/latest/")
+    (synopsis "OpenStack Docs Theme")
+    (description
+     "This package provides themes and extensions for Sphinx for publishing
+to docs.openstack.org and developer.openstack.org.")
+    (license asl2.0)))
+
+(define-public python2-openstackdocstheme
+  (package-with-python2 python-openstackdocstheme))
+
 (define-public python-os-client-config
   (package
     (name "python-os-client-config")
@@ -181,17 +225,17 @@ tested on Python version 3.2, 2.7 and 2.6.")
     (build-system python-build-system)
     (arguments
      `(#:tests? #f)) ;; Circular dependency with python-oslotest
-    (inputs
+    (propagated-inputs
       `(("python-appdirs" ,python-appdirs)
+        ("python-pyyaml" ,python-pyyaml)))
+    (native-inputs
+      `(("python-pbr" ,python-pbr)
         ("python-fixtures" ,python-fixtures)
         ("python-mimeparse" ,python-mimeparse)
-        ("python-pbr" ,python-pbr)
-        ("python-pyyaml" ,python-pyyaml)
         ("python-testrepository" ,python-testrepository)
-        ("python-setuptools" ,python-setuptools)
         ("python-testscenarios" ,python-testscenarios)
         ("python-testtools" ,python-testtools)))
-    (home-page "http://www.openstack.org/")
+    (home-page "https://www.openstack.org/")
     (synopsis
       "OpenStack Client Configuration Library")
     (description
@@ -206,14 +250,14 @@ tested on Python version 3.2, 2.7 and 2.6.")
 (define-public python-os-testr
   (package
     (name "python-os-testr")
-    (version "0.5.0")
+    (version "0.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "os-testr" version))
        (sha256
         (base32
-         "0bv03wnmvxhyi8y08hjh9clxrwqc2251529v4kh5khvca0fsbqdp"))))
+         "0mknd9hlmxmihr755gjkxyjp180380jajq5i3zm34q7y7bi62lss"))))
     (build-system python-build-system)
     (arguments
      ;; os-testr uses itself to run the tests. It seems like pbr writes the
@@ -221,13 +265,12 @@ tested on Python version 3.2, 2.7 and 2.6.")
      ;; when building the package. Skip the tests for now.
      `(#:tests? #f))
     (propagated-inputs
+     `(("python-subunit" ,python-subunit)))
+    (native-inputs
      `(("python-pbr" ,python-pbr)
-       ("python-subunit" ,python-subunit)
-       ("python-testtools" ,python-testtools)))
-    (inputs
-      `(("python-babel" ,python-babel)
-        ("python-setuptools" ,python-setuptools)))
-    (home-page "http://www.openstack.org/")
+       ("python-testtools" ,python-testtools)
+       ("python-babel" ,python-babel)))
+    (home-page "https://www.openstack.org/")
     (synopsis "Testr wrapper to provide functionality for OpenStack projects")
     (description
       "Os-testr provides developers with a testr wrapper and an output filter
@@ -237,47 +280,6 @@ tested on Python version 3.2, 2.7 and 2.6.")
 (define-public python2-os-testr
   (package-with-python2 python-os-testr))
 
-(define-public python-requests-mock
-  (package
-    (name "python-requests-mock")
-    (version "1.0.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "requests-mock" version))
-       (sha256
-        (base32
-         "0gcjjwsckhqixyffflc54i59x41jnbb37bli077vabii1bjmkin6"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-requests" ,python-requests)
-       ("python-six" ,python-six)))
-    (inputs
-     `(("python-pbr" ,python-pbr)))
-    (native-inputs
-     `(("python-discover" ,python-discover)
-       ("python-docutils" ,python-docutils)
-       ("python-fixtures" ,python-fixtures)
-       ("python-mock" ,python-mock)
-       ("python-sphinx" ,python-sphinx)
-       ("python-testrepository" ,python-testrepository)
-       ("python-testtools" ,python-testtools)))
-    (home-page "https://requests-mock.readthedocs.org/")
-    (synopsis "Mock out responses from the requests package")
-    (description
-      "This module provides a building block to stub out the HTTP requests
-portions of your testing code.")
-    (license asl2.0)
-    (properties `((python2-variant . ,(delay python2-requests-mock))))))
-
-(define-public python2-requests-mock
-  (let ((base (package-with-python2
-                (strip-python2-variant python-requests-mock))))
-    (package (inherit base)
-      (native-inputs
-       `(("python2-setuptools" ,python2-setuptools)
-         ,@(package-native-inputs base))))))
-
 (define-public python-stevedore
   (package
     (name "python-stevedore")
@@ -292,15 +294,16 @@ portions of your testing code.")
     (build-system python-build-system)
     (propagated-inputs
       `(("python-six" ,python-six)))
-    (inputs
-      `(("python-pbr" ,python-pbr)))
     (native-inputs
-      `(("python-setuptools" ,python-setuptools)
+      `(("python-pbr" ,python-pbr)
         ;; Tests
+        ("python-discover" ,python-discover)
         ("python-docutils" ,python-docutils)
         ("python-mock" ,python-mock)
+        ("python-oslosphinx" ,python-oslosphinx)
         ("python-oslotest" ,python-oslotest)
-        ("python-sphinx" ,python-sphinx)))
+        ("python-sphinx" ,python-sphinx)
+        ("python-testrepository" ,python-testrepository)))
     (home-page "https://github.com/dreamhost/stevedore")
     (synopsis "Manage dynamic plugins for Python applications")
     (description
@@ -320,17 +323,18 @@ extensions.")
 (define-public python-tempest-lib
   (package
     (name "python-tempest-lib")
-    (version "0.12.0")
+    (version "1.0.0")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "tempest-lib" version))
       (sha256
        (base32
-        "0f15wxk394cb2kw34krpxq8mvy1rxw0lnl5wfiv14cq1s1fm9cjd"))))
+        "1cpp2vwmawpd29hjsklsps181lq2ah91cl412qvpnz228nf9sqn5"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
+     `(#:tests? #f ; FIXME: Requires oslo.log >= 1.14.0.
+       #:phases
        (modify-phases %standard-phases
          (add-before
           'check 'pre-check
@@ -346,13 +350,12 @@ extensions.")
         ("python-paramiko" ,python-paramiko)
         ("python-pbr" ,python-pbr)
         ("python-six" ,python-six)))
-    (inputs
+    (native-inputs
       `(("python-babel" ,python-babel)
         ("python-mock" ,python-mock)
         ("python-os-testr" ,python-os-testr)
-        ("python-oslotest" ,python-oslotest)
-        ("python-setuptools" ,python-setuptools)))
-    (home-page "http://www.openstack.org/")
+        ("python-oslotest" ,python-oslotest)))
+    (home-page "https://www.openstack.org/")
     (synopsis "OpenStack functional testing library")
     (description
       "Tempest-lib is a functional testing library for OpenStack.  It provides
@@ -378,13 +381,14 @@ common features used in Tempest.")
          (base32
           "13r778jfb0fhna37c2pd1f2xipnsbd7zli7qhn96acrzymrwj5k1"))))
     (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; FIXME: Requires packaging python-argparse.
     (propagated-inputs
       `(("python-netaddr" ,python-netaddr)
         ("python-six" ,python-six)
         ("python-stevedore" ,python-stevedore)))
-    (inputs
+    (native-inputs
       `(("python-pbr" ,python-pbr)
-        ("python-setuptools" ,python-setuptools)
         ;; Tests
         ("python-oslo.i18n" ,python-oslo.i18n)
         ("python-mock" ,python-mock)
@@ -412,13 +416,18 @@ common features used in Tempest.")
         (base32
          "0kvha0rs9295njyl2z6n6zm5dapi5mrl5zwjm0m6ldqrvccyf8c3"))))
     (build-system python-build-system)
-    (inputs
+    (native-inputs
       `(("python-babel" ,python-babel)
         ("python-pbr" ,python-pbr)
-        ("python-setuptools" ,python-setuptools)
         ;; Tests.
-        ("python-oslotest" ,python-oslotest)))
-    (home-page "http://launchpad.net/oslo")
+        ("python-coverage" ,python-coverage)
+        ("python-hacking" ,python-hacking)
+        ("python-mock" ,python-mock)
+        ("python-os-client-config" ,python-os-client-config)
+        ("python-oslotest" ,python-oslotest)
+        ("python-oslosphinx" ,python-oslosphinx)
+        ("python-sphinx" ,python-sphinx)))
+    (home-page "https://launchpad.net/oslo")
     (synopsis "Oslo context library")
     (description
       "The Oslo context library has helpers to maintain useful information
@@ -441,18 +450,19 @@ pipeline and used by various modules such as logging.")
           (base32
            "0bpb1c20sm8my650gl824nzaip83bfn8hr91s65k5ncmyh8hb6pl"))))
     (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; FIXME: Circular dependency on python-oslo.config.
     (propagated-inputs
       `(("python-babel" ,python-babel)
         ("python-six" ,python-six)))
-    (inputs
+    (native-inputs
       `(("python-pbr" ,python-pbr)
-        ("python-setuptools" ,python-setuptools)
         ;; Tests
         ("python-mock" ,python-mock)
         ("python-mox3" ,python-mox3)
         ("python-oslotest" ,python-oslotest)
         ("python-testscenarios" ,python-testscenarios)))
-    (home-page "http://launchpad.net/oslo")
+    (home-page "https://launchpad.net/oslo")
     (synopsis "Oslo internationalization (i18n) library")
     (description
       "The oslo.i18n library contain utilities for working with
@@ -478,6 +488,8 @@ in an application or library.")
         (base32
           "1fhy6yvbd565nv4x4i3ppyrlbmz3yy9d0xsvw5nkqsa7g43nmf8z"))))
   (build-system python-build-system)
+  (arguments
+   '(#:tests? #f)) ; FIXME: Requires oslo.utils >= 3.2.0.
   (propagated-inputs
    `(("python-debtcollector" ,python-debtcollector)
      ("python-oslo.config" ,python-oslo.config)
@@ -486,14 +498,13 @@ in an application or library.")
      ("python-oslo.utils" ,python-oslo.utils)
      ("python-oslo.serialization" ,python-oslo.serialization)
      ("python-six" ,python-six)))
-  (inputs
+  (native-inputs
     `(("python-babel" ,python-babel)
       ("python-iso8601" ,python-iso8601)
       ("python-mock" ,python-mock)
       ("python-oslotest" ,python-oslotest)
-      ("python-pbr" ,python-pbr)
-      ("python-setuptools" ,python-setuptools)))
-  (home-page "http://launchpad.net/oslo")
+      ("python-pbr" ,python-pbr)))
+  (home-page "https://launchpad.net/oslo")
   (synopsis "Python logging library of the Oslo project")
   (description
     "The oslo.log (logging) configuration library provides standardized
@@ -516,6 +527,8 @@ handlers and support for context specific logging (like resource id’s etc).")
         (base32
          "00s03krhf833gs76aw5ns32w9m1i4hx6x6d9g82m0j5wyqk0sci4"))))
     (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; FIXME: Requires python-oslo.utils >= 3.2.0.
     (propagated-inputs
       `(("python-iso8601" ,python-iso8601)
         ("python-netaddr" ,python-netaddr)
@@ -523,15 +536,14 @@ handlers and support for context specific logging (like resource id’s etc).")
         ("python-simplejson" ,python-simplejson)
         ("python-six" ,python-six)
         ("python-pytz" ,python-pytz)))
-    (inputs
+    (native-inputs
       `(("python-babel" ,python-babel)
         ("python-pbr" ,python-pbr)
-        ("python-setuptools" ,python-setuptools)
         ;; Tests.
         ("python-mock" ,python-mock)
         ("python-oslo.i18n" ,python-oslo.i18n)
         ("python-oslotest" ,python-oslotest)))
-    (home-page "http://launchpad.net/oslo")
+    (home-page "https://launchpad.net/oslo")
     (synopsis "Oslo serialization library")
     (description
       "The oslo.serialization library provides support for representing objects
@@ -541,27 +553,76 @@ in transmittable and storable formats, such as JSON and MessagePack.")
 (define-public python2-oslo.serialization
   (package-with-python2 python-oslo.serialization))
 
+(define-public python-reno
+  (package
+    (name "python-reno")
+    (version "2.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "reno" version))
+        (sha256
+          (base32 "0gwzi5dvacqx43smxl3rd1z33npn7gfhm50bvgmq90fib2q431wc"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'init-git
+           (lambda _
+             ;; reno expects a git repo
+             (zero? (system* "git" "init")))))))
+    (propagated-inputs
+      `(("python-dulwich" ,python-dulwich)
+        ("python-pbr" ,python-pbr)
+        ("python-pyyaml" ,python-pyyaml)
+        ("python-six" ,python-six)))
+    (native-inputs
+      `(("python-testtools" ,python-testtools)
+        ("python-testscenarios" ,python-testscenarios)
+        ("python-testrepository" ,python-testrepository)
+        ("python-mock" ,python-mock)
+        ("python-docutils" ,python-docutils)
+        ("python-sphinx" ,python-sphinx)
+        ("gnupg" ,gnupg)
+        ("git" ,git)))
+    (home-page "http://docs.openstack.org/developer/reno/")
+    (synopsis "Release notes manager")
+    (description "Reno is a tool for storing release notes in a git repository
+and building documentation from them.")
+    (license asl2.0)))
+
+(define-public python2-reno
+  (package-with-python2 python-reno))
+
 (define-public python-oslosphinx
   (package
     (name "python-oslosphinx")
-    (version "4.3.0")
+    (version "4.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "oslosphinx" version))
        (sha256
         (base32
-         "0cz8ym4i1n4rgljlqhyhfkpgdmid7nkb909k8r8nk186m9cmpla2"))))
+         "09mxqyabi68f3s3arvdhlhq0mn38vf74jbsfcg84151hcj6czhnl"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             ;; Note: Upstream tests would have also built the release notes.
+             ;; That only would work if we were in a git checkout.
+             ;; Therefore, we don't do it here.
+             (zero? (system* "python" "setup.py" "build_sphinx")))))))
     (propagated-inputs
       `(("python-requests" ,python-requests)))
-    (inputs
+    (native-inputs
       `(("python-pbr" ,python-pbr)
         ("python-docutils" ,python-docutils)
         ("python-hacking" ,python-hacking)
-        ("python-setuptools" ,python-setuptools)
         ("python-sphinx" ,python-sphinx)))
-    (home-page "http://www.openstack.org/")
+    (home-page "https://www.openstack.org/")
     (synopsis "OpenStack sphinx extensions and theme")
     (description
       "This package provides themes and extensions for Sphinx documentation
@@ -574,32 +635,28 @@ from the OpenStack project.")
 (define-public python-oslotest
   (package
     (name "python-oslotest")
-    (version "1.10.0")
+    (version "3.2.0")
     (source
       (origin
         (method url-fetch)
-        (uri (string-append
-               "https://pypi.python.org/packages/source/o/oslotest/oslotest-"
-               version
-               ".tar.gz"))
+        (uri (pypi-uri "oslotest" version))
         (sha256
           (base32
-            "0l3ny48ddz5xbf0v4r0jv1yhbdzinc2vy0lybhdkmx3xy0b886fs"))))
+            "1xay6wjxzqm4bg87fahqas84dhvhgf1gghzldkcczsfx897mqdkh"))))
     (build-system python-build-system)
     (propagated-inputs
       `(("python-fixtures" ,python-fixtures)
         ("python-mock" ,python-mock)
         ("python-mox3" ,python-mox3)
-        ("python-six" ,python-six)))
-    (inputs
-      `(("python-pbr" ,python-pbr)
         ("python-os-client-config" ,python-os-client-config)
-        ("python-setuptools" ,python-setuptools)
+        ("python-six" ,python-six)
         ("python-subunit" ,python-subunit)
         ("python-testrepository" ,python-testrepository)
-        ("python-testscenarios" ,python-testscenarios)
         ("python-testtools" ,python-testtools)))
-    (home-page "http://launchpad.net/oslo")
+    (native-inputs
+      `(("python-pbr" ,python-pbr)
+        ("python-testscenarios" ,python-testscenarios)))
+    (home-page "https://launchpad.net/oslo")
     (synopsis "Oslo test framework")
     (description
       "The Oslo Test framework provides common fixtures, support for debugging,
@@ -626,6 +683,8 @@ and better support for mocking results.")
             ;; phase.
             (delete-file "oslo_utils/tests/test_netutils.py")))))
     (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; FIXME: Requires oslo.config >= 2.7.0.
     (propagated-inputs
       `(("python-debtcollector" ,python-debtcollector)
         ("python-oslo.i18n" ,python-oslo.i18n)
@@ -635,16 +694,17 @@ and better support for mocking results.")
         ("python-netifaces" ,python-netifaces)
         ("python-pytz" ,python-pytz)
         ("python-six" ,python-six)))
-    (inputs
+    (native-inputs
       `(("python-babel" ,python-babel)
         ("python-pbr" ,python-pbr)
-        ("python-setuptools" ,python-setuptools)
         ;; Tests.
+        ("python-bandit" ,python-bandit)
+        ("python-oslo.config" ,python-oslo.config)
         ("python-oslotest" ,python-oslotest)
         ("python-mock" ,python-mock)
         ("python-mox3" ,python-mox3)
         ("python-testscenarios" ,python-testscenarios)))
-    (home-page "http://launchpad.net/oslo")
+    (home-page "https://launchpad.net/oslo")
     (synopsis "Oslo utility library")
     (description
       "The @code{oslo.utils} library provides support for common utility type
@@ -667,9 +727,10 @@ handling.")
          (base32
           "1w4csvkah67rfpxylxnvs2s3594i0f9isy8pf4gnsqs5zirvjaa4"))))
     (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; FIXME: Many tests are failing.
     (native-inputs
-     `(("python-setuptools" ,python-setuptools)
-       ("python-sphinx" ,python-sphinx)
+     `(("python-sphinx" ,python-sphinx)
        ;; and some packages for the tests
        ("openssl" ,openssl)
        ("python-coverage" ,python-coverage)
@@ -704,7 +765,7 @@ handling.")
        ("python-requests" ,python-requests)
        ("python-six" ,python-six)
        ("python-stevedore" ,python-stevedore)))
-    (home-page "http://www.openstack.org/")
+    (home-page "https://www.openstack.org/")
     (synopsis "Client Library for OpenStack Identity")
     (description
      "Python-keystoneclient is the identity service used by OpenStack for
@@ -744,7 +805,6 @@ LDAP.")
     (build-system python-build-system)
     (native-inputs
      `(("python-pbr" ,python-pbr)
-       ("python-setuptools" ,python-setuptools)
        ("python-sphinx" ,python-sphinx)
        ;; The folloing packages are needed for the tests.
        ("python-coverage" ,python-coverage)
@@ -758,7 +818,7 @@ LDAP.")
     (propagated-inputs
      `(("python-requests" ,python-requests)
        ("python-six" ,python-six)))
-    (home-page "http://www.openstack.org/")
+    (home-page "https://www.openstack.org/")
     (synopsis "OpenStack Object Storage API Client Library")
     (description
      "OpenStack Object Storage (code-named Swift) creates redundant, scalable
@@ -770,33 +830,28 @@ data that best fit this type of storage model are virtual machine images, photo
 storage, email storage and backup archiving.  Having no central \"brain\" or
 master point of control provides greater scalability, redundancy and
 permanence.")
-  (license asl2.0)))
+    (properties `((python2-variant . ,(delay python2-swiftclient))))
+    (license asl2.0)))
 
 (define-public python2-swiftclient
-  (let ((swiftclient (package-with-python2 python-swiftclient)))
+  (let ((swiftclient (package-with-python2
+                      (strip-python2-variant python-swiftclient))))
     (package (inherit swiftclient)
       (propagated-inputs
        `(("python2-futures" ,python2-futures)
-         ("python2-requests" ,python2-requests)
-         ,@(alist-delete "python-requests"
-                         (package-propagated-inputs swiftclient))))
-      (native-inputs
-       `(("python2-keystoneclient" ,python2-keystoneclient)
-         ("python2-oslosphinx" ,python2-oslosphinx)
-         ,@(fold alist-delete (package-native-inputs swiftclient)
-            '("python-keystoneclient" "python-oslosphinx")))))))
+         ,@(package-propagated-inputs swiftclient))))))
 
 (define-public python-git-review
   (package
     (name "python-git-review")
-    (version "1.25.0")
+    (version "1.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "git-review" version))
        (sha256
         (base32
-         "07d1jn9ryff5j5ic6qj5pbk10m1ccmpllj0wyalrcms1q9yhlzh8"))))
+         "150b1zvm6favd1ad8yl2bilq7xkr4m1mw9510frh47f8ghfkqz28"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f ; tests require a running Gerrit server
@@ -814,11 +869,12 @@ permanence.")
                          (list git openssh))))))))))
     (native-inputs
      `(("python-pbr" ,python-pbr)))
+    (propagated-inputs
+     `(("python-requests" ,python-requests)))
     (inputs
-     `(("python-requests" ,python-requests)
-       ("git" ,git)
+     `(("git" ,git)
        ("openssh" ,openssh)))
-    (home-page "http://docs.openstack.org/infra/git-review/")
+    (home-page "https://docs.openstack.org/infra/git-review/")
     (synopsis "Command-line tool for Gerrit")
     (description
      "Git-review is a command-line tool that helps submitting Git branches to
@@ -826,8 +882,4 @@ Gerrit for review, or fetching existing ones.")
     (license asl2.0)))
 
 (define-public python2-git-review
-  (let ((base (package-with-python2 (strip-python2-variant python-git-review))))
-    (package (inherit base)
-             (native-inputs
-              `(("python2-setuptools" ,python2-setuptools)
-                ,@(package-native-inputs base))))))
+  (package-with-python2 python-git-review))