Imported Upstream version 5.7.0 upstream/5.7.0
authorDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 18 Jul 2022 01:13:58 +0000 (10:13 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 18 Jul 2022 01:13:58 +0000 (10:13 +0900)
12 files changed:
.zuul.yaml
AUTHORS
ChangeLog
PKG-INFO
doc/source/user/using.rst
pbr.egg-info/PKG-INFO
pbr.egg-info/SOURCES.txt
pbr/build.py [new file with mode: 0644]
pbr/tests/test_packaging.py
pbr/util.py
pyproject.toml.future [new file with mode: 0644]
releasenotes/notes/pep517-support-89189ce0bab15845.yaml [new file with mode: 0644]

index 176586401f5ff3cd0977fd52d8dddbd6c0cdb57e..7e168162e28e5444b41084707f94ce36b61fdfc6 100644 (file)
@@ -17,7 +17,6 @@
       - openstack/debtcollector
       - openstack/dib-utils
       - openstack/diskimage-builder
-      - openstack/django_openstack_auth
       - openstack/futurist
       - openstack/glance
       - openstack/glance_store
     templates:
       - lib-forward-testing
       - lib-forward-testing-python3
-      - openstack-cover-jobs
-      - openstack-python-jobs
-      - openstack-python3-ussuri-jobs
       - periodic-stable-jobs
       - publish-openstack-docs-pti
     check:
       jobs:
+        - openstack-tox-pep8
+        - openstack-tox-cover
+        - openstack-tox-py36
+        - openstack-tox-py37
+        - openstack-tox-py38
+        - openstack-tox-py39
         - pbr-installation-openstack
         - pbr-installation-openstack-pip-dev
         - tempest-full:
             override-checkout: stable/train
     gate:
       jobs:
+        - openstack-tox-pep8
+        - openstack-tox-cover
+        - openstack-tox-py36
+        - openstack-tox-py37
+        - openstack-tox-py38
+        - openstack-tox-py39
         - pbr-installation-openstack
         - pbr-installation-openstack-pip-dev
         - tempest-full:
diff --git a/AUTHORS b/AUTHORS
index 9587345cc343b62c41dbcecdc5c0d6a34733a6d7..eb2fe0dc0c1354b05568d08d106d356716362b39 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -143,6 +143,7 @@ cbjchen@cn.ibm.com <cbjchen@cn.ibm.com>
 dineshbhor <dinesh.bhor@nttdata.com>
 jiansong <jian.song@easystack.cn>
 lifeless <robertc@robertcollins.net>
+manchandavishal <manchandavishal143@gmail.com>
 melanie witt <melwitt@yahoo-inc.com>
 melissaml <ma.lei@99cloud.net>
 nizam <abdul.nizamuddin@nectechnologies.in>
index 84c9827af2c8ed26ab4e1fe11e8cbba2704c04f0..4bcee126a1816d963a40bbf5a97363cd54393cba 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,15 @@
 CHANGES
 =======
 
+5.7.0
+-----
+
+* Add a PEP517 interface
+* PBR package testing improvements
+* Run python3.9 test jobs
+* Retire django-openstack-auth
+* Correct comment for 'D1\_D2\_SETUP\_ARGS'
+
 5.6.0
 -----
 
index 8efb07a364cd98325cb75ac682e749c45b3fb267..c23308df07caf22e583179d241b5c9ca47d1ca27 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pbr
-Version: 5.6.0
+Version: 5.7.0
 Summary: Python Build Reasonableness
 Home-page: https://docs.openstack.org/pbr/latest/
 Author: OpenStack
index b9659d023ff2072350fff1eeaeb9a79105efb957..7070e017922154c75c43a1e3c4ebd90208eef92e 100644 (file)
@@ -34,6 +34,18 @@ something like this::
    While one can pass any arguments supported by setuptools to ``setup()``,
    any conflicting arguments supplied in ``setup.cfg`` will take precedence.
 
+``pyproject.toml``
+------------------
+
+As an alternative to writing a ``setup.py`` you can instead setup PBR
+through the PEP 517 build-system configuration in ``pyproject.toml``.
+Your build-system block in ``pyproject.toml`` will need to look something
+like this::
+
+    [build-system]
+    requires = ["pbr>=5.7.0", "setuptools>=36.6.0", "wheel"]
+    build-backend = "pbr.build"
+
 .. _setup_cfg:
 
 ``setup.cfg``
index 8efb07a364cd98325cb75ac682e749c45b3fb267..c23308df07caf22e583179d241b5c9ca47d1ca27 100644 (file)
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pbr
-Version: 5.6.0
+Version: 5.7.0
 Summary: Python Build Reasonableness
 Home-page: https://docs.openstack.org/pbr/latest/
 Author: OpenStack
index 2fbcb1dff43223a5cbfb88d3d3f5f8e46146895b..ed0daa2790987f014d77e0c0c88acd894826226a 100644 (file)
@@ -8,6 +8,7 @@ CONTRIBUTING.rst
 ChangeLog
 LICENSE
 README.rst
+pyproject.toml.future
 setup.cfg
 setup.py
 test-requirements.txt
@@ -26,6 +27,7 @@ doc/source/user/releasenotes.rst
 doc/source/user/semver.rst
 doc/source/user/using.rst
 pbr/__init__.py
+pbr/build.py
 pbr/builddoc.py
 pbr/core.py
 pbr/extra_files.py
@@ -102,6 +104,7 @@ releasenotes/notes/fix-keywords-as-cfg-list-6cadc5141429d7f5.yaml
 releasenotes/notes/fix-mapping-value-explode-with-equal-sign-41bf822fa4dd0e68.yaml
 releasenotes/notes/ignore-find-links-07cf54f465aa33a6.yaml
 releasenotes/notes/long-descr-content-type-f9a1003acbb8740f.yaml
+releasenotes/notes/pep517-support-89189ce0bab15845.yaml
 releasenotes/notes/remove-command-hooks-907d9c2325f306ca.yaml
 releasenotes/notes/support-vcs-uris-with-subdirectories-20ad68b6138f72ca.yaml
 releasenotes/notes/use_2to3-removal-ac48bf9fbfa049b1.yaml
diff --git a/pbr/build.py b/pbr/build.py
new file mode 100644 (file)
index 0000000..a5355e1
--- /dev/null
@@ -0,0 +1,61 @@
+# Copyright 2021 Monty Taylor
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""pep-517 support
+
+Add::
+
+      [build-system]
+      requires = ["pbr>=5.7.0", "setuptools>=36.6.0", "wheel"]
+      build-backend = "pbr.build"
+
+to pyproject.toml to use this
+"""
+
+from setuptools import build_meta
+
+__all__ = [
+    'get_requires_for_build_sdist',
+    'get_requires_for_build_wheel',
+    'prepare_metadata_for_build_wheel',
+    'build_wheel',
+    'build_sdist',
+]
+
+
+def get_requires_for_build_wheel(config_settings=None):
+    return build_meta.get_requires_for_build_wheel(config_settings)
+
+
+def get_requires_for_build_sdist(config_settings=None):
+    return build_meta.get_requires_for_build_sdist(config_settings)
+
+
+def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None):
+    return build_meta.prepare_metadata_for_build_wheel(
+        metadata_directory, config_settings)
+
+
+def build_wheel(
+    wheel_directory,
+    config_settings=None,
+    metadata_directory=None,
+):
+    return build_meta.build_wheel(
+        wheel_directory, config_settings, metadata_directory,
+    )
+
+
+def build_sdist(sdist_directory, config_settings=None):
+    return build_meta.build_sdist(sdist_directory, config_settings)
index 9e95a86808612a15b4f6e9fc780113bba4188abf..7d55d549a335bb646ca17682a81f3cc49599285d 100644 (file)
@@ -172,11 +172,10 @@ class Venv(fixtures.Fixture):
         """
         self._reason = reason
         if modules == ():
-            pbr = 'file://%s#egg=pbr' % PBR_ROOT
-            modules = ['pip', 'wheel', pbr]
+            modules = ['pip', 'wheel', 'build', PBR_ROOT]
         self.modules = modules
         if pip_cmd is None:
-            self.pip_cmd = ['-m', 'pip', 'install']
+            self.pip_cmd = ['-m', 'pip', '-v', 'install']
         else:
             self.pip_cmd = pip_cmd
 
@@ -230,6 +229,9 @@ class CreatePackages(fixtures.Fixture):
         self.packages = packages
 
     def _writeFile(self, directory, file_name, contents):
+        if not contents:
+            # We want to be able to override not having files
+            return
         path = os.path.abspath(os.path.join(directory, file_name))
         path_dir = os.path.dirname(path)
         if not os.path.exists(path_dir):
@@ -920,6 +922,56 @@ class TestRequirementParsing(base.BaseTestCase):
             self.assertEqual(exp_parsed, gen_parsed)
 
 
+class TestPEP517Support(base.BaseTestCase):
+    def test_pep_517_support(self):
+        pkgs = {
+            'test_pep517':
+                {
+                    'requirements.txt': textwrap.dedent("""\
+                        sphinx
+                        iso8601
+                    """),
+                    # Override no setup.py.
+                    'setup.py': '',
+                    'setup.cfg': textwrap.dedent("""\
+                        [metadata]
+                        name = test_pep517
+                        summary = A tiny test project
+                        author = PBR Team
+                        author-email = foo@example.com
+                        home-page = https://example.com/
+                        classifier =
+                            Intended Audience :: Information Technology
+                            Intended Audience :: System Administrators
+                            License :: OSI Approved :: Apache Software License
+                            Operating System :: POSIX :: Linux
+                            Programming Language :: Python
+                            Programming Language :: Python :: 2
+                            Programming Language :: Python :: 2.7
+                            Programming Language :: Python :: 3
+                            Programming Language :: Python :: 3.6
+                            Programming Language :: Python :: 3.7
+                            Programming Language :: Python :: 3.8
+                    """),
+                    'pyproject.toml': textwrap.dedent("""\
+                        [build-system]
+                        requires = ["pbr", "setuptools>=36.6.0", "wheel"]
+                        build-backend = "pbr.build"
+                    """)},
+        }
+        pkg_dirs = self.useFixture(CreatePackages(pkgs)).package_dirs
+        pkg_dir = pkg_dirs['test_pep517']
+        venv = self.useFixture(Venv('PEP517'))
+
+        # Test building sdists and wheels works. Note we do not use pip here
+        # because pip will forcefully install the latest version of PBR on
+        # pypi to satisfy the build-system requires. This means we can't self
+        # test changes using pip. Build with --no-isolation appears to avoid
+        # this problem.
+        self._run_cmd(venv.python, ('-m', 'build', '--no-isolation', '.'),
+                      allow_fail=False, cwd=pkg_dir)
+
+
 class TestRepositoryURLDependencies(base.BaseTestCase):
 
     def setUp(self):
index 75a7ebb4d64c588212c26a37e23363df4949dd16..0669a2467169001ef681f1c14c647995967931cd 100644 (file)
@@ -88,10 +88,8 @@ import pbr.hooks
 # predicates in ()
 _VERSION_SPEC_RE = re.compile(r'\s*(.*?)\s*\((.*)\)\s*$')
 
-
-# Mappings from setup() keyword arguments to setup.cfg options;
-# The values are (section, option) tuples, or simply (section,) tuples if
-# the option has the same name as the setup() argument
+# Mappings from setup.cfg options, in (section, option) form, to setup()
+# keyword arguments
 CFG_TO_PY_SETUP_ARGS = (
     (('metadata', 'name'), 'name'),
     (('metadata', 'version'), 'version'),
diff --git a/pyproject.toml.future b/pyproject.toml.future
new file mode 100644 (file)
index 0000000..1989dfd
--- /dev/null
@@ -0,0 +1,9 @@
+# PBR doesn't use the pyproject.toml interface internally yet as
+# fixing issues in the system will be difficult if PBR itself
+# depends on it. We will put this file into place at pyproject.toml
+# once we are more confident it works generally.
+
+[build-system]
+requires = ["setuptools>=36.6.0", "wheel"]
+build-backend = "pbr.build"
+backend-path = ["."]
diff --git a/releasenotes/notes/pep517-support-89189ce0bab15845.yaml b/releasenotes/notes/pep517-support-89189ce0bab15845.yaml
new file mode 100644 (file)
index 0000000..97ab28b
--- /dev/null
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    PBR now includes a PEP 517 build-backend and can be used in
+    pyproject.toml build-system configuration. Setuptools continues
+    to be the underlying mechanism with PBR acting as a driver via
+    PEP 517 entrypoints.