From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <gentoo-commits+bounces-1732942-garchives=archives.gentoo.org@lists.gentoo.org> Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 635261581EE for <garchives@archives.gentoo.org>; Mon, 31 Mar 2025 17:07:06 +0000 (UTC) Received: from lists.gentoo.org (bobolink.gentoo.org [140.211.166.189]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: relay-lists.gentoo.org@gentoo.org) by smtp.gentoo.org (Postfix) with ESMTPSA id 4DDB53430F5 for <garchives@archives.gentoo.org>; Mon, 31 Mar 2025 17:07:06 +0000 (UTC) Received: from bobolink.gentoo.org (localhost [127.0.0.1]) by bobolink.gentoo.org (Postfix) with ESMTP id 72BFC1104B1; Mon, 31 Mar 2025 17:07:02 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bobolink.gentoo.org (Postfix) with ESMTPS id 67CC71104B1 for <gentoo-commits@lists.gentoo.org>; Mon, 31 Mar 2025 17:07:02 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 16BD2343199 for <gentoo-commits@lists.gentoo.org>; Mon, 31 Mar 2025 17:07:02 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 96E0A17EE for <gentoo-commits@lists.gentoo.org>; Mon, 31 Mar 2025 17:07:00 +0000 (UTC) From: "Sam James" <sam@gentoo.org> To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" <sam@gentoo.org> Message-ID: <1743440745.e41c5c3ca4cb468f2fa85f2c48f08f1541b1d32f.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: app-emulation/cloud-init/ X-VCS-Repository: repo/gentoo X-VCS-Files: app-emulation/cloud-init/cloud-init-24.4-r4.ebuild app-emulation/cloud-init/cloud-init-9999.ebuild X-VCS-Directories: app-emulation/cloud-init/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: e41c5c3ca4cb468f2fa85f2c48f08f1541b1d32f X-VCS-Branch: master Date: Mon, 31 Mar 2025 17:07:00 +0000 (UTC) Precedence: bulk List-Post: <mailto:gentoo-commits@lists.gentoo.org> List-Help: <mailto:gentoo-commits+help@lists.gentoo.org> List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org> List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org> List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org> X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 1ba5f3b4-c7ef-48da-be66-502922e13ac9 X-Archives-Hash: 8437d366f403746c52a338995dd0c226 commit: e41c5c3ca4cb468f2fa85f2c48f08f1541b1d32f Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Mon Mar 31 17:04:31 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Mon Mar 31 17:05:45 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e41c5c3c app-emulation/cloud-init: 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 #922160 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/922160 Closes: https://bugs.gentoo.org/850964 Closes: https://bugs.gentoo.org/909872 Closes: https://bugs.gentoo.org/952196 Signed-off-by: Sam James <sam <AT> gentoo.org> app-emulation/cloud-init/cloud-init-24.4-r4.ebuild | 124 +++++++++++++++++++++ app-emulation/cloud-init/cloud-init-9999.ebuild | 91 +++++++++------ 2 files changed, 178 insertions(+), 37 deletions(-) diff --git a/app-emulation/cloud-init/cloud-init-24.4-r4.ebuild b/app-emulation/cloud-init/cloud-init-24.4-r4.ebuild new file mode 100644 index 000000000000..99a282a85204 --- /dev/null +++ b/app-emulation/cloud-init/cloud-init-24.4-r4.ebuild @@ -0,0 +1,124 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +inherit edo python-single-r1 udev + +DESCRIPTION="Cloud instance initialisation magic" +HOMEPAGE="https://launchpad.net/cloud-init" + +if [[ ${PV} == *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://git.launchpad.net/cloud-init" +else + SRC_URI="https://launchpad.net/${PN}/trunk/${PV}/+download/${P}.tar.gz" + KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~x86" +fi + +LICENSE="GPL-3" +SLOT="0" +IUSE="selinux test" +RESTRICT="!test? ( test )" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +COMMON_DEPEND=" + $(python_gen_cond_dep ' + dev-python/jinja2[${PYTHON_USEDEP}] + dev-python/oauthlib[${PYTHON_USEDEP}] + dev-python/pyserial[${PYTHON_USEDEP}] + >=dev-python/configobj-5.0.2[${PYTHON_USEDEP}] + dev-python/pyyaml[${PYTHON_USEDEP}] + dev-python/requests[${PYTHON_USEDEP}] + dev-python/jsonpatch[${PYTHON_USEDEP}] + dev-python/jsonschema[${PYTHON_USEDEP}] + dev-python/netifaces[${PYTHON_USEDEP}] + ') +" +BDEPEND=" + ${COMMON_DEPEND} + $(python_gen_cond_dep ' + dev-python/setuptools[${PYTHON_USEDEP}] + ') + test? ( + $(python_gen_cond_dep ' + dev-python/mock[${PYTHON_USEDEP}] + dev-python/passlib[${PYTHON_USEDEP}] + dev-python/pytest[${PYTHON_USEDEP}] + dev-python/pytest-mock[${PYTHON_USEDEP}] + dev-python/responses[${PYTHON_USEDEP}] + ') + ) +" +RDEPEND=" + ${COMMON_DEPEND} + ${PYTHON_DEPS} + net-analyzer/macchanger + net-analyzer/openbsd-netcat + sys-apps/iproute2 + sys-fs/growpart + virtual/logger + selinux? ( sec-policy/selinux-cloudinit ) +" + +PATCHES=( + "${FILESDIR}/${PN}-24.2-systemd.patch" + "${FILESDIR}/${PN}-24.4-netcat.patch" +) + +EPYTEST_IGNORE=( + # Can't find file + tests/unittests/config/test_apt_configure_sources_list_v1.py + tests/unittests/config/test_apt_configure_sources_list_v3.py + # PORTAGE_TMPDIR too long for unix sockets + tests/unittests/test_all_stages.py + # TODO + tests/unittests/config/test_schema.py +) + +src_prepare() { + default + + # Fix location of documentation installation + sed -i "s:USR + \"/share/doc/cloud-init:USR + \"/share/doc/${PF}:" setup.py || die + + if [[ ${PV} == *9999 ]] ; then + sed -i 's/version=get_version(),/version=9999,/g' setup.py || die + fi +} + +src_compile() { + edo ${EPYTHON} setup.py build +} + +src_test() { + epytest +} + +src_install() { + edo ${EPYTHON} setup.py install \ + --prefix="${EPREFIX}/usr" \ + --root="${D}" \ + --init-system=sysvinit_openrc,systemd \ + --distro gentoo + python_optimize + + keepdir /etc/cloud + + # installs as non-executable + chmod +x "${D}"/etc/init.d/* || die +} + +pkg_prerm() { + udev_reload +} + +pkg_postinst() { + udev_reload + + elog "cloud-init-local needs to be run in the boot runlevel because it" + elog "modifies services in the default runlevel. When a runlevel is started" + elog "it is cached, so modifications that happen to the current runlevel" + elog "while you are in it are not acted upon." +} diff --git a/app-emulation/cloud-init/cloud-init-9999.ebuild b/app-emulation/cloud-init/cloud-init-9999.ebuild index 128407ca66ec..9f7db580b998 100644 --- a/app-emulation/cloud-init/cloud-init-9999.ebuild +++ b/app-emulation/cloud-init/cloud-init-9999.ebuild @@ -1,14 +1,13 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 -# Disabled for now: bug #850628 -#DISTUTILS_USE_PEP517=setuptools -# https://bugs.launchpad.net/cloud-init/+bug/1978328 -PYTHON_COMPAT=( python3_10 python3_11 python3_12 ) +PYTHON_COMPAT=( python3_{10..13} ) +inherit edo python-single-r1 udev -inherit distutils-r1 udev +DESCRIPTION="Cloud instance initialisation magic" +HOMEPAGE="https://launchpad.net/cloud-init" if [[ ${PV} == *9999 ]]; then inherit git-r3 @@ -18,36 +17,43 @@ else KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~x86" fi -DESCRIPTION="Cloud instance initialisation magic" -HOMEPAGE="https://launchpad.net/cloud-init" - LICENSE="GPL-3" SLOT="0" -IUSE="selinux" - -CDEPEND=" - dev-python/jinja2[${PYTHON_USEDEP}] - dev-python/oauthlib[${PYTHON_USEDEP}] - dev-python/pyserial[${PYTHON_USEDEP}] - >=dev-python/configobj-5.0.2[${PYTHON_USEDEP}] - dev-python/pyyaml[${PYTHON_USEDEP}] - dev-python/requests[${PYTHON_USEDEP}] - dev-python/jsonpatch[${PYTHON_USEDEP}] - dev-python/jsonschema[${PYTHON_USEDEP}] - dev-python/netifaces[${PYTHON_USEDEP}] +IUSE="selinux test" +RESTRICT="!test? ( test )" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +COMMON_DEPEND=" + $(python_gen_cond_dep ' + dev-python/jinja2[${PYTHON_USEDEP}] + dev-python/oauthlib[${PYTHON_USEDEP}] + dev-python/pyserial[${PYTHON_USEDEP}] + >=dev-python/configobj-5.0.2[${PYTHON_USEDEP}] + dev-python/pyyaml[${PYTHON_USEDEP}] + dev-python/requests[${PYTHON_USEDEP}] + dev-python/jsonpatch[${PYTHON_USEDEP}] + dev-python/jsonschema[${PYTHON_USEDEP}] + dev-python/netifaces[${PYTHON_USEDEP}] + ') " BDEPEND=" - ${CDEPEND} - test? ( - dev-python/mock[${PYTHON_USEDEP}] - dev-python/passlib[${PYTHON_USEDEP}] - dev-python/pytest-mock[${PYTHON_USEDEP}] - dev-python/responses[${PYTHON_USEDEP}] + ${COMMON_DEPEND} + $(python_gen_cond_dep ' dev-python/setuptools[${PYTHON_USEDEP}] + ') + test? ( + $(python_gen_cond_dep ' + dev-python/mock[${PYTHON_USEDEP}] + dev-python/passlib[${PYTHON_USEDEP}] + dev-python/pytest[${PYTHON_USEDEP}] + dev-python/pytest-mock[${PYTHON_USEDEP}] + dev-python/responses[${PYTHON_USEDEP}] + ') ) " RDEPEND=" - ${CDEPEND} + ${COMMON_DEPEND} + ${PYTHON_DEPS} net-analyzer/macchanger net-analyzer/openbsd-netcat sys-apps/iproute2 @@ -60,29 +66,40 @@ EPYTEST_IGNORE=( # Can't find file tests/unittests/config/test_apt_configure_sources_list_v1.py tests/unittests/config/test_apt_configure_sources_list_v3.py + # PORTAGE_TMPDIR too long for unix sockets + tests/unittests/test_all_stages.py + # TODO + tests/unittests/config/test_schema.py ) -distutils_enable_tests pytest +src_prepare() { + default -python_prepare_all() { # Fix location of documentation installation - sed -i "s:USR + '/share/doc/cloud-init:USR + '/share/doc/${PF}:" setup.py || die + sed -i "s:USR + \"/share/doc/cloud-init:USR + \"/share/doc/${PF}:" setup.py || die if [[ ${PV} == *9999 ]] ; then sed -i 's/version=get_version(),/version=9999,/g' setup.py || die fi +} - distutils-r1_python_prepare_all +src_compile() { + edo ${EPYTHON} setup.py build } -python_install() { - distutils-r1_python_install --init-system=sysvinit_openrc,systemd --distro gentoo +src_test() { + epytest } -python_install_all() { - keepdir /etc/cloud +src_install() { + edo ${EPYTHON} setup.py install \ + --prefix="${EPREFIX}/usr" \ + --root="${D}" \ + --init-system=sysvinit_openrc,systemd \ + --distro gentoo + python_optimize - distutils-r1_python_install_all + keepdir /etc/cloud # installs as non-executable chmod +x "${D}"/etc/init.d/* || die