mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-24 18:58:08 -07:00
dev-python/python-distutils-extra: Fix --skip-build support
Closes: https://bugs.gentoo.org/718394 Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
From 4f5e11110ce9cc3f511c798acfc009ce5db4e9ef Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
|
||||
Date: Tue, 28 Apr 2020 10:48:18 +0200
|
||||
Subject: [PATCH] Fix install_auto command with --skip-build
|
||||
|
||||
python-distutils-extra seems to rely on a very bad practice of modifying
|
||||
internal state (file lists) in middle of `build` commands. As a result,
|
||||
if the package is installed via `build` command followed by `install
|
||||
--skip-build` (since everything was built already!), most of the files
|
||||
are not installed.
|
||||
|
||||
Ideally, this would be resolved by making internal state updates
|
||||
independent of `build` command execution. However, given that
|
||||
the package is not really alive and worth the effort, let's settle
|
||||
on a cheap hack of calling all `build_*` subcommands from `install`
|
||||
if `--skip-build` is used. This partially reverses what standard
|
||||
distutils `install` command does but it will rebuild only the data files
|
||||
rather than all C extensions.
|
||||
|
||||
Modify tests to use `--skip-build` unconditionally to test this better.
|
||||
Testing both scenarios probably makes little sense.
|
||||
---
|
||||
DistUtilsExtra/auto.py | 7 +++++++
|
||||
test/auto.py | 5 +++--
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/DistUtilsExtra/auto.py b/DistUtilsExtra/auto.py
|
||||
index ea15183..db45f7a 100644
|
||||
--- a/DistUtilsExtra/auto.py
|
||||
+++ b/DistUtilsExtra/auto.py
|
||||
@@ -711,6 +711,13 @@ class sdist_auto(distutils.command.sdist.sdist):
|
||||
|
||||
class install_auto(distutils.command.install.install):
|
||||
def run(self):
|
||||
+ # run build_* subcommands to get file lists if install command
|
||||
+ # won't run 'build' for us
|
||||
+ if self.skip_build:
|
||||
+ self.run_command('build_help')
|
||||
+ self.run_command('build_i18n')
|
||||
+ self.run_command('build_icons')
|
||||
+
|
||||
# install files from etc/
|
||||
if os.path.isdir('etc'):
|
||||
# work around a bug in copy_tree() which fails with "File exists" on
|
||||
diff --git a/test/auto.py b/test/auto.py
|
||||
index b9644ba..15780c6 100755
|
||||
--- a/test/auto.py
|
||||
+++ b/test/auto.py
|
||||
@@ -873,8 +873,9 @@ print ('import iamnota.module')
|
||||
'''
|
||||
self.install_tree = tempfile.mkdtemp()
|
||||
|
||||
- return self.setup_py(['install', '--no-compile', '--prefix=/usr',
|
||||
- '--root=' + self.install_tree])
|
||||
+ self.setup_py(['build'])
|
||||
+ return self.setup_py(['install', '--no-compile', '--skip-build',
|
||||
+ '--prefix=/usr', '--root=' + self.install_tree])
|
||||
|
||||
def installed_files(self):
|
||||
'''Return list of file paths in install tree.'''
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -32,6 +32,7 @@ BDEPEND="
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/python-distutils-extra-2.44-test.patch
|
||||
"${FILESDIR}"/python-distutils-extra-2.44-skip-build.patch
|
||||
)
|
||||
|
||||
python_test() {
|
||||
Reference in New Issue
Block a user