Package: dh-python
Version: 6.20250414
Severity: normal
Control: block 1027864 by -1
Attempting to build zope.proxy with pybuild-plugin-pyproject fails as
follows:
creating
'/build/reproducible-path/zope.proxy-7.0/.pybuild/cpython3_3.13_zope.proxy/.tmp-g3wsipdo/zope_proxy-7.0-cp313-cp313-linux_x86_64.whl'
and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'zope/proxy/__init__.py'
adding 'zope/proxy/_zope_proxy_proxy.c'
adding 'zope/proxy/_zope_proxy_proxy.cpython-313-x86_64-linux-gnu.so'
adding 'zope/proxy/decorator.py'
adding 'zope/proxy/interfaces.py'
adding 'zope/proxy/proxy.h'
adding 'zope/proxy/tests/__init__.py'
adding 'zope/proxy/tests/test_compile_flags.py'
adding 'zope/proxy/tests/test_decorator.py'
adding 'zope/proxy/tests/test_proxy.py'
adding 'zope_proxy-7.0.data/headers/proxy.h'
adding 'zope_proxy-7.0.dist-info/licenses/LICENSE.txt'
adding 'zope_proxy-7.0.dist-info/METADATA'
adding 'zope_proxy-7.0.dist-info/WHEEL'
adding 'zope_proxy-7.0.dist-info/top_level.txt'
adding 'zope_proxy-7.0.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Successfully built zope_proxy-7.0-cp313-cp313-linux_x86_64.whl
I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with
"installer" module
E: pybuild pybuild:389: build: plugin pyproject failed with: 'headers'
I've had the attached local patch sitting around in my tree for ages,
but as you can see from the XXX comment it isn't quite right yet. It
looks as though python-persistent is another test case here. Still, it
would be better to have this filed so that somebody else can look at it
rather than rotting on my disk.
Thanks,
--
Colin Watson (he/him) [[email protected]]
-- System Information:
Debian Release: forky/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 6.16.3+deb14-amd64 (SMP w/12 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_WARN, TAINT_OOT_MODULE
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8),
LANGUAGE=en_GB:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages dh-python depends on:
ii python3 3.13.5-1
dh-python recommends no packages.
Versions of packages dh-python suggests:
ii dpkg-dev 1.22.21
pn flit <none>
ii libdpkg-perl 1.22.21
ii python3-build 1.2.2-4
ii python3-installer 0.7.0+dfsg1-3
ii python3-wheel 0.46.1-2
-- no debconf information
diff --git a/dhpython/build/plugin_pyproject.py b/dhpython/build/plugin_pyproject.py
index 314f3c4..0a5df22 100644
--- a/dhpython/build/plugin_pyproject.py
+++ b/dhpython/build/plugin_pyproject.py
@@ -144,7 +144,7 @@ class BuildSystem(Base):
log.info('Unpacking wheel built for %s with "installer" module',
args['interpreter'])
extras = {}
- for extra in ('scripts', 'data'):
+ for extra in ('scripts', 'data', 'include'):
path = Path(args["home_dir"]) / extra
if osp.exists(path):
log.warning('%s directory already exists, skipping unpack. '
@@ -158,6 +158,7 @@ class BuildSystem(Base):
'purelib': args['build_dir'],
'scripts': extras['scripts'],
'data': extras['data'],
+ 'headers': extras['include'],
},
interpreter=args['interpreter'].binary_dv,
script_kind='posix',
@@ -184,8 +185,9 @@ class BuildSystem(Base):
# TODO: Introduce a version check once sysconfig is patched.
paths = sysconfig.get_paths(scheme='posix_prefix')
- # start by copying the data and scripts
- for extra in ('data', 'scripts'):
+ # start by copying the data, scripts, and headers
+ # XXX this is wrong for includes; test with python-persistent, where it installs into /usr/include/python$ver/ rather than /usr/include/python$ver/persistent/
+ for extra in ('data', 'scripts', 'include'):
src_dir = Path(args['home_dir']) / extra
if not src_dir.exists():
continue