commit:     6cc9b02ac62bfb6d4e83be553e683aaa0a6948e6
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 31 17:19:31 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Mar 31 17:32:00 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6cc9b02a

dev-build/gyp: port to python-single-r1

The package isn't suitable for PEP517, as it installs data files and
it simply happens to be written in Python, rather than intending to be
imported and so on.

Unfortunately, for the remaining PEP517 holdouts, there's little pressure
upstream for them to port to a proper build system yet, as while setuptools
deprecated the `setup.py` entrypoint some time ago, there's no removal
in sight yet, so the only pressing side is on Gentoo's where we want
to cleanup distutils-r1's support for that.

It was arguably a mistake to really have these packages use distutils-r1
in the first place.

The obvious workaround for now is to invoke setup.py manually w/ 
python-single-r1,
and punt the question until setuptools removal of the entrypoint looks
closer (at which time, other distros will be putting pressure on upstreams
too). Of course, if at the time of such a setuptools change, the package
is still not fixed, then we'd have to remove it.

(The same issues apply to bug #922396 which isn't fixed by this, but
hopefully won't be an actual problem until that aforementioned removal
in setuptools itself of the other bits.)

Bug: https://bugs.gentoo.org/922396
Closes: https://bugs.gentoo.org/909980
Closes: https://bugs.gentoo.org/923435
Closes: https://bugs.gentoo.org/952274
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...9999999.ebuild => gyp-20200512145953-r1.ebuild} | 48 ++++++++++++++--------
 dev-build/gyp/gyp-99999999999999.ebuild            | 48 ++++++++++++++--------
 2 files changed, 62 insertions(+), 34 deletions(-)

diff --git a/dev-build/gyp/gyp-99999999999999.ebuild 
b/dev-build/gyp/gyp-20200512145953-r1.ebuild
similarity index 57%
copy from dev-build/gyp/gyp-99999999999999.ebuild
copy to dev-build/gyp/gyp-20200512145953-r1.ebuild
index d0cfc3580646..f46a15970ed9 100644
--- a/dev-build/gyp/gyp-99999999999999.ebuild
+++ b/dev-build/gyp/gyp-20200512145953-r1.ebuild
@@ -1,42 +1,46 @@
-# Copyright 2017-2024 Gentoo Authors
+# Copyright 2017-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="8"
-PYTHON_COMPAT=( python3_{10..12} )
-DISTUTILS_SINGLE_IMPL="1"
+EAPI=8
 
-inherit distutils-r1
+PYTHON_COMPAT=( python3_{10..13} )
+inherit edo python-single-r1
 
 DESCRIPTION="GYP (Generate Your Projects) meta-build system"
 HOMEPAGE="https://gyp.gsrc.io/ https://chromium.googlesource.com/external/gyp";
 
-if [[ "${PV}" == "99999999999999" ]]; then
+if [[ ${PV} == 99999999999999 ]]; then
        EGIT_REPO_URI="https://chromium.googlesource.com/external/gyp";
        inherit git-r3
 else
        SRC_URI="https://home.apache.org/~arfrever/distfiles/${P}.tar.xz";
-       KEYWORDS="amd64 ~arm64 ~loong ~ppc64 x86"
+       KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~x86"
 fi
 
 LICENSE="BSD"
 SLOT="0"
-IUSE=""
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+# Needs review after updating to a newer commit
+RESTRICT="test"
 
