From 989d3afa60f33f990a777c254afe4dfe4e248f3a Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Tue, 28 Apr 2020 11:06:24 +0200 Subject: dev-python/python-distutils-extra: Fix --skip-build support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes: https://bugs.gentoo.org/718394 Signed-off-by: Michał Górny --- .../python-distutils-extra-2.44-skip-build.patch | 63 ++++++++++++++++++++++ .../python-distutils-extra-2.44-r1.ebuild | 41 ++++++++++++++ .../python-distutils-extra-2.44.ebuild | 40 -------------- 3 files changed, 104 insertions(+), 40 deletions(-) create mode 100644 dev-python/python-distutils-extra/files/python-distutils-extra-2.44-skip-build.patch create mode 100644 dev-python/python-distutils-extra/python-distutils-extra-2.44-r1.ebuild delete mode 100644 dev-python/python-distutils-extra/python-distutils-extra-2.44.ebuild (limited to 'dev-python') diff --git a/dev-python/python-distutils-extra/files/python-distutils-extra-2.44-skip-build.patch b/dev-python/python-distutils-extra/files/python-distutils-extra-2.44-skip-build.patch new file mode 100644 index 000000000000..f2a19990ed34 --- /dev/null +++ b/dev-python/python-distutils-extra/files/python-distutils-extra-2.44-skip-build.patch @@ -0,0 +1,63 @@ +From 4f5e11110ce9cc3f511c798acfc009ce5db4e9ef Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +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 + diff --git a/dev-python/python-distutils-extra/python-distutils-extra-2.44-r1.ebuild b/dev-python/python-distutils-extra/python-distutils-extra-2.44-r1.ebuild new file mode 100644 index 000000000000..459bb16f3d89 --- /dev/null +++ b/dev-python/python-distutils-extra/python-distutils-extra-2.44-r1.ebuild @@ -0,0 +1,41 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DISTUTILS_USE_SETUPTOOLS="rdepend" +PYTHON_COMPAT=( python{2_7,3_6,3_7,3_8} ) + +inherit distutils-r1 + +DESCRIPTION="Gettext support, themed icons and scrollkeeper-based documentation in distutils" +HOMEPAGE=" + https://salsa.debian.org/python-team/modules/python-distutils-extra + https://launchpad.net/python-distutils-extra" +SRC_URI=" + https://salsa.debian.org/python-team/modules/python-distutils-extra/-/archive/${PV}/${P}.tar.bz2" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86" +IUSE="test" +RESTRICT="!test? ( test )" + +DOCS=( doc/{README,FAQ} ) + +BDEPEND=" + test? ( + dev-libs/gobject-introspection + dev-python/httplib2[${PYTHON_USEDEP}] + dev-python/pygobject[${PYTHON_USEDEP}] + )" + +PATCHES=( + "${FILESDIR}"/python-distutils-extra-2.44-test.patch + "${FILESDIR}"/python-distutils-extra-2.44-skip-build.patch +) + +python_test() { + unset PYTHONDONTWRITEBYTECODE + "${EPYTHON}" test/auto.py -v || die "Tests fail with ${EPYTHON}" +} diff --git a/dev-python/python-distutils-extra/python-distutils-extra-2.44.ebuild b/dev-python/python-distutils-extra/python-distutils-extra-2.44.ebuild deleted file mode 100644 index 7b03b650654a..000000000000 --- a/dev-python/python-distutils-extra/python-distutils-extra-2.44.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -DISTUTILS_USE_SETUPTOOLS="rdepend" -PYTHON_COMPAT=( python{2_7,3_6,3_7,3_8} ) - -inherit distutils-r1 - -DESCRIPTION="Gettext support, themed icons and scrollkeeper-based documentation in distutils" -HOMEPAGE=" - https://salsa.debian.org/python-team/modules/python-distutils-extra - https://launchpad.net/python-distutils-extra" -SRC_URI=" - https://salsa.debian.org/python-team/modules/python-distutils-extra/-/archive/${PV}/${P}.tar.bz2" - -LICENSE="GPL-2+" -SLOT="0" -KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86" -IUSE="test" -RESTRICT="!test? ( test )" - -DOCS=( doc/{README,FAQ} ) - -BDEPEND=" - test? ( - dev-libs/gobject-introspection - dev-python/httplib2[${PYTHON_USEDEP}] - dev-python/pygobject[${PYTHON_USEDEP}] - )" - -PATCHES=( - "${FILESDIR}"/python-distutils-extra-2.44-test.patch -) - -python_test() { - unset PYTHONDONTWRITEBYTECODE - "${EPYTHON}" test/auto.py -v || die "Tests fail with ${EPYTHON}" -} -- cgit v1.2.3-65-gdbad