diff options
author | Michał Górny <mgorny@gentoo.org> | 2022-05-08 14:50:12 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2022-05-11 18:43:42 +0200 |
commit | 58ee906da23e6e5e7d51289e45b33af9ca6f45e6 (patch) | |
tree | 3843c4885ccc37b9c4e174b8c03c49cb0d3c4b2b /dev-python/sip | |
parent | dev-python/sentry-sdk: Revert the pytest-markdown workaround (diff) | |
download | gentoo-58ee906da23e6e5e7d51289e45b33af9ca6f45e6.tar.gz gentoo-58ee906da23e6e5e7d51289e45b33af9ca6f45e6.tar.bz2 gentoo-58ee906da23e6e5e7d51289e45b33af9ca6f45e6.zip |
dev-python/sip: Backport PEP517 argument passing support
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/sip')
-rw-r--r-- | dev-python/sip/files/sip-6.5.0-pep517-args.patch | 190 | ||||
-rw-r--r-- | dev-python/sip/sip-6.5.0-r1.ebuild | 36 |
2 files changed, 226 insertions, 0 deletions
diff --git a/dev-python/sip/files/sip-6.5.0-pep517-args.patch b/dev-python/sip/files/sip-6.5.0-pep517-args.patch new file mode 100644 index 000000000000..c4d39dcf6156 --- /dev/null +++ b/dev-python/sip/files/sip-6.5.0-pep517-args.patch @@ -0,0 +1,190 @@ +Backport from https://www.riverbankcomputing.com/hg/sip/ + +changeset: 2771:8543f04b374f +branch: 6.6-maint +tag: tip +user: Phil Thompson <phil@riverbankcomputing.com> +date: Tue May 10 13:58:28 2022 +0100 +summary: Fixed the PEP571 backend to handle multiple instances of the same config + +changeset: 2769:c02af095a016 +branch: 6.6-maint +user: Phil Thompson <phil@riverbankcomputing.com> +date: Sat May 07 15:18:14 2022 +0100 +summary: Fix an API backward incompatibility. + +changeset: 2768:98dbce3e62f1 +branch: 6.6-maint +user: Phil Thompson <phil@riverbankcomputing.com> +date: Sat May 07 15:03:49 2022 +0100 +summary: Any config settings passed by a PEP 571 frontend are now used. + +diff -r 8583e2bb1b32 sipbuild/abstract_project.py +--- a/sipbuild/abstract_project.py Thu Nov 25 18:15:32 2021 +0000 ++++ b/sipbuild/abstract_project.py Tue May 10 16:15:30 2022 +0200 +@@ -1,4 +1,4 @@ +-# Copyright (c) 2020, Riverbank Computing Limited ++# Copyright (c) 2022, Riverbank Computing Limited + # All rights reserved. + # + # This copy of SIP is licensed for use under the terms of the SIP License +@@ -34,7 +34,7 @@ + """ This specifies the API of a project. """ + + @classmethod +- def bootstrap(cls, tool, tool_description=''): ++ def bootstrap(cls, tool, tool_description='', arguments=None): + """ Return an AbstractProject instance fully configured for a + particular command line tool. + """ +@@ -79,6 +79,10 @@ + "The project factory did not return an AbstractProject " + "object") + ++ # We set this as an attribute rather than change the API of the ctor or ++ # setup(). ++ project.arguments = arguments ++ + # Complete the configuration of the project. + project.setup(pyproject, tool, tool_description) + +diff -r 8583e2bb1b32 sipbuild/api.py +--- a/sipbuild/api.py Thu Nov 25 18:15:32 2021 +0000 ++++ b/sipbuild/api.py Tue May 10 16:15:30 2022 +0200 +@@ -1,4 +1,4 @@ +-# Copyright (c) 2019, Riverbank Computing Limited ++# Copyright (c) 2022, Riverbank Computing Limited + # All rights reserved. + # + # This copy of SIP is licensed for use under the terms of the SIP License +@@ -28,10 +28,8 @@ + def build_sdist(sdist_directory, config_settings=None): + """ The PEP 517 hook for building an sdist from pyproject.toml. """ + +- # Note that we ignore config_settings until we have a frontend that we can +- # fully test with. (pip seems lacking at the moment.) +- +- project = AbstractProject.bootstrap('pep517') ++ project = AbstractProject.bootstrap('sdist', ++ arguments=_convert_config_settings(config_settings)) + + # pip executes this in a separate process and doesn't handle exceptions + # very well. However it does capture stdout and (eventually) show it to +@@ -45,10 +43,8 @@ + def build_wheel(wheel_directory, config_settings=None, metadata_directory=None): + """ The PEP 517 hook for building a wheel from pyproject.toml. """ + +- # Note that we ignore config_settings until we have a frontend that we can +- # fully test with. (pip seems lacking at the moment.) +- +- project = AbstractProject.bootstrap('pep517') ++ project = AbstractProject.bootstrap('wheel', ++ arguments=_convert_config_settings(config_settings)) + + # pip executes this in a separate process and doesn't handle exceptions + # very well. However it does capture stdout and (eventually) show it to +@@ -57,3 +53,26 @@ + return project.build_wheel(wheel_directory) + except Exception as e: + handle_exception(e) ++ ++ ++def _convert_config_settings(config_settings): ++ """ Return any configuration settings from the frontend to a pseudo-command ++ line. ++ """ ++ ++ if config_settings is None: ++ config_settings = {} ++ ++ args = [] ++ ++ for name, value in config_settings.items(): ++ if value: ++ if not isinstance(value, list): ++ value = [value] ++ ++ for m_value in value: ++ args.append(name + '=' + m_value) ++ else: ++ args.append(name) ++ ++ return args +diff -r 8583e2bb1b32 sipbuild/configurable.py +--- a/sipbuild/configurable.py Thu Nov 25 18:15:32 2021 +0000 ++++ b/sipbuild/configurable.py Tue May 10 16:15:30 2022 +0200 +@@ -1,4 +1,4 @@ +-# Copyright (c) 2021, Riverbank Computing Limited ++# Copyright (c) 2022, Riverbank Computing Limited + # All rights reserved. + # + # This copy of SIP is licensed for use under the terms of the SIP License +@@ -244,7 +244,7 @@ + """ + + # The tools that will build a set of bindings. +- BUILD_TOOLS = ('build', 'install', 'pep517', 'wheel') ++ BUILD_TOOLS = ('build', 'install', 'wheel') + + # All the valid tools. + _ALL_TOOLS = BUILD_TOOLS + ('sdist', ) +diff -r 8583e2bb1b32 sipbuild/project.py +--- a/sipbuild/project.py Thu Nov 25 18:15:32 2021 +0000 ++++ b/sipbuild/project.py Tue May 10 16:15:30 2022 +0200 +@@ -155,6 +155,7 @@ + + # The current directory should contain the .toml file. + self.root_dir = os.getcwd() ++ self.arguments = None + self.bindings = collections.OrderedDict() + self.bindings_factories = [] + self.builder = None +@@ -204,11 +205,6 @@ + def apply_user_defaults(self, tool): + """ Set default values for user options that haven't been set yet. """ + +- # If we are the backend to a 3rd-party frontend (most probably pip) +- # then let it handle the verbosity of messages. +- if self.verbose is None and tool == '': +- self.verbose = True +- + # This is only used when creating sdist and wheel files. + if self.name is None: + self.name = self.metadata['name'] +@@ -569,14 +565,9 @@ + # Set the initial configuration from the pyproject.toml file. + self._set_initial_configuration(pyproject, tool) + +- # Add any tool-specific command line options for (so far unspecified) ++ # Add any tool-specific command line arguments for (so far unspecified) + # parts of the configuration. +- if tool != 'pep517': +- self._configure_from_command_line(tool, tool_description) +- else: +- # Until pip improves it's error reporting we give the user all the +- # help we can. +- self.verbose = True ++ self._configure_from_arguments(tool, tool_description) + + # Now that any help has been given we can report a problematic + # pyproject.toml file. +@@ -712,8 +703,8 @@ + for bindings in self.bindings.values(): + bindings.verify_configuration(tool) + +- def _configure_from_command_line(self, tool, tool_description): +- """ Update the configuration from the user supplied command line. """ ++ def _configure_from_arguments(self, tool, tool_description): ++ """ Update the configuration from any user supplied arguments. """ + + from argparse import SUPPRESS + from .argument_parser import ArgumentParser +@@ -739,7 +730,7 @@ + bindings.add_command_line_options(parser, tool, all_options) + + # Parse the arguments and update the corresponding configurables. +- args = parser.parse_args() ++ args = parser.parse_args(self.arguments) + + for option, configurables in all_options.items(): + for configurable in configurables: diff --git a/dev-python/sip/sip-6.5.0-r1.ebuild b/dev-python/sip/sip-6.5.0-r1.ebuild new file mode 100644 index 000000000000..3f31cadaf6d1 --- /dev/null +++ b/dev-python/sip/sip-6.5.0-r1.ebuild @@ -0,0 +1,36 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{8..10} ) +DISTUTILS_USE_SETUPTOOLS=rdepend +inherit distutils-r1 + +DESCRIPTION="Python bindings generator for C/C++ libraries" +HOMEPAGE="https://www.riverbankcomputing.com/software/sip/ https://pypi.org/project/sip/" + +MY_P=${PN}-${PV/_pre/.dev} +if [[ ${PV} == *_pre* ]]; then + SRC_URI="https://dev.gentoo.org/~pesa/distfiles/${MY_P}.tar.gz" +else + SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz" +fi +S=${WORKDIR}/${MY_P} + +LICENSE="|| ( GPL-2 GPL-3 SIP )" +SLOT="5" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86" + +RDEPEND=" + !<dev-python/sip-4.19.25-r1[${PYTHON_USEDEP}] + !=dev-python/sip-5.5.0-r0[${PYTHON_USEDEP}] + dev-python/packaging[${PYTHON_USEDEP}] + dev-python/toml[${PYTHON_USEDEP}] +" + +distutils_enable_sphinx doc --no-autodoc + +PATCHES=( + "${FILESDIR}"/${P}-pep517-args.patch +) |