mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-24 18:58:08 -07:00
dev-python/sip: Backport PEP517 argument passing support
Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
190
dev-python/sip/files/sip-6.5.0-pep517-args.patch
Normal file
190
dev-python/sip/files/sip-6.5.0-pep517-args.patch
Normal file
@@ -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:
|
||||
36
dev-python/sip/sip-6.5.0-r1.ebuild
Normal file
36
dev-python/sip/sip-6.5.0-r1.ebuild
Normal file
@@ -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
|
||||
)
|
||||
Reference in New Issue
Block a user