-BDEPEND=""
-DEPEND=""
-RDEPEND=""
+RDEPEND="${PYTHON_DEPS}"
+BDEPEND="
+       $(python_gen_cond_dep '
+               dev-python/setuptools[${PYTHON_USEDEP}]
+       ')
+"
 
-python_prepare_all() {
-       distutils-r1_python_prepare_all
+src_prepare() {
+       default
 
        sed -e "s/'  Linux %s' % ' '\.join(platform.linux_distribution())/'  
Linux'/" -i gyptest.py || die
        sed \
-               -e "s/^import collections/import collections.abc/" \
+               -e "s/import collections/import collections.abc/" \
                -e "s/collections\.MutableSet/collections.abc.MutableSet/" \
                -i pylib/gyp/common.py || die
        sed -e "s/the_dict_key is 'variables'/the_dict_key == 'variables'/" -i 
pylib/gyp/input.py || die
        sed \
-               -e "s/^import collections/import collections.abc/" \
+               -e "s/import collections/import collections.abc/" \
                -e "s/collections\.Iterable/collections.abc.Iterable/" \
                -i pylib/gyp/msvs_emulation.py || die
        sed \
@@ -45,9 +49,19 @@ python_prepare_all() {
                -i test/lib/TestCmd.py || die
 }
 
-python_test() {
+src_compile() {
+       edo ${EPYTHON} setup.py build
+}
+
+src_test() {
        # More errors with DeprecationWarnings enabled.
        local -x PYTHONWARNINGS=""
 
-       "${PYTHON}" gyptest.py --all --verbose
+       edo "${PYTHON}" gyptest.py --all --verbose
+}
+
+src_install() {
+       edo ${EPYTHON} setup.py install --prefix="${EPREFIX}/usr" --root="${D}"
+       python_optimize
+       einstalldocs
 }

diff --git a/dev-build/gyp/gyp-99999999999999.ebuild 
b/dev-build/gyp/gyp-99999999999999.ebuild
index d0cfc3580646..f46a15970ed9 100644
--- a/dev-build/gyp/gyp-99999999999999.ebuild
+++ b/dev-build/gyp/gyp-99999999999999.ebuild
@@ -1,42 +1,46 @@
-# Copyright 2017-2024 Gentoo Authors
+# Copyright 2017-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="8"
-PYTHON_COMPAT=( python3_{10..12} )
-DISTUTILS_SINGLE_IMPL="1"
+EAPI=8
 
-inherit distutils-r1
+PYTHON_COMPAT=( python3_{10..13} )
+inherit edo python-single-r1
 
 DESCRIPTION="GYP (Generate Your Projects) meta-build system"
 HOMEPAGE="https://gyp.gsrc.io/ https://chromium.googlesource.com/external/gyp";
 
-if [[ "${PV}" == "99999999999999" ]]; then
+if [[ ${PV} == 99999999999999 ]]; then
        EGIT_REPO_URI="https://chromium.googlesource.com/external/gyp";
        inherit git-r3
 else
        SRC_URI="https://home.apache.org/~arfrever/distfiles/${P}.tar.xz";
-       KEYWORDS="amd64 ~arm64 ~loong ~ppc64 x86"
+       KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~x86"
 fi
 
 LICENSE="BSD"
 SLOT="0"
-IUSE=""
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+# Needs review after updating to a newer commit
+RESTRICT="test"
 
-BDEPEND=""
-DEPEND=""
-RDEPEND=""
+RDEPEND="${PYTHON_DEPS}"
+BDEPEND="
+       $(python_gen_cond_dep '
+               dev-python/setuptools[${PYTHON_USEDEP}]
+       ')
+"
 
-python_prepare_all() {
-       distutils-r1_python_prepare_all
+src_prepare() {
+       default
 
        sed -e "s/'  Linux %s' % ' '\.join(platform.linux_distribution())/'  
Linux'/" -i gyptest.py || die
        sed \
-               -e "s/^import collections/import collections.abc/" \
+               -e "s/import collections/import collections.abc/" \
                -e "s/collections\.MutableSet/collections.abc.MutableSet/" \
                -i pylib/gyp/common.py || die
        sed -e "s/the_dict_key is 'variables'/the_dict_key == 'variables'/" -i 
pylib/gyp/input.py || die
        sed \
-               -e "s/^import collections/import collections.abc/" \
+               -e "s/import collections/import collections.abc/" \
                -e "s/collections\.Iterable/collections.abc.Iterable/" \
                -i pylib/gyp/msvs_emulation.py || die
        sed \
@@ -45,9 +49,19 @@ python_prepare_all() {
                -i test/lib/TestCmd.py || die
 }
 
-python_test() {
+src_compile() {
+       edo ${EPYTHON} setup.py build
+}
+
+src_test() {
        # More errors with DeprecationWarnings enabled.
        local -x PYTHONWARNINGS=""
 
-       "${PYTHON}" gyptest.py --all --verbose
+       edo "${PYTHON}" gyptest.py --all --verbose
+}
+
+src_install() {
+       edo ${EPYTHON} setup.py install --prefix="${EPREFIX}/usr" --root="${D}"
+       python_optimize
+       einstalldocs
 }

Reply via email to