diff --git a/app-admin/awscli/Manifest b/app-admin/awscli/Manifest index 8ecb11ba8a5d0..687e8f921492c 100644 --- a/app-admin/awscli/Manifest +++ b/app-admin/awscli/Manifest @@ -2,3 +2,4 @@ DIST aws-cli-1.40.17.gh.tar.gz 2935251 BLAKE2B 59060ef00b3ca1a333dfeff2c76ccef26 DIST aws-cli-1.40.22.gh.tar.gz 2940905 BLAKE2B c3af79b9fd54c63680c90874362fd8f38443a1bcc5e66d15fed493097c9682bb33df7030ef86b6aea9a626a7115a84f886a0e59fff67be78065a0925621aa6c2 SHA512 186e11a2ce971e1b8172887217768fc97068ea999c03672f1c4061050a00ac92125f1f4d18b22634ef0ca82194d9939a8ff1112240ebfee3b803522879f2d53d DIST aws-cli-1.40.26.gh.tar.gz 2942606 BLAKE2B c51358e13c22826ebf3cb4aa3e3989440766dc4c8d56417e76469900e0e79bddfecd6cb2b5f0e9b6239eb0faea4a34c3a1e3779f9091aee40a25e4d2d03e35ad SHA512 182c4062e9b7401356657122a5294f172ddaf8cf9330e30e1df6970730d16659dadc8c939481f8d7a8b98834e0eb2f452c1e11fb201cc248847abbc485f33a10 DIST aws-cli-1.40.27.gh.tar.gz 2943484 BLAKE2B c3ae3cb147df5614871f45a88cfa20320f7d3921513b86a5b20b72928679c8d218d6e3615aa34474b81bec846076968046aee547c7c25cb20505f98adb0f26a8 SHA512 d6b29c1b4e729cb2c67cc8d99d87754d6a677e2287bfd56ec02d045b4805cc0295d5b2228bc4e67c9952a5c1392aefe3bdaec0571569a3ffee468ad7eedb6eb5 +DIST aws-cli-1.40.28.gh.tar.gz 2943844 BLAKE2B 64dc8d57c3910a75b5e378f4b1bfb73d89b0e014ae22b60a54f41e92a954198a926b74d442a72a6a1d6ef04032b3c3d0d6c4517f0eb852d8a671940c9ed110df SHA512 a8ff3ce294853f24fc046a5608221b10aab057b7ec593286c6dffa6e051e0919464357b1fd3c5c3c2b8f41affb207f6a580f89b7966f9236bce8407c77231ecd diff --git a/app-admin/awscli/awscli-1.40.28.ebuild b/app-admin/awscli/awscli-1.40.28.ebuild new file mode 100644 index 0000000000000..41a65570d1037 --- /dev/null +++ b/app-admin/awscli/awscli-1.40.28.ebuild @@ -0,0 +1,93 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{11..13} ) + +inherit distutils-r1 shell-completion + +MY_P=aws-cli-${PV} +DESCRIPTION="Universal Command Line Environment for AWS" +HOMEPAGE=" + https://github.com/aws/aws-cli/ + https://pypi.org/project/awscli/ +" +SRC_URI=" + https://github.com/aws/aws-cli/archive/${PV}.tar.gz + -> ${MY_P}.gh.tar.gz +" +S=${WORKDIR}/${MY_P} + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86" + +# botocore is x.(y-2).(z+1), sigh +BOTOCORE_PV="$(ver_cut 1).$(( $(ver_cut 2) - 2)).$(( $(ver_cut 3-) + 1 ))" +RDEPEND=" + >=dev-python/botocore-${BOTOCORE_PV}[${PYTHON_USEDEP}] + dev-python/colorama[${PYTHON_USEDEP}] + dev-python/docutils[${PYTHON_USEDEP}] + dev-python/rsa[${PYTHON_USEDEP}] + >=dev-python/s3transfer-0.13.0[${PYTHON_USEDEP}] + dev-python/pyyaml[${PYTHON_USEDEP}] + !app-admin/awscli-bin +" +BDEPEND=" + test? ( + dev-python/packaging[${PYTHON_USEDEP}] + dev-python/pytest-forked[${PYTHON_USEDEP}] + ) +" + +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +src_prepare() { + # do not rely on bundled deps in botocore (sic!) + find -name '*.py' -exec sed -i \ + -e 's:from botocore[.]vendored import:import:' \ + -e 's:from botocore[.]vendored[.]:from :' \ + {} + || die + # strip overzealous upper bounds on requirements + sed -i -e 's:,<[=0-9.]*::' -e 's:==:>=:' setup.py || die + distutils-r1_src_prepare +} + +python_test() { + local serial_tests=( + tests/functional/ecs/test_execute_command.py::TestExecuteCommand::test_execute_command_success + tests/functional/ssm/test_start_session.py::TestSessionManager::test_start_session_{fails,success} + tests/functional/ssm/test_start_session.py::TestSessionManager::test_start_session_with_new_version_plugin_success + tests/unit/customizations/codeartifact/test_adapter_login.py::TestDotNetLogin::test_login_dotnet_sources_listed_with_backtracking + tests/unit/customizations/codeartifact/test_adapter_login.py::TestDotNetLogin::test_login_dotnet_sources_listed_with_backtracking_windows + tests/unit/customizations/codeartifact/test_adapter_login.py::TestNuGetLogin::test_login_nuget_sources_listed_with_backtracking + tests/unit/customizations/ecs/test_executecommand_startsession.py::TestExecuteCommand::test_execute_command_success + tests/unit/customizations/test_sessionmanager.py + tests/unit/test_compat.py::TestIgnoreUserSignals + tests/unit/test_help.py + tests/unit/test_utils.py::TestIgnoreCtrlC::test_ctrl_c_is_ignored + ) + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + EPYTEST_XDIST= epytest "${serial_tests[@]}" + + local EPYTEST_DESELECT=( + "${serial_tests[@]}" + + # flaky (some ordering?) + tests/functional/s3/test_cp_command.py::TestCPCommand::test_multipart_upload_with_checksum_algorithm_crc32 + ) + # integration tests require AWS credentials and Internet access + epytest tests/{functional,unit} +} + +python_install_all() { + newbashcomp bin/aws_bash_completer aws + newzshcomp bin/aws_zsh_completer.sh _aws + + distutils-r1_python_install_all + + rm "${ED}"/usr/bin/{aws.cmd,aws_bash_completer,aws_zsh_completer.sh} || die +} diff --git a/app-admin/passwordsafe/passwordsafe-1.18.2-r1.ebuild b/app-admin/passwordsafe/passwordsafe-1.18.2-r2.ebuild similarity index 98% rename from app-admin/passwordsafe/passwordsafe-1.18.2-r1.ebuild rename to app-admin/passwordsafe/passwordsafe-1.18.2-r2.ebuild index 5fa407afd11fb..747f7bbe92959 100644 --- a/app-admin/passwordsafe/passwordsafe-1.18.2-r1.ebuild +++ b/app-admin/passwordsafe/passwordsafe-1.18.2-r2.ebuild @@ -26,7 +26,7 @@ RDEPEND=" x11-libs/libXtst x11-libs/wxGTK:${WX_GTK_VER}=[X] qr? ( media-gfx/qrencode ) - xml? ( dev-libs/xerces-c ) + xml? ( dev-libs/xerces-c:= ) yubikey? ( sys-auth/ykpers )" DEPEND="${RDEPEND} x11-base/xorg-proto" diff --git a/app-admin/passwordsafe/passwordsafe-1.19.1-r1.ebuild b/app-admin/passwordsafe/passwordsafe-1.19.1-r2.ebuild similarity index 97% rename from app-admin/passwordsafe/passwordsafe-1.19.1-r1.ebuild rename to app-admin/passwordsafe/passwordsafe-1.19.1-r2.ebuild index 7bafa8e8b3e71..7a34fe4790760 100644 --- a/app-admin/passwordsafe/passwordsafe-1.19.1-r1.ebuild +++ b/app-admin/passwordsafe/passwordsafe-1.19.1-r2.ebuild @@ -26,7 +26,7 @@ RDEPEND=" x11-libs/libXtst x11-libs/wxGTK:${WX_GTK_VER}=[X] qr? ( media-gfx/qrencode ) - xml? ( dev-libs/xerces-c ) + xml? ( dev-libs/xerces-c:= ) yubikey? ( sys-auth/ykpers )" DEPEND="${RDEPEND} x11-base/xorg-proto" diff --git a/app-admin/passwordsafe/passwordsafe-1.20.0-r1.ebuild b/app-admin/passwordsafe/passwordsafe-1.20.0-r2.ebuild similarity index 97% rename from app-admin/passwordsafe/passwordsafe-1.20.0-r1.ebuild rename to app-admin/passwordsafe/passwordsafe-1.20.0-r2.ebuild index afea53af8e2b8..27f283a8346e0 100644 --- a/app-admin/passwordsafe/passwordsafe-1.20.0-r1.ebuild +++ b/app-admin/passwordsafe/passwordsafe-1.20.0-r2.ebuild @@ -27,7 +27,7 @@ RDEPEND=" x11-libs/libXtst x11-libs/wxGTK:${WX_GTK_VER}=[X] qr? ( media-gfx/qrencode:= ) - xml? ( dev-libs/xerces-c ) + xml? ( dev-libs/xerces-c:= ) yubikey? ( sys-auth/ykpers )" DEPEND="${RDEPEND} x11-base/xorg-proto" diff --git a/app-editors/neovim/Manifest b/app-editors/neovim/Manifest index c44f188e3bfdd..5e1aa115d054c 100644 --- a/app-editors/neovim/Manifest +++ b/app-editors/neovim/Manifest @@ -2,3 +2,4 @@ DIST neovim-0.10.3.tar.gz 12804352 BLAKE2B 4196154a1f2415f72ed4cdebbde67804212d9 DIST neovim-0.10.4.tar.gz 12808381 BLAKE2B 5dae3cef173431ca39320e4640661457e25e9508feee23bb076d82ab3a5934df1961cb63f7329bba7dc0d41bb4e6e889a4cf58754812d1af074a21fc36cdc1c5 SHA512 8dadc24edaaa27e6ecd4db6c19d0183868a8d2809ba122110685f340341d951772ac2eb0c5f7a7ab5f87d3d5d8ae5e81f156c61f04f6d4ebbaa17cd35fb70b64 DIST neovim-0.11.0.tar.gz 12901255 BLAKE2B 155af14e07dff73ebe825b6233e4536a00de34d183ebe5d440e251098d7d95fd87fbcb3c6de4ed00fec0e2acc126c5bc1ae08a6b41389e4eae2fc126775493a6 SHA512 f898aebffa1d222cdbbc2663b69a6ea55a045c3ddb4e8454bda7b0c6e9abbfc60dce6ea235f535506f6caac9cc1b07c65bdab25374f320cfabc3744336989cf6 DIST neovim-0.11.1.tar.gz 12907535 BLAKE2B 636df1f8a4fcf92fbde9cc6b12f3106dd274af7fcd22d687a511e826f9ed0aed8a6528a27b267cdba75c9f4e9e981b32cdfe24e98fbd9840c7a007baa95ef951 SHA512 d2dac85379022e939a6a5ac8b64074d1e4a6d3605791b916e1d77366b97a28ee9f99107e4c251d5a28a5f515fa8bcde9cc6372a9d7901832de3ee01fb9895f4d +DIST neovim-0.11.2.tar.gz 12923046 BLAKE2B 0a38a35d3a817224ef714e46f2acad9a4546c0922896a922bb45f3a554b758520fbdabfcefbadd5aa6086ad4b4e64d80b1d397c6faa15ad52ff9ff28c1a6038c SHA512 eeb543ff40b71f384c3a8d964c05e20b4d8be2f647314da703f071954a6f434320b0a61c0a42936c71c970de018de654d8c0e15de92890b9dc50054c5b70b863 diff --git a/app-editors/neovim/neovim-0.11.2.ebuild b/app-editors/neovim/neovim-0.11.2.ebuild new file mode 100644 index 0000000000000..7bce36689dd6f --- /dev/null +++ b/app-editors/neovim/neovim-0.11.2.ebuild @@ -0,0 +1,127 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# RelWithDebInfo sets -Og -g +CMAKE_BUILD_TYPE=Release +LUA_COMPAT=( lua5-{1..2} luajit ) +inherit cmake lua-single optfeature xdg + +DESCRIPTION="Vim-fork focused on extensibility and agility" +HOMEPAGE="https://neovim.io" + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/neovim/neovim.git" +else + SRC_URI="https://github.com/neovim/neovim/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86 ~x64-macos" +fi + +LICENSE="Apache-2.0 vim" +SLOT="0" +IUSE="+nvimpager test" + +# Upstream say the test library needs LuaJIT +# https://github.com/neovim/neovim/blob/91109ffda23d0ce61cec245b1f4ffb99e7591b62/CMakeLists.txt#L377 +REQUIRED_USE="${LUA_REQUIRED_USE} test? ( lua_single_target_luajit )" +# TODO: Get tests running +RESTRICT="!test? ( test ) test" + +# Upstream build scripts invoke the Lua interpreter +BDEPEND="${LUA_DEPS} + >=dev-util/gperf-3.1 + >=sys-devel/gettext-0.20.1 + virtual/libiconv + virtual/libintl + virtual/pkgconfig +" +# Check https://github.com/neovim/neovim/blob/master/third-party/CMakeLists.txt for +# new dependency bounds and so on on bumps (obviously adjust for right branch/tag). +# List of required tree-sitter parsers is taken from cmake.deps/deps.txt +DEPEND="${LUA_DEPS} + >=dev-lua/luv-1.50.0[${LUA_SINGLE_USEDEP}] + $(lua_gen_cond_dep ' + dev-lua/lpeg[${LUA_USEDEP}] + dev-lua/mpack[${LUA_USEDEP}] + ') + $(lua_gen_cond_dep ' + dev-lua/LuaBitOp[${LUA_USEDEP}] + ' lua5-{1,2}) + >=dev-libs/libutf8proc-2.10.0:=[-cjk] + >=dev-libs/libuv-1.50.0:= + >=dev-libs/libvterm-0.3.3 + >=dev-libs/msgpack-3.0.0:= + >=dev-libs/tree-sitter-0.25.3:= + =dev-libs/tree-sitter-c-0.23* + =dev-libs/tree-sitter-lua-0.3* + =dev-libs/tree-sitter-markdown-0.4* + =dev-libs/tree-sitter-query-0.5* + =dev-libs/tree-sitter-vim-0.5* + =dev-libs/tree-sitter-vimdoc-3* + >=dev-libs/unibilium-2.1.2:0= +" +RDEPEND=" + ${DEPEND} + app-eselect/eselect-vi +" +BDEPEND+=" + test? ( + $(lua_gen_cond_dep 'dev-lua/busted[${LUA_USEDEP}]') + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-0.9.0-cmake_lua_version.patch" + "${FILESDIR}/${PN}-9999-cmake-darwin.patch" +) + +src_prepare() { + # Use our system vim dir + sed -e "/^# define SYS_VIMRC_FILE/s|\$VIM|${EPREFIX}/etc/vim|" \ + -i src/nvim/globals.h || die + + # https://forums.gentoo.org/viewtopic-p-8750050.html + xdg_environment_reset + cmake_src_prepare +} + +src_configure() { + # TODO: Investigate USE_BUNDLED, doesn't seem to be needed right now + local mycmakeargs=( + # appends -flto + -DENABLE_LTO=OFF + -DPREFER_LUA=$(usex lua_single_target_luajit no "$(lua_get_version)") + -DLUA_PRG="${LUA}" + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + + # install a default configuration file + insinto /etc/vim + doins "${FILESDIR}"/sysinit.vim + + # symlink tree-sitter parsers + dodir /usr/share/nvim/runtime + for parser in c lua markdown query vim vimdoc; do + dosym ../../../../$(get_libdir)/libtree-sitter-${parser}.so /usr/share/nvim/runtime/parser/${parser}.so + done + + # conditionally install a symlink for nvimpager + if use nvimpager; then + dosym ../share/nvim/runtime/scripts/less.sh /usr/bin/nvimpager + fi +} + +pkg_postinst() { + xdg_pkg_postinst + + optfeature "clipboard support" x11-misc/xsel x11-misc/xclip gui-apps/wl-clipboard + optfeature "Python plugin support" dev-python/pynvim + optfeature "Ruby plugin support" dev-ruby/neovim-ruby-client + optfeature "remote/nvr support" dev-python/neovim-remote +} diff --git a/app-editors/xmlcopyeditor/xmlcopyeditor-1.3.1.0-r2.ebuild b/app-editors/xmlcopyeditor/xmlcopyeditor-1.3.1.0-r3.ebuild similarity index 95% rename from app-editors/xmlcopyeditor/xmlcopyeditor-1.3.1.0-r2.ebuild rename to app-editors/xmlcopyeditor/xmlcopyeditor-1.3.1.0-r3.ebuild index 8d3b79deb5a64..4967e5f56a6b8 100644 --- a/app-editors/xmlcopyeditor/xmlcopyeditor-1.3.1.0-r2.ebuild +++ b/app-editors/xmlcopyeditor/xmlcopyeditor-1.3.1.0-r3.ebuild @@ -19,7 +19,7 @@ RDEPEND=" app-text/enchant:2 >=dev-libs/libxml2-2.12.5 dev-libs/libxslt - dev-libs/xerces-c[cpu_flags_x86_sse2,icu] + dev-libs/xerces-c:=[cpu_flags_x86_sse2,icu] dev-libs/libpcre2 x11-libs/wxGTK:${WX_GTK_VER}=[X] " diff --git a/app-misc/brewtarget/brewtarget-4.0.17.ebuild b/app-misc/brewtarget/brewtarget-4.0.17-r1.ebuild similarity index 98% rename from app-misc/brewtarget/brewtarget-4.0.17.ebuild rename to app-misc/brewtarget/brewtarget-4.0.17-r1.ebuild index 884296e42793d..dd9d533544749 100644 --- a/app-misc/brewtarget/brewtarget-4.0.17.ebuild +++ b/app-misc/brewtarget/brewtarget-4.0.17-r1.ebuild @@ -25,7 +25,7 @@ DEPEND=" dev-libs/boost:=[stacktrace] dev-libs/openssl:= dev-libs/xalan-c - dev-libs/xerces-c + dev-libs/xerces-c:= dev-qt/qtbase:6[gui,network,sql,sqlite,widgets,xml] dev-qt/qtmultimedia:6 dev-qt/qtsvg:6 diff --git a/app-text/blahtexml/blahtexml-1.0.ebuild b/app-text/blahtexml/blahtexml-1.0-r1.ebuild similarity index 92% rename from app-text/blahtexml/blahtexml-1.0.ebuild rename to app-text/blahtexml/blahtexml-1.0-r1.ebuild index 00d990c80f2a5..256d6b058981c 100644 --- a/app-text/blahtexml/blahtexml-1.0.ebuild +++ b/app-text/blahtexml/blahtexml-1.0-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2023 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -14,7 +14,7 @@ SLOT="0" KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 x86" IUSE="doc" -RDEPEND="dev-libs/xerces-c" +RDEPEND="dev-libs/xerces-c:=" DEPEND="${RDEPEND}" BDEPEND=" virtual/pkgconfig diff --git a/dev-lang/python/Manifest b/dev-lang/python/Manifest index 1a9818ebb9b3a..a96c4e5a4ac0b 100644 --- a/dev-lang/python/Manifest +++ b/dev-lang/python/Manifest @@ -2,32 +2,46 @@ DIST Python-2.7.18.tar.xz 12854736 BLAKE2B 060a621c91dd8e3d321aec99d44c17aa67381 DIST Python-2.7.18.tar.xz.asc 833 BLAKE2B 1d98770e46171971fb99994508d238c01d2755281d2f94353314014d9e83e0ec5f0b3e3950ea1fdf5fce9ba6b8f55312355845c2a3fc4291c27ee56fe6215448 SHA512 c2a5f5a52f47dec52460ad3275758d4e5de6e7075c3def4353c988d74d563a39b42cae2d5eb24e2a23a6247cef69100f91620b11a49c2359fbf99b203c9cbda8 DIST Python-3.10.17.tar.xz 19608144 BLAKE2B 9caebdcdc21c07037f423bc4831b0e4654dea4264b7a176b2caed625a930f0d6e8e2f6d581dee6f666a1fc17139d1ccd8bcf13c958df14dfd8de31f321d3e048 SHA512 11b1e647f8db05041bcafe110698af8bf5e9f7c8d23c0e9eb568a60544bb9a9e9c3ac94b34f0898f0d4e6c23da3cb81f844ae9d9c8b750058763502eaba39880 DIST Python-3.10.17.tar.xz.asc 833 BLAKE2B 9468dc33530d8a4ec911e7a2bacd2d1c3533e6819a91c1307e8d577cefe6c6bdb9e9dc7f2abc078cd35186db7f58efd89eb4170fb20887bb2de5a5aa68b3c1f4 SHA512 f5fea78e2ea413c9befb6181787b3a5ea3bc0f5dbf808a94465b558c09353482cd34631a4c505f72aa343a2f4fae291453324cd8e6b18df214baaf4680fc17cf +DIST Python-3.10.18.tar.xz 19619316 BLAKE2B 312d2cb6ba3bdc8e1eea4493d73c6adbe80063cd271a8738d9e772b2d9aa2d8628c8b0f96fc6ddb91db6f91ca58e2fb38950a90547fb131a10344b926b661a39 SHA512 2c444f024cd15babd156964b50aa0245020a17c0c600250ffcf112e91594a3d6e1fb87c9b87a57cb7a802dae90004d801ed95a3103d79aefb8ed714279997708 +DIST Python-3.10.18.tar.xz.asc 833 BLAKE2B 834d0e7ea65b653d748e7844157ee215302e4b48aa63a45fa8d548b03e78d2cb36b6ebbb6bb6214f9eec3200d6a32d3a22d31691d1580114a14e67e4dd7c5abc SHA512 dbe1426b1b8371bf390b53595d2c656fbd311fed55ad3c705e175fa0c72d51a022f286877ec55ad74547a3b57ae945c9af7ece4dacc7132e21b9b7eb4421add6 DIST Python-3.11.12.tar.xz 20112232 BLAKE2B 95f82af070e86ecf48881103ce6d7211a4a915a93a49b1407eaf445364b7a7daec406cf07eb9334ed47a59397a9796f6a5c70dcc9b7b47103beb3bffc6aa56d7 SHA512 5c95900de73cd187f5d7a89a05314ef85f4d680308d0d5fff5e6ada81f8ecf030018bef0f1a819d007e8b6d01b52e50395572c2d1a56d2c164492e13a69a9926 DIST Python-3.11.12.tar.xz.asc 833 BLAKE2B b874df8019eb3c548598f8723fa38c89189cc375d6ced7cae180ffdc35a8e7b0ba93638861412e19037aa1fee76749186f10c4929dc7f4fb4ef7a8f4561d325c SHA512 cb1f82d44be6de67182747f8ad1054e85cca22753c0c86ff12b95ec7044c5c6c37f40a876e5707a6c422d58f483257b8ddbb3ea87893679f81b9299c48373f20 +DIST Python-3.11.13.tar.xz 20117496 BLAKE2B 444de8eef3a938a387374b152350414b7e2659920784ebc57d5491cacc78cde406b557237fc7f06627e2855f60219b86fe41cb8b82e61fd3b1b448fc7b98af5c SHA512 70f57464d548eac4fe0d0c7f85a14b0e549a4e25ef66de4fc36b06ce72a3efe87dadfcd56ee275c10483cf802fbc9d73b61f9fb2941a46e2f92f075aeb1afe85 +DIST Python-3.11.13.tar.xz.asc 833 BLAKE2B c6860aa8687e53b8d9df5d8442490adaff202bfb23817801562577c8d7b81383376342d8e15c5451e25e270746a6d28167f39cfdd75be589e0d58187026a4830 SHA512 6e261490bc7777f0bcebd0464867df98b7955b32f13a445aab3cb6a1a1d3fb804817638f67a8586910fb97291a805b64f130909c06257903f431f8634c691c3b DIST Python-3.12.10.tar.xz 20520960 BLAKE2B f05805da36958e3ebb68c69353e8119b20ee4c1a123f4492e9bf614e7faa856180ef2017f2a698bcacf19cac01d89329ed5ee45e00c98b255d4854090a2e6926 SHA512 520c30e3958d0be3c127e5dbb1c52bb3bfc404b5b3c7eb56525e25b9b59af9b21b53bee192f323f470e1df806f6cb2dd3411eb90cbc1c4b7d9b6b0777c29e644 DIST Python-3.12.10.tar.xz.asc 963 BLAKE2B 45e1ec67311d1ac5679cb5a05b92e61f3e5e6e9d3ffa5462c09c2aa066fda7ea915df13f6e5ad33aa924f6ce1f18e2d78a31af15412a10c093fc8a5b536c5133 SHA512 7edfa6fd816cf2a052abdb775d464e2f389105ed3e782cacf90805613aaca54bf71308504a5336ee1204e872e7db28df32413fb10b057056b0d5cb3c7a20a9f1 +DIST Python-3.12.11.tar.xz 20525812 BLAKE2B 08eed9d91fe0be305fe9832f5fae5ed4ffdb524283079b6473ed77cc277671356ce2b8f6ca97f55f8ee4954a35fe399099773d0699d6bfbc0aa87a7e9271ba8b SHA512 81f259c5bb293a5b685ebead1dff56c7c9d28eed12edb508b3e5e1a882991e762fc959803cf2734f4233bb1c5407b4f5303324c67b25d860b069d38bbebe4454 +DIST Python-3.12.11.tar.xz.asc 963 BLAKE2B 4c7eea750312ba996f88c452e51b58c0176d53f43e5bd30fd41a931540320b598b6d1e93d79996ce30dfa22858c4c3ed2cb24d16ba0a891a146fbf81ec60b07b SHA512 3589deba17c5adcfcd614387a5207ad20db56cd9c7937eb44e21035a8745f1c6bb9a1b7cfe8bc5b58ecc7cca09ed49fd4c2878f65baecb2514e79c666f85a22e DIST Python-3.13.3.tar.xz 22654240 BLAKE2B 24ac47c13cbfa4dc9ce6ae4d18d7b5310f83ac1f4f18722138ef07e01cb8ac37edf6f4301983cb468f533b9b475b5a9d761d3044e61c7ccaa99dceadb954fe34 SHA512 f7559b6dceae69f48742af0a6497fbec42cd1e5304f64b6eb9d89222a1171ccf12fa186cc0decabb4e98d05223184967a4a7537754c01083dacdc9073cb1a578 DIST Python-3.13.3.tar.xz.asc 963 BLAKE2B 4a98965305b80e985512f54d9ce8ab88a74fe0d3ee48e300fbc2b4e251c0f499f4eb935e0aeb6d5ad8262338643325126f094fff926da1e2b9a2b3a2247701dc SHA512 54f8da5f4a4dcadc9830cb07aecf695a26a2de48ab98e1f42b09fdde1c70989476d07ce7ea81337216f1e5fcbf6b688e0608c88a2545ced416b01640108e94db +DIST Python-3.13.4.tar.xz 22672472 BLAKE2B d453538db82084f490456416829c7d30672e5c05c1c1baf428493f16fa78ce63b69544787373e4679826f32a18af5c5de5225f8f507699113346917df0e3de31 SHA512 91454bb4d04c192721d2df980a806858bd8aadb5cef92159c2844cc33e92b0386b1b33d5cfff0f69d449e9f978a5f67f6032155f7b1425ff38e36477637c0c68 +DIST Python-3.13.4.tar.xz.asc 963 BLAKE2B 5c594f95a7b74c2191b553f50020cd6db9b400f32af62d12094fa4c449651079a662645de8118a7a661c4ceafceb9ce5bcecbbbf8d6bc80d6657a0247e88e510 SHA512 ba9c1dee0f3bf564e6ac19cbe08cf4fdc3779a04ed8289654f6dda3fba9f07a0937764a12f1e7e2f6d7ff17bb5b86c05b8ea19296a2b98d1c81a48362ccf6104 DIST Python-3.14.0b2.tar.xz 23579860 BLAKE2B bf5ebac54531a7c837e7650754264b4be28e28613d488d1c7546db77e2ef3b501ff646d7fb505c6ac0fa1381c3230d1c1899bc82144f369339c89687b5dc7f5c SHA512 cdd37f8a982e6194d5afa80a2eb94c899080809749d59a50a2ce3eed37f720a1fd9a7977f0dd3992650d173a7070b15610077d97cb499bd16a7500c56ef1f8dd DIST Python-3.14.0b2.tar.xz.sigstore 5131 BLAKE2B 04cab57a4da63f5abf28db94e5fd952206124ce37ef5a5d981839a0790881c9c4ea6d186f233eaaf6e82350bdfdbb0048d761b816d81eaba71c707bd9714a9d9 SHA512 a356037824fbde5950f197cf04f0d71ddaf4b68006b2ab9951f9b4c2df508e84bd0bec7d72051e75d22c17eee767e46e5d2c167e853fb941b0831cb26d518fdc DIST Python-3.8.20.tar.xz 18962788 BLAKE2B 715c75e0c0a3d3b77af7f07478311bb0554b80aac72915be703aa2d0dd6459a972e5669808e64da14a0b91bb183e00655055c1726f302dc3ccd8721e3b4ae3e6 SHA512 3c9341ee1fd33cb687958dcf2b7c0c7700489726c4d530c3e9d9537d46a6ab534541a4b312232d8505bea395a07e4518c42d75fb7571103e6b266f8f44115c61 DIST Python-3.8.20.tar.xz.asc 833 BLAKE2B 5c86c15a1090b42e42bb7512565b1a7ad9d2137d59e9fd1ab0f83fdfc37dfcf184389418d6703db809e9c8c04a169af292665a2b58bf5dc61b7724ecbb4132d9 SHA512 a751ae0407a593d97acac4d5f8a0456580c753efa12a7d960125c219b4897fdb26fc1ffd43d8ea33ad1449162dd3b2904c16b6c51c57561ba73de3ffa62e0eed DIST Python-3.9.22.tar.xz 19652572 BLAKE2B 59f2d2cecde8179064115b52205c2195b26cd0f37aec3e88b0fe2a1a7893a7df8ae38a024814d42064d5e4916e4054a76dddeec0a0dcf29af576d52dbcf65f4c SHA512 c5a76c579455626bf40bb41ee99cab6e444aa5d5085dab7cf622c70ded750e31710c2c30f032917f0d4069350c01a889ed9831d77fcc2d52fcec54055dd07496 DIST Python-3.9.22.tar.xz.asc 833 BLAKE2B 2bc75d7e39ebee63b8cfd9ee1af2941bc0bd659becf89d291ea33f5baea2b606a34841c7ac5c597eac51b19602cf24ccec123964a1022d43fd251553fb3f90f7 SHA512 9a04fcf7d7fc0521873d29efad3a80a9ff63df4fc4fe4108059246db6517b22d967f4d4e0eebb32c79417f66ee3b60fe00428be155fc1cbea163aa36c1a3ddee +DIST Python-3.9.23.tar.xz 19659284 BLAKE2B 17c7c9acec1e2f2e9d146b2c35738ea05cf16609f267dd784668ab43bcce7be93e164c14106f9640a060326ebb2b8bd4ee4e58086bdced4ca611d7f96dbb3699 SHA512 ad2eb2eebff286a16ad631339bc0890b0686cf5e669d28905a98f96e9b1af6673d255f36bf19e146aa4de8d012587dc6b3193e903718f9cdba4b97041318f418 +DIST Python-3.9.23.tar.xz.asc 833 BLAKE2B a17a88b1997ece75e6447398d20c67e4b1be6d64204e6ac20aa4650e465b0657e7ae8bd497602d2e3c7193b50ecf7d15a1eb996942a05aab117eb25446dab159 SHA512 10187b0df66743308548780f82872d032530f8233f539cf66a2cfbdef1095b760f81f2fcc1759f003cc6f20752be91bdef71e4d821e76a75c0c85df112335698 DIST python-gentoo-patches-2.7.18_p16.tar.xz 35448 BLAKE2B 0139c0944f62f9cdd236f6a8557e0ed19704c7d72869af1cb7d8bd3e646a746cd4a0201e1b44232a5e78ef49f254db20b0d0271bf744fbfd4fe0f1e99b8f3e6c SHA512 810be590d0e06fab4b2165e6852ca49662f09dcd7e20b47a29f613ad7653252c8dfac3f0eb228d77c8a914efa7c08788b2fbd552a4b47504f5fd0ec17450c48f DIST python-gentoo-patches-3.10.17.tar.xz 28784 BLAKE2B 7f1c1f9f49876b99d80a3f40b66061ab96796821e1a5396f5edfa08e3878b8b9970688d3c861d9c5d08701a8850584eb87a223e3ba84c5536ae689f59145ad43 SHA512 3e89b334d81702f0e6fa00e9b70daf6ff4df439c280c6cff33aa8874dde29f63d809697757df39daea07bf746207e931f211558811c9e731df9ca846a8559483 DIST python-gentoo-patches-3.10.17_p1.tar.xz 34900 BLAKE2B 8931746997a71f45a08eb3b75d3b65a23ec2d6e3d5e1e617f2183efd7d91c3874ff5dfb3f39cb54c3e238ebfd5fe6b3b9d470ac41ccd71d6d9db485d52d205a0 SHA512 c4c9753cca98c4626744b3c5092b984ee06a4c8505a1ea58567ce155d93fd3985428544f2a53c00db848106a4b67875452c879b67e33b1d63d336ad31ec4e4ea DIST python-gentoo-patches-3.10.17_p2.tar.xz 49552 BLAKE2B 9cc0d8aee08209eb453320fa59c5398e3044f4c1788029c871be5e6ada7482b503920896a15b9462949c8bd1be57fd9fc7b10da4d6db1ee564c22e8d6fcb8fc6 SHA512 f0f4752b4bb4928716d832324de1085bd1520b852d855a30fa0c928ed9243716b556c7e3788f5fed39d4d3b4e898154f1456ce818e8467b5a98b4337ec39c727 +DIST python-gentoo-patches-3.10.18.tar.xz 29664 BLAKE2B dd69f7866cebad2536b41056571d74cbd90800062b06612b7509c9ce8f258aef66586f3c6e08f52caaceb7b0a01a52502b9c763b6f7d94caac0e929d9d77219b SHA512 b4cf4ff2d7e5b73e1102acc2183c4da3e734bdbec1c284d1fef8aceba0d49246dcdc954d3e4119521fde1e895bab0754b34b346b736b46ce45aff1afc6d38cef DIST python-gentoo-patches-3.11.11.tar.xz 10604 BLAKE2B 6be4c66b0458f7a7085aef976cff3dcb4d114ac0b64fb27327a5693e8d41a77f7eeed718b9c5a1b1961278235ee4cd43497aa3dc27e6e6bed65804b95f667a15 SHA512 ab8113a94949cead34d976179f80c3e0a6686bf2476079a74f97b4d08c24a237500dc7ee09dc3b0ec98d2fbcb138397c73d7e2252e617a957a13999e59115158 DIST python-gentoo-patches-3.11.12.tar.xz 15616 BLAKE2B 5d4a47058fc35c4ae966e3dff823f91129852bf81cd586d5b3a34a6daf672732918daf00199394f2f982411ec30a291f45bba55b3ffa3d96a179ecd600ea4647 SHA512 77973ef88403f94d55162e0138cd29b4d8959a8fcf4cec730daf7ddd8fb4a3acfcd0dd1fdaacbdd2b218bd15f6c6715ce339df4eba48227d17520243d96eeb39 DIST python-gentoo-patches-3.11.12_p1.tar.xz 22192 BLAKE2B 2d7f39d1d55428e5dc617a796a3147046c0549bd8fc26a1d3b2701ca2ab17a4cc990b8fed925a7b8d7c410b12f4c22e14f9e64d7ea4b2c387c919570abad259f SHA512 363b049824b520b92541569d315e4e67192f3bd915f44f600acc51858ae3960b0060222cab2612f9aef53c7b2a0e323d197e107c9bcbdc4625572303d6393a5c DIST python-gentoo-patches-3.11.12_p2.tar.xz 37360 BLAKE2B 0f8a3b260e4f1d1c824fd962f8ed0fd7e50cb3384795b3bc03f83511dce73235aa4c43a51a5e2198aedc06467b35962b9e55a97eb58d569844d6298b3bee1c15 SHA512 48fbabd1f82c5a6ecc75067e007c62cbefa5efd3276c7aadb802892c3ebe5bdaaad01ad8bff92cec6bfc6f5212c842105540f3bf7c679cb31dee36013a99ee8f +DIST python-gentoo-patches-3.11.13.tar.xz 16492 BLAKE2B 8b188742dd3f25974cead290e5793c31f02741a901dce65137c596045fa2fbd5baaef332204af90f95ddcd864ee542b252c00b190e15c25af60a7bda771b116f SHA512 b5abad341d2eede81df445b56a98720466ec23df40a8a2e99a04dba5a106205655c8e2b64df0ca2630f036c8fe457ba64524280d137bbc99f52e4fd8e6bbd5ae DIST python-gentoo-patches-3.12.10.tar.xz 10744 BLAKE2B 2abf4874018156d6735cf8604c410dc4726ac9365bc7500abe6b82472aad100aac7268957256692f4275b02965773e58178519ed8038e121f1ffa3c53770d238 SHA512 62066405aa00f46f9645e9c747d53bb93bf510fc791d14d49e00edfd79981778e6c8e07bfa7bac88d76407a0ffd8f7321dea89f81d90b01dbf13f4d381b6a1a3 DIST python-gentoo-patches-3.12.10_p1.tar.xz 17356 BLAKE2B 9a87b3a6f04977067cb0ce126e45c9d584145bc9cf1d43e46e7ae5e295a14d69b07b6e20c18bff74d02f0e6c3617e8c1ff015097be32cb7dc76ae45ab71d1a41 SHA512 d98f27176d3ea2532c2f8c0a2eadf23f1f0b305e08bbbfd12acfae7308070d70a8d3c3eb60fe157f4ff51cb6302bea5882d75f6a8028310c95309aed3bdaddb5 DIST python-gentoo-patches-3.12.10_p2.tar.xz 33236 BLAKE2B e73edf8caf53799f4407ebd08211e86e6c8850441c3c845264b7d250b9fd1630865ff9dfa184ab6f0a4ac2f56326f88af24a006c68d62e2f57c027f93ec6cd31 SHA512 36e2bf3d288a06e60f412e4335563d8633ee2a5c4c798d6a90133d7dcbd3cbc4d9a9c8f1167e10f52740f34cb2ea510981166c6b7a333587118c4da85a1ef354 +DIST python-gentoo-patches-3.12.11.tar.xz 12020 BLAKE2B b419d32b1d7bef9408027edda7eac9a920a877e1b8f521483df595199bad1bbadd9dd9500079c09beab63286a801bfb25da5f93a5d31462ed3e457a6e40ad6af SHA512 1b0eaff4c0df06554525a50576da7eadb4067c4f2970851e5c9e3e527a9ccc4216cbd65c45fd562af4a1cedc2c66278a74bee5cf5c1a65df8feb22f34f5a19e4 DIST python-gentoo-patches-3.13.3.tar.xz 8336 BLAKE2B 66393886fbd034eb14732e4f81f5798e77650ea3fe1c4f8176bd93808b711c8977a53c3f52be6c9b97a368299258b851d9bdb6d4c8e0c75695c6aea784d48b44 SHA512 c1ed31d6aaef81addf786c2ccc1013309b122b791c42fe10e467a677d0db8f149e8b1cc21928c146298918c7ceb851b4b19d1e59f491cb161004e1c9386db289 DIST python-gentoo-patches-3.13.3_p1.tar.xz 15164 BLAKE2B 56420b8d051fbf3eb47f2bce08c79f167b9fbaa89f8ee932e3db27ea08a191f042e1f0114c1377c8210060332141b36eb1d582507185c983297a1d61573aa435 SHA512 1e138be3ef5c03e4d0b520aa736cdec44daf2956a931f4080e53b0652ebefa48095cad837e7bae4cc90bd42fbb7aba6f25c61e3c880ca1a581a745744b011fa3 DIST python-gentoo-patches-3.13.3_p2.tar.xz 36284 BLAKE2B c1f62268013a055ac477e3e7b49c313d8a41e1fdbd806bb9ddb3a57926297ba7d67e20dadc47ab21ec35f1b0bc504ffd4f039846d8588d143f4e379d8bdc5a12 SHA512 d80856c60c519f28660d6ac5c3df0446759df4c962ab5c989dca1147e92e53e07ed19c75f75a7fdce8e85e919bc77c6ad06a25a611c09764b3eafd61f7d8b63d +DIST python-gentoo-patches-3.13.4.tar.xz 8912 BLAKE2B e3d9f2a12f801dc75e09c5301757f35216d712b5e5394f2ec3ce1d79d0cb57571dbca525e3d5c35b90fa059c2b78ee24341b6a51cbe9691deac84c9ee0578824 SHA512 1a7141accb7aa70c7bd8dd12528f7de031dfeab9ff089f3d044da0b7b52461e2d6d7d1467161e0fe1e259d9fa06d70bcf107d86ad3590e8cf73aa1132ef3aaf9 DIST python-gentoo-patches-3.14.0b1.tar.xz 5680 BLAKE2B 514b3edc3025e5bf675d371b5ada17dea426856edf1fb6095c2ee400eae95bd4265ef81fe593ae9338e801e7d0a25b1d5ba2d05ca563fd9dd020114b13575746 SHA512 74289e42cf532b54bb1b66a283ec19156f8a36ba38764209c133842314c9efb2ce2ebcba5aa9213bcf7fc0c8a5ca9b6e7adbd5dbfa4397233136d7cd55f53ee7 DIST python-gentoo-patches-3.14.0b2.tar.xz 6168 BLAKE2B ecf2fd981efc289fbc16d615c6e69ad7a797bd6906e6f974ece47eace582d7c4b3ea0217b0df9575e522416df2749125ff3658d8aca6a53bf977d5f155dd6b90 SHA512 552ff5306ca43c89e65b1df42cb71753c7e900efc4be7e35150c187184a5e94241fea78bb9084831508fd4a7e71323be59c1565901560ec53fc076c3697baf34 DIST python-gentoo-patches-3.14.0b2_p1.tar.xz 23992 BLAKE2B 65346fe06b2f03251882542b90821c28bd16d9f1c81d1e594bf78403689b444688a9cffa1d52faf63dd9c4db301a9b2a1e6729026e73525fe2f0622f896b6a46 SHA512 c98600da507541c0ba3a03dcaa6d344596fd8f5ef8169eff276318ed33a38ba4794ea346b25b9d11f9a277334bdcc1105e6332bb212602c3c993866340aa8482 @@ -35,3 +49,4 @@ DIST python-gentoo-patches-3.8.20_p7.tar.xz 54544 BLAKE2B e31fc9fb5e98b62b0f7016 DIST python-gentoo-patches-3.9.22.tar.xz 35388 BLAKE2B b6acfa681bdb589f74094ea04bd053bfc122ef9f36b3413c33c352cfae4e101027b0348770b47b9fee769eaba8109406acb6418c1cb8c431fbc7cf1c69124dcb SHA512 335c32d696f9660c957dec0c9a54e2f04e34003d2dbb438e6c9e74ce0a6352b5849e8626397939e3ffa7dc3172ac88cfa2168dd0d120be306e8c898dc7b6b3dc DIST python-gentoo-patches-3.9.22_p1.tar.xz 41444 BLAKE2B 5c86c93203c50f5786017bb878e930fd2910184ec7de8ef22cf5f80853f952c143dd0d64f25d752e921d6f86db665aa6646d838e4c490d16186e095c67b58cba SHA512 471382690ff86dab6a247c2c0dad138d541d9091b0f30b3d58386a170022b5812aecc13c9751fdec3de715d810ee56d310be8c0005631845be7515247ca2443d DIST python-gentoo-patches-3.9.22_p2.tar.xz 59416 BLAKE2B 7904d5272c3dfab6eb9ec188802367faf843303b8af18d75aa03f6ad814ca8aefbf495696a5fb4279fa6f3620a00d0c84989bc007b80546041fedcef8555283a SHA512 acd78c422c360bea4c4be84e718072eb8182b1662d1bf94aa72785319a9f35d1f11a05343d4770d50673cd5c2876a5a99c127559badde7cf335070dfa7d81cf6 +DIST python-gentoo-patches-3.9.23.tar.xz 37148 BLAKE2B a7c0514037169b9938b2180ec2dd22063621d532367f6febfa47da43f47534559baab992d9c5257271121af755b8445346d4d92582e7e11b6468a1c359f28bf2 SHA512 73ef00a7aa671016de396c9e1c4bb5f5c1a97dc735739f806d809f987e802ec440370bf4c85468097547284a5d2b476cbffcec3cf219b7cb6fc890d5029eb5bd diff --git a/dev-lang/python/python-3.10.18.ebuild b/dev-lang/python/python-3.10.18.ebuild new file mode 100644 index 0000000000000..f998bd3689779 --- /dev/null +++ b/dev-lang/python/python-3.10.18.ebuild @@ -0,0 +1,564 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit prefix toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm libedit + +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-libs/mpdecimal:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + valgrind? ( dev-debug/valgrind ) + test? ( app-arch/xz-utils ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + ) + + default + + # https://bugs.gentoo.org/850151 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + local jobs=$(makeopts_jobs) + sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die + sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 and bug #864911. + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross. + --without-lto + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" \ + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Avoid as many dependencies as possible for the cross build. + cat >> Makefile <<-EOF || die + MODULE_NIS=disabled + MODULE__DBM=disabled + MODULE__GDBM=disabled + MODULE__DBM=disabled + MODULE__SQLITE3=disabled + MODULE__HASHLIB=disabled + MODULE__SSL=disabled + MODULE__CURSES=disabled + MODULE__CURSES_PANEL=disabled + MODULE_READLINE=disabled + MODULE__TKINTER=disabled + MODULE_PYEXPAT=disabled + MODULE_ZLIB=disabled + EOF + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the Python it was pointed to + # immediately. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + local disable + use gdbm || disable+=" gdbm" + use ncurses || disable+=" _curses _curses_panel" + use readline || disable+=" readline" + use sqlite || disable+=" _sqlite3" + use ssl || export PYTHON_DISABLE_SSL="1" + use tk || disable+=" _tkinter" + export PYTHON_DISABLE_MODULES="${disable}" + + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}" + fi + + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + # Set baseline test skip flags. + COMMON_TEST_SKIPS=( + -x test_gdb + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + COMMON_TEST_SKIPS+=( + -x test_builtin + -x test_capi + -x test_cmath + -x test_float + # timeout + -x test_free_threading + -x test_math + -x test_numeric_tower + -x test_random + -x test_statistics + # bug 653850 + -x test_resource + -x test_strtod + ) + ;; + mips*) + COMMON_TEST_SKIPS+=( + -x test_ctypes + -x test_external_inspection + -x test_statistics + ) + ;; + powerpc64-*) # big endian + COMMON_TEST_SKIPS+=( + -x test_descr + ) + ;; + riscv*) + COMMON_TEST_SKIPS+=( + -x test_urllib2 + ) + ;; + sparc*) + COMMON_TEST_SKIPS+=( + # bug 788022 + -x test_multiprocessing_fork + -x test_multiprocessing_forkserver + -x test_multiprocessing_spawn + + -x test_ctypes + -x test_descr + # bug 931908 + -x test_exceptions + ) + ;; + esac + + # musl-specific skips + use elibc_musl && COMMON_TEST_SKIPS+=( + # various musl locale deficiencies + -x test__locale + -x test_c_locale_coercion + -x test_locale + -x test_re + + # known issues with find_library on musl + # https://bugs.python.org/issue21622 + -x test_ctypes + + # fpathconf, ttyname errno values + -x test_os + ) + + if use pgo; then + local profile_task_flags=( + -m test + "-j$(makeopts_jobs)" + --pgo-extended + -u-network + + # We use a timeout because of how often we've had hang issues + # here. It also matches the default upstream PROFILE_TASK. + --timeout 1200 + + "${COMMON_TEST_SKIPS[@]}" + + -x test_dtrace + + # All of these seem to occasionally hang for PGO inconsistently + # They'll even hang here but be fine in src_test sometimes. + # bug #828535 (and related: bug #788022) + -x test_asyncio + -x test_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + profile_task_flags+=( + -x test_os + ) + ;; + hppa*) + profile_task_flags+=( + -x test_descr + # bug 931908 + -x test_exceptions + -x test_os + ) + ;; + powerpc64-*) # big endian + profile_task_flags+=( + # bug 931908 + -x test_exceptions + ) + ;; + riscv*) + profile_task_flags+=( + -x test_statistics + ) + ;; + esac + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + local -x PROFILE_TASK="${profile_task_flags[*]}" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-ffi + --with-system-libmpdec + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + if tc-is-cross-compiler ; then + build_cbuild_python + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + export PATH="${WORKDIR}/${P}-${CBUILD}:${PATH}" + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + hprefixify setup.py + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + # Prevent using distutils bundled by setuptools. + # https://bugs.gentoo.org/823728 + export SETUPTOOLS_USE_DISTUTILS=stdlib + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + # Gentoo hack to disable accessing system site-packages + export GENTOO_CPYTHON_BUILD=1 + + if use pgo ; then + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + fi + + # also need to clear the flags explicitly here or they end up + # in _sysconfigdata* + emake CPPFLAGS= CFLAGS= LDFLAGS= + + # Restore saved value from above. + local -x PYTHONDONTWRITEBYTECODE=${_PYTHONDONTWRITEBYTECODE} + + # Work around bug 329499. See also bug 413751 and 457194. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E python + else + pax-mark m python + fi +} + +src_test() { + # Tests will not work when cross compiling. + if tc-is-cross-compiler; then + elog "Disabling tests due to crosscompiling." + return + fi + + local test_opts=( + --verbose3 + -u-network + -j "$(makeopts_jobs)" + "${COMMON_TEST_SKIPS[@]}" + ) + + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + + nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \ + CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty + local ret=${?} + + [[ ${ret} -eq 0 ]] || die "emake test failed" +} + +src_install() { + local libdir=${ED}/usr/lib/python${PYVER} + + emake DESTDIR="${D}" TEST_MODULES=no altinstall + + # Fix collisions between different slots of Python. + rm "${ED}/usr/$(get_libdir)/libpython3.so" || die + + # Cheap hack to get version with ABIFLAGS + local abiver=$(cd "${ED}/usr/include"; echo python*) + if [[ ${abiver} != python${PYVER} ]]; then + # Replace python3.X with a symlink to python3.Xm + rm "${ED}/usr/bin/python${PYVER}" || die + dosym "${abiver}" "/usr/bin/python${PYVER}" + # Create python3.X-config symlink + dosym "${abiver}-config" "/usr/bin/python${PYVER}-config" + # Create python-3.5m.pc symlink + dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc" + fi + + # python seems to get rebuilt in src_install (bug 569908) + # Work around it for now. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E "${ED}/usr/bin/${abiver}" + else + pax-mark m "${ED}/usr/bin/${abiver}" + fi + + rm -r "${libdir}"/ensurepip/_bundled || die + if ! use ensurepip; then + rm -r "${libdir}"/ensurepip || die + fi + if ! use sqlite; then + rm -r "${libdir}/"sqlite3 || die + fi + if ! use tk; then + rm -r "${ED}/usr/bin/idle${PYVER}" || die + rm -r "${libdir}/"{idlelib,tkinter} || die + fi + + ln -s ../python/EXTERNALLY-MANAGED "${libdir}/EXTERNALLY-MANAGED" || die + + dodoc Misc/{ACKS,HISTORY,NEWS} + + if use examples; then + docinto examples + find Tools -name __pycache__ -exec rm -fr {} + || die + dodoc -r Tools + fi + insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510 + local libname=$( + printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | + emake --no-print-directory -s -f - 2>/dev/null + ) + newins Tools/gdb/libpython.py "${libname}"-gdb.py + + newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER} + newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER} + sed \ + -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \ + -e "s:@PYDOC@:pydoc${PYVER}:" \ + -i "${ED}/etc/conf.d/pydoc-${PYVER}" \ + "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed" +} diff --git a/dev-lang/python/python-3.11.13.ebuild b/dev-lang/python/python-3.11.13.ebuild new file mode 100644 index 0000000000000..90e7983ca9e81 --- /dev/null +++ b/dev-lang/python/python-3.11.13.ebuild @@ -0,0 +1,617 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit prefix python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm libedit + +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + app-crypt/libb2 + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-libs/mpdecimal:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( app-arch/xz-utils ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + ) + + default + + # https://bugs.gentoo.org/850151 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + local jobs=$(makeopts_jobs) + sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die + sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross to satisfy --with-build-python. + --without-lto + --without-readline + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" \ + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Avoid as many dependencies as possible for the cross build. + cat >> Makefile <<-EOF || die + MODULE_NIS_STATE=disabled + MODULE__DBM_STATE=disabled + MODULE__GDBM_STATE=disabled + MODULE__DBM_STATE=disabled + MODULE__SQLITE3_STATE=disabled + MODULE__HASHLIB_STATE=disabled + MODULE__SSL_STATE=disabled + MODULE__CURSES_STATE=disabled + MODULE__CURSES_PANEL_STATE=disabled + MODULE_READLINE_STATE=disabled + MODULE__TKINTER_STATE=disabled + MODULE_PYEXPAT_STATE=disabled + MODULE_ZLIB_STATE=disabled + EOF + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the --with-build-python value + # immediately. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + # Set baseline test skip flags. + COMMON_TEST_SKIPS=( + # this is actually test_gdb.test_pretty_print + -x test_pretty_print + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + COMMON_TEST_SKIPS+=( + -x test_builtin + -x test_capi + -x test_cmath + -x test_float + # timeout + -x test_free_threading + -x test_math + -x test_numeric_tower + -x test_random + -x test_statistics + # bug 653850 + -x test_resource + -x test_strtod + ) + ;; + arm*) + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + mips*) + COMMON_TEST_SKIPS+=( + -x test_ctypes + -x test_external_inspection + -x test_statistics + ) + ;; + powerpc64-*) # big endian + COMMON_TEST_SKIPS+=( + -x test_descr + -x test_gdb + ) + ;; + riscv*) + COMMON_TEST_SKIPS+=( + -x test_urllib2 + ) + ;; + sparc*) + COMMON_TEST_SKIPS+=( + # bug 788022 + -x test_multiprocessing_fork + -x test_multiprocessing_forkserver + -x test_multiprocessing_spawn + + -x test_ctypes + -x test_descr + -x test_gdb + # bug 931908 + -x test_exceptions + ) + ;; + esac + + # musl-specific skips + use elibc_musl && COMMON_TEST_SKIPS+=( + # various musl locale deficiencies + -x test__locale + -x test_c_locale_coercion + -x test_locale + -x test_re + + # known issues with find_library on musl + # https://bugs.python.org/issue21622 + -x test_ctypes + + # fpathconf, ttyname errno values + -x test_os + ) + + if use pgo; then + local profile_task_flags=( + -m test + "-j$(makeopts_jobs)" + --pgo-extended + -u-network + + # We use a timeout because of how often we've had hang issues + # here. It also matches the default upstream PROFILE_TASK. + --timeout 1200 + + "${COMMON_TEST_SKIPS[@]}" + + -x test_dtrace + + # All of these seem to occasionally hang for PGO inconsistently + # They'll even hang here but be fine in src_test sometimes. + # bug #828535 (and related: bug #788022) + -x test_asyncio + -x test_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + profile_task_flags+=( + -x test_os + ) + ;; + hppa*) + profile_task_flags+=( + -x test_descr + # bug 931908 + -x test_exceptions + -x test_os + ) + ;; + powerpc64-*) # big endian + profile_task_flags+=( + # bug 931908 + -x test_exceptions + ) + ;; + riscv*) + profile_task_flags+=( + -x test_statistics + ) + ;; + esac + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + local -x PROFILE_TASK="${profile_task_flags[*]}" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-ffi + --with-system-libmpdec + --with-platlibdir=lib + --with-pkg-config=yes + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + if tc-is-cross-compiler ; then + build_cbuild_python + myeconfargs+=( + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python + ) + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + hprefixify setup.py + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # force-disable modules we don't want built + local disable_modules=( NIS ) + use gdbm || disable_modules+=( _GDBM _DBM ) + use sqlite || disable_modules+=( _SQLITE3 ) + use ssl || disable_modules+=( _HASHLIB _SSL ) + use ncurses || disable_modules+=( _CURSES _CURSES_PANEL ) + use readline || disable_modules+=( READLINE ) + use tk || disable_modules+=( _TKINTER ) + + local mod + for mod in "${disable_modules[@]}"; do + echo "MODULE_${mod}_STATE=disabled" + done >> Makefile || die + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + # Prevent using distutils bundled by setuptools. + # https://bugs.gentoo.org/823728 + export SETUPTOOLS_USE_DISTUTILS=stdlib + export PYTHONSTRICTEXTENSIONBUILD=1 + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + # Gentoo hack to disable accessing system site-packages + export GENTOO_CPYTHON_BUILD=1 + + if use pgo ; then + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + fi + + # also need to clear the flags explicitly here or they end up + # in _sysconfigdata* + emake CPPFLAGS= CFLAGS= LDFLAGS= + + # Restore saved value from above. + local -x PYTHONDONTWRITEBYTECODE=${_PYTHONDONTWRITEBYTECODE} + + # Work around bug 329499. See also bug 413751 and 457194. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E python + else + pax-mark m python + fi +} + +src_test() { + # Tests will not work when cross compiling. + if tc-is-cross-compiler; then + elog "Disabling tests due to crosscompiling." + return + fi + + # this just happens to skip test_support.test_freeze that is broken + # without bundled expat + # TODO: get a proper skip for it upstream + local -x LOGNAME=buildbot + + local test_opts=( + --verbose3 + -u-network + -j "$(makeopts_jobs)" + "${COMMON_TEST_SKIPS[@]}" + ) + + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + + nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \ + CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty + local ret=${?} + + [[ ${ret} -eq 0 ]] || die "emake test failed" +} + +src_install() { + local libdir=${ED}/usr/lib/python${PYVER} + + # -j1 hack for now for bug #843458 + emake -j1 DESTDIR="${D}" TEST_MODULES=no altinstall + + # Fix collisions between different slots of Python. + rm "${ED}/usr/$(get_libdir)/libpython3.so" || die + + # Cheap hack to get version with ABIFLAGS + local abiver=$(cd "${ED}/usr/include"; echo python*) + if [[ ${abiver} != python${PYVER} ]]; then + # Replace python3.X with a symlink to python3.Xm + rm "${ED}/usr/bin/python${PYVER}" || die + dosym "${abiver}" "/usr/bin/python${PYVER}" + # Create python3.X-config symlink + dosym "${abiver}-config" "/usr/bin/python${PYVER}-config" + # Create python-3.5m.pc symlink + dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc" + fi + + # python seems to get rebuilt in src_install (bug 569908) + # Work around it for now. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E "${ED}/usr/bin/${abiver}" + else + pax-mark m "${ED}/usr/bin/${abiver}" + fi + + rm -r "${libdir}"/ensurepip/_bundled || die + if ! use ensurepip; then + rm -r "${libdir}"/ensurepip || die + fi + if ! use sqlite; then + rm -r "${libdir}/"sqlite3 || die + fi + if ! use tk; then + rm -r "${ED}/usr/bin/idle${PYVER}" || die + rm -r "${libdir}/"{idlelib,tkinter} || die + fi + + ln -s ../python/EXTERNALLY-MANAGED "${libdir}/EXTERNALLY-MANAGED" || die + + dodoc Misc/{ACKS,HISTORY,NEWS} + + if use examples; then + docinto examples + find Tools -name __pycache__ -exec rm -fr {} + || die + dodoc -r Tools + fi + insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510 + local libname=$( + printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | + emake --no-print-directory -s -f - 2>/dev/null + ) + newins Tools/gdb/libpython.py "${libname}"-gdb.py + + newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER} + newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER} + sed \ + -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \ + -e "s:@PYDOC@:pydoc${PYVER}:" \ + -i "${ED}/etc/conf.d/pydoc-${PYVER}" \ + "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed" + + # python-exec wrapping support + local pymajor=${PYVER%.*} + local EPYTHON=python${PYVER} + local scriptdir=${D}$(python_get_scriptdir) + mkdir -p "${scriptdir}" || die + # python and pythonX + ln -s "../../../bin/${abiver}" "${scriptdir}/python${pymajor}" || die + ln -s "python${pymajor}" "${scriptdir}/python" || die + # python-config and pythonX-config + # note: we need to create a wrapper rather than symlinking it due + # to some random dirname(argv[0]) magic performed by python-config + cat > "${scriptdir}/python${pymajor}-config" <<-EOF || die + #!/bin/sh + exec "${abiver}-config" "\${@}" + EOF + chmod +x "${scriptdir}/python${pymajor}-config" || die + ln -s "python${pymajor}-config" "${scriptdir}/python-config" || die + # 2to3, pydoc + ln -s "../../../bin/2to3-${PYVER}" "${scriptdir}/2to3" || die + ln -s "../../../bin/pydoc${PYVER}" "${scriptdir}/pydoc" || die + # idle + if use tk; then + ln -s "../../../bin/idle${PYVER}" "${scriptdir}/idle" || die + fi +} diff --git a/dev-lang/python/python-3.12.11.ebuild b/dev-lang/python/python-3.12.11.ebuild new file mode 100644 index 0000000000000..3f4440a32dbd0 --- /dev/null +++ b/dev-lang/python/python-3.12.11.ebuild @@ -0,0 +1,611 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm libedit + +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + app-crypt/libb2 + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-libs/mpdecimal:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-pip ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( + app-arch/xz-utils + dev-python/ensurepip-pip + dev-python/ensurepip-setuptools + dev-python/ensurepip-wheel + ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + # TODO: Makefile has annoying deps on expat headers + #rm -r Modules/expat || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + ) + + default + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + sed -i -e "s:-j0:-j$(makeopts_jobs):" Makefile.pre.in || die + + # breaks tests when using --with-wheel-pkg-dir + rm -r Lib/test/wheeldata || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross to satisfy --with-build-python. + --without-lto + --without-readline + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + + # Avoid as many dependencies as possible for the cross build. + mkdir Modules || die + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + _dbm _gdbm + _sqlite3 + _hashlib _ssl + _curses _curses_panel + readline + _tkinter + pyexpat + zlib + # We disabled these for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. This should be rechecked for the pure Makefile approach, + # and uncommented if needed. + #_ctypes _crypt + EOF + + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the --with-build-python value + # immediately. + emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + # Set baseline test skip flags. + COMMON_TEST_SKIPS=( + # this is actually test_gdb.test_pretty_print + -x test_pretty_print + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + COMMON_TEST_SKIPS+=( + -x test_builtin + -x test_capi + -x test_cmath + -x test_float + # timeout + -x test_free_threading + -x test_math + -x test_numeric_tower + -x test_random + -x test_statistics + # bug 653850 + -x test_resource + -x test_strtod + ) + ;; + arm*) + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + mips*) + COMMON_TEST_SKIPS+=( + -x test_ctypes + -x test_external_inspection + -x test_statistics + ) + ;; + powerpc64-*) # big endian + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + riscv*) + COMMON_TEST_SKIPS+=( + -x test_urllib2 + ) + ;; + sparc*) + COMMON_TEST_SKIPS+=( + # bug 788022 + -x test_multiprocessing_fork + -x test_multiprocessing_forkserver + -x test_multiprocessing_spawn + + -x test_ctypes + -x test_gdb + # bug 931908 + -x test_exceptions + ) + ;; + esac + + # musl-specific skips + use elibc_musl && COMMON_TEST_SKIPS+=( + # various musl locale deficiencies + -x test__locale + -x test_c_locale_coercion + -x test_locale + -x test_re + + # known issues with find_library on musl + # https://bugs.python.org/issue21622 + -x test_ctypes + + # fpathconf, ttyname errno values + -x test_os + ) + + if use pgo; then + local profile_task_flags=( + -m test + "-j$(makeopts_jobs)" + --pgo-extended + -u-network + + # We use a timeout because of how often we've had hang issues + # here. It also matches the default upstream PROFILE_TASK. + --timeout 1200 + + "${COMMON_TEST_SKIPS[@]}" + + -x test_dtrace + + # All of these seem to occasionally hang for PGO inconsistently + # They'll even hang here but be fine in src_test sometimes. + # bug #828535 (and related: bug #788022) + -x test_asyncio + -x test_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + profile_task_flags+=( + -x test_os + ) + ;; + hppa*) + profile_task_flags+=( + -x test_descr + # bug 931908 + -x test_exceptions + -x test_os + ) + ;; + powerpc64-*) # big endian + profile_task_flags+=( + # bug 931908 + -x test_exceptions + ) + ;; + riscv*) + profile_task_flags+=( + -x test_statistics + ) + ;; + esac + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + local -x PROFILE_TASK="${profile_task_flags[*]}" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-libmpdec + --with-platlibdir=lib + --with-pkg-config=yes + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + if tc-is-lto; then + myeconfargs+=( + --with-lto + ) + fi + + # Force-disable modules we don't want built. + # See Modules/Setup for docs on how this works. Setup.local contains our local deviations. + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + $(usev !gdbm '_gdbm _dbm') + $(usev !sqlite '_sqlite3') + $(usev !ssl '_hashlib _ssl') + $(usev !ncurses '_curses _curses_panel') + $(usev !readline 'readline') + $(usev !tk '_tkinter') + EOF + + # disable implicit optimization/debugging flags + local -x OPT= + + if tc-is-cross-compiler ; then + build_cbuild_python + myeconfargs+=( + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python + ) + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + export PYTHONSTRICTEXTENSIONBUILD=1 + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + # Gentoo hack to disable accessing system site-packages + export GENTOO_CPYTHON_BUILD=1 + + if use pgo ; then + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + fi + + # also need to clear the flags explicitly here or they end up + # in _sysconfigdata* + emake CPPFLAGS= CFLAGS= LDFLAGS= + + # Restore saved value from above. + local -x PYTHONDONTWRITEBYTECODE=${_PYTHONDONTWRITEBYTECODE} + + # Work around bug 329499. See also bug 413751 and 457194. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E python + else + pax-mark m python + fi +} + +src_test() { + # Tests will not work when cross compiling. + if tc-is-cross-compiler; then + elog "Disabling tests due to crosscompiling." + return + fi + + # this just happens to skip test_support.test_freeze that is broken + # without bundled expat + # TODO: get a proper skip for it upstream + local -x LOGNAME=buildbot + + local test_opts=( + --verbose3 + -u-network + -j "$(makeopts_jobs)" + "${COMMON_TEST_SKIPS[@]}" + ) + + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + + nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \ + CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty + local ret=${?} + + [[ ${ret} -eq 0 ]] || die "emake test failed" +} + +src_install() { + local libdir=${ED}/usr/lib/python${PYVER} + + # the Makefile rules are broken + # https://github.com/python/cpython/issues/100221 + mkdir -p "${libdir}"/lib-dynload || die + + # -j1 hack for now for bug #843458 + emake -j1 DESTDIR="${D}" TEST_MODULES=no altinstall + + # Fix collisions between different slots of Python. + rm "${ED}/usr/$(get_libdir)/libpython3.so" || die + + # Cheap hack to get version with ABIFLAGS + local abiver=$(cd "${ED}/usr/include"; echo python*) + if [[ ${abiver} != python${PYVER} ]]; then + # Replace python3.X with a symlink to python3.Xm + rm "${ED}/usr/bin/python${PYVER}" || die + dosym "${abiver}" "/usr/bin/python${PYVER}" + # Create python3.X-config symlink + dosym "${abiver}-config" "/usr/bin/python${PYVER}-config" + # Create python-3.5m.pc symlink + dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc" + fi + + # python seems to get rebuilt in src_install (bug 569908) + # Work around it for now. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E "${ED}/usr/bin/${abiver}" + else + pax-mark m "${ED}/usr/bin/${abiver}" + fi + + rm -r "${libdir}"/ensurepip/_bundled || die + if ! use sqlite; then + rm -r "${libdir}/"sqlite3 || die + fi + if ! use tk; then + rm -r "${ED}/usr/bin/idle${PYVER}" || die + rm -r "${libdir}/"{idlelib,tkinter} || die + fi + + ln -s ../python/EXTERNALLY-MANAGED "${libdir}/EXTERNALLY-MANAGED" || die + + dodoc Misc/{ACKS,HISTORY,NEWS} + + if use examples; then + docinto examples + find Tools -name __pycache__ -exec rm -fr {} + || die + dodoc -r Tools + fi + insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510 + local libname=$( + printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | + emake --no-print-directory -s -f - 2>/dev/null + ) + newins Tools/gdb/libpython.py "${libname}"-gdb.py + + newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER} + newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER} + sed \ + -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \ + -e "s:@PYDOC@:pydoc${PYVER}:" \ + -i "${ED}/etc/conf.d/pydoc-${PYVER}" \ + "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed" + + # python-exec wrapping support + local pymajor=${PYVER%.*} + local EPYTHON=python${PYVER} + local scriptdir=${D}$(python_get_scriptdir) + mkdir -p "${scriptdir}" || die + # python and pythonX + ln -s "../../../bin/${abiver}" "${scriptdir}/python${pymajor}" || die + ln -s "python${pymajor}" "${scriptdir}/python" || die + # python-config and pythonX-config + # note: we need to create a wrapper rather than symlinking it due + # to some random dirname(argv[0]) magic performed by python-config + cat > "${scriptdir}/python${pymajor}-config" <<-EOF || die + #!/bin/sh + exec "${abiver}-config" "\${@}" + EOF + chmod +x "${scriptdir}/python${pymajor}-config" || die + ln -s "python${pymajor}-config" "${scriptdir}/python-config" || die + # 2to3, pydoc + ln -s "../../../bin/2to3-${PYVER}" "${scriptdir}/2to3" || die + ln -s "../../../bin/pydoc${PYVER}" "${scriptdir}/pydoc" || die + # idle + if use tk; then + ln -s "../../../bin/idle${PYVER}" "${scriptdir}/idle" || die + fi +} diff --git a/dev-lang/python/python-3.13.4-r100.ebuild b/dev-lang/python/python-3.13.4-r100.ebuild new file mode 100644 index 0000000000000..41372672b7f7c --- /dev/null +++ b/dev-lang/python/python-3.13.4-r100.ebuild @@ -0,0 +1,636 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LLVM_COMPAT=( 18 ) +LLVM_OPTIONAL=1 +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic linux-info llvm-r1 +inherit multiprocessing pax-utils python-utils-r1 toolchain-funcs +inherit verify-sig + +MY_PV=${PV} +MY_P="Python-${MY_PV%_p*}" +PYVER="$(ver_cut 1-2)t" +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="Freethreading (no-GIL) version of Python programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm jit + libedit +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +REQUIRED_USE="jit? ( ${LLVM_REQUIRED_USE} )" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + app-crypt/libb2 + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-libs/mpdecimal:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-pip ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( + dev-python/ensurepip-pip + dev-python/ensurepip-setuptools + dev-python/ensurepip-wheel + ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + jit? ( + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + ') + ) + verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER%t} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +declare -rgA PYTHON_KERNEL_CHECKS=( + ["CROSS_MEMORY_ATTACH"]="test_external_inspection" #bug 938589 + ["DNOTIFY"]="test_fcntl" # bug 938662 +) + +pkg_pretend() { + if use pgo || use test; then + check-reqs_pkg_pretend + fi + + ewarn "Freethreading build is considered experimental upstream. Using it" + ewarn "could lead to unexpected breakage, including race conditions" + ewarn "and crashes, respectively. Please do not file Gentoo bugs, unless" + ewarn "you can reproduce the problem with dev-lang/python. Instead," + ewarn "please consider reporting freethreading problems upstream." +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]]; then + use jit && llvm-r1_pkg_setup + if use test || use pgo; then + check-reqs_pkg_setup + + local CONFIG_CHECK + for f in "${!PYTHON_KERNEL_CHECKS[@]}"; do + CONFIG_CHECK+="~${f} " + done + linux-info_pkg_setup + fi + fi +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + # TODO: Makefile has annoying deps on expat headers + #rm -r Modules/expat || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + ) + + default + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + sed -i -e "s:-j0:-j$(makeopts_jobs):" Makefile.pre.in || die + + # breaks tests when using --with-wheel-pkg-dir + rm -r Lib/test/wheeldata || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross to satisfy --with-build-python. + --without-lto + --without-readline + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + + # Avoid as many dependencies as possible for the cross build. + mkdir Modules || die + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + _dbm _gdbm + _sqlite3 + _hashlib _ssl + _curses _curses_panel + readline + _tkinter + pyexpat + zlib + # We disabled these for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. This should be rechecked for the pure Makefile approach, + # and uncommented if needed. + #_ctypes + EOF + + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the --with-build-python value + # immediately. + emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + # Set baseline test skip flags. + COMMON_TEST_SKIPS=( + # this is actually test_gdb.test_pretty_print + -x test_pretty_print + # https://bugs.gentoo.org/933840 + -x test_perf_profiler + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + COMMON_TEST_SKIPS+=( + -x test_builtin + -x test_capi + -x test_cmath + -x test_float + # timeout + -x test_free_threading + -x test_math + -x test_numeric_tower + -x test_random + -x test_statistics + # bug 653850 + -x test_resource + -x test_strtod + ) + ;; + arm*) + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + hppa*) + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + mips*) + COMMON_TEST_SKIPS+=( + -x test_ctypes + -x test_external_inspection + -x test_statistics + ) + ;; + powerpc64-*) # big endian + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + riscv*) + COMMON_TEST_SKIPS+=( + -x test_urllib2 + ) + ;; + sparc*) + COMMON_TEST_SKIPS+=( + # bug 788022 + -x test_multiprocessing_fork + -x test_multiprocessing_forkserver + -x test_multiprocessing_spawn + + -x test_ctypes + -x test_gdb + # bug 931908 + -x test_exceptions + ) + ;; + esac + + # Kernel-config specific skips + for option in "${!PYTHON_KERNEL_CHECKS[@]}"; do + if ! linux_config_exists || ! linux_chkconfig_present "${option}" + then + COMMON_TEST_SKIPS+=( -x "${PYTHON_KERNEL_CHECKS[${option}]}" ) + fi + done + + # musl-specific skips + use elibc_musl && COMMON_TEST_SKIPS+=( + # various musl locale deficiencies + -x test__locale + -x test_c_locale_coercion + -x test_locale + -x test_re + + # known issues with find_library on musl + # https://bugs.python.org/issue21622 + -x test_ctypes + + # fpathconf, ttyname errno values + -x test_os + ) + + if use pgo; then + local profile_task_flags=( + -m test + "-j$(makeopts_jobs)" + --pgo-extended + --verbose3 + -u-network + + # We use a timeout because of how often we've had hang issues + # here. It also matches the default upstream PROFILE_TASK. + --timeout 1200 + + "${COMMON_TEST_SKIPS[@]}" + + -x test_dtrace + + # All of these seem to occasionally hang for PGO inconsistently + # They'll even hang here but be fine in src_test sometimes. + # bug #828535 (and related: bug #788022) + -x test_asyncio + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + # PGO sometimes fails randomly + local -x PROFILE_TASK="${profile_task_flags[*]} || true" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-libmpdec + --with-platlibdir=lib + --with-pkg-config=yes + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + --disable-gil + + $(use_with debug assertions) + $(use_enable jit experimental-jit) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + if tc-is-lto; then + myeconfargs+=( + --with-lto + ) + fi + + # Force-disable modules we don't want built. + # See Modules/Setup for docs on how this works. Setup.local contains our local deviations. + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + $(usev !gdbm '_gdbm _dbm') + $(usev !sqlite '_sqlite3') + $(usev !ssl '_hashlib _ssl') + $(usev !ncurses '_curses _curses_panel') + $(usev !readline 'readline') + $(usev !tk '_tkinter') + EOF + + # disable implicit optimization/debugging flags + local -x OPT= + + if tc-is-cross-compiler ; then + build_cbuild_python + myeconfargs+=( + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python + ) + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + export PYTHONSTRICTEXTENSIONBUILD=1 + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + # Gentoo hack to disable accessing system site-packages + export GENTOO_CPYTHON_BUILD=1 + + if use pgo ; then + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + fi + + # also need to clear the flags explicitly here or they end up + # in _sysconfigdata* + emake CPPFLAGS= CFLAGS= LDFLAGS= + + # Restore saved value from above. + local -x PYTHONDONTWRITEBYTECODE=${_PYTHONDONTWRITEBYTECODE} + + # Work around bug 329499. See also bug 413751 and 457194. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E python + else + pax-mark m python + fi +} + +src_test() { + # Tests will not work when cross compiling. + if tc-is-cross-compiler; then + elog "Disabling tests due to crosscompiling." + return + fi + + # this just happens to skip test_support.test_freeze that is broken + # without bundled expat + # TODO: get a proper skip for it upstream + local -x LOGNAME=buildbot + + local test_opts=( + --verbose3 + -u-network + -j "$(makeopts_jobs)" + "${COMMON_TEST_SKIPS[@]}" + ) + + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + + nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \ + CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty + local ret=${?} + + [[ ${ret} -eq 0 ]] || die "emake test failed" +} + +src_install() { + local libdir=${ED}/usr/lib/python${PYVER} + + # -j1 hack for now for bug #843458 + emake -j1 DESTDIR="${D}" TEST_MODULES=no altinstall + + # Fix collisions between different slots of Python. + rm "${ED}/usr/$(get_libdir)/libpython3.so" || die + # Fix collision with GIL-enabled build. + rm "${ED}/usr/bin/python${PYVER%t}" || die + mv "${ED}"/usr/bin/pydoc{${PYVER%t},${PYVER}} || die + mv "${ED}"/usr/share/man/man1/python{${PYVER%t},${PYVER}}.1 || die + + # Cheap hack to get version with ABIFLAGS + local abiver=$(cd "${ED}/usr/include"; echo python*) + if [[ ${abiver} != python${PYVER} ]]; then + # Replace python3.X with a symlink to python3.Xm + rm "${ED}/usr/bin/python${PYVER}" || die + dosym "${abiver}" "/usr/bin/python${PYVER}" + # Create python3.X-config symlink + dosym "${abiver}-config" "/usr/bin/python${PYVER}-config" + # Create python-3.5m.pc symlink + dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc" + fi + + # python seems to get rebuilt in src_install (bug 569908) + # Work around it for now. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E "${ED}/usr/bin/${abiver}" + else + pax-mark m "${ED}/usr/bin/${abiver}" + fi + + rm -r "${libdir}"/ensurepip/_bundled || die + if ! use sqlite; then + rm -r "${libdir}/"sqlite3 || die + fi + if use tk; then + # rename to avoid collision with dev-lang/python + mv "${ED}"/usr/bin/idle{${PYVER%t},${PYVER}} || die + else + rm -r "${ED}/usr/bin/idle${PYVER%t}" || die + rm -r "${libdir}/"{idlelib,tkinter} || die + fi + + ln -s ../python/EXTERNALLY-MANAGED "${libdir}/EXTERNALLY-MANAGED" || die + + dodoc Misc/{ACKS,HISTORY,NEWS} + + if use examples; then + docinto examples + find Tools -name __pycache__ -exec rm -fr {} + || die + dodoc -r Tools + fi + insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510 + local libname=$( + printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | + emake --no-print-directory -s -f - 2>/dev/null + ) + newins Tools/gdb/libpython.py "${libname}"-gdb.py + + newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER} + newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER} + sed \ + -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \ + -e "s:@PYDOC@:pydoc${PYVER}:" \ + -i "${ED}/etc/conf.d/pydoc-${PYVER}" \ + "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed" + + # python-exec wrapping support + local pymajor=${PYVER%.*} + local EPYTHON=python${PYVER} + local scriptdir=${D}$(python_get_scriptdir) + mkdir -p "${scriptdir}" || die + # python and pythonX + ln -s "../../../bin/${abiver}" "${scriptdir}/python${pymajor}" || die + ln -s "python${pymajor}" "${scriptdir}/python" || die + # python-config and pythonX-config + # note: we need to create a wrapper rather than symlinking it due + # to some random dirname(argv[0]) magic performed by python-config + cat > "${scriptdir}/python${pymajor}-config" <<-EOF || die + #!/bin/sh + exec "${abiver}-config" "\${@}" + EOF + chmod +x "${scriptdir}/python${pymajor}-config" || die + ln -s "python${pymajor}-config" "${scriptdir}/python-config" || die + # pydoc + ln -s "../../../bin/pydoc${PYVER}" "${scriptdir}/pydoc" || die + # idle + if use tk; then + ln -s "../../../bin/idle${PYVER}" "${scriptdir}/idle" || die + fi +} diff --git a/dev-lang/python/python-3.13.4.ebuild b/dev-lang/python/python-3.13.4.ebuild new file mode 100644 index 0000000000000..d7ba090d3875c --- /dev/null +++ b/dev-lang/python/python-3.13.4.ebuild @@ -0,0 +1,631 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LLVM_COMPAT=( 18 ) +LLVM_OPTIONAL=1 +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic linux-info llvm-r1 +inherit multiprocessing pax-utils python-utils-r1 toolchain-funcs +inherit verify-sig + +MY_PV=${PV} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm jit + libedit +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +REQUIRED_USE="jit? ( ${LLVM_REQUIRED_USE} )" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + app-crypt/libb2 + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-libs/mpdecimal:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-pip ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( + dev-python/ensurepip-pip + dev-python/ensurepip-setuptools + dev-python/ensurepip-wheel + ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + jit? ( + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT} + llvm-core/llvm:${LLVM_SLOT} + ') + ) + verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +declare -rgA PYTHON_KERNEL_CHECKS=( + ["CROSS_MEMORY_ATTACH"]="test_external_inspection" #bug 938589 + ["DNOTIFY"]="test_fcntl" # bug 938662 +) + +pkg_pretend() { + if use pgo || use test; then + check-reqs_pkg_pretend + fi + + if use jit; then + ewarn "USE=jit is considered experimental upstream. Using it" + ewarn "could lead to unexpected breakage, including race conditions" + ewarn "and crashes, respectively. Please do not file Gentoo bugs, unless" + ewarn "you can reproduce the problem with dev-lang/python[-jit]. Instead," + ewarn "please consider reporting JIT problems upstream." + fi +} + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]]; then + use jit && llvm-r1_pkg_setup + if use test || use pgo; then + check-reqs_pkg_setup + + local CONFIG_CHECK + for f in "${!PYTHON_KERNEL_CHECKS[@]}"; do + CONFIG_CHECK+="~${f} " + done + linux-info_pkg_setup + fi + fi +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + # TODO: Makefile has annoying deps on expat headers + #rm -r Modules/expat || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + ) + + default + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + sed -i -e "s:-j0:-j$(makeopts_jobs):" Makefile.pre.in || die + + # breaks tests when using --with-wheel-pkg-dir + rm -r Lib/test/wheeldata || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross to satisfy --with-build-python. + --without-lto + --without-readline + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + + # Avoid as many dependencies as possible for the cross build. + mkdir Modules || die + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + _dbm _gdbm + _sqlite3 + _hashlib _ssl + _curses _curses_panel + readline + _tkinter + pyexpat + zlib + # We disabled these for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. This should be rechecked for the pure Makefile approach, + # and uncommented if needed. + #_ctypes + EOF + + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the --with-build-python value + # immediately. + emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + # Set baseline test skip flags. + COMMON_TEST_SKIPS=( + # this is actually test_gdb.test_pretty_print + -x test_pretty_print + # https://bugs.gentoo.org/933840 + -x test_perf_profiler + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + COMMON_TEST_SKIPS+=( + -x test_builtin + -x test_capi + -x test_cmath + -x test_float + # timeout + -x test_free_threading + -x test_math + -x test_numeric_tower + -x test_random + -x test_statistics + # bug 653850 + -x test_resource + -x test_strtod + ) + ;; + arm*) + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + hppa*) + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + mips*) + COMMON_TEST_SKIPS+=( + -x test_ctypes + -x test_external_inspection + -x test_statistics + ) + ;; + powerpc64-*) # big endian + COMMON_TEST_SKIPS+=( + -x test_gdb + ) + ;; + riscv*) + COMMON_TEST_SKIPS+=( + -x test_urllib2 + ) + ;; + sparc*) + COMMON_TEST_SKIPS+=( + # bug 788022 + -x test_multiprocessing_fork + -x test_multiprocessing_forkserver + -x test_multiprocessing_spawn + + -x test_ctypes + -x test_gdb + # bug 931908 + -x test_exceptions + ) + ;; + esac + + # Kernel-config specific skips + for option in "${!PYTHON_KERNEL_CHECKS[@]}"; do + if ! linux_config_exists || ! linux_chkconfig_present "${option}" + then + COMMON_TEST_SKIPS+=( -x "${PYTHON_KERNEL_CHECKS[${option}]}" ) + fi + done + + # musl-specific skips + use elibc_musl && COMMON_TEST_SKIPS+=( + # various musl locale deficiencies + -x test__locale + -x test_c_locale_coercion + -x test_locale + -x test_re + + # known issues with find_library on musl + # https://bugs.python.org/issue21622 + -x test_ctypes + + # fpathconf, ttyname errno values + -x test_os + ) + + if use pgo; then + local profile_task_flags=( + -m test + "-j$(makeopts_jobs)" + --pgo-extended + --verbose3 + -u-network + + # We use a timeout because of how often we've had hang issues + # here. It also matches the default upstream PROFILE_TASK. + --timeout 1200 + + "${COMMON_TEST_SKIPS[@]}" + + -x test_dtrace + + # All of these seem to occasionally hang for PGO inconsistently + # They'll even hang here but be fine in src_test sometimes. + # bug #828535 (and related: bug #788022) + -x test_asyncio + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + # PGO sometimes fails randomly + local -x PROFILE_TASK="${profile_task_flags[*]} || true" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-libmpdec + --with-platlibdir=lib + --with-pkg-config=yes + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + --enable-gil + + $(use_with debug assertions) + $(use_enable jit experimental-jit) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + if tc-is-lto; then + myeconfargs+=( + --with-lto + ) + fi + + # Force-disable modules we don't want built. + # See Modules/Setup for docs on how this works. Setup.local contains our local deviations. + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + $(usev !gdbm '_gdbm _dbm') + $(usev !sqlite '_sqlite3') + $(usev !ssl '_hashlib _ssl') + $(usev !ncurses '_curses _curses_panel') + $(usev !readline 'readline') + $(usev !tk '_tkinter') + EOF + + # disable implicit optimization/debugging flags + local -x OPT= + + if tc-is-cross-compiler ; then + build_cbuild_python + myeconfargs+=( + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python + ) + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + export PYTHONSTRICTEXTENSIONBUILD=1 + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + # Gentoo hack to disable accessing system site-packages + export GENTOO_CPYTHON_BUILD=1 + + if use pgo ; then + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + fi + + # also need to clear the flags explicitly here or they end up + # in _sysconfigdata* + emake CPPFLAGS= CFLAGS= LDFLAGS= + + # Restore saved value from above. + local -x PYTHONDONTWRITEBYTECODE=${_PYTHONDONTWRITEBYTECODE} + + # Work around bug 329499. See also bug 413751 and 457194. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E python + else + pax-mark m python + fi +} + +src_test() { + # Tests will not work when cross compiling. + if tc-is-cross-compiler; then + elog "Disabling tests due to crosscompiling." + return + fi + + # this just happens to skip test_support.test_freeze that is broken + # without bundled expat + # TODO: get a proper skip for it upstream + local -x LOGNAME=buildbot + + local test_opts=( + --verbose3 + -u-network + -j "$(makeopts_jobs)" + "${COMMON_TEST_SKIPS[@]}" + ) + + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + + nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \ + CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty + local ret=${?} + + [[ ${ret} -eq 0 ]] || die "emake test failed" +} + +src_install() { + local libdir=${ED}/usr/lib/python${PYVER} + + # -j1 hack for now for bug #843458 + emake -j1 DESTDIR="${D}" TEST_MODULES=no altinstall + + # Fix collisions between different slots of Python. + rm "${ED}/usr/$(get_libdir)/libpython3.so" || die + + # Cheap hack to get version with ABIFLAGS + local abiver=$(cd "${ED}/usr/include"; echo python*) + if [[ ${abiver} != python${PYVER} ]]; then + # Replace python3.X with a symlink to python3.Xm + rm "${ED}/usr/bin/python${PYVER}" || die + dosym "${abiver}" "/usr/bin/python${PYVER}" + # Create python3.X-config symlink + dosym "${abiver}-config" "/usr/bin/python${PYVER}-config" + # Create python-3.5m.pc symlink + dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc" + fi + + # python seems to get rebuilt in src_install (bug 569908) + # Work around it for now. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E "${ED}/usr/bin/${abiver}" + else + pax-mark m "${ED}/usr/bin/${abiver}" + fi + + rm -r "${libdir}"/ensurepip/_bundled || die + if ! use sqlite; then + rm -r "${libdir}/"sqlite3 || die + fi + if ! use tk; then + rm -r "${ED}/usr/bin/idle${PYVER}" || die + rm -r "${libdir}/"{idlelib,tkinter} || die + fi + + ln -s ../python/EXTERNALLY-MANAGED "${libdir}/EXTERNALLY-MANAGED" || die + + dodoc Misc/{ACKS,HISTORY,NEWS} + + if use examples; then + docinto examples + find Tools -name __pycache__ -exec rm -fr {} + || die + dodoc -r Tools + fi + insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510 + local libname=$( + printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | + emake --no-print-directory -s -f - 2>/dev/null + ) + newins Tools/gdb/libpython.py "${libname}"-gdb.py + + newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER} + newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER} + sed \ + -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \ + -e "s:@PYDOC@:pydoc${PYVER}:" \ + -i "${ED}/etc/conf.d/pydoc-${PYVER}" \ + "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed" + + # python-exec wrapping support + local pymajor=${PYVER%.*} + local EPYTHON=python${PYVER} + local scriptdir=${D}$(python_get_scriptdir) + mkdir -p "${scriptdir}" || die + # python and pythonX + ln -s "../../../bin/${abiver}" "${scriptdir}/python${pymajor}" || die + ln -s "python${pymajor}" "${scriptdir}/python" || die + # python-config and pythonX-config + # note: we need to create a wrapper rather than symlinking it due + # to some random dirname(argv[0]) magic performed by python-config + cat > "${scriptdir}/python${pymajor}-config" <<-EOF || die + #!/bin/sh + exec "${abiver}-config" "\${@}" + EOF + chmod +x "${scriptdir}/python${pymajor}-config" || die + ln -s "python${pymajor}-config" "${scriptdir}/python-config" || die + # pydoc + ln -s "../../../bin/pydoc${PYVER}" "${scriptdir}/pydoc" || die + # idle + if use tk; then + ln -s "../../../bin/idle${PYVER}" "${scriptdir}/idle" || die + fi +} diff --git a/dev-lang/python/python-3.9.23.ebuild b/dev-lang/python/python-3.9.23.ebuild new file mode 100644 index 0000000000000..d621dcdcefafc --- /dev/null +++ b/dev-lang/python/python-3.9.23.ebuild @@ -0,0 +1,558 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit prefix toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm +ncurses pgo + +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-libs/mpdecimal:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( >=sys-libs/readline-4.1:= ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( app-arch/xz-utils ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + ) + + default + + # https://bugs.gentoo.org/850151 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + local jobs=$(makeopts_jobs) + sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die + sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + + eautoreconf +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + local disable + use gdbm || disable+=" gdbm" + use ncurses || disable+=" _curses _curses_panel" + use readline || disable+=" readline" + use sqlite || disable+=" _sqlite3" + use ssl || export PYTHON_DISABLE_SSL="1" + use tk || disable+=" _tkinter" + export PYTHON_DISABLE_MODULES="${disable}" + + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}" + fi + + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + # Set baseline test skip flags. + COMMON_TEST_SKIPS=( + -x test_gdb + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + COMMON_TEST_SKIPS+=( + -x test_builtin + -x test_capi + -x test_cmath + -x test_float + # timeout + -x test_free_threading + -x test_math + -x test_numeric_tower + -x test_random + -x test_statistics + # bug 653850 + -x test_resource + -x test_strtod + ) + ;; + mips*) + COMMON_TEST_SKIPS+=( + -x test_ctypes + -x test_external_inspection + -x test_statistics + ) + ;; + powerpc64-*) # big endian + COMMON_TEST_SKIPS+=( + -x test_descr + ) + ;; + riscv*) + COMMON_TEST_SKIPS+=( + -x test_urllib2 + ) + ;; + sparc*) + COMMON_TEST_SKIPS+=( + # bug 788022 + -x test_multiprocessing_fork + -x test_multiprocessing_forkserver + -x test_multiprocessing_spawn + + -x test_ctypes + -x test_descr + # bug 931908 + -x test_exceptions + ) + ;; + esac + + # musl-specific skips + use elibc_musl && COMMON_TEST_SKIPS+=( + # various musl locale deficiencies + -x test__locale + -x test_c_locale_coercion + -x test_locale + -x test_re + + # known issues with find_library on musl + # https://bugs.python.org/issue21622 + -x test_ctypes + + # fpathconf, ttyname errno values + -x test_os + ) + + if use pgo; then + local profile_task_flags=( + -m test + "-j$(makeopts_jobs)" + --pgo-extended + -u-network + + # We use a timeout because of how often we've had hang issues + # here. It also matches the default upstream PROFILE_TASK. + --timeout 1200 + + "${COMMON_TEST_SKIPS[@]}" + + -x test_dtrace + + # All of these seem to occasionally hang for PGO inconsistently + # They'll even hang here but be fine in src_test sometimes. + # bug #828535 (and related: bug #788022) + -x test_asyncio + -x test_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + # Arch-specific skips. See #931888 for a collection of these. + case ${CHOST} in + alpha*) + profile_task_flags+=( + -x test_os + ) + ;; + hppa*) + profile_task_flags+=( + -x test_descr + # bug 931908 + -x test_exceptions + -x test_os + ) + ;; + powerpc64-*) # big endian + profile_task_flags+=( + # bug 931908 + -x test_exceptions + ) + ;; + riscv*) + profile_task_flags+=( + -x test_statistics + ) + ;; + esac + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + local -x PROFILE_TASK="${profile_task_flags[*]}" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-ffi + --with-system-libmpdec + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + if tc-is-cross-compiler ; then + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 and bug #864911. + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross. + --without-lto + --disable-optimizations + ) + + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + export PATH="${WORKDIR}/${P}-${CBUILD}:${PATH}" + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. + PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" \ + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Avoid as many dependencies as possible for the cross build. + cat >> Makefile <<-EOF || die + MODULE_NIS=disabled + MODULE__DBM=disabled + MODULE__GDBM=disabled + MODULE__DBM=disabled + MODULE__SQLITE3=disabled + MODULE__HASHLIB=disabled + MODULE__SSL=disabled + MODULE__CURSES=disabled + MODULE__CURSES_PANEL=disabled + MODULE_READLINE=disabled + MODULE__TKINTER=disabled + MODULE_PYEXPAT=disabled + MODULE_ZLIB=disabled + EOF + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the Python it was pointed to + # immediately. + PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" emake + popd &> /dev/null || die + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + hprefixify setup.py + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + # Prevent using distutils bundled by setuptools. + # https://bugs.gentoo.org/823728 + export SETUPTOOLS_USE_DISTUTILS=stdlib + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + # Gentoo hack to disable accessing system site-packages + export GENTOO_CPYTHON_BUILD=1 + + if use pgo ; then + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + fi + + # also need to clear the flags explicitly here or they end up + # in _sysconfigdata* + emake CPPFLAGS= CFLAGS= LDFLAGS= + + # Restore saved value from above. + local -x PYTHONDONTWRITEBYTECODE=${_PYTHONDONTWRITEBYTECODE} + + # Work around bug 329499. See also bug 413751 and 457194. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E python + else + pax-mark m python + fi +} + +src_test() { + # Tests will not work when cross compiling. + if tc-is-cross-compiler; then + elog "Disabling tests due to crosscompiling." + return + fi + + local test_opts=( + --verbose3 + -u-network + -j "$(makeopts_jobs)" + "${COMMON_TEST_SKIPS[@]}" + ) + + # bug 660358 + local -x COLUMNS=80 + local -x PYTHONDONTWRITEBYTECODE= + local -x TMPDIR=/var/tmp + + nonfatal emake -Onone test EXTRATESTOPTS="${test_opts[*]}" \ + CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty + local ret=${?} + + [[ ${ret} -eq 0 ]] || die "emake test failed" +} + +src_install() { + local libdir=${ED}/usr/lib/python${PYVER} + + emake DESTDIR="${D}" altinstall + + # Remove static library + rm "${ED}"/usr/$(get_libdir)/libpython*.a || die + + # Fix collisions between different slots of Python. + rm "${ED}/usr/$(get_libdir)/libpython3.so" || die + + # Cheap hack to get version with ABIFLAGS + local abiver=$(cd "${ED}/usr/include"; echo python*) + if [[ ${abiver} != python${PYVER} ]]; then + # Replace python3.X with a symlink to python3.Xm + rm "${ED}/usr/bin/python${PYVER}" || die + dosym "${abiver}" "/usr/bin/python${PYVER}" + # Create python3.X-config symlink + dosym "${abiver}-config" "/usr/bin/python${PYVER}-config" + # Create python-3.5m.pc symlink + dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc" + fi + + # python seems to get rebuilt in src_install (bug 569908) + # Work around it for now. + if has_version dev-libs/libffi[pax-kernel]; then + pax-mark E "${ED}/usr/bin/${abiver}" + else + pax-mark m "${ED}/usr/bin/${abiver}" + fi + + rm -r "${libdir}"/ensurepip/_bundled || die + if ! use ensurepip; then + rm -r "${libdir}"/ensurepip || die + fi + if ! use sqlite; then + rm -r "${libdir}/"{sqlite3,test/test_sqlite*} || die + fi + if ! use tk; then + rm -r "${ED}/usr/bin/idle${PYVER}" || die + rm -r "${libdir}/"{idlelib,tkinter,test/test_tk*} || die + fi + + ln -s ../python/EXTERNALLY-MANAGED "${libdir}/EXTERNALLY-MANAGED" || die + + dodoc Misc/{ACKS,HISTORY,NEWS} + + if use examples; then + docinto examples + find Tools -name __pycache__ -exec rm -fr {} + || die + dodoc -r Tools + fi + insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510 + local libname=$( + printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | + emake --no-print-directory -s -f - 2>/dev/null + ) + newins Tools/gdb/libpython.py "${libname}"-gdb.py + + newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER} + newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER} + sed \ + -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \ + -e "s:@PYDOC@:pydoc${PYVER}:" \ + -i "${ED}/etc/conf.d/pydoc-${PYVER}" \ + "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed" +} diff --git a/dev-libs/xalan-c/xalan-c-1.12-r2.ebuild b/dev-libs/xalan-c/xalan-c-1.12-r3.ebuild similarity index 98% rename from dev-libs/xalan-c/xalan-c-1.12-r2.ebuild rename to dev-libs/xalan-c/xalan-c-1.12-r3.ebuild index c4e8834d54f99..a03dd3f992089 100644 --- a/dev-libs/xalan-c/xalan-c-1.12-r2.ebuild +++ b/dev-libs/xalan-c/xalan-c-1.12-r3.ebuild @@ -38,7 +38,7 @@ IUSE="doc" RDEPEND=" dev-libs/icu:= - dev-libs/xerces-c[icu] + dev-libs/xerces-c:=[icu] " DEPEND="${RDEPEND}" BDEPEND+=" diff --git a/dev-libs/xerces-c/Manifest b/dev-libs/xerces-c/Manifest index 91f6507b762fa..d7aa87ca21572 100644 --- a/dev-libs/xerces-c/Manifest +++ b/dev-libs/xerces-c/Manifest @@ -1 +1,2 @@ DIST xerces-c-3.2.5.tar.xz 4274820 BLAKE2B e0926660bf29e35c05843aae683a7a4f2fe5a6f5f68c76ce16fde975a24277c0e50465a02bfa785f96f4ebec3c7d411785793914491f112ce19477b5dd59e351 SHA512 77b80148b0a3dbb61af648e2571855d59040512dd0c739a892e8ac6a6d7ddbb43b49850c87c39fcf374f2c7658a9c795b3e3fcd4785efbc6226f831b938d5300 +DIST xerces-c-3.3.0.tar.xz 4311396 BLAKE2B bfe1e25c16430714200bdd6a0fe782bd048a3d331fe6f78c34c2d80cea08dfa97d1c68661f94bda71e67e7fd005ce40226c9278fb83c3f28ca400bf23a432737 SHA512 8d4dc27a6c97d04703e60a5473163e2616ae68f0917ce11a621a60221970ab599c5f3085eb07a70e545394022ef5029997028e9b5747d4048c541ff75fe92ec1 diff --git a/dev-libs/xerces-c/files/xerces-c-3.3.0-symbol-name.patch b/dev-libs/xerces-c/files/xerces-c-3.3.0-symbol-name.patch new file mode 100644 index 0000000000000..37bab63b9e539 --- /dev/null +++ b/dev-libs/xerces-c/files/xerces-c-3.3.0-symbol-name.patch @@ -0,0 +1,19 @@ +--- a/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp 2023-12-06 17:57:34.000000000 +0100 ++++ b/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp 2024-10-18 17:23:09.000000000 +0100 +@@ -48,14 +48,14 @@ + * Resource Data Reference. + * + * The data is packaged as a dll (or .so or whatever, depending on the platform) that exports a data symbol. + * The application (this *.cpp) references that symbol here, and will pass the data address to ICU, which + * will then be able to fetch resources from the data. + */ +-#define ENTRY_POINT xercesc_messages_3_2_dat +-#define BUNDLE_NAME "xercesc_messages_3_2" ++#define ENTRY_POINT xercesc_messages_3_3_dat ++#define BUNDLE_NAME "xercesc_messages_3_3" + + extern "C" void U_IMPORT *ENTRY_POINT; + + /* + * Tell ICU where our resource data is located in memory. The data lives in the xercesc_nessages dll, and we just + * pass the address of an exported symbol from that library to ICU. diff --git a/dev-libs/xerces-c/xerces-c-3.3.0.ebuild b/dev-libs/xerces-c/xerces-c-3.3.0.ebuild new file mode 100644 index 0000000000000..c903e18937b71 --- /dev/null +++ b/dev-libs/xerces-c/xerces-c-3.3.0.ebuild @@ -0,0 +1,127 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake flag-o-matic prefix + +DESCRIPTION="Validating XML parser written in a portable subset of C++" +HOMEPAGE="https://xerces.apache.org/xerces-c/" + +if [[ ${PV} == *9999 ]] ; then + ESVN_REPO_URI="https://svn.apache.org/repos/asf/xerces/c/trunk" + inherit subversion +else + SRC_URI=" + mirror://apache/xerces/c/3/sources/${P}.tar.xz + https://archive.apache.org/dist/xerces/c/3/sources/${P}.tar.xz + " + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos" +fi + +LICENSE="Apache-2.0" +SLOT="0/$(ver_cut 1-2)" +IUSE="cpu_flags_x86_sse2 curl doc examples iconv icu static-libs test threads" + +RESTRICT="!test? ( test )" + +RDEPEND=" + curl? ( net-misc/curl ) + icu? ( dev-libs/icu:0= ) + virtual/libiconv" +DEPEND="${RDEPEND}" +BDEPEND=" + doc? ( app-text/doxygen ) + test? ( dev-lang/perl )" + +DOCS=( CREDITS KEYS NOTICE README ) + +PATCHES=( + "${FILESDIR}"/${PN}-3.2.4-strict-aliasing.patch + "${FILESDIR}"/${PN}-3.2.5-cxx17.patch # bug 931105 + "${FILESDIR}"/${P}-symbol-name.patch # fixed in 3.3.1, see https://issues.apache.org/jira/browse/XERCESC-2255 +) + +pkg_setup() { + export ICUROOT="${EPREFIX}/usr" + + if use iconv && use icu; then + ewarn "This package can use iconv or icu for loading messages" + ewarn "and transcoding, but not both. ICU takes precedence." + fi +} + +src_configure() { + # bug #856100 + filter-lto + append-flags -fno-strict-aliasing + + # 'cfurl' is only available on OSX and 'socket' isn't supposed to work. + # But the docs aren't clear about it, so we would need some testing... + local netaccessor + if use curl; then + netaccessor="curl" + elif use elibc_Darwin; then + netaccessor="cfurl" + else + netaccessor="socket" + fi + + local msgloader + if use icu; then + msgloader="icu" + elif use iconv; then + msgloader="iconv" + else + msgloader="inmemory" + fi + + local transcoder + if use icu; then + transcoder="icu" + elif use elibc_Darwin; then + transcoder="macosunicodeconverter" + else + transcoder="gnuiconv" + fi + + local mycmakeargs=( + -DCMAKE_INSTALL_DOCDIR="${EPREFIX}/usr/share/doc/${PF}" + -Dnetwork-accessor="${netaccessor}" + -Dmessage-loader="${msgloader}" + -Dtranscoder="${transcoder}" + -Dthreads:BOOL="$(usex threads)" + -Dsse2:BOOL="$(usex cpu_flags_x86_sse2)" + ) + + cmake_src_configure +} + +src_compile() { + cmake_src_compile + + use doc && cmake_build doc-style createapidocs doc-xml +} + +src_install() { + cmake_src_install + + # package provides .pc files + find "${D}" -name '*.la' -delete || die + + if use examples; then + # clean out object files, executables, Makefiles + # and the like before installing examples + find samples/ \( -type f -executable -o -iname 'runConfigure' -o -iname '*.o' \ + -o -iname '.libs' -o -iname 'Makefile*' \) -exec rm -rf '{}' + || die + docinto examples + dodoc -r samples/. + docompress -x /usr/share/doc/${PF}/examples + fi + + # To make sure an appropriate NLS msg file is around when using + # the iconv msgloader ICU has the messages compiled in. + if use iconv && ! use icu; then + doenvd "$(prefixify_ro "${FILESDIR}/50xerces-c")" + fi +} diff --git a/dev-libs/xerces-c/xerces-c-9999.ebuild b/dev-libs/xerces-c/xerces-c-9999.ebuild index 2d2eb3cb1e99f..c903e18937b71 100644 --- a/dev-libs/xerces-c/xerces-c-9999.ebuild +++ b/dev-libs/xerces-c/xerces-c-9999.ebuild @@ -16,11 +16,11 @@ else mirror://apache/xerces/c/3/sources/${P}.tar.xz https://archive.apache.org/dist/xerces/c/3/sources/${P}.tar.xz " - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos" fi LICENSE="Apache-2.0" -SLOT="0" +SLOT="0/$(ver_cut 1-2)" IUSE="cpu_flags_x86_sse2 curl doc examples iconv icu static-libs test threads" RESTRICT="!test? ( test )" @@ -38,6 +38,8 @@ DOCS=( CREDITS KEYS NOTICE README ) PATCHES=( "${FILESDIR}"/${PN}-3.2.4-strict-aliasing.patch + "${FILESDIR}"/${PN}-3.2.5-cxx17.patch # bug 931105 + "${FILESDIR}"/${P}-symbol-name.patch # fixed in 3.3.1, see https://issues.apache.org/jira/browse/XERCESC-2255 ) pkg_setup() { diff --git a/dev-python/aiohttp/Manifest b/dev-python/aiohttp/Manifest index 40ceced3a38fb..b9a1cc345f8d5 100644 --- a/dev-python/aiohttp/Manifest +++ b/dev-python/aiohttp/Manifest @@ -4,3 +4,4 @@ DIST aiohttp-3.12.0.tar.gz 7762804 BLAKE2B 2fa51165917038cc8442cc4dab74373b47862 DIST aiohttp-3.12.2.tar.gz 7780423 BLAKE2B 47c7dccb2666c4641bbcfdba4f13f2f423e84d3043163dd9c2436aa32ccb2698b2a6ceb7c0ccf5defc98c1fb5799b39849a0a25f8aa37aaa4aab186b2b936c68 SHA512 8c6aed54ae385962fb1ad34f6f80f322612d7aec6c65845c56e8047b6b4e4102f9044964ac34ed765a09799bb6753e980ce51bf8194ce2e1ec7a9d8dd7c5cbd1 DIST aiohttp-3.12.4.tar.gz 7781788 BLAKE2B ccaa2656ef0e68687bad17608557413d8139b516e9e56dde473147f2c449ff1066878934a3a77b796e304c8ce0d48bf81c13ca65468187fdd686e51426fe8f9c SHA512 86e88a3be0d6a4993dbcf5a28bebbe19ded15466d539c6933cf2c8990bb684d436673685e419662efe1655a315e31642a60805d348ead9eeda909522720b8434 DIST aiohttp-3.12.6.tar.gz 7784449 BLAKE2B 1ebc5b2e991e8ccd9b37552d0b3ae80debfcc6d7000dc83e9ba308b25e9694ad1c1a9aff34469eef4bc2faa0b9d25d971ab854891fb1c63823266cb54693dddb SHA512 e73e57cf185bdf52e020856c9254be407663d75eeeb52e6ac3c0d57a77719d82539006347980319c7eed79ff8f3692355ade00d82929ed11a35ddb718b1cebca +DIST aiohttp-3.12.7.tar.gz 7806530 BLAKE2B 8d14e0c1e4d33e5c8c0e1899d26c15d35e545170f4b765a9168f8e741a703e3c4792ac99ce13fbba03ab33335a30cb230a8a588b53066a294d729eb0deb13d94 SHA512 1de4933912a3f5e599b6600785627f7ada49f511ace1265eacb303cdd5acd52c34f33c8d202e3f2949aa303fc25e73976f938600c3892f19d6b8e754275f1a98 diff --git a/dev-python/aiohttp/aiohttp-3.12.7.ebuild b/dev-python/aiohttp/aiohttp-3.12.7.ebuild new file mode 100644 index 0000000000000..f7f9c3ca295c7 --- /dev/null +++ b/dev-python/aiohttp/aiohttp-3.12.7.ebuild @@ -0,0 +1,156 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{11..14} pypy3_11 ) + +inherit distutils-r1 pypi + +DESCRIPTION="HTTP client/server for asyncio" +HOMEPAGE=" + https://github.com/aio-libs/aiohttp/ + https://pypi.org/project/aiohttp/ +" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~riscv ~x86" +IUSE="+native-extensions test-rust" + +DEPEND=" + native-extensions? ( + $(python_gen_cond_dep ' + net-libs/llhttp:= + ' 'python3*') + ) +" +RDEPEND=" + ${DEPEND} + >=dev-python/aiodns-3.3.0[${PYTHON_USEDEP}] + >=dev-python/aiohappyeyeballs-2.5.0[${PYTHON_USEDEP}] + >=dev-python/aiosignal-1.1.2[${PYTHON_USEDEP}] + >=dev-python/attrs-17.3.0[${PYTHON_USEDEP}] + dev-python/brotlicffi[${PYTHON_USEDEP}] + >=dev-python/frozenlist-1.1.1[${PYTHON_USEDEP}] + >=dev-python/multidict-4.5.0[${PYTHON_USEDEP}] + >=dev-python/propcache-0.2.0[${PYTHON_USEDEP}] + >=dev-python/yarl-1.17.0[${PYTHON_USEDEP}] +" +BDEPEND=" + >=dev-python/multidict-4.5.0[${PYTHON_USEDEP}] + native-extensions? ( + >=dev-python/cython-3.1.1[${PYTHON_USEDEP}] + dev-python/pkgconfig[${PYTHON_USEDEP}] + ) + test? ( + dev-python/blockbuster[${PYTHON_USEDEP}] + dev-python/freezegun[${PYTHON_USEDEP}] + dev-python/isal[${PYTHON_USEDEP}] + dev-python/pytest-mock[${PYTHON_USEDEP}] + dev-python/pytest-rerunfailures[${PYTHON_USEDEP}] + dev-python/pytest-xdist[${PYTHON_USEDEP}] + dev-python/re-assert[${PYTHON_USEDEP}] + $(python_gen_cond_dep ' + dev-python/time-machine[${PYTHON_USEDEP}] + ' 'python3*') + dev-python/zlib-ng[${PYTHON_USEDEP}] + www-servers/gunicorn[${PYTHON_USEDEP}] + test-rust? ( + dev-python/trustme[${PYTHON_USEDEP}] + ) + ) +" + +DOCS=( CHANGES.rst CONTRIBUTORS.txt README.rst ) + +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +src_prepare() { + distutils-r1_src_prepare + + # increase the timeout a little + sed -e '/abs=/s/0.001/0.01/' -i tests/test_helpers.py || die + # xfail_strict fails on py3.10 + sed -i -e '/--cov/d' -e '/pytest_cov/d' -e '/xfail_strict/d' setup.cfg || die + sed -i -e 's:-Werror::' Makefile || die + # remove vendored llhttp + rm -r vendor || die +} + +python_configure() { + # check for .install-cython, so that we do this only once + if [[ ! -f .install-cython && ${EPYTHON} != pypy3 ]] && + use native-extensions + then + # force rehashing first + emake requirements/.hash/cython.txt.hash + > .update-pip || die + > .install-cython || die + emake cythonize + fi +} + +python_compile() { + local -x AIOHTTP_USE_SYSTEM_DEPS=1 + # implicitly disabled for pypy3 + if [[ ${EPYTHON} == pypy3* ]] || ! use native-extensions; then + local -x AIOHTTP_NO_EXTENSIONS=1 + fi + + distutils-r1_python_compile +} + +python_test() { + local EPYTEST_IGNORE=( + # proxy is not packaged + tests/test_proxy_functional.py + # python_on_whales is not packaged + tests/autobahn/test_autobahn.py + # benchmarks + tests/test_benchmarks_client.py + tests/test_benchmarks_client_request.py + tests/test_benchmarks_client_ws.py + tests/test_benchmarks_cookiejar.py + tests/test_benchmarks_http_websocket.py + tests/test_benchmarks_http_writer.py + tests/test_benchmarks_web_fileresponse.py + tests/test_benchmarks_web_middleware.py + tests/test_benchmarks_web_response.py + tests/test_benchmarks_web_urldispatcher.py + ) + + local EPYTEST_DESELECT=( + # Internet + tests/test_client_session.py::test_client_session_timeout_zero + tests/test_connector.py::test_tcp_connector_ssl_shutdown_timeout_passed_to_create_connection + # broken by irrelevant deprecation warnings + tests/test_circular_imports.py::test_no_warnings + ) + + case ${EPYTHON} in + python3.14) + EPYTEST_DESELECT+=( + # TODO + tests/test_cookiejar.py::test_pickle_format + # different exception message + tests/test_client_functional.py::test_aiohttp_request_coroutine + ) + ;; + esac + + # upstream unconditionally blocks building C extensions + # on PyPy3 but the test suite needs an explicit switch + if [[ ${EPYTHON} == pypy3* ]] || ! use native-extensions; then + local -x AIOHTTP_NO_EXTENSIONS=1 + fi + + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + local -x PYTEST_PLUGINS=pytest_mock,xdist.plugin + rm -rf aiohttp || die + epytest -m "not internal and not dev_mode" \ + -p rerunfailures --reruns=5 +} diff --git a/dev-python/argon2-cffi/Manifest b/dev-python/argon2-cffi/Manifest index e043e6b2be442..6ae04674be6c4 100644 --- a/dev-python/argon2-cffi/Manifest +++ b/dev-python/argon2-cffi/Manifest @@ -1 +1,2 @@ DIST argon2_cffi-23.1.0.tar.gz 42798 BLAKE2B 16f20c064bfc420894bc9da681ce4f544219c8e173f63bf095ffffdca6bd159695ecfa7ff33c32ca96f284764561e844e58d1ec3bf85a0c120c3b54490c3a56f SHA512 7c7730451f5ef9bb40bb5e1bbfa6e69c9718968168f3fa9b54e1020a4f805f98fba6260039bda804241717db2338479d640c7652dc26ce1a6ade076660133383 +DIST argon2_cffi-25.1.0.tar.gz 45706 BLAKE2B 8ff03622c4840c6241cf696bf07d0a494a01d773f503fc76bccc3546409db97bad340c26274e19f53897b8619824bc4030ca3cd9873b917e40bb68e141234849 SHA512 746f4469cd9be79f4639f814bee99ddca71200a7bfb31c8f34ca88cc760ee73665fc0d4e46d50ca003911fcfab0dd153fd555ec6cb9127066c1e1e0fd63755b5 diff --git a/dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild b/dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild new file mode 100644 index 0000000000000..5319cb076669d --- /dev/null +++ b/dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild @@ -0,0 +1,32 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=hatchling +PYTHON_COMPAT=( python3_{11..14} pypy3_11 ) + +inherit distutils-r1 pypi + +DESCRIPTION="CFFI bindings to the Argon2 password hashing library" +HOMEPAGE=" + https://github.com/hynek/argon2-cffi/ + https://pypi.org/project/argon2-cffi/ +" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + +RDEPEND=" + >=dev-python/argon2-cffi-bindings-21.2.0[${PYTHON_USEDEP}] +" +BDEPEND=" + dev-python/hatch-fancy-pypi-readme[${PYTHON_USEDEP}] + dev-python/hatch-vcs[${PYTHON_USEDEP}] + test? ( + dev-python/hypothesis[${PYTHON_USEDEP}] + ) +" + +distutils_enable_tests pytest diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest index f853100944a26..3b4fae9a6f75f 100644 --- a/dev-python/boto3/Manifest +++ b/dev-python/boto3/Manifest @@ -2,3 +2,4 @@ DIST boto3-1.38.18.gh.tar.gz 943830 BLAKE2B 2605415f7c48efd5322f6a514fb2cf7ede87 DIST boto3-1.38.23.gh.tar.gz 946184 BLAKE2B cf405adb1f47bcaba2185f2c120b8642f8fe2f68a33bc807854ad32bcd7eec99282a800f13a5273225e7fda6e3415ad8ef7ffd173e5cad21539c0f2765836506 SHA512 fdd7c9ae335afa772b919ffa8989323f54a409e8f7e9483528a199e038aad3b341663ec3a72f78c695e2ef44601caf682e3f769c5a869ea2d0545c9dd7a035a8 DIST boto3-1.38.27.gh.tar.gz 948453 BLAKE2B 4f775c14a439b4ca204d6728a7b077ed901e9b92f395871b05e9de29e5ce82ac2ab179f4c1914b3d52627b77a5fae136ad003bbeb2d1460597f9fb7b4a1ab93d SHA512 27ab3c3453b16649d58d6ee11ef62abd6e302889b0dc46067e4370af1e9fb4d75292886471f7c7fb530707c226ae78c42d0268d8cd9730fd27ad72ef1fb69d45 DIST boto3-1.38.28.gh.tar.gz 949891 BLAKE2B 5368b9f38df2f07aa27ee04a499e30ddf8ee45fdbcb0d4a2f24ea16ea55e7e6f30c35877521c5fd45fd9e17aed0d4c1998c470d64e68221ce18ea3b26818e367 SHA512 8929582df636c5a78d4ed84ad99d4b5803c4ca65842ec19aac59cb7400cc1c2f004e85a1cb422c2ebb44db2168632b7d1ed5c794be8b74207394ab929d64e49b +DIST boto3-1.38.29.gh.tar.gz 950266 BLAKE2B b75f999ab08f9619fda4e3365eecea5f2ef19f4ea6676c86126f71782be97472479bddf6c6ec1dffd15b0cbb22d727cc570917945d10d4e4a1b03ac516e419fe SHA512 cfa2cc23aa9f79e21311ee99fed8fc75dfbea94ffcb66bbd1f08e30b186758d9ef0f3a6448e746f767b7ef22bd25bd73f24dda0fc77c0ecc09135f4b98a82837 diff --git a/dev-python/boto3/boto3-1.38.29.ebuild b/dev-python/boto3/boto3-1.38.29.ebuild new file mode 100644 index 0000000000000..87d2b29361a16 --- /dev/null +++ b/dev-python/boto3/boto3-1.38.29.ebuild @@ -0,0 +1,53 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{11..13} ) + +inherit distutils-r1 + +DESCRIPTION="The AWS SDK for Python" +HOMEPAGE=" + https://github.com/boto/boto3/ + https://pypi.org/project/boto3/ +" +SRC_URI=" + https://github.com/boto/boto3/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux" + +RDEPEND=" + >=dev-python/botocore-${PV}[${PYTHON_USEDEP}] + >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}] + >=dev-python/s3transfer-0.13.0[${PYTHON_USEDEP}] +" + +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +python_prepare_all() { + # don't lock versions to narrow ranges + sed -e '/botocore/ d' \ + -e '/jmespath/ d' \ + -e '/s3transfer/ d' \ + -i setup.py || die + + # do not rely on bundled deps in botocore (sic!) + find -name '*.py' -exec sed -i \ + -e 's:from botocore[.]vendored import:import:' \ + -e 's:from botocore[.]vendored[.]:from :' \ + {} + || die + + distutils-r1_python_prepare_all +} + +python_test() { + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + epytest tests/{functional,unit} +} diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest index e48358eb3516c..f317ad6a27b19 100644 --- a/dev-python/botocore/Manifest +++ b/dev-python/botocore/Manifest @@ -2,3 +2,4 @@ DIST botocore-1.38.18.gh.tar.gz 14648125 BLAKE2B b77da532e815f8cc270b78c5bfab8a9 DIST botocore-1.38.23.gh.tar.gz 14649388 BLAKE2B d60b5e5d7fb445f332eed57f3317d3add82dd2123ab4199dc934a9a4d68c2b91947a9e50e3847da4bed06aac402542f2bbe4ea92bd47d72de86be3f8f5571b2f SHA512 d602d19c9160d10aeb06aae911052da50dd66ef0f43e459d5911bed24acba5ac948781f1e8f6f43b377847670f2d074e044f454b043ba33859fc0ca0ba67976a DIST botocore-1.38.27.gh.tar.gz 14666017 BLAKE2B 7527044c1b9586ac39b7cdaf1c51e6e263d3021015023e370a2ef30c600f33efd8e37697982148a99d56ec2e817b564f8c66cb75c1e8bd807858aad38fd6dab5 SHA512 2bc66dc805c610f96f52a8fbd716767dc0084f3d35517cc6c54d45a85330cb74c77becef234b323a72b9a9273211febb2604975fc2dbfaff3a51449123e6ad64 DIST botocore-1.38.28.gh.tar.gz 14672858 BLAKE2B a51891512f7df3ee1ceab3b9be2ad3a5e4bf8e976d58771268541b93df790c63523201f3c70caed22bd3baaff66980821811b9496620087c588385e14d089c04 SHA512 af48bfce6666c9a1f2175141b1efa7a17dd4dedfa8f1bd68bc3244035a62041eeefac95942ea142928c485912a2a1f25b2f093f1f5993171f9cc232234c5046e +DIST botocore-1.38.29.gh.tar.gz 14676693 BLAKE2B ef5e5c79505f76ad5f55a8bfdf4f9e714a6b028cb8b719ed00ee895923af0495c1b03cb4da0e742e0f4625a978bb235614e58c155f7f050e0ecda396bd7977c1 SHA512 62cb907747a6cdc237dcf86d6bc6e99ecca8ca6650bde2c0d32b83ad9c497bd3bd55913f63127d348ccf75f68ad0a2c5acf85d540a6c7b8ba3cf57751c7c8bbc diff --git a/dev-python/botocore/botocore-1.38.29.ebuild b/dev-python/botocore/botocore-1.38.29.ebuild new file mode 100644 index 0000000000000..535354aa30358 --- /dev/null +++ b/dev-python/botocore/botocore-1.38.29.ebuild @@ -0,0 +1,75 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{11..14} ) + +inherit distutils-r1 + +DESCRIPTION="Low-level, data-driven core of boto 3" +HOMEPAGE=" + https://github.com/boto/botocore/ + https://pypi.org/project/botocore/ +" +SRC_URI=" + https://github.com/boto/botocore/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux" + +RDEPEND=" + =dev-python/urllib3-1.25.4[${PYTHON_USEDEP}] +" +# unbundled packages +RDEPEND+=" + dev-python/requests[${PYTHON_USEDEP}] + dev-python/six[${PYTHON_USEDEP}] +" +BDEPEND=" + test? ( + dev-python/jsonschema[${PYTHON_USEDEP}] + ) +" + +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +src_prepare() { + # unpin deps + sed -i -e "s:>=.*':':" setup.py || die + + # unbundle deps + rm -r botocore/vendored || die + find -name '*.py' -exec sed -i \ + -e 's:from botocore[.]vendored import:import:' \ + -e 's:from botocore[.]vendored[.]:from :' \ + {} + || die + + distutils-r1_src_prepare +} + +python_test() { + local EPYTEST_DESELECT=( + # rely on bundled six + tests/functional/test_six_imports.py::test_no_bare_six_imports + tests/functional/test_six_threading.py::test_six_thread_safety + ) + + case ${EPYTHON} in + python3.14) + EPYTEST_DESELECT+=( + tests/unit/test_utils.py::test_lru_cache_weakref + ) + ;; + esac + + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + epytest tests/{functional,unit} +} diff --git a/dev-python/frozenlist/Manifest b/dev-python/frozenlist/Manifest index e4a5b197c4467..6c0a53576631a 100644 --- a/dev-python/frozenlist/Manifest +++ b/dev-python/frozenlist/Manifest @@ -1,3 +1,4 @@ DIST frozenlist-1.5.0.gh.tar.gz 46957 BLAKE2B 385b6439985256c5fd074582001a9c3d8ae82a0b839abfb3c2ff054ba3f5904d17740d7e49a17c96c571a0d8940933d292cc980c5a7bb30ae25fe88484ade185 SHA512 4486a3132038cf3eb29184bc27baab2f166078d25163da29114cb0595bd97c88848d88241cef39d42be9da5e2a99d14141d899bc5f268690c97bf38bf07c54dd DIST frozenlist-1.6.0.gh.tar.gz 49920 BLAKE2B e7f03eb3779e048d921f8383d34d82af82828ac587378c148d9f555cf69aa1324f63fb1a53e42bc3d411a647ccd3eabf5b276a9c2ebd7af14d03245c8f4d4721 SHA512 f7e3d8741335c5ebdb3e78684c6e4a91c2f7f389134f4b869d8ea67d167472814867f14e303211045977f0d409d6b1b9478b7cfa7718af5ae9bacb49d147af58 DIST frozenlist-1.6.1.gh.tar.gz 49838 BLAKE2B 99e2bf456e9127b79940c53958f8aec377e00788d0778b08a55898f72d1f08ec1646ae7596d650687859d68b502e22360eebc33b82913b57f1877f15ba81bc22 SHA512 63776f6bbbc710d25a47a634df8020c347656d452d1912970ba9e94ffdaba28c999fe12ee6e9dca1622f9e7ab7ce60deda540bc3797f0ca6ec079c0d26b6cc84 +DIST frozenlist-1.6.2.gh.tar.gz 49853 BLAKE2B 88daf2ba5476902fbd1c49a547bfa1d2b6aca4892f3476c275bb7cfddd04c186a7db2dd85d810ef4f8a9ba097ea79a10f9b3604a575b693b3a011e50a17cf101 SHA512 98af12defa65033f42a1ead3012dc6a2df5b018fc96fb02449aeb42465bd22c86edb28663d35c5a2bdbcda71649c99e8edae98836de6ace6957599474a00dda7 diff --git a/dev-python/frozenlist/frozenlist-1.6.2.ebuild b/dev-python/frozenlist/frozenlist-1.6.2.ebuild new file mode 100644 index 0000000000000..214b343915d04 --- /dev/null +++ b/dev-python/frozenlist/frozenlist-1.6.2.ebuild @@ -0,0 +1,53 @@ +# Copyright 2021-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=standalone +PYTHON_COMPAT=( python3_{11..14} python3_13t pypy3_11 ) + +inherit distutils-r1 + +DESCRIPTION="A list-like structure which implements collections.abc.MutableSequence" +HOMEPAGE=" + https://pypi.org/project/frozenlist/ + https://github.com/aio-libs/frozenlist/ +" +SRC_URI=" + https://github.com/aio-libs/frozenlist/archive/v${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="+native-extensions" + +BDEPEND=" + dev-python/expandvars[${PYTHON_USEDEP}] + dev-python/setuptools[${PYTHON_USEDEP}] + dev-python/wheel[${PYTHON_USEDEP}] + native-extensions? ( + $(python_gen_cond_dep ' + dev-python/cython[${PYTHON_USEDEP}] + ' 'python*') + ) +" + +distutils_enable_tests pytest + +python_compile() { + # pypy is not using the C extension + if ! use native-extensions || [[ ${EPYTHON} != python* ]]; then + local -x FROZENLIST_NO_EXTENSIONS=1 + fi + + distutils-r1_python_compile +} + +python_test() { + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + rm -rf frozenlist || die + epytest -o addopts= +} diff --git a/dev-python/google-api-python-client/Manifest b/dev-python/google-api-python-client/Manifest index 5531fd549948e..87a8467a535cb 100644 --- a/dev-python/google-api-python-client/Manifest +++ b/dev-python/google-api-python-client/Manifest @@ -1,2 +1,3 @@ DIST google_api_python_client-2.169.0.tar.gz 12811341 BLAKE2B 31bf7b5aa53a05a7d196ea59f6a03b835628e4bcab312f4799386f1fc344c1774f06882fa502bd06a7d6feb244725a9c3f2396c1ef8ce999480ef9d211e10b44 SHA512 506bf5fc576a0db4d9db1e4abffdc5fa78009a070a7254821393599e3f56c55b6219b16200ea7f776a0ceca8673aa58cd379f952078deaafdc3f72e0591d726f DIST google_api_python_client-2.170.0.tar.gz 12971933 BLAKE2B 51382bb40c74018ec8267130b8ac50152a7b85cf09551c0c0826f0cce763834b2480127ac72a26ac600b5f847cd558651449f35997c335e1f54d51c275687cad SHA512 a2cb7dc10089ffe33c22e9c5ab2cff4836f6982ce708a6efc744ee218a6bb9d42a33afec1bd20213d1c234fe7176f5ffc59f1116c6f4cdc8a0f46e956073f302 +DIST google_api_python_client-2.171.0.tar.gz 13028937 BLAKE2B 8fdb02566b59a6ee863613ec707666ddd959a1962fbd679d8e2ffb0dd2ed9e051390302ed54d3631a6518f4cf2157ff092f8dbb17eb95ff771155a3fe45242f0 SHA512 8237e79f3e6be18bcd2aa8e073c5842768861dbd90faabf25e01cda116afebea0e895a951c01f23f81cda26d70db387b622afa024378f5acb7a6d580d7279663 diff --git a/dev-python/google-api-python-client/google-api-python-client-2.171.0.ebuild b/dev-python/google-api-python-client/google-api-python-client-2.171.0.ebuild new file mode 100644 index 0000000000000..0b6b0c57206a8 --- /dev/null +++ b/dev-python/google-api-python-client/google-api-python-client-2.171.0.ebuild @@ -0,0 +1,50 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{11..13} ) + +inherit distutils-r1 pypi + +DESCRIPTION="Google API Client for Python" +HOMEPAGE=" + https://github.com/googleapis/google-api-python-client/ + https://pypi.org/project/google-api-python-client/ +" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" + +RDEPEND=" + >=dev-python/httplib2-0.15[${PYTHON_USEDEP}] + =dev-python/google-api-core-2.3.1[${PYTHON_USEDEP}] + >=dev-python/google-auth-1.35.0[${PYTHON_USEDEP}] + >=dev-python/google-auth-httplib2-0.1.0[${PYTHON_USEDEP}] + >=dev-python/uritemplate-3.0.0[${PYTHON_USEDEP}] + "${T}"/inputrc || die + local -x INPUTRC="${T}"/inputrc + distutils-r1_src_test +} + +python_test() { + if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then + einfo "Skipping tests on ${EPYTHON}" + return + fi + + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + local -x COLUMNS=80 + + local EPYTEST_DESELECT=( + # broken by epytest args + testing/test_warnings.py::test_works_with_filterwarnings + testing/test_threadexception.py::test_unhandled_thread_exception_after_teardown + testing/test_unraisableexception.py::test_refcycle_unraisable + + # does not like verbosity + testing/test_assertrewrite.py::TestAssertionRewrite::test_len + + # tend to be broken by random pytest plugins + # (these tests patch PYTEST_DISABLE_PLUGIN_AUTOLOAD out) + testing/test_helpconfig.py::test_version_less_verbose + testing/test_helpconfig.py::test_version_verbose + testing/test_junitxml.py::test_random_report_log_xdist + testing/test_junitxml.py::test_runs_twice_xdist + testing/test_terminal.py::TestProgressOutputStyle::test_xdist_normal + testing/test_terminal.py::TestProgressOutputStyle::test_xdist_normal_count + testing/test_terminal.py::TestProgressOutputStyle::test_xdist_verbose + testing/test_terminal.py::TestProgressWithTeardown::test_xdist_normal + testing/test_terminal.py::TestTerminalFunctional::test_header_trailer_info + testing/test_terminal.py::TestTerminalFunctional::test_no_header_trailer_info + + # unstable with xdist + testing/test_terminal.py::TestTerminalFunctional::test_verbose_reporting_xdist + + # TODO (XPASS) + testing/test_debugging.py::TestDebuggingBreakpoints::test_pdb_not_altered + testing/test_debugging.py::TestPDB::test_pdb_interaction_capturing_simple + testing/test_debugging.py::TestPDB::test_pdb_interaction_capturing_twice + testing/test_debugging.py::TestPDB::test_pdb_with_injected_do_debug + testing/test_debugging.py::test_pdb_suspends_fixture_capturing + + # setuptools warnings + testing/acceptance_test.py::TestInvocationVariants::test_cmdline_python_namespace_package + + # PDB tests seem quite flaky (they time out often) + testing/test_debugging.py::TestPDB + ) + + case ${EPYTHON} in + pypy3*) + EPYTEST_DESELECT+=( + # regressions on pypy3.9 + # https://github.com/pytest-dev/pytest/issues/9787 + testing/test_skipping.py::test_errors_in_xfail_skip_expressions + ) + ;; + esac + + local EPYTEST_XDIST=1 + epytest +} diff --git a/dev-python/python-tests/Manifest b/dev-python/python-tests/Manifest index 8bd9981ca6b03..29c33d6aae756 100644 --- a/dev-python/python-tests/Manifest +++ b/dev-python/python-tests/Manifest @@ -1,21 +1,30 @@ DIST Python-3.11.12.tar.xz 20112232 BLAKE2B 95f82af070e86ecf48881103ce6d7211a4a915a93a49b1407eaf445364b7a7daec406cf07eb9334ed47a59397a9796f6a5c70dcc9b7b47103beb3bffc6aa56d7 SHA512 5c95900de73cd187f5d7a89a05314ef85f4d680308d0d5fff5e6ada81f8ecf030018bef0f1a819d007e8b6d01b52e50395572c2d1a56d2c164492e13a69a9926 DIST Python-3.11.12.tar.xz.asc 833 BLAKE2B b874df8019eb3c548598f8723fa38c89189cc375d6ced7cae180ffdc35a8e7b0ba93638861412e19037aa1fee76749186f10c4929dc7f4fb4ef7a8f4561d325c SHA512 cb1f82d44be6de67182747f8ad1054e85cca22753c0c86ff12b95ec7044c5c6c37f40a876e5707a6c422d58f483257b8ddbb3ea87893679f81b9299c48373f20 +DIST Python-3.11.13.tar.xz 20117496 BLAKE2B 444de8eef3a938a387374b152350414b7e2659920784ebc57d5491cacc78cde406b557237fc7f06627e2855f60219b86fe41cb8b82e61fd3b1b448fc7b98af5c SHA512 70f57464d548eac4fe0d0c7f85a14b0e549a4e25ef66de4fc36b06ce72a3efe87dadfcd56ee275c10483cf802fbc9d73b61f9fb2941a46e2f92f075aeb1afe85 +DIST Python-3.11.13.tar.xz.asc 833 BLAKE2B c6860aa8687e53b8d9df5d8442490adaff202bfb23817801562577c8d7b81383376342d8e15c5451e25e270746a6d28167f39cfdd75be589e0d58187026a4830 SHA512 6e261490bc7777f0bcebd0464867df98b7955b32f13a445aab3cb6a1a1d3fb804817638f67a8586910fb97291a805b64f130909c06257903f431f8634c691c3b DIST Python-3.12.10.tar.xz 20520960 BLAKE2B f05805da36958e3ebb68c69353e8119b20ee4c1a123f4492e9bf614e7faa856180ef2017f2a698bcacf19cac01d89329ed5ee45e00c98b255d4854090a2e6926 SHA512 520c30e3958d0be3c127e5dbb1c52bb3bfc404b5b3c7eb56525e25b9b59af9b21b53bee192f323f470e1df806f6cb2dd3411eb90cbc1c4b7d9b6b0777c29e644 DIST Python-3.12.10.tar.xz.asc 963 BLAKE2B 45e1ec67311d1ac5679cb5a05b92e61f3e5e6e9d3ffa5462c09c2aa066fda7ea915df13f6e5ad33aa924f6ce1f18e2d78a31af15412a10c093fc8a5b536c5133 SHA512 7edfa6fd816cf2a052abdb775d464e2f389105ed3e782cacf90805613aaca54bf71308504a5336ee1204e872e7db28df32413fb10b057056b0d5cb3c7a20a9f1 +DIST Python-3.12.11.tar.xz 20525812 BLAKE2B 08eed9d91fe0be305fe9832f5fae5ed4ffdb524283079b6473ed77cc277671356ce2b8f6ca97f55f8ee4954a35fe399099773d0699d6bfbc0aa87a7e9271ba8b SHA512 81f259c5bb293a5b685ebead1dff56c7c9d28eed12edb508b3e5e1a882991e762fc959803cf2734f4233bb1c5407b4f5303324c67b25d860b069d38bbebe4454 +DIST Python-3.12.11.tar.xz.asc 963 BLAKE2B 4c7eea750312ba996f88c452e51b58c0176d53f43e5bd30fd41a931540320b598b6d1e93d79996ce30dfa22858c4c3ed2cb24d16ba0a891a146fbf81ec60b07b SHA512 3589deba17c5adcfcd614387a5207ad20db56cd9c7937eb44e21035a8745f1c6bb9a1b7cfe8bc5b58ecc7cca09ed49fd4c2878f65baecb2514e79c666f85a22e DIST Python-3.13.3.tar.xz 22654240 BLAKE2B 24ac47c13cbfa4dc9ce6ae4d18d7b5310f83ac1f4f18722138ef07e01cb8ac37edf6f4301983cb468f533b9b475b5a9d761d3044e61c7ccaa99dceadb954fe34 SHA512 f7559b6dceae69f48742af0a6497fbec42cd1e5304f64b6eb9d89222a1171ccf12fa186cc0decabb4e98d05223184967a4a7537754c01083dacdc9073cb1a578 DIST Python-3.13.3.tar.xz.asc 963 BLAKE2B 4a98965305b80e985512f54d9ce8ab88a74fe0d3ee48e300fbc2b4e251c0f499f4eb935e0aeb6d5ad8262338643325126f094fff926da1e2b9a2b3a2247701dc SHA512 54f8da5f4a4dcadc9830cb07aecf695a26a2de48ab98e1f42b09fdde1c70989476d07ce7ea81337216f1e5fcbf6b688e0608c88a2545ced416b01640108e94db +DIST Python-3.13.4.tar.xz 22672472 BLAKE2B d453538db82084f490456416829c7d30672e5c05c1c1baf428493f16fa78ce63b69544787373e4679826f32a18af5c5de5225f8f507699113346917df0e3de31 SHA512 91454bb4d04c192721d2df980a806858bd8aadb5cef92159c2844cc33e92b0386b1b33d5cfff0f69d449e9f978a5f67f6032155f7b1425ff38e36477637c0c68 +DIST Python-3.13.4.tar.xz.asc 963 BLAKE2B 5c594f95a7b74c2191b553f50020cd6db9b400f32af62d12094fa4c449651079a662645de8118a7a661c4ceafceb9ce5bcecbbbf8d6bc80d6657a0247e88e510 SHA512 ba9c1dee0f3bf564e6ac19cbe08cf4fdc3779a04ed8289654f6dda3fba9f07a0937764a12f1e7e2f6d7ff17bb5b86c05b8ea19296a2b98d1c81a48362ccf6104 DIST Python-3.14.0b2.tar.xz 23579860 BLAKE2B bf5ebac54531a7c837e7650754264b4be28e28613d488d1c7546db77e2ef3b501ff646d7fb505c6ac0fa1381c3230d1c1899bc82144f369339c89687b5dc7f5c SHA512 cdd37f8a982e6194d5afa80a2eb94c899080809749d59a50a2ce3eed37f720a1fd9a7977f0dd3992650d173a7070b15610077d97cb499bd16a7500c56ef1f8dd DIST Python-3.14.0b2.tar.xz.sigstore 5131 BLAKE2B 04cab57a4da63f5abf28db94e5fd952206124ce37ef5a5d981839a0790881c9c4ea6d186f233eaaf6e82350bdfdbb0048d761b816d81eaba71c707bd9714a9d9 SHA512 a356037824fbde5950f197cf04f0d71ddaf4b68006b2ab9951f9b4c2df508e84bd0bec7d72051e75d22c17eee767e46e5d2c167e853fb941b0831cb26d518fdc DIST python-gentoo-patches-3.11.11.tar.xz 10604 BLAKE2B 6be4c66b0458f7a7085aef976cff3dcb4d114ac0b64fb27327a5693e8d41a77f7eeed718b9c5a1b1961278235ee4cd43497aa3dc27e6e6bed65804b95f667a15 SHA512 ab8113a94949cead34d976179f80c3e0a6686bf2476079a74f97b4d08c24a237500dc7ee09dc3b0ec98d2fbcb138397c73d7e2252e617a957a13999e59115158 DIST python-gentoo-patches-3.11.12.tar.xz 15616 BLAKE2B 5d4a47058fc35c4ae966e3dff823f91129852bf81cd586d5b3a34a6daf672732918daf00199394f2f982411ec30a291f45bba55b3ffa3d96a179ecd600ea4647 SHA512 77973ef88403f94d55162e0138cd29b4d8959a8fcf4cec730daf7ddd8fb4a3acfcd0dd1fdaacbdd2b218bd15f6c6715ce339df4eba48227d17520243d96eeb39 DIST python-gentoo-patches-3.11.12_p1.tar.xz 22192 BLAKE2B 2d7f39d1d55428e5dc617a796a3147046c0549bd8fc26a1d3b2701ca2ab17a4cc990b8fed925a7b8d7c410b12f4c22e14f9e64d7ea4b2c387c919570abad259f SHA512 363b049824b520b92541569d315e4e67192f3bd915f44f600acc51858ae3960b0060222cab2612f9aef53c7b2a0e323d197e107c9bcbdc4625572303d6393a5c DIST python-gentoo-patches-3.11.12_p2.tar.xz 37360 BLAKE2B 0f8a3b260e4f1d1c824fd962f8ed0fd7e50cb3384795b3bc03f83511dce73235aa4c43a51a5e2198aedc06467b35962b9e55a97eb58d569844d6298b3bee1c15 SHA512 48fbabd1f82c5a6ecc75067e007c62cbefa5efd3276c7aadb802892c3ebe5bdaaad01ad8bff92cec6bfc6f5212c842105540f3bf7c679cb31dee36013a99ee8f +DIST python-gentoo-patches-3.11.13.tar.xz 16492 BLAKE2B 8b188742dd3f25974cead290e5793c31f02741a901dce65137c596045fa2fbd5baaef332204af90f95ddcd864ee542b252c00b190e15c25af60a7bda771b116f SHA512 b5abad341d2eede81df445b56a98720466ec23df40a8a2e99a04dba5a106205655c8e2b64df0ca2630f036c8fe457ba64524280d137bbc99f52e4fd8e6bbd5ae DIST python-gentoo-patches-3.12.10.tar.xz 10744 BLAKE2B 2abf4874018156d6735cf8604c410dc4726ac9365bc7500abe6b82472aad100aac7268957256692f4275b02965773e58178519ed8038e121f1ffa3c53770d238 SHA512 62066405aa00f46f9645e9c747d53bb93bf510fc791d14d49e00edfd79981778e6c8e07bfa7bac88d76407a0ffd8f7321dea89f81d90b01dbf13f4d381b6a1a3 DIST python-gentoo-patches-3.12.10_p1.tar.xz 17356 BLAKE2B 9a87b3a6f04977067cb0ce126e45c9d584145bc9cf1d43e46e7ae5e295a14d69b07b6e20c18bff74d02f0e6c3617e8c1ff015097be32cb7dc76ae45ab71d1a41 SHA512 d98f27176d3ea2532c2f8c0a2eadf23f1f0b305e08bbbfd12acfae7308070d70a8d3c3eb60fe157f4ff51cb6302bea5882d75f6a8028310c95309aed3bdaddb5 DIST python-gentoo-patches-3.12.10_p2.tar.xz 33236 BLAKE2B e73edf8caf53799f4407ebd08211e86e6c8850441c3c845264b7d250b9fd1630865ff9dfa184ab6f0a4ac2f56326f88af24a006c68d62e2f57c027f93ec6cd31 SHA512 36e2bf3d288a06e60f412e4335563d8633ee2a5c4c798d6a90133d7dcbd3cbc4d9a9c8f1167e10f52740f34cb2ea510981166c6b7a333587118c4da85a1ef354 +DIST python-gentoo-patches-3.12.11.tar.xz 12020 BLAKE2B b419d32b1d7bef9408027edda7eac9a920a877e1b8f521483df595199bad1bbadd9dd9500079c09beab63286a801bfb25da5f93a5d31462ed3e457a6e40ad6af SHA512 1b0eaff4c0df06554525a50576da7eadb4067c4f2970851e5c9e3e527a9ccc4216cbd65c45fd562af4a1cedc2c66278a74bee5cf5c1a65df8feb22f34f5a19e4 DIST python-gentoo-patches-3.13.3.tar.xz 8336 BLAKE2B 66393886fbd034eb14732e4f81f5798e77650ea3fe1c4f8176bd93808b711c8977a53c3f52be6c9b97a368299258b851d9bdb6d4c8e0c75695c6aea784d48b44 SHA512 c1ed31d6aaef81addf786c2ccc1013309b122b791c42fe10e467a677d0db8f149e8b1cc21928c146298918c7ceb851b4b19d1e59f491cb161004e1c9386db289 DIST python-gentoo-patches-3.13.3_p1.tar.xz 15164 BLAKE2B 56420b8d051fbf3eb47f2bce08c79f167b9fbaa89f8ee932e3db27ea08a191f042e1f0114c1377c8210060332141b36eb1d582507185c983297a1d61573aa435 SHA512 1e138be3ef5c03e4d0b520aa736cdec44daf2956a931f4080e53b0652ebefa48095cad837e7bae4cc90bd42fbb7aba6f25c61e3c880ca1a581a745744b011fa3 DIST python-gentoo-patches-3.13.3_p2.tar.xz 36284 BLAKE2B c1f62268013a055ac477e3e7b49c313d8a41e1fdbd806bb9ddb3a57926297ba7d67e20dadc47ab21ec35f1b0bc504ffd4f039846d8588d143f4e379d8bdc5a12 SHA512 d80856c60c519f28660d6ac5c3df0446759df4c962ab5c989dca1147e92e53e07ed19c75f75a7fdce8e85e919bc77c6ad06a25a611c09764b3eafd61f7d8b63d +DIST python-gentoo-patches-3.13.4.tar.xz 8912 BLAKE2B e3d9f2a12f801dc75e09c5301757f35216d712b5e5394f2ec3ce1d79d0cb57571dbca525e3d5c35b90fa059c2b78ee24341b6a51cbe9691deac84c9ee0578824 SHA512 1a7141accb7aa70c7bd8dd12528f7de031dfeab9ff089f3d044da0b7b52461e2d6d7d1467161e0fe1e259d9fa06d70bcf107d86ad3590e8cf73aa1132ef3aaf9 DIST python-gentoo-patches-3.14.0b1.tar.xz 5680 BLAKE2B 514b3edc3025e5bf675d371b5ada17dea426856edf1fb6095c2ee400eae95bd4265ef81fe593ae9338e801e7d0a25b1d5ba2d05ca563fd9dd020114b13575746 SHA512 74289e42cf532b54bb1b66a283ec19156f8a36ba38764209c133842314c9efb2ce2ebcba5aa9213bcf7fc0c8a5ca9b6e7adbd5dbfa4397233136d7cd55f53ee7 DIST python-gentoo-patches-3.14.0b2.tar.xz 6168 BLAKE2B ecf2fd981efc289fbc16d615c6e69ad7a797bd6906e6f974ece47eace582d7c4b3ea0217b0df9575e522416df2749125ff3658d8aca6a53bf977d5f155dd6b90 SHA512 552ff5306ca43c89e65b1df42cb71753c7e900efc4be7e35150c187184a5e94241fea78bb9084831508fd4a7e71323be59c1565901560ec53fc076c3697baf34 DIST python-gentoo-patches-3.14.0b2_p1.tar.xz 23992 BLAKE2B 65346fe06b2f03251882542b90821c28bd16d9f1c81d1e594bf78403689b444688a9cffa1d52faf63dd9c4db301a9b2a1e6729026e73525fe2f0622f896b6a46 SHA512 c98600da507541c0ba3a03dcaa6d344596fd8f5ef8169eff276318ed33a38ba4794ea346b25b9d11f9a277334bdcc1105e6332bb212602c3c993866340aa8482 diff --git a/dev-python/python-tests/python-tests-3.11.13.ebuild b/dev-python/python-tests/python-tests-3.11.13.ebuild new file mode 100644 index 0000000000000..2de17f07042b1 --- /dev/null +++ b/dev-python/python-tests/python-tests-3.11.13.ebuild @@ -0,0 +1,76 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_11 ) + +inherit python-r1 verify-sig + +MY_PV=${PV} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="Test modules from dev-lang/python" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}/Lib" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +# enable by default to help CI handle it (we have no additional deps) +IUSE="+python_targets_${PYTHON_COMPAT[0]}" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +RDEPEND=" + ${PYTHON_DEPS} + ~dev-lang/python-${PV}:${PYVER} + !> pyproject.toml <<-EOF || die + [build-system] + requires = ["uv_build<9999"] + build-backend = "uv_build" + backend-path = ["src"] + EOF + + # rename to make uv-build find it + mv python src || die +} + +python_test() { + "${EPYTHON}" -m build -n || die "Self-build failed with ${EPYTHON}" + + local zip_result=$( + unzip -t "dist/uv_build-${PV}-py3-none-any.whl" || die + ) + local zip_expected="\ +Archive: dist/uv_build-${PV}-py3-none-any.whl + testing: uv_build/ OK + testing: uv_build/__init__.py OK + testing: uv_build/__main__.py OK + testing: uv_build/py.typed OK + testing: uv_build-${PV}.dist-info/ OK + testing: uv_build-${PV}.dist-info/WHEEL OK + testing: uv_build-${PV}.dist-info/METADATA OK + testing: uv_build-${PV}.dist-info/RECORD OK +No errors detected in compressed data of dist/uv_build-${PV}-py3-none-any.whl.\ +" + if [[ ${zip_result} != ${zip_expected} ]]; then + eerror ".zip result:\n${zip_result}" + eerror ".zip expected:\n${zip_expected}" + die ".whl result mismatch" + fi + + local tar_result=$( + tar -tf "dist/uv_build-${PV}.tar.gz" || die + ) + local tar_expected="\ +uv_build-${PV}/PKG-INFO +uv_build-${PV}/ +uv_build-${PV}/README.md +uv_build-${PV}/pyproject.toml +uv_build-${PV}/src +uv_build-${PV}/src/uv_build +uv_build-${PV}/src/uv_build/__init__.py +uv_build-${PV}/src/uv_build/__main__.py +uv_build-${PV}/src/uv_build/py.typed\ +" + if [[ ${tar_result} != ${tar_expected} ]]; then + eerror ".tar.gz result:\n${tar_result}" + eerror ".tar.gz expected:\n${tar_expected}" + die ".tar.gz result mismatch" + fi +} diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest index 66962614f5f0e..d00587b0f6df6 100644 --- a/dev-python/uv/Manifest +++ b/dev-python/uv/Manifest @@ -4,6 +4,8 @@ DIST rs-async-zip-c909fda63fcafe4af496a07bfda28a5aae97e58d.gh.tar.gz 51763 BLAKE DIST tl-6e25b2ee2513d75385101a8ff9f591ef51f314ec.gh.tar.gz 37106 BLAKE2B c30d1c33f6f52e2bc83823eb6319f8a3e462b7c7408fb6a08f995747857ef234f81db4135a04f9d183095fe473a4087f8f0cb89d8f87ef4400285d2ce034ec22 SHA512 4abbc4240ed129c92da8d616e27a6df0f24cdc85a0803acfdae588ca91f9e5b8d482e3ac88b2e657ff68917b1b43cef1e7ef3c887f624659b231fa5a13fcae68 DIST uv-0.6.17-crates.tar.xz 58061436 BLAKE2B d86afdb51411ceabb529f7b23dfc10b85eac27b012aca1785a4f9d47c758ef9043ed84ae843c66f55a48ad24b21c2c8c89edad4b6043ac27c82c529db0ee4e28 SHA512 30a7770d2f45db03a618adada46fd1d8a000a940f5750a0c16ec7261c232ee7909d38f4725f82457580e34575342e256bbcc7378e0bec06b69bec17c9c0e69f5 DIST uv-0.6.17.gh.tar.gz 3995730 BLAKE2B 368a877294dc9e1e1f29599b5589242899f9a6cf5767b6fa10d5987d18a1cb6704aad34ad136522ac3256cc0802bad4442bebde94ff4e3dd6d7763b73fa8cca1 SHA512 aae465ef02a29a856f4de69230f77d31149c95ed5a88e489b46c34aa61020f29dcf406168abea77626e7d5297b2e004a89445f343e3ee763c297981b0d50233a +DIST uv-0.7.10-crates.tar.xz 52013636 BLAKE2B f5063aba01bbb91219d2852be9563f2b48be7c534a1ed69e88bd3b702de12df418484e2c7593a7e5237c4f0d71282cc849e1b2f473275355496a9e2977eeb6ad SHA512 6cb80a362a9abef725e2e062d864fc54a81a83431a15012321f7b561fc4b0a5d30301f52c2f2c50cadfbc821bf3f8a3397a0c55d422649c1c940d43d45e65d03 +DIST uv-0.7.10.gh.tar.gz 4020442 BLAKE2B a7f23494671706b439a14148241066454489fd9df9817ccce0a15bc464c6c07f727932ef973a227bcb4d76bb035be4fe59c1fe00030f8a2121a73dc0f993ad0e SHA512 a92521fcbc03abb07ed5bcda653aa218e7082777b517747224619c7bad6c9b05fad837088198aeb419fd3fac164be8d248cb699ca7a39a77298e83e86398594c DIST uv-0.7.8-crates.tar.xz 45495772 BLAKE2B f8b9587302dfd96ba15b540f0897b9720ea06434d2d2e93e795793df874179ef79e544a07b9e158e890d119fa2d3beee9d0a884a3c78540ec6c8abe2cc902bba SHA512 78586fd9fbe4cd9e0b737609a8b8c438ac422be1dbcde7a8553234981ee4be8136efe50b2c14b6863b6256a337cab977948641bb196e5f718188a66b25f1f5f5 DIST uv-0.7.8.gh.tar.gz 3993156 BLAKE2B a11245cb77ceab214ee021d973515c164048938afb67d878bf282e26f8c1f190187ef7a52af966247298d6a758baa97e36fce0a556c9ac145b3f01c8aea18d56 SHA512 109821612a9a07bf0fdadcc942893a8e024ef828f22f25b5d3f2a10088882892cb84a8b1e37874e7346c9a0815dcd15cb736a2a768ff525c6198482fe7aba3ff DIST uv-0.7.9-crates.tar.xz 45526908 BLAKE2B 66951afc70feb4719c5af415c0503c6e8daff850227d9773406f6e4c0c9bb960a56573675327b04297437481852cc9236bdf240476cf1c151e52ff4caf170c72 SHA512 6ea0d4e02e28edc47d420c095b426136aeb1e4af2c3181e104f67405b180d6ce51f1db122cc6d49ac876a68711d43aa2fdae5fd710523c03d6d302d41da47e02 diff --git a/dev-python/uv/uv-0.7.10.ebuild b/dev-python/uv/uv-0.7.10.ebuild new file mode 100644 index 0000000000000..2d1639acdcdb4 --- /dev/null +++ b/dev-python/uv/uv-0.7.10.ebuild @@ -0,0 +1,175 @@ +# Copyright 2024-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CRATES=" +" + +declare -A GIT_CRATES=( + [async_zip]='https://github.com/charliermarsh/rs-async-zip;c909fda63fcafe4af496a07bfda28a5aae97e58d;rs-async-zip-%commit%' + [pubgrub]='https://github.com/astral-sh/pubgrub;06ec5a5f59ffaeb6cf5079c6cb184467da06c9db;pubgrub-%commit%' + [tl]='https://github.com/astral-sh/tl;6e25b2ee2513d75385101a8ff9f591ef51f314ec;tl-%commit%' + [version-ranges]='https://github.com/astral-sh/pubgrub;06ec5a5f59ffaeb6cf5079c6cb184467da06c9db;pubgrub-%commit%/version-ranges' +) + +RUST_MIN_VER="1.85.0" + +inherit cargo check-reqs + +CRATE_PV=${PV} +DESCRIPTION="A Python package installer and resolver, written in Rust" +HOMEPAGE=" + https://github.com/astral-sh/uv/ + https://pypi.org/project/uv/ +" +# pypi sdist misses scripts/, needed for tests +SRC_URI=" + https://github.com/astral-sh/uv/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz + ${CARGO_CRATE_URIS} +" +if [[ ${PKGBUMPING} != ${PVR} ]]; then + SRC_URI+=" + https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz + " +fi + +# most of the code +LICENSE="|| ( Apache-2.0 MIT )" +# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below +# Dependent crate licenses +LICENSE+=" + 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD Boost-1.0 + CDLA-Permissive-2.0 ISC MIT MPL-2.0 Unicode-3.0 Unicode-DFS-2016 + ZLIB +" +# ring crate +LICENSE+=" openssl" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +IUSE="test" +RESTRICT="test" +PROPERTIES="test_network" + +DEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + app-arch/zstd:= +" +RDEPEND=" + ${DEPEND} +" +BDEPEND=" + test? ( + dev-lang/python:3.9 + dev-lang/python:3.10 + dev-lang/python:3.11 + dev-lang/python:3.12 + dev-lang/python:3.13 + !!~dev-python/uv-0.5.0 + ) +" + +QA_FLAGS_IGNORED="usr/bin/.*" + +check_space() { + local CHECKREQS_DISK_BUILD=3G + use debug && CHECKREQS_DISK_BUILD=9G + check-reqs_pkg_setup +} + +pkg_pretend() { + check_space +} + +pkg_setup() { + check_space + rust_pkg_setup +} + +src_prepare() { + default + + # force thin lto, makes build much faster and less memory hungry + # (i.e. makes it possible to actually build uv on 32-bit PPC) + sed -i -e '/lto/s:fat:thin:' Cargo.toml || die + + # enable system libraries where supported + export ZSTD_SYS_USE_PKG_CONFIG=1 + # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys? + + # remove unbundled sources, just in case + find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die + + # bzip2-sys requires a pkg-config file + # https://github.com/alexcrichton/bzip2-rs/issues/104 + mkdir "${T}/pkg-config" || die + export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}} + cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die + Name: bzip2 + Version: 9999 + Description: + Libs: -lbz2 + EOF +} + +src_configure() { + local myfeatures=( + git + pypi + python + ) + + cargo_src_configure --no-default-features +} + +src_compile() { + cd crates/uv || die + cargo_src_compile +} + +src_test() { + # work around https://github.com/astral-sh/uv/issues/4376 + local -x PATH=${BROOT}/usr/lib/python-exec/python3.12:${PATH} + local -x COLUMNS=100 + local -x PYTHONDONTWRITEBYTECODE= + # fix tests failing because of our config + local -x XDG_CONFIG_DIRS=${T} + + cd crates/uv || die + cargo_src_test --no-fail-fast +} + +src_install() { + cd crates/uv || die + cargo_src_install + + insinto /etc/xdg/uv + newins - uv.toml <<-EOF || die + # These defaults match Fedora, see: + # https://src.fedoraproject.org/rpms/uv/pull-request/18 + + # By default ("automatic"), uv downloads missing Python versions + # automatically and keeps them in the user's home directory. + # Disable that to make downloading opt-in, and especially + # to avoid unnecessarily fetching custom Python when the distro + # package would be preferable. Python builds can still be + # downloaded manually via "uv python install". + # + # https://docs.astral.sh/uv/reference/settings/#python-downloads + python-downloads = "manual" + + # By default ("managed"), uv always prefers self-installed + # Python versions over the system Python, independently + # of versions. Since we generally expect users to use that + # to install old Python versions not in ::gentoo anymore, + # this effectively means that uv would end up preferring very + # old Python versions over the newer ones that are provided + # by the system. Default to using the system versions to avoid + # this counter-intuitive behavior. + # + # https://docs.astral.sh/uv/reference/settings/#python-preference + python-preference = "system" + EOF +} diff --git a/dev-util/pixi/Manifest b/dev-util/pixi/Manifest index 66b6800e31f04..3a8551adb4c2f 100644 --- a/dev-util/pixi/Manifest +++ b/dev-util/pixi/Manifest @@ -1,8 +1,10 @@ -DIST pixi-0.46.0-crates.tar.xz 72079412 BLAKE2B aebe04adbff588bbb9d556561f8658829cb0a08295db10df5d4e5d33706a21ea28f779bd50cd5efc6537a08bb70d72bb6931d4609e6e7ce8df7b4382e3fa533f SHA512 27648e54e88d94a239291dd551770b508e48bc791972fc1e9b06499ae0b09cabbe868bdc2b10eea1f1b97a78812b847ee821620d070b65d7e1cb29ee649b60b1 -DIST pixi-0.46.0.tar.gz 7924657 BLAKE2B ee854a4c4abecbffd98ad28601262c399c8287f3274460131d5942790ad9ab9b6c837f5a6b4b77121eeaba50252ae66c17aa7c1401374834ad3cb30dcc6103a8 SHA512 615bbf93379129639a69a5efa235fd59619b237224a194a9418667af5716e1499ec35015444b380d20eae6fb06a8284868264887afc5bd31536adf6debaeeb5a DIST pixi-0.47.0-crates.tar.xz 72680920 BLAKE2B 830631ed4c98c799139b6ed6d4198f234da693cceab846be2f8997058fabecf87b4e6b114309e2554c16d7ea20997e55e66e235b249681b635ed248a0bd68793 SHA512 2881da7cf753bf170786a0bdf35460759493c419aee993266e4f3e0c23c4a543eb2ae615f524e48ee799b14f39222d34d2840cb259ca61d3ff6dc195ffbd2622 DIST pixi-0.47.0.tar.gz 8159978 BLAKE2B d13ab86fb8d18235651c63d8558b93e81117c5ea3fe7d399ddc8a25500e1ee55a9f547a2da1169dd8cea714342c9e54c5ee1547dcf876fd178294072073b9412 SHA512 7340c0f62fedbcf95da2e6d81ffba453688348a80acf13fcda30398346009b97065abc60335599ea88744abe433a8270106e44b68052c542b58c2f168123f44f +DIST pixi-0.48.0-crates.tar.xz 72999732 BLAKE2B c216537f4cba7feb2832c9542b096560efb05f03355abaed1d04f0443cf0d7b3c5384f6a43e51c6979c136975681b5e97f99addbfe7121ffc07bcfacddaf6760 SHA512 0a8c34bbd5803bce4c3e1a4c4ad8700839d381bf69ed0282a2837cab31b970bee64cbb0c6066645983a89067f2f5ca6db3750a57557ad181ba6455782932ba9f +DIST pixi-0.48.0.tar.gz 9411258 BLAKE2B 8ef5155fa82183061740e1dcaa6491c9da26147e0ce448d84935b3f44bf33c6d65e89eefe94b2069745ca6e2b5c5d61ffa9d374a0b1341c0130d696d5bee2fe3 SHA512 7dbe18febfcc06631c33001243d68e1efd1a8a278aecabf212b3ad4d81567ec5a9e4db318023e3678d50f3903c0793e9393ed90a0aabdffd0b1ae84425c18065 +DIST pubgrub-06ec5a5f59ffaeb6cf5079c6cb184467da06c9db.gh.tar.gz 99881 BLAKE2B 5fcc2d1a06eb44351773081de4f616c93301eb2fe71b0c6f7b95779ec4bd9bb6cccc702a87a6399b0674711302a19de3a96fa31044660430fd74ff549000ad25 SHA512 3f0b18aecbc73fee91fc7de9f10d240ddc06c836fa2f116c1f007dd7818d099e6aea1852ca0b8d1a26ac19aac896535dba1a6298851a65515b553810c6245784 DIST pubgrub-b70cf707aa43f21b32f3a61b8a0889b15032d5c4.gh.tar.gz 98983 BLAKE2B 08ad8a10a96ba7da3100f7658f38cb8d6fb0e1eca92ba0aaf1393778012db807084f047eec171f0a46836a6746367369e79ab95836d5cdf215211e321d2800ac SHA512 401ea5ca16e978d5407a1400e4e27cec9fcac11332067ee1ed8a3bc511901e08fc421ce875ebbb0990593ed549a4a5f4620914a71ae3490c7b8ae0f7b26b5937 DIST rs-async-zip-c909fda63fcafe4af496a07bfda28a5aae97e58d.gh.tar.gz 51763 BLAKE2B 59d053bc6692014d884a9247dea1b57a8789469ba2abbcc92ec21bb0022cbd74874afc463082156ab697aa6c80635019857a5d7e2dc150274e8b04d720518c36 SHA512 3a309566f4925b02496fcf19bc2865968edf6fb65082ca4079d2cee79e6b0353a1910c079f2afe656da0d0f6ddde5102052a221ea35a7dabc6d690a11218b20a DIST tl-6e25b2ee2513d75385101a8ff9f591ef51f314ec.gh.tar.gz 37106 BLAKE2B c30d1c33f6f52e2bc83823eb6319f8a3e462b7c7408fb6a08f995747857ef234f81db4135a04f9d183095fe473a4087f8f0cb89d8f87ef4400285d2ce034ec22 SHA512 4abbc4240ed129c92da8d616e27a6df0f24cdc85a0803acfdae588ca91f9e5b8d482e3ac88b2e657ff68917b1b43cef1e7ef3c887f624659b231fa5a13fcae68 +DIST uv-0ddcc190556d9d20686bd81f17a364cf907e8f68.gh.tar.gz 3996009 BLAKE2B 9ef58854d20c93e3dd9cc6b96742cb97a49fb9c395b64a114e87a2fbf2972d5e3577dc6a084b8cd630ae3ad7d84fc82f1957306d8a725fd85d3c7fc196b9ab8c SHA512 a5424ea95c8f38c88965ad6d633d65fa97fee7739fad9ab0aefc3b623641273895d7ae6449841fe69cbbaf4f809a108c6944dfdc8a435963822f55fa83819ac2 DIST uv-3d946027841ac949b9ecfd5ceaeec721836ee555.gh.tar.gz 3809296 BLAKE2B 48d163f5aa19dba2043f3d0a94f952e7266cabc37197253d91cb69286abd121ab588edfc312f2560a15444a59cc9b14cf8ebb4b8fdffe9935579d9152bf75cd5 SHA512 640ad76d4db5bf2f3db21a37d7cf9465ceae7282855f305d1df3c215a261f4cabc25b2297471a82bbe0cb29d088bfa56b850279daa0ed1288b843af5428fd28f diff --git a/dev-util/pixi/pixi-0.46.0.ebuild b/dev-util/pixi/pixi-0.46.0.ebuild deleted file mode 100644 index d1c17e6b417e9..0000000000000 --- a/dev-util/pixi/pixi-0.46.0.ebuild +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright 2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -CRATES=" -" - -declare -A GIT_CRATES=( - [async_zip]='https://github.com/charliermarsh/rs-async-zip;c909fda63fcafe4af496a07bfda28a5aae97e58d;rs-async-zip-%commit%' - [pubgrub]='https://github.com/astral-sh/pubgrub;b70cf707aa43f21b32f3a61b8a0889b15032d5c4;pubgrub-%commit%' - [tl]='https://github.com/astral-sh/tl;6e25b2ee2513d75385101a8ff9f591ef51f314ec;tl-%commit%' - [uv-auth]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-auth' - [uv-build-backend]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-build-backend' - [uv-build-frontend]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-build-frontend' - [uv-cache-info]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-cache-info' - [uv-cache-key]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-cache-key' - [uv-cache]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-cache' - [uv-client]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-client' - [uv-configuration]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-configuration' - [uv-console]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-console' - [uv-dirs]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-dirs' - [uv-dispatch]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-dispatch' - [uv-distribution-filename]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-distribution-filename' - [uv-distribution-types]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-distribution-types' - [uv-distribution]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-distribution' - [uv-extract]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-extract' - [uv-fs]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-fs' - [uv-git-types]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-git-types' - [uv-git]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-git' - [uv-globfilter]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-globfilter' - [uv-install-wheel]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-install-wheel' - [uv-installer]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-installer' - [uv-macros]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-macros' - [uv-metadata]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-metadata' - [uv-normalize]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-normalize' - [uv-once-map]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-once-map' - [uv-options-metadata]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-options-metadata' - [uv-pep440]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-pep440' - [uv-pep508]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-pep508' - [uv-platform-tags]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-platform-tags' - [uv-pypi-types]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-pypi-types' - [uv-python]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-python' - [uv-requirements-txt]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-requirements-txt' - [uv-requirements]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-requirements' - [uv-resolver]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-resolver' - [uv-shell]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-shell' - [uv-small-str]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-small-str' - [uv-state]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-state' - [uv-static]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-static' - [uv-torch]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-torch' - [uv-trampoline-builder]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-trampoline-builder' - [uv-types]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-types' - [uv-version]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-version' - [uv-virtualenv]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-virtualenv' - [uv-warnings]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-warnings' - [uv-workspace]='https://github.com/astral-sh/uv;3d946027841ac949b9ecfd5ceaeec721836ee555;uv-%commit%/crates/uv-workspace' - [version-ranges]='https://github.com/astral-sh/pubgrub;b70cf707aa43f21b32f3a61b8a0889b15032d5c4;pubgrub-%commit%/version-ranges' -) - -inherit cargo - -CRATE_P=${P} -DESCRIPTION="A package management and workflow tool" -HOMEPAGE=" - https://pixi.sh/ - https://github.com/prefix-dev/pixi/ -" -SRC_URI=" - https://github.com/prefix-dev/pixi/releases/download/v${PV}/source.tar.gz - -> ${P}.tar.gz - ${CARGO_CRATE_URIS} - https://github.com/gentoo-crate-dist/pixi/releases/download/v${PV}/${P}-crates.tar.xz -" - -LICENSE="BSD" -# Dependent crate licenses -LICENSE+=" - 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD Boost-1.0 - ISC MIT MPL-2.0 MPL-2.0 Unicode-3.0 ZLIB -" -SLOT="0" -KEYWORDS="~amd64" -IUSE="+rustls" - -RDEPEND=" - app-arch/bzip2:= - app-arch/xz-utils:= - app-arch/zstd:= - !rustls? ( dev-libs/openssl:= ) -" - -src_prepare() { - default - - local vr_dep=$(grep version-ranges "${ECARGO_HOME}"/config.toml || die) - sed -i -e "/version-ranges/s;^.*$;${vr_dep};" Cargo.toml || die -} - -src_configure() { - local myfeatures=( - $(usex rustls rustls-tls native-tls) - ) - cargo_src_configure --no-default-features - - export ZSTD_SYS_USE_PKG_CONFIG=1 - - # bzip2-sys requires a pkg-config file - # https://github.com/alexcrichton/bzip2-rs/issues/104 - mkdir "${T}/pkg-config" || die - export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}} - cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die - Name: bzip2 - Version: 9999 - Description: - Libs: -lbz2 - EOF -} - -src_test() { - # tests use it to test preserving envvars, apparently assuming - # it will be always set - local -x USER=${USER} - cargo_src_test --no-fail-fast -} diff --git a/dev-util/pixi/pixi-0.48.0.ebuild b/dev-util/pixi/pixi-0.48.0.ebuild new file mode 100644 index 0000000000000..b74d895cbf7df --- /dev/null +++ b/dev-util/pixi/pixi-0.48.0.ebuild @@ -0,0 +1,128 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CRATES=" +" + +declare -A GIT_CRATES=( + [async_zip]='https://github.com/charliermarsh/rs-async-zip;c909fda63fcafe4af496a07bfda28a5aae97e58d;rs-async-zip-%commit%' + [pubgrub]='https://github.com/astral-sh/pubgrub;06ec5a5f59ffaeb6cf5079c6cb184467da06c9db;pubgrub-%commit%' + [tl]='https://github.com/astral-sh/tl;6e25b2ee2513d75385101a8ff9f591ef51f314ec;tl-%commit%' + [uv-auth]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-auth' + [uv-build-backend]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-build-backend' + [uv-build-frontend]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-build-frontend' + [uv-cache-info]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-cache-info' + [uv-cache-key]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-cache-key' + [uv-cache]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-cache' + [uv-client]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-client' + [uv-configuration]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-configuration' + [uv-console]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-console' + [uv-dirs]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-dirs' + [uv-dispatch]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-dispatch' + [uv-distribution-filename]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-distribution-filename' + [uv-distribution-types]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-distribution-types' + [uv-distribution]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-distribution' + [uv-extract]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-extract' + [uv-fs]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-fs' + [uv-git-types]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-git-types' + [uv-git]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-git' + [uv-globfilter]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-globfilter' + [uv-install-wheel]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-install-wheel' + [uv-installer]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-installer' + [uv-macros]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-macros' + [uv-metadata]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-metadata' + [uv-normalize]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-normalize' + [uv-once-map]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-once-map' + [uv-options-metadata]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-options-metadata' + [uv-pep440]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-pep440' + [uv-pep508]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-pep508' + [uv-platform-tags]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-platform-tags' + [uv-pypi-types]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-pypi-types' + [uv-python]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-python' + [uv-redacted]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-redacted' + [uv-requirements-txt]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-requirements-txt' + [uv-requirements]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-requirements' + [uv-resolver]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-resolver' + [uv-shell]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-shell' + [uv-small-str]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-small-str' + [uv-state]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-state' + [uv-static]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-static' + [uv-torch]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-torch' + [uv-trampoline-builder]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-trampoline-builder' + [uv-types]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-types' + [uv-version]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-version' + [uv-virtualenv]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-virtualenv' + [uv-warnings]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-warnings' + [uv-workspace]='https://github.com/astral-sh/uv;0ddcc190556d9d20686bd81f17a364cf907e8f68;uv-%commit%/crates/uv-workspace' + [version-ranges]='https://github.com/astral-sh/pubgrub;06ec5a5f59ffaeb6cf5079c6cb184467da06c9db;pubgrub-%commit%/version-ranges' +) + +RUST_MIN_VER="1.85.0" + +inherit cargo + +CRATE_P=${P} +DESCRIPTION="A package management and workflow tool" +HOMEPAGE=" + https://pixi.sh/ + https://github.com/prefix-dev/pixi/ +" +SRC_URI=" + https://github.com/prefix-dev/pixi/releases/download/v${PV}/source.tar.gz + -> ${P}.tar.gz + ${CARGO_CRATE_URIS} + https://github.com/gentoo-crate-dist/pixi/releases/download/v${PV}/${P}-crates.tar.xz +" + +LICENSE="BSD" +# Dependent crate licenses +LICENSE+=" + 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD Boost-1.0 + ISC MIT MPL-2.0 MPL-2.0 Unicode-3.0 ZLIB +" +SLOT="0" +KEYWORDS="~amd64" +IUSE="+rustls" + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + app-arch/zstd:= + !rustls? ( dev-libs/openssl:= ) +" + +src_prepare() { + default + + local vr_dep=$(grep version-ranges "${ECARGO_HOME}"/config.toml || die) + sed -i -e "/version-ranges/s;^.*$;${vr_dep};" Cargo.toml || die +} + +src_configure() { + local myfeatures=( + $(usex rustls rustls-tls native-tls) + ) + cargo_src_configure --no-default-features + + export ZSTD_SYS_USE_PKG_CONFIG=1 + + # bzip2-sys requires a pkg-config file + # https://github.com/alexcrichton/bzip2-rs/issues/104 + mkdir "${T}/pkg-config" || die + export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}} + cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die + Name: bzip2 + Version: 9999 + Description: + Libs: -lbz2 + EOF +} + +src_test() { + # tests use it to test preserving envvars, apparently assuming + # it will be always set + local -x USER=${USER} + cargo_src_test --no-fail-fast +} diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass index 62e092b6231fa..ba97a95f5798c 100644 --- a/eclass/distutils-r1.eclass +++ b/eclass/distutils-r1.eclass @@ -7,7 +7,7 @@ # @AUTHOR: # Author: Michał Górny # Based on the work of: Krzysztof Pawlik -# @SUPPORTED_EAPIS: 7 8 +# @SUPPORTED_EAPIS: 8 # @PROVIDES: python-r1 python-single-r1 # @BLURB: A simple eclass to build Python packages using distutils. # @DESCRIPTION: @@ -92,20 +92,9 @@ # @ECLASS_VARIABLE: DISTUTILS_USE_PEP517 # @PRE_INHERIT -# @DEFAULT_UNSET +# @REQUIRED # @DESCRIPTION: -# Enable the PEP517 mode for the specified build system. In this mode, -# the complete build and install is done in python_compile(), -# a venv-style install tree is provided to python_test(), -# and python_install() just merges the temporary install tree -# into the real fs. -# -# This mode is recommended for Python packages. However, some packages -# using custom hacks on top of distutils/setuptools may not install -# correctly in this mode. Please verify the list of installed files -# when using it. -# -# The variable specifies the build system used. Currently, +# Specifies the PEP517 build system used for the package. Currently, # the following values are supported: # # - flit - flit-core backend @@ -150,7 +139,6 @@ # entry point listed in pyproject.toml. # # The special value "no" indicates that the package has no build system. -# This is not equivalent to unset DISTUTILS_USE_PEP517 (legacy mode). # It causes the eclass not to include any build system dependencies # and to disable default python_compile() and python_install() # implementations. Baseline Python deps and phase functions will still @@ -180,33 +168,12 @@ # backends, for example regarding finding package files. When using # this option, please make sure that the package is installed correctly. -# @ECLASS_VARIABLE: DISTUTILS_USE_SETUPTOOLS -# @DEFAULT_UNSET -# @PRE_INHERIT -# @DESCRIPTION: -# Controls adding dev-python/setuptools dependency. The allowed values -# are: -# -# - no -- do not add the dependency (pure distutils package) -# -# - bdepend -- add it to BDEPEND (the default) -# -# - rdepend -- add it to BDEPEND+RDEPEND (e.g. when using pkg_resources) -# -# - manual -- do not add the dependency and suppress the checks -# (assumes you will take care of doing it correctly) -# -# This variable is effective only if DISTUTILS_OPTIONAL is disabled. -# It is available only in non-PEP517 mode. It needs to be set before -# the inherit line. - # @ECLASS_VARIABLE: DISTUTILS_DEPS # @OUTPUT_VARIABLE # @DESCRIPTION: # This is an eclass-generated build-time dependency string for the build # system packages. This string is automatically appended to BDEPEND -# unless DISTUTILS_OPTIONAL is used. This variable is available only -# in PEP517 mode. +# unless DISTUTILS_OPTIONAL is used. # # Example use: # @CODE @@ -250,7 +217,7 @@ if [[ -z ${_DISTUTILS_R1_ECLASS} ]]; then _DISTUTILS_R1_ECLASS=1 case ${EAPI} in - 7|8) ;; + 8) ;; *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;; esac @@ -269,117 +236,86 @@ fi _distutils_set_globals() { local rdep bdep - if [[ ${DISTUTILS_USE_PEP517} ]]; then - if [[ ${DISTUTILS_USE_SETUPTOOLS} ]]; then - die "DISTUTILS_USE_SETUPTOOLS is not used in PEP517 mode" - fi - - bdep=' - >=dev-python/gpep517-16[${PYTHON_USEDEP}] - ' - case ${DISTUTILS_USE_PEP517} in - flit) - bdep+=' - >=dev-python/flit-core-3.11.0[${PYTHON_USEDEP}] - ' - ;; - flit_scm) - bdep+=' - >=dev-python/flit-core-3.11.0[${PYTHON_USEDEP}] - >=dev-python/flit-scm-1.7.0[${PYTHON_USEDEP}] - ' - ;; - hatchling) - bdep+=' - >=dev-python/hatchling-1.27.0[${PYTHON_USEDEP}] - ' - ;; - jupyter) - bdep+=' - >=dev-python/jupyter-packaging-0.12.3[${PYTHON_USEDEP}] - ' - ;; - maturin) - bdep+=' - >=dev-util/maturin-1.8.2[${PYTHON_USEDEP}] - ' - ;; - no) - # undo the generic deps added above - bdep= - ;; - meson-python) - bdep+=' - >=dev-python/meson-python-0.17.1[${PYTHON_USEDEP}] - ' - ;; - pbr) - bdep+=' - >=dev-python/pbr-6.1.1[${PYTHON_USEDEP}] - ' - ;; - pdm-backend) - bdep+=' - >=dev-python/pdm-backend-2.4.3[${PYTHON_USEDEP}] - ' - ;; - poetry) - bdep+=' - >=dev-python/poetry-core-2.1.1[${PYTHON_USEDEP}] - ' - ;; - scikit-build-core) - bdep+=' - >=dev-python/scikit-build-core-0.10.7[${PYTHON_USEDEP}] - ' - ;; - setuptools) - bdep+=' - >=dev-python/setuptools-78.1.0[${PYTHON_USEDEP}] - ' - ;; - sip) - bdep+=' - >=dev-python/sip-6.10.0[${PYTHON_USEDEP}] - ' - ;; - standalone) - ;; - uv-build) - bdep+=' - dev-python/uv-build[${PYTHON_USEDEP}] - ' - ;; - *) - die "Unknown DISTUTILS_USE_PEP517=${DISTUTILS_USE_PEP517}" - ;; - esac - elif [[ ${DISTUTILS_OPTIONAL} ]]; then - if [[ ${DISTUTILS_USE_SETUPTOOLS} ]]; then - eqawarn "QA Notice: DISTUTILS_USE_SETUPTOOLS is not used when DISTUTILS_OPTIONAL" - eqawarn "is enabled." - fi - else - local setuptools_dep='>=dev-python/setuptools-78.1.0[${PYTHON_USEDEP}]' - - case ${DISTUTILS_USE_SETUPTOOLS:-bdepend} in - no|manual) - ;; - bdepend) - bdep+=" ${setuptools_dep}" - ;; - rdepend) - bdep+=" ${setuptools_dep}" - rdep+=" ${setuptools_dep}" - ;; - pyproject.toml) - die "DISTUTILS_USE_SETUPTOOLS=pyproject.toml is no longer supported, use DISTUTILS_USE_PEP517" - ;; - *) - die "Invalid DISTUTILS_USE_SETUPTOOLS=${DISTUTILS_USE_SETUPTOOLS}" - ;; - esac - fi + bdep=' + >=dev-python/gpep517-16[${PYTHON_USEDEP}] + ' + case ${DISTUTILS_USE_PEP517} in + flit) + bdep+=' + >=dev-python/flit-core-3.11.0[${PYTHON_USEDEP}] + ' + ;; + flit_scm) + bdep+=' + >=dev-python/flit-core-3.11.0[${PYTHON_USEDEP}] + >=dev-python/flit-scm-1.7.0[${PYTHON_USEDEP}] + ' + ;; + hatchling) + bdep+=' + >=dev-python/hatchling-1.27.0[${PYTHON_USEDEP}] + ' + ;; + jupyter) + bdep+=' + >=dev-python/jupyter-packaging-0.12.3[${PYTHON_USEDEP}] + ' + ;; + maturin) + bdep+=' + >=dev-util/maturin-1.8.2[${PYTHON_USEDEP}] + ' + ;; + no) + # undo the generic deps added above + bdep= + ;; + meson-python) + bdep+=' + >=dev-python/meson-python-0.17.1[${PYTHON_USEDEP}] + ' + ;; + pbr) + bdep+=' + >=dev-python/pbr-6.1.1[${PYTHON_USEDEP}] + ' + ;; + pdm-backend) + bdep+=' + >=dev-python/pdm-backend-2.4.3[${PYTHON_USEDEP}] + ' + ;; + poetry) + bdep+=' + >=dev-python/poetry-core-2.1.1[${PYTHON_USEDEP}] + ' + ;; + scikit-build-core) + bdep+=' + >=dev-python/scikit-build-core-0.10.7[${PYTHON_USEDEP}] + ' + ;; + setuptools) + bdep+=' + >=dev-python/setuptools-78.1.0[${PYTHON_USEDEP}] + ' + ;; + sip) + bdep+=' + >=dev-python/sip-6.10.0[${PYTHON_USEDEP}] + ' + ;; + standalone) + ;; + uv-build) + bdep+=' + dev-python/uv-build[${PYTHON_USEDEP}] + ' + ;; + *) + die "Unknown DISTUTILS_USE_PEP517=${DISTUTILS_USE_PEP517}" + ;; + esac if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then bdep=${bdep//\$\{PYTHON_USEDEP\}/${PYTHON_USEDEP}} @@ -389,23 +325,16 @@ _distutils_set_globals() { [[ -n ${rdep} ]] && rdep="$(python_gen_cond_dep "${rdep}")" fi - if [[ ${DISTUTILS_USE_PEP517} ]]; then - if [[ ${DISTUTILS_DEPS+1} ]]; then - if [[ ${DISTUTILS_DEPS} != "${bdep}" ]]; then - eerror "DISTUTILS_DEPS have changed between inherits!" - eerror "Before: ${DISTUTILS_DEPS}" - eerror "Now : ${bdep}" - die "DISTUTILS_DEPS integrity check failed" - fi - else - DISTUTILS_DEPS=${bdep} - readonly DISTUTILS_DEPS + if [[ ${DISTUTILS_DEPS+1} ]]; then + if [[ ${DISTUTILS_DEPS} != "${bdep}" ]]; then + eerror "DISTUTILS_DEPS have changed between inherits!" + eerror "Before: ${DISTUTILS_DEPS}" + eerror "Now : ${bdep}" + die "DISTUTILS_DEPS integrity check failed" fi else - eqawarn "QA Notice: distutils-r1.eclass legacy mode is deprecated and will be removed." - eqawarn "Please migrate your ebuilds to use DISTUTILS_USE_PEP517 (common values" - eqawarn "are 'setuptools' for packages using setuptools/distutils," - eqawarn "and 'no' for packages using non-PEP517 build systems)." + DISTUTILS_DEPS=${bdep} + readonly DISTUTILS_DEPS fi if [[ ! ${DISTUTILS_OPTIONAL} ]]; then @@ -425,26 +354,6 @@ _distutils_set_globals() { _distutils_set_globals unset -f _distutils_set_globals -# @ECLASS_VARIABLE: DISTUTILS_IN_SOURCE_BUILD -# @DEFAULT_UNSET -# @DEPRECATED: (none) -# @DESCRIPTION: -# If set to a non-null value, in-source builds will be enabled. -# If unset, the default is to use in-source builds when python_prepare() -# is declared, and out-of-source builds otherwise. -# -# If in-source builds are used, the eclass will create a copy of package -# sources for each Python implementation in python_prepare_all(), -# and work on that copy afterwards. -# -# If out-of-source builds are used, the eclass will instead work -# on the sources directly, prepending setup.py arguments with -# 'build --build-base ${BUILD_DIR}' to enforce keeping & using built -# files in the specific root. -# -# In-source builds are deprecated and no longer supported in PEP517 -# mode. - # @ECLASS_VARIABLE: DISTUTILS_ALL_SUBPHASE_IMPLS # @DEFAULT_UNSET # @DESCRIPTION: @@ -617,8 +526,6 @@ distutils_enable_sphinx() { # # - pytest: dev-python/pytest # -# - setup.py: setup.py test (no deps included; deprecated) -# # - unittest: for built-in Python unittest module # # This function is meant as a helper for common use cases, and it only @@ -662,10 +569,6 @@ distutils_enable_tests() { ")" fi ;; - setup.py) - eqawarn "QA Notice: 'distutils_enable_tests setup.py' is deprecated and will be removed." - eqawarn "Please use unittest or pytest instead." - ;; unittest) ;; *) @@ -710,25 +613,12 @@ esetup.py() { _python_check_EPYTHON - if [[ ${BUILD_DIR} && ! ${DISTUTILS_USE_PEP517} ]]; then - _distutils-r1_create_setup_cfg - fi - local setup_py=( setup.py ) if [[ ! -f setup.py ]]; then - # The following call can succeed even if the package does not - # feature any setuptools configuration. In non-PEP517 mode this - # could lead to installing an "empty" package. In PEP517 mode, - # we verify the build system when invoking the backend, - # rendering this check redundant (and broken for projects using - # pyproject.toml configuration). - if [[ ! ${DISTUTILS_USE_PEP517} && ! -f setup.cfg ]]; then - die "${FUNCNAME}: setup.py nor setup.cfg not found" - fi setup_py=( -c "from setuptools import setup; setup()" ) fi - if [[ ${EAPI} != 7 && ${mydistutilsargs[@]} ]]; then + if [[ ${mydistutilsargs[@]} ]]; then die "mydistutilsargs is banned in EAPI ${EAPI} (use DISTUTILS_ARGS)" fi @@ -739,22 +629,9 @@ esetup.py() { "${@}" || die -n local ret=${?} - if [[ ${BUILD_DIR} && ! ${DISTUTILS_USE_PEP517} ]]; then - rm "${HOME}"/.pydistutils.cfg || die -n - fi - return ${ret} } -# @FUNCTION: distutils_install_for_testing -# @DEPRECATED: DISTUTILS_USE_PEP517=... -# @DESCRIPTION: -# This function used to provide an installed package for running tests. -# It is no longer implemented, PEP517 mode must be used instead. -distutils_install_for_testing() { - die "${FUNCNAME} has been removed, please use PEP517 mode instead" -} - # @FUNCTION: distutils_write_namespace # @USAGE: ... # @DESCRIPTION: @@ -767,8 +644,8 @@ distutils_install_for_testing() { distutils_write_namespace() { debug-print-function ${FUNCNAME} "$@" - if [[ ! ${DISTUTILS_USE_PEP517:-no} != no ]]; then - die "${FUNCNAME} is available only in PEP517 mode" + if [[ ${DISTUTILS_USE_PEP517} == no ]]; then + die "${FUNCNAME} is available only with PEP517 backends" fi if [[ ${EBUILD_PHASE} != test || ! ${BUILD_DIR} ]]; then die "${FUNCNAME} should only be used in python_test" @@ -791,45 +668,6 @@ distutils_write_namespace() { done } -# @FUNCTION: _distutils-r1_disable_ez_setup -# @INTERNAL -# @DESCRIPTION: -# Stub out ez_setup.py and distribute_setup.py to prevent packages -# from trying to download a local copy of setuptools. -_distutils-r1_disable_ez_setup() { - if [[ ${DISTUTILS_USE_PEP517} ]]; then - die "${FUNCNAME} is not implemented in PEP517 mode" - fi - - local stub="def use_setuptools(*args, **kwargs): pass" - if [[ -f ez_setup.py ]]; then - echo "${stub}" > ez_setup.py || die - fi - if [[ -f distribute_setup.py ]]; then - echo "${stub}" > distribute_setup.py || die - fi -} - -# @FUNCTION: _distutils-r1_handle_pyproject_toml -# @INTERNAL -# @DESCRIPTION: -# Verify whether DISTUTILS_USE_SETUPTOOLS is set correctly -# for pyproject.toml build systems (in non-PEP517 mode). -_distutils-r1_handle_pyproject_toml() { - if [[ ${DISTUTILS_USE_PEP517} ]]; then - die "${FUNCNAME} is not implemented in PEP517 mode" - fi - - [[ ${DISTUTILS_USE_SETUPTOOLS} == manual ]] && return - - if [[ ! -f setup.py && -f pyproject.toml ]]; then - eerror "No setup.py found but pyproject.toml is present. Please migrate" - eerror "the package to use DISTUTILS_USE_PEP517. See:" - eerror " https://projects.gentoo.org/python/guide/distutils.html" - die "No setup.py found and PEP517 mode not enabled" - fi -} - # @FUNCTION: _distutils-r1_check_all_phase_mismatch # @INTERNAL # @DESCRIPTION: @@ -840,8 +678,7 @@ _distutils-r1_check_all_phase_mismatch() { eqawarn "QA Notice: distutils-r1_python_${EBUILD_PHASE}_all called" eqawarn "from python_${EBUILD_PHASE}. Did you mean to use" eqawarn "python_${EBUILD_PHASE}_all()?" - [[ ${EAPI} != 7 ]] && - die "distutils-r1_python_${EBUILD_PHASE}_all called from python_${EBUILD_PHASE}." + die "distutils-r1_python_${EBUILD_PHASE}_all called from python_${EBUILD_PHASE}." fi } @@ -851,114 +688,99 @@ _distutils-r1_check_all_phase_mismatch() { # Print the version of the relevant build system packages to aid # debugging. _distutils-r1_print_package_versions() { - local packages=() - - if [[ ${DISTUTILS_USE_PEP517} ]]; then + local packages=( + dev-python/gpep517 + dev-python/installer + ) + if [[ ${DISTUTILS_EXT} ]]; then packages+=( - dev-python/gpep517 - dev-python/installer + dev-python/cython ) - if [[ ${DISTUTILS_EXT} ]]; then - packages+=( - dev-python/cython - ) - fi - case ${DISTUTILS_USE_PEP517} in - flit) - packages+=( - dev-python/flit-core - ) - ;; - flit_scm) - packages+=( - dev-python/flit-core - dev-python/flit-scm - dev-python/setuptools-scm - ) - ;; - hatchling) - packages+=( - dev-python/hatchling - dev-python/hatch-fancy-pypi-readme - dev-python/hatch-vcs - ) - ;; - jupyter) - packages+=( - dev-python/jupyter-packaging - dev-python/setuptools - dev-python/setuptools-scm - dev-python/wheel - ) - ;; - maturin) - packages+=( - dev-util/maturin - ) - ;; - no) - return - ;; - meson-python) - packages+=( - dev-python/meson-python - ) - ;; - pbr) - packages+=( - dev-python/pbr - dev-python/setuptools - dev-python/wheel - ) - ;; - pdm-backend) - packages+=( - dev-python/pdm-backend - dev-python/setuptools - ) - ;; - poetry) - packages+=( - dev-python/poetry-core - ) - ;; - scikit-build-core) - packages+=( - dev-python/scikit-build-core - ) - ;; - setuptools) - packages+=( - dev-python/setuptools - dev-python/setuptools-rust - dev-python/setuptools-scm - dev-python/wheel - ) - ;; - sip) - packages+=( - dev-python/sip - ) - ;; - uv-build) - packages+=( - dev-python/uv - dev-python/uv-build - ) - ;; - esac - else - case ${DISTUTILS_USE_SETUPTOOLS} in - manual|no) - return - ;; - *) - packages+=( - dev-python/setuptools - ) - ;; - esac fi + case ${DISTUTILS_USE_PEP517} in + flit) + packages+=( + dev-python/flit-core + ) + ;; + flit_scm) + packages+=( + dev-python/flit-core + dev-python/flit-scm + dev-python/setuptools-scm + ) + ;; + hatchling) + packages+=( + dev-python/hatchling + dev-python/hatch-fancy-pypi-readme + dev-python/hatch-vcs + ) + ;; + jupyter) + packages+=( + dev-python/jupyter-packaging + dev-python/setuptools + dev-python/setuptools-scm + dev-python/wheel + ) + ;; + maturin) + packages+=( + dev-util/maturin + ) + ;; + no) + return + ;; + meson-python) + packages+=( + dev-python/meson-python + ) + ;; + pbr) + packages+=( + dev-python/pbr + dev-python/setuptools + dev-python/wheel + ) + ;; + pdm-backend) + packages+=( + dev-python/pdm-backend + dev-python/setuptools + ) + ;; + poetry) + packages+=( + dev-python/poetry-core + ) + ;; + scikit-build-core) + packages+=( + dev-python/scikit-build-core + ) + ;; + setuptools) + packages+=( + dev-python/setuptools + dev-python/setuptools-rust + dev-python/setuptools-scm + dev-python/wheel + ) + ;; + sip) + packages+=( + dev-python/sip + ) + ;; + uv-build) + packages+=( + dev-python/uv + dev-python/uv-build + ) + ;; + esac local pkg einfo "Build system packages:" @@ -985,104 +807,12 @@ distutils-r1_python_prepare_all() { default fi - # by default, use in-source build if python_prepare() is used - if [[ ! ${DISTUTILS_IN_SOURCE_BUILD+1} ]]; then - if declare -f python_prepare >/dev/null; then - DISTUTILS_IN_SOURCE_BUILD=1 - fi - fi - - if [[ ! ${DISTUTILS_USE_PEP517} ]]; then - _distutils-r1_disable_ez_setup - _distutils-r1_handle_pyproject_toml - fi - - if [[ ${DISTUTILS_IN_SOURCE_BUILD} && ! ${DISTUTILS_SINGLE_IMPL} ]] - then - # create source copies for each implementation - python_copy_sources - fi - python_export_utf8_locale _distutils-r1_print_package_versions _DISTUTILS_DEFAULT_CALLED=1 } -# @FUNCTION: _distutils-r1_create_setup_cfg -# @INTERNAL -# @DESCRIPTION: -# Create implementation-specific configuration file for distutils, -# setting proper build-dir (and install-dir) paths. -_distutils-r1_create_setup_cfg() { - if [[ ${DISTUTILS_USE_PEP517} ]]; then - die "${FUNCNAME} is not implemented in PEP517 mode" - fi - - cat > "${HOME}"/.pydistutils.cfg <<-_EOF_ || die - [build] - build_base = ${BUILD_DIR} - - # using a single directory for them helps us export - # ${PYTHONPATH} and ebuilds find the sources independently - # of whether the package installs extensions or not - # - # note: due to some packages (wxpython) relying on separate - # platlib & purelib dirs, we do not set --build-lib (which - # can not be overridden with --build-*lib) - build_platlib = %(build_base)s/lib - build_purelib = %(build_base)s/lib - - # make the ebuild writer lives easier - build_scripts = %(build_base)s/scripts - - # this is needed by distutils_install_for_testing since - # setuptools like to create .egg files for install --home. - [bdist_egg] - dist_dir = ${BUILD_DIR}/dist - - # avoid packing up eggs in a zip as it often breaks test suites - [options] - zip_safe = False - _EOF_ - - if [[ ${EBUILD_PHASE} == install ]]; then - # we can't refer to ${D} before src_install() - cat >> "${HOME}"/.pydistutils.cfg <<-_EOF_ || die - - # installation paths -- allow calling extra install targets - # without the default 'install' - [install] - compile = True - optimize = 2 - root = ${D} - _EOF_ - - if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then - # this gets appended to [install] - cat >> "${HOME}"/.pydistutils.cfg <<-_EOF_ || die - install_scripts = $(python_get_scriptdir) - _EOF_ - fi - fi -} - -# @FUNCTION: _distutils-r1_copy_egg_info -# @INTERNAL -# @DESCRIPTION: -# Copy egg-info files to the ${BUILD_DIR} (that's going to become -# egg-base in esetup.py). This way, we respect whatever's in upstream -# egg-info. -_distutils-r1_copy_egg_info() { - if [[ ${DISTUTILS_USE_PEP517} ]]; then - die "${FUNCNAME} is not implemented in PEP517 mode" - fi - - mkdir -p "${BUILD_DIR}" || die - # stupid freebsd can't do 'cp -t ${BUILD_DIR} {} +' - find -name '*.egg-info' -type d -exec cp -R -p {} "${BUILD_DIR}"/ ';' || die -} - # @FUNCTION: _distutils-r1_key_to_backend # @USAGE: # @INTERNAL @@ -1285,8 +1015,8 @@ distutils_pep517_install() { debug-print-function ${FUNCNAME} "$@" [[ ${#} -eq 1 ]] || die "${FUNCNAME} takes exactly one argument: root" - if [[ ! ${DISTUTILS_USE_PEP517:-no} != no ]]; then - die "${FUNCNAME} is available only in PEP517 mode" + if [[ ${DISTUTILS_USE_PEP517} == no ]]; then + die "${FUNCNAME} is available only with PEP517 backend" fi local root=${1} @@ -1495,10 +1225,6 @@ declare -g -A DISTUTILS_WHEELS=() # If DISTUTILS_USE_PEP517 is set to any other value, builds a wheel # using the PEP517 backend and installs it into ${BUILD_DIR}/install. # Path to the wheel is then added to DISTUTILS_WHEELS array. -# -# In legacy mode, runs 'esetup.py build'. Any parameters passed to this -# function will be appended to setup.py invocation, i.e. passed -# as options to the 'build' command. distutils-r1_python_compile() { debug-print-function ${FUNCNAME} "$@" @@ -1506,13 +1232,6 @@ distutils-r1_python_compile() { [[ ${DISTUTILS_USE_PEP517} == no ]] && return - if [[ ! ${DISTUTILS_USE_PEP517} ]]; then - # legacy mode - _distutils-r1_copy_egg_info - esetup.py build -j "$(makeopts_jobs "${MAKEOPTS} ${*}")" "${@}" - return - fi - # we do this for all build systems, since other backends # and custom hooks may wrap setuptools # @@ -1602,9 +1321,7 @@ _distutils-r1_wrap_scripts() { local basename=${f##*/} debug-print "${FUNCNAME}: installing wrapper at ${bindir}/${basename}" - local dosym=dosym - [[ ${EAPI} == 7 ]] && dosym=dosym8 - "${dosym}" -r /usr/lib/python-exec/python-exec2 \ + dosym -r /usr/lib/python-exec/python-exec2 \ "${bindir#${EPREFIX}}/${basename}" done @@ -1641,9 +1358,6 @@ distutils-r1_python_test() { pytest) epytest ;; - setup.py) - nonfatal esetup.py test --verbose - ;; unittest) eunittest ;; @@ -1660,14 +1374,8 @@ distutils-r1_python_test() { # @FUNCTION: distutils-r1_python_install # @USAGE: [additional-args...] # @DESCRIPTION: -# The default python_install(). -# -# In PEP517 mode, merges the files from ${BUILD_DIR}/install -# (if present) to the image directory. -# -# In the legacy mode, calls `esetup.py install` to install the package. -# Any parameters passed to this function will be appended -# to the setup.py invocation (i.e. as options to the 'install' command). +# The default python_install(). Merges the files +# from ${BUILD_DIR}/install (if present) to the image directory. distutils-r1_python_install() { debug-print-function ${FUNCNAME} "$@" @@ -1675,105 +1383,51 @@ distutils-r1_python_install() { local scriptdir=${EPREFIX}/usr/bin local merge_root= - if [[ ${DISTUTILS_USE_PEP517} ]]; then - local root=${BUILD_DIR}/install - local reg_scriptdir=${root}/${scriptdir} - local wrapped_scriptdir=${root}$(python_get_scriptdir) + local root=${BUILD_DIR}/install + local reg_scriptdir=${root}/${scriptdir} + local wrapped_scriptdir=${root}$(python_get_scriptdir) - # we are assuming that _distutils-r1_post_python_compile - # has been called and ${root} has not been altered since - # let's explicitly verify these assumptions + # we are assuming that _distutils-r1_post_python_compile + # has been called and ${root} has not been altered since + # let's explicitly verify these assumptions - # remove files that we've created explicitly - rm "${reg_scriptdir}"/{"${EPYTHON}",python3,python} || die - rm "${reg_scriptdir}"/../pyvenv.cfg || die + # remove files that we've created explicitly + rm "${reg_scriptdir}"/{"${EPYTHON}",python3,python} || die + rm "${reg_scriptdir}"/../pyvenv.cfg || die - # Automagically do the QA check to avoid issues when bootstrapping - # prefix. - if type diff &>/dev/null ; then - # verify that scriptdir & wrapped_scriptdir both contain - # the same files - ( - cd "${reg_scriptdir}" && find . -mindepth 1 - ) | sort > "${T}"/.distutils-files-bin - assert "listing ${reg_scriptdir} failed" - ( - if [[ -d ${wrapped_scriptdir} ]]; then - cd "${wrapped_scriptdir}" && find . -mindepth 1 - fi - ) | sort > "${T}"/.distutils-files-wrapped - assert "listing ${wrapped_scriptdir} failed" - if ! diff -U 0 "${T}"/.distutils-files-{bin,wrapped}; then - die "File lists for ${reg_scriptdir} and ${wrapped_scriptdir} differ (see diff above)" - fi - fi - - # remove the altered bindir, executables from the package - # are already in scriptdir - rm -r "${reg_scriptdir}" || die - if [[ ${DISTUTILS_SINGLE_IMPL} ]]; then + # Automagically do the QA check to avoid issues when bootstrapping + # prefix. + if type diff &>/dev/null ; then + # verify that scriptdir & wrapped_scriptdir both contain + # the same files + ( + cd "${reg_scriptdir}" && find . -mindepth 1 + ) | sort > "${T}"/.distutils-files-bin + assert "listing ${reg_scriptdir} failed" + ( if [[ -d ${wrapped_scriptdir} ]]; then - mv "${wrapped_scriptdir}" "${reg_scriptdir}" || die + cd "${wrapped_scriptdir}" && find . -mindepth 1 fi + ) | sort > "${T}"/.distutils-files-wrapped + assert "listing ${wrapped_scriptdir} failed" + if ! diff -U 0 "${T}"/.distutils-files-{bin,wrapped}; then + die "File lists for ${reg_scriptdir} and ${wrapped_scriptdir} differ (see diff above)" fi - # prune empty directories to see if ${root} contains anything - # to merge - find "${BUILD_DIR}"/install -type d -empty -delete || die - [[ -d ${BUILD_DIR}/install ]] && merge_root=1 - else - local root=${D}/_${EPYTHON} - [[ ${DISTUTILS_SINGLE_IMPL} ]] && root=${D} - - # inline DISTUTILS_ARGS logic from esetup.py in order to make - # argv overwriting easier - local args=( - "${DISTUTILS_ARGS[@]}" - "${mydistutilsargs[@]}" - install --skip-build --root="${root}" "${args[@]}" - "${@}" - ) - local DISTUTILS_ARGS=() - local mydistutilsargs=() - - # enable compilation for the install phase. - local -x PYTHONDONTWRITEBYTECODE= - - # python likes to compile any module it sees, which triggers sandbox - # failures if some packages haven't compiled their modules yet. - addpredict "${EPREFIX}/usr/lib/${EPYTHON}" - addpredict "${EPREFIX}/usr/local" # bug 498232 - - if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then - merge_root=1 - - # user may override --install-scripts - # note: this is poor but distutils argv parsing is dumb - - # rewrite all the arguments - set -- "${args[@]}" - args=() - while [[ ${@} ]]; do - local a=${1} - shift - - case ${a} in - --install-scripts=*) - scriptdir=${a#--install-scripts=} - ;; - --install-scripts) - scriptdir=${1} - shift - ;; - *) - args+=( "${a}" ) - ;; - esac - done - fi - - esetup.py "${args[@]}" fi + # remove the altered bindir, executables from the package + # are already in scriptdir + rm -r "${reg_scriptdir}" || die + if [[ ${DISTUTILS_SINGLE_IMPL} ]]; then + if [[ -d ${wrapped_scriptdir} ]]; then + mv "${wrapped_scriptdir}" "${reg_scriptdir}" || die + fi + fi + # prune empty directories to see if ${root} contains anything + # to merge + find "${BUILD_DIR}"/install -type d -empty -delete || die + [[ -d ${BUILD_DIR}/install ]] && merge_root=1 + if [[ ${merge_root} ]]; then multibuild_merge_root "${root}" "${D}" fi @@ -1808,42 +1462,7 @@ distutils-r1_python_install_all() { distutils-r1_run_phase() { debug-print-function ${FUNCNAME} "$@" - if [[ ${DISTUTILS_IN_SOURCE_BUILD} ]]; then - [[ ${DISTUTILS_USE_PEP517} ]] && - die "DISTUTILS_IN_SOURCE_BUILD is not supported in PEP517 mode" - # only force BUILD_DIR if implementation is explicitly enabled - # for building; any-r1 API may select one that is not - # https://bugs.gentoo.org/701506 - if [[ ! ${DISTUTILS_SINGLE_IMPL} ]] && - has "${EPYTHON/./_}" ${PYTHON_TARGETS}; then - cd "${BUILD_DIR}" || die - fi - local BUILD_DIR=${BUILD_DIR}/build - fi - - if [[ ${DISTUTILS_USE_PEP517} ]]; then - local -x PATH=${BUILD_DIR}/install${EPREFIX}/usr/bin:${PATH} - else - local -x PYTHONPATH="${BUILD_DIR}/lib:${PYTHONPATH}" - - # make PATH local (for historical reasons) - local -x PATH=${PATH} - - if _python_impl_matches "${EPYTHON}" 3.{9..11}; then - # Undo the default switch in setuptools-60+ for the time being, - # to avoid replacing .egg-info file with directory in-place. - local -x SETUPTOOLS_USE_DISTUTILS="${SETUPTOOLS_USE_DISTUTILS:-stdlib}" - fi - - # Bug 559644 - # using PYTHONPATH when the ${BUILD_DIR}/lib is not created yet might lead to - # problems in setup.py scripts that try to import modules/packages from that path - # during the build process (Python at startup evaluates PYTHONPATH, if the dir is - # not valid then associates a NullImporter object to ${BUILD_DIR}/lib storing it - # in the sys.path_importer_cache) - mkdir -p "${BUILD_DIR}/lib" || die - fi - + local -x PATH=${BUILD_DIR}/install${EPREFIX}/usr/bin:${PATH} # Set up build environment, bug #513664. local -x AR=${AR} CC=${CC} CPP=${CPP} CXX=${CXX} tc-export AR CC CPP CXX @@ -2031,13 +1650,13 @@ _distutils-r1_compare_installed_files() { _distutils-r1_post_python_compile() { debug-print-function ${FUNCNAME} "$@" - if [[ ! ${_DISTUTILS_WHL_INSTALLED} && ${DISTUTILS_USE_PEP517:-no} != no ]] + if [[ ! ${_DISTUTILS_WHL_INSTALLED} && ${DISTUTILS_USE_PEP517} != no ]] then die "No wheel installed in python_compile(), did you call distutils-r1_python_compile?" fi local root=${BUILD_DIR}/install - if [[ ${DISTUTILS_USE_PEP517} && -d ${root} ]]; then + if [[ -d ${root} ]]; then # copy executables to python-exec directory # we do it early so that we can alter bindir recklessly local bindir=${root}${EPREFIX}/usr/bin @@ -2089,32 +1708,6 @@ distutils-r1_src_compile() { return ${ret} } -# @FUNCTION: _distutils-r1_clean_egg_info -# @INTERNAL -# @DESCRIPTION: -# Clean up potential stray egg-info files left by setuptools test phase. -# Those files ended up being unversioned, and caused issues: -# https://bugs.gentoo.org/534058 -_distutils-r1_clean_egg_info() { - if [[ ${DISTUTILS_USE_PEP517} ]]; then - die "${FUNCNAME} is not implemented in PEP517 mode" - fi - - rm -rf "${BUILD_DIR}"/lib/*.egg-info || die -} - -# @FUNCTION: _distutils-r1_post_python_test -# @INTERNAL -# @DESCRIPTION: -# Post-phase function called after python_test. -_distutils-r1_post_python_test() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ! ${DISTUTILS_USE_PEP517} ]]; then - _distutils-r1_clean_egg_info - fi -} - distutils-r1_src_test() { debug-print-function ${FUNCNAME} "$@" local ret=0 diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass index a1ca388ab730e..840b820d00569 100644 --- a/eclass/python-utils-r1.eclass +++ b/eclass/python-utils-r1.eclass @@ -599,32 +599,13 @@ python_optimize() { [[ ${PYTHON} ]] || _python_export PYTHON [[ -x ${PYTHON} ]] || die "PYTHON (${PYTHON}) is not executable" - # default to sys.path - if [[ ${#} -eq 0 ]]; then - local f - while IFS= read -r -d '' f; do - # 1) accept only absolute paths - # (i.e. skip '', '.' or anything like that) - # 2) skip paths which do not exist - # (python2.6 complains about them verbosely) - - if [[ ${f} == /* && -d ${D}${f} ]]; then - set -- "${D}${f}" "${@}" - fi - done < <( - "${PYTHON}" - <<-EOF || die - import sys - print("".join(x + "\0" for x in sys.path)) - EOF - ) - - debug-print "${FUNCNAME}: using sys.path: ${*/%/;}" - fi + # default to sitedir + [[ ${#} -eq 0 ]] && set -- "${D}$(python_get_sitedir)" local jobs=$(makeopts_jobs) local d for d; do - einfo "Optimize Python modules for ${instpath}" + einfo "Optimizing Python modules in ${d#${D}}" # NB: '-s' makes the path relative, so we need '-p /' to make it # absolute again; https://github.com/python/cpython/issues/133503 "${PYTHON}" -m compileall -j "${jobs}" -o 0 -o 1 -o 2 \ @@ -1076,7 +1057,7 @@ python_fix_shebang() { fi if [[ ! ${quiet} ]]; then - einfo "Fixing shebang in ${f#${D}}." + einfo "Fixing shebang in ${f#${D}}" fi if [[ ! ${error} ]]; then @@ -1354,9 +1335,6 @@ epytest() { # override filterwarnings=error, we do not really want -Werror # for end users, as it tends to fail on new warnings from deps -Wdefault - # however, do error out if the package failed to load - # an appropriate async plugin - -Werror::pytest.PytestUnhandledCoroutineWarning # override color output "--color=${color}" # count is more precise when we're dealing with a large number diff --git a/games-strategy/megaglest/megaglest-3.13.0-r4.ebuild b/games-strategy/megaglest/megaglest-3.13.0-r5.ebuild similarity index 99% rename from games-strategy/megaglest/megaglest-3.13.0-r4.ebuild rename to games-strategy/megaglest/megaglest-3.13.0-r5.ebuild index 5b280230944ab..69d22e15ea9d6 100644 --- a/games-strategy/megaglest/megaglest-3.13.0-r4.ebuild +++ b/games-strategy/megaglest/megaglest-3.13.0-r5.ebuild @@ -36,7 +36,7 @@ REQUIRED_USE="${LUA_REQUIRED_USE}" COMMON_DEPEND=" ${LUA_DEPS} dev-libs/libxml2:= - dev-libs/xerces-c[icu] + dev-libs/xerces-c:=[icu] media-libs/fontconfig media-libs/freetype media-libs/ftgl diff --git a/media-gfx/freecad/freecad-1.0.0-r2.ebuild b/media-gfx/freecad/freecad-1.0.0-r2.ebuild index e4819c63e7f75..5b2b6322824f5 100644 --- a/media-gfx/freecad/freecad-1.0.0-r2.ebuild +++ b/media-gfx/freecad/freecad-1.0.0-r2.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -56,7 +56,7 @@ RDEPEND=" dev-cpp/yaml-cpp dev-libs/boost:= dev-libs/libfmt:= - dev-libs/xerces-c[icu] + dev-libs/xerces-c:=[icu] dev-qt/qtbase:6[concurrent,network,xml] media-libs/freetype sci-libs/opencascade:=[json] diff --git a/media-gfx/freecad/freecad-1.0.0-r3.ebuild b/media-gfx/freecad/freecad-1.0.0-r3.ebuild index bc61cd1070921..fa1039b57c3c1 100644 --- a/media-gfx/freecad/freecad-1.0.0-r3.ebuild +++ b/media-gfx/freecad/freecad-1.0.0-r3.ebuild @@ -59,7 +59,7 @@ RDEPEND=" dev-cpp/yaml-cpp dev-libs/boost:= dev-libs/libfmt:= - dev-libs/xerces-c[icu] + dev-libs/xerces-c:=[icu] dev-qt/qtbase:6[concurrent,network,xml] media-libs/freetype sci-libs/opencascade:=[json] diff --git a/media-gfx/freecad/freecad-1.0.0-r4.ebuild b/media-gfx/freecad/freecad-1.0.0-r5.ebuild similarity index 99% rename from media-gfx/freecad/freecad-1.0.0-r4.ebuild rename to media-gfx/freecad/freecad-1.0.0-r5.ebuild index 2fc4f1d33b6c8..9ba9358d870c0 100644 --- a/media-gfx/freecad/freecad-1.0.0-r4.ebuild +++ b/media-gfx/freecad/freecad-1.0.0-r5.ebuild @@ -60,7 +60,7 @@ RDEPEND=" dev-cpp/yaml-cpp dev-libs/boost:= dev-libs/libfmt:= - dev-libs/xerces-c[icu] + dev-libs/xerces-c:=[icu] dev-qt/qtbase:6[concurrent,network,xml] media-libs/freetype sci-libs/opencascade:=[json] diff --git a/media-gfx/freecad/freecad-9999.ebuild b/media-gfx/freecad/freecad-9999.ebuild index 8d90dd0197e0f..b78139fccc18d 100644 --- a/media-gfx/freecad/freecad-9999.ebuild +++ b/media-gfx/freecad/freecad-9999.ebuild @@ -58,7 +58,7 @@ RDEPEND=" dev-cpp/yaml-cpp dev-libs/boost:= dev-libs/libfmt:= - dev-libs/xerces-c[icu] + dev-libs/xerces-c:=[icu] dev-qt/qtbase:6[concurrent,network,xml] media-libs/freetype sci-libs/opencascade:=[json] diff --git a/profiles/features/split-usr/package.mask b/profiles/features/split-usr/package.mask index 3a36d4e863695..4ef0df394887f 100644 --- a/profiles/features/split-usr/package.mask +++ b/profiles/features/split-usr/package.mask @@ -1,8 +1,23 @@ -# Copyright 2023-2024 Gentoo Authors +# Copyright 2023-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 +# Mike Gilbert (2025-06-03) +# Requires systemd. +app-admin/mkosi +app-admin/systemdgenie +dev-python/python-systemd +gnome-extra/gnome-logs +gnome-extra/office-runner +net-vpn/microsoft-azurevpnclient +sys-apps/gentoo-systemd-integration +sys-apps/intune-portal +sys-apps/systemd-readahead +sys-block/wait-for-dri-devices-rules +sys-power/sandmann-bin +www-misc/profile-sync-daemon + # Andreas K. Hüttel (2023-12-07) # Does not support split-usr filesystem geometry. Please migrate to # a merged-usr profile. ->=sys-apps/systemd-255 ->=sys-process/systemd-cron-2.3.4-r1 +sys-apps/systemd +sys-process/systemd-cron diff --git a/profiles/features/split-usr/package.use.mask b/profiles/features/split-usr/package.use.mask index 686cb944a8625..b3c950c12ed78 100644 --- a/profiles/features/split-usr/package.use.mask +++ b/profiles/features/split-usr/package.use.mask @@ -1,6 +1,16 @@ # Copyright 2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 +# Mike Gilbert (2025-06-03) +# Requires systemd. +app-emulation/virt-firmware test +dev-qt/qtbase journald +net-analyzer/wireshark sdjournal +sys-apps/dbus-broker launcher +sys-auth/pambase homed +sys-apps/ipmitool openbmc +www-servers/uwsgi uwsgi_plugins_systemd_logger + # Nowa Ammerlaan (2023-12-07) # Does not support split-usr filesystem geometry. Please migrate to # a merged-usr profile. diff --git a/profiles/features/split-usr/use.mask b/profiles/features/split-usr/use.mask index 70a8ffe0514d4..d3ac3e3c86e5d 100644 --- a/profiles/features/split-usr/use.mask +++ b/profiles/features/split-usr/use.mask @@ -1,6 +1,10 @@ -# Copyright 2022 Gentoo Authors +# Copyright 2022-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 +# Mike Gilbert (2025-05-27) +# systemd does not support split-usr. +systemd + # Andreas K. Hüttel (2022-12-04) # Unmask split-usr. -split-usr diff --git a/sci-libs/gdal/gdal-3.9.3.ebuild b/sci-libs/gdal/gdal-3.9.3-r1.ebuild similarity index 99% rename from sci-libs/gdal/gdal-3.9.3.ebuild rename to sci-libs/gdal/gdal-3.9.3-r1.ebuild index b0e19738ed586..56799af7b6d64 100644 --- a/sci-libs/gdal/gdal-3.9.3.ebuild +++ b/sci-libs/gdal/gdal-3.9.3-r1.ebuild @@ -56,7 +56,7 @@ DEPEND=" fits? ( sci-libs/cfitsio:= ) geos? ( >=sci-libs/geos-3.8.0 ) gif? ( media-libs/giflib:= ) - gml? ( >=dev-libs/xerces-c-3.1 ) + gml? ( >=dev-libs/xerces-c-3.1:= ) heif? ( media-libs/libheif:= ) hdf5? ( >=sci-libs/hdf5-1.6.4:=[cxx,szip] ) java? ( diff --git a/sci-physics/geant/geant-4.11.3.1.ebuild b/sci-physics/geant/geant-4.11.3.1-r1.ebuild similarity index 98% rename from sci-physics/geant/geant-4.11.3.1.ebuild rename to sci-physics/geant/geant-4.11.3.1-r1.ebuild index 1d855b238d231..66c4169dd7c31 100644 --- a/sci-physics/geant/geant-4.11.3.1.ebuild +++ b/sci-physics/geant/geant-4.11.3.1-r1.ebuild @@ -46,7 +46,7 @@ RDEPEND=" >=sci-physics/clhep-2.4.7.1:2=[threads?] data? ( ~sci-physics/geant-data-4.11.3 ) doc? ( app-doc/geant-docs ) - gdml? ( dev-libs/xerces-c ) + gdml? ( dev-libs/xerces-c:= ) hdf5? ( sci-libs/hdf5:=[threads?] ) inventor? ( media-libs/SoXt ) motif? ( x11-libs/motif:0 ) diff --git a/sci-physics/geant/geant-4.11.3.2.ebuild b/sci-physics/geant/geant-4.11.3.2-r1.ebuild similarity index 98% rename from sci-physics/geant/geant-4.11.3.2.ebuild rename to sci-physics/geant/geant-4.11.3.2-r1.ebuild index 7b9aa22b46027..73b8b75408c37 100644 --- a/sci-physics/geant/geant-4.11.3.2.ebuild +++ b/sci-physics/geant/geant-4.11.3.2-r1.ebuild @@ -46,7 +46,7 @@ RDEPEND=" >=sci-physics/clhep-2.4.7.1:2=[threads?] data? ( ~sci-physics/geant-data-4.11.3 ) doc? ( app-doc/geant-docs ) - gdml? ( dev-libs/xerces-c ) + gdml? ( dev-libs/xerces-c:= ) hdf5? ( sci-libs/hdf5:=[threads?] ) inventor? ( media-libs/SoXt ) motif? ( x11-libs/motif:0 ) diff --git a/sys-apps/systemd/Manifest b/sys-apps/systemd/Manifest index 605b213fdf50b..d26a34fd9b12d 100644 --- a/sys-apps/systemd/Manifest +++ b/sys-apps/systemd/Manifest @@ -3,5 +3,3 @@ DIST systemd-256.12.tar.gz 15865500 BLAKE2B e15fd622357c1af09b6b25230040721d73b1 DIST systemd-256.13.tar.gz 15867550 BLAKE2B 6cdd884d430c7f2c9c9250dd63885b233d64b87a3297f604881567042f45d51aea1ae341e4fd356997464e53b230b6fb6ec502b0e88f28d9d4296f4dfeef2a14 SHA512 e25b3e5bce42211918058320789ab154282ecb264803ddcb9e0fb3afbb53417eeea29dcd183b68dd758e39f28cab2e1ba3267766e589f5129e213e12f109017e DIST systemd-257.3.tar.gz 16227011 BLAKE2B 06faa84890106c370c066bfcdf1075d8f1c77d4aa2d24997e5d1ee51b7169199413a08fc52f0935c9340d9adf6933d9c952ee51d6a71f73dcbafdbf972d15d59 SHA512 ef395998df4b24537147fa3b2e3ae2d100d3345f386fc39018bca0fe8092b7874bf9a6e6058a142342b3a0caebe1312ea9519bcbb4327a9d3649f593c49b3dab DIST systemd-257.5.tar.gz 16232112 BLAKE2B 142baef9b09217ea117ac09923604f7520a36d4c63cf04a78d1c4fbf7b057b977f5c77418168c0308a8dc6b48ccc6324438f30c87de8642e8e9cf12b47f90475 SHA512 9e5352c20c9edac53f302a534532035185139998628ed0a85411f440df47f1dd7cce6651aec787484809bb1aa2825008d062714c37936cbfd08451fbe29a998f -DIST systemd-stable-254.22.tar.gz 14667273 BLAKE2B d3bfbd34ef47b73e139c37dd3e961fdc17c969e38674d84976183ecad44030fce1db073da6faf522e9ab232ae65c8e70a8d9a1f15053c57269090d3a9f1756f7 SHA512 5cef3912e68060366d7a8030c13825ae872783dd55a8a3ab15aa5ff2c397b50df8fc6e08b9bd1fdc0d54f08f3f7765484a41af0646ded238512921e3d02b553d -DIST systemd-stable-254.24.tar.gz 14718567 BLAKE2B a3389e671f78db398d627f39761cb44a7db9904f4ca987d00073495eb0f80980118459440ee6556d4278c28939bc93167ec8e56885d14eecd17635a2d1aec7da SHA512 f2f5f30c2fd0246ca359bbf04f06fbb49685d58c0d7d4fab6031f98ffebd552141f05ea33c22aeef11338a90ad12389ccb887d9d2d2542d5124b3efd51638343 diff --git a/sys-apps/systemd/files/254-PrivateDevices-userdbd.patch b/sys-apps/systemd/files/254-PrivateDevices-userdbd.patch deleted file mode 100644 index 115c831c275a6..0000000000000 --- a/sys-apps/systemd/files/254-PrivateDevices-userdbd.patch +++ /dev/null @@ -1,242 +0,0 @@ -https://bugs.gentoo.org/920331 -https://github.com/systemd/systemd/issues/30535 - -From 4a9e03aa6bb2cbd23dac00f2b2a7642cc79eaade Mon Sep 17 00:00:00 2001 -From: Daan De Meyer -Date: Wed, 27 Sep 2023 11:55:59 +0200 -Subject: [PATCH 1/2] core: Make private /dev read-only after populating it - ---- - src/core/namespace.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/core/namespace.c b/src/core/namespace.c -index e2304f5d066da..d1153f7690140 100644 ---- a/src/core/namespace.c -+++ b/src/core/namespace.c -@@ -995,6 +995,11 @@ static int mount_private_dev(MountEntry *m) { - if (r < 0) - log_debug_errno(r, "Failed to set up basic device tree at '%s', ignoring: %m", temporary_mount); - -+ /* Make the bind mount read-only. */ -+ r = mount_nofollow_verbose(LOG_DEBUG, NULL, dev, NULL, MS_REMOUNT|MS_BIND|MS_RDONLY, NULL); -+ if (r < 0) -+ return r; -+ - /* Create the /dev directory if missing. It is more likely to be missing when the service is started - * with RootDirectory. This is consistent with mount units creating the mount points when missing. */ - (void) mkdir_p_label(mount_entry_path(m), 0755); - -From cd7f3702eb47c82a50bf74c2b7c15c2e4e1f5c79 Mon Sep 17 00:00:00 2001 -From: Daan De Meyer -Date: Wed, 27 Sep 2023 10:52:50 +0200 -Subject: [PATCH 2/2] core: Use a subdirectory of /run/ for PrivateDevices= - -When we're starting early boot services such as systemd-userdbd.service, -/tmp might not yet be mounted, so let's use a directory in /run instead -which is guaranteed to be available. ---- - src/core/execute.c | 1 + - src/core/namespace.c | 61 +++++++++++++++++++++++++++++---------- - src/core/namespace.h | 2 ++ - src/test/test-namespace.c | 1 + - src/test/test-ns.c | 1 + - 5 files changed, 50 insertions(+), 16 deletions(-) - -diff --git a/src/core/execute.c b/src/core/execute.c -index a52df64d01081..89c3868d55f6c 100644 ---- a/src/core/execute.c -+++ b/src/core/execute.c -@@ -3307,6 +3307,7 @@ static int apply_mount_namespace( - extension_dir, - root_dir || root_image ? params->notify_socket : NULL, - host_os_release_stage, -+ params->runtime_scope, - error_path); - - /* If we couldn't set up the namespace this is probably due to a missing capability. setup_namespace() reports -diff --git a/src/core/namespace.c b/src/core/namespace.c -index d1153f7690140..a0471ac8884bf 100644 ---- a/src/core/namespace.c -+++ b/src/core/namespace.c -@@ -909,7 +909,19 @@ static int clone_device_node( - return 0; - } - --static int mount_private_dev(MountEntry *m) { -+static char *settle_runtime_dir(RuntimeScope scope) { -+ char *runtime_dir; -+ -+ if (scope != RUNTIME_SCOPE_USER) -+ return strdup("/run/"); -+ -+ if (asprintf(&runtime_dir, "/run/user/" UID_FMT, geteuid()) < 0) -+ return NULL; -+ -+ return runtime_dir; -+} -+ -+static int mount_private_dev(MountEntry *m, RuntimeScope scope) { - static const char devnodes[] = - "/dev/null\0" - "/dev/zero\0" -@@ -918,13 +930,21 @@ static int mount_private_dev(MountEntry *m) { - "/dev/urandom\0" - "/dev/tty\0"; - -- char temporary_mount[] = "/tmp/namespace-dev-XXXXXX"; -+ _cleanup_free_ char *runtime_dir = NULL, *temporary_mount = NULL; - const char *dev = NULL, *devpts = NULL, *devshm = NULL, *devhugepages = NULL, *devmqueue = NULL, *devlog = NULL, *devptmx = NULL; - bool can_mknod = true; - int r; - - assert(m); - -+ runtime_dir = settle_runtime_dir(scope); -+ if (!runtime_dir) -+ return log_oom_debug(); -+ -+ temporary_mount = path_join(runtime_dir, "systemd/namespace-dev-XXXXXX"); -+ if (!temporary_mount) -+ return log_oom_debug(); -+ - if (!mkdtemp(temporary_mount)) - return log_debug_errno(errno, "Failed to create temporary directory '%s': %m", temporary_mount); - -@@ -1364,7 +1384,8 @@ static int apply_one_mount( - MountEntry *m, - const ImagePolicy *mount_image_policy, - const ImagePolicy *extension_image_policy, -- const NamespaceInfo *ns_info) { -+ const NamespaceInfo *ns_info, -+ RuntimeScope scope) { - - _cleanup_free_ char *inaccessible = NULL; - bool rbind = true, make = false; -@@ -1379,8 +1400,7 @@ static int apply_one_mount( - switch (m->mode) { - - case INACCESSIBLE: { -- _cleanup_free_ char *tmp = NULL; -- const char *runtime_dir; -+ _cleanup_free_ char *runtime_dir = NULL; - struct stat target; - - /* First, get rid of everything that is below if there -@@ -1396,14 +1416,14 @@ static int apply_one_mount( - mount_entry_path(m)); - } - -- if (geteuid() == 0) -- runtime_dir = "/run"; -- else { -- if (asprintf(&tmp, "/run/user/" UID_FMT, geteuid()) < 0) -- return -ENOMEM; -- -- runtime_dir = tmp; -- } -+ /* We don't pass the literal runtime scope through here but one based purely on our UID. This -+ * means that the root user's --user services will use the host's inaccessible inodes rather -+ * then root's private ones. This is preferable since it means device nodes that are -+ * overmounted to make them inaccessible will be overmounted with a device node, rather than -+ * an AF_UNIX socket inode. */ -+ runtime_dir = settle_runtime_dir(geteuid() == 0 ? RUNTIME_SCOPE_SYSTEM : RUNTIME_SCOPE_USER); -+ if (!runtime_dir) -+ return log_oom_debug(); - - r = mode_to_inaccessible_node(runtime_dir, target.st_mode, &inaccessible); - if (r < 0) -@@ -1523,7 +1543,7 @@ static int apply_one_mount( - break; - - case PRIVATE_DEV: -- return mount_private_dev(m); -+ return mount_private_dev(m, scope); - - case BIND_DEV: - return mount_bind_dev(m); -@@ -1824,6 +1844,7 @@ static int apply_mounts( - const NamespaceInfo *ns_info, - MountEntry *mounts, - size_t *n_mounts, -+ RuntimeScope scope, - char **symlinks, - char **error_path) { - -@@ -1875,7 +1896,7 @@ static int apply_mounts( - break; - } - -- r = apply_one_mount(root, m, mount_image_policy, extension_image_policy, ns_info); -+ r = apply_one_mount(root, m, mount_image_policy, extension_image_policy, ns_info, scope); - if (r < 0) { - if (error_path && mount_entry_path(m)) - *error_path = strdup(mount_entry_path(m)); -@@ -2030,6 +2051,7 @@ int setup_namespace( - const char *extension_dir, - const char *notify_socket, - const char *host_os_release_stage, -+ RuntimeScope scope, - char **error_path) { - - _cleanup_(loop_device_unrefp) LoopDevice *loop_device = NULL; -@@ -2490,7 +2512,14 @@ int setup_namespace( - (void) base_filesystem_create(root, UID_INVALID, GID_INVALID); - - /* Now make the magic happen */ -- r = apply_mounts(root, mount_image_policy, extension_image_policy, ns_info, mounts, &n_mounts, symlinks, error_path); -+ r = apply_mounts(root, -+ mount_image_policy, -+ extension_image_policy, -+ ns_info, -+ mounts, &n_mounts, -+ scope, -+ symlinks, -+ error_path); - if (r < 0) - goto finish; - -diff --git a/src/core/namespace.h b/src/core/namespace.h -index b6132154c5132..581403d89826d 100644 ---- a/src/core/namespace.h -+++ b/src/core/namespace.h -@@ -16,6 +16,7 @@ typedef struct MountImage MountImage; - #include "fs-util.h" - #include "macro.h" - #include "namespace-util.h" -+#include "runtime-scope.h" - #include "string-util.h" - - typedef enum ProtectHome { -@@ -134,6 +135,7 @@ int setup_namespace( - const char *extension_dir, - const char *notify_socket, - const char *host_os_release_stage, -+ RuntimeScope scope, - char **error_path); - - #define RUN_SYSTEMD_EMPTY "/run/systemd/empty" -diff --git a/src/test/test-namespace.c b/src/test/test-namespace.c -index 25aafc35ca837..42ac65d08c87a 100644 ---- a/src/test/test-namespace.c -+++ b/src/test/test-namespace.c -@@ -206,6 +206,7 @@ TEST(protect_kernel_logs) { - NULL, - NULL, - NULL, -+ RUNTIME_SCOPE_SYSTEM, - NULL); - assert_se(r == 0); - -diff --git a/src/test/test-ns.c b/src/test/test-ns.c -index 77afd2f6b9eb8..eb3afed9e1c66 100644 ---- a/src/test/test-ns.c -+++ b/src/test/test-ns.c -@@ -108,6 +108,7 @@ int main(int argc, char *argv[]) { - NULL, - NULL, - NULL, -+ RUNTIME_SCOPE_SYSTEM, - NULL); - if (r < 0) { - log_error_errno(r, "Failed to set up namespace: %m"); diff --git a/sys-apps/systemd/files/systemd-253-initrd-generators.patch b/sys-apps/systemd/files/systemd-253-initrd-generators.patch deleted file mode 100644 index 60e7b29d7a1f8..0000000000000 --- a/sys-apps/systemd/files/systemd-253-initrd-generators.patch +++ /dev/null @@ -1,34 +0,0 @@ -https://bugs.gentoo.org/896364 - -Workaround for bug in sys-kernel/dracut. - -From 6b25470ee28843a49c50442e9d8a98edc842ceca Mon Sep 17 00:00:00 2001 -From: Yu Watanabe -Date: Mon, 20 Feb 2023 12:00:30 +0900 -Subject: [PATCH] core/manager: run generators directly when we are in initrd - -Some initrd system write files at ourside of /run, /etc, or other -allowed places. This is a kind of workaround, but in most cases, such -sandboxing is not necessary as the filesystem is on ramfs when we are in -initrd. - -Fixes #26488. ---- - src/core/manager.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/core/manager.c b/src/core/manager.c -index 7b394794b0d4..306477c6e6c2 100644 ---- a/src/core/manager.c -+++ b/src/core/manager.c -@@ -3822,8 +3822,8 @@ static int manager_run_generators(Manager *m) { - /* If we are the system manager, we fork and invoke the generators in a sanitized mount namespace. If - * we are the user manager, let's just execute the generators directly. We might not have the - * necessary privileges, and the system manager has already mounted /tmp/ and everything else for us. -- */ -- if (MANAGER_IS_USER(m)) { -+ * If we are in initrd, let's also execute the generators directly, as we are in ramfs. */ -+ if (MANAGER_IS_USER(m) || in_initrd()) { - r = manager_execute_generators(m, paths, /* remount_ro= */ false); - goto finish; - } diff --git a/sys-apps/systemd/systemd-254.22.ebuild b/sys-apps/systemd/systemd-254.22.ebuild deleted file mode 100644 index 06aaac504f18c..0000000000000 --- a/sys-apps/systemd/systemd-254.22.ebuild +++ /dev/null @@ -1,539 +0,0 @@ -# Copyright 2011-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -PYTHON_COMPAT=( python3_{10..13} ) - -# Avoid QA warnings -TMPFILES_OPTIONAL=1 -UDEV_OPTIONAL=1 - -QA_PKGCONFIG_VERSION=$(ver_cut 1) - -if [[ ${PV} == 9999 ]]; then - EGIT_REPO_URI="https://github.com/systemd/systemd.git" - inherit git-r3 -else - if [[ ${PV} == *.* ]]; then - MY_PN=systemd-stable - else - MY_PN=systemd - fi - MY_PV=${PV/_/-} - MY_P=${MY_PN}-${MY_PV} - S=${WORKDIR}/${MY_P} - SRC_URI="https://github.com/systemd/${MY_PN}/archive/v${MY_PV}/${MY_P}.tar.gz" - KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86" -fi - -inherit bash-completion-r1 linux-info meson-multilib optfeature pam python-single-r1 -inherit secureboot systemd toolchain-funcs udev usr-ldscript - -DESCRIPTION="System and service manager for Linux" -HOMEPAGE="http://systemd.io/" - -LICENSE="GPL-2 LGPL-2.1 MIT public-domain" -SLOT="0/2" -IUSE=" - acl apparmor audit boot cgroup-hybrid cryptsetup curl +dns-over-tls elfutils - fido2 +gcrypt gnutls homed http idn importd iptables +kernel-install +kmod - +lz4 lzma +openssl pam pcre pkcs11 policykit pwquality qrcode - +resolvconf +seccomp selinux split-usr +sysv-utils test tpm ukify vanilla xkb +zstd -" -REQUIRED_USE=" - ${PYTHON_REQUIRED_USE} - dns-over-tls? ( || ( gnutls openssl ) ) - fido2? ( cryptsetup openssl ) - homed? ( cryptsetup pam openssl ) - importd? ( curl lzma || ( gcrypt openssl ) ) - pwquality? ( homed ) - boot? ( kernel-install ) - ukify? ( boot ) -" -RESTRICT="!test? ( test )" - -MINKV="4.15" - -COMMON_DEPEND=" - >=sys-apps/util-linux-2.30:0=[${MULTILIB_USEDEP}] - sys-libs/libcap:0=[${MULTILIB_USEDEP}] - virtual/libcrypt:=[${MULTILIB_USEDEP}] - acl? ( sys-apps/acl:0= ) - apparmor? ( sys-libs/libapparmor:0= ) - audit? ( >=sys-process/audit-2:0= ) - cryptsetup? ( >=sys-fs/cryptsetup-2.0.1:0= ) - curl? ( net-misc/curl:0= ) - elfutils? ( >=dev-libs/elfutils-0.158:0= ) - fido2? ( dev-libs/libfido2:0= ) - gcrypt? ( >=dev-libs/libgcrypt-1.4.5:0=[${MULTILIB_USEDEP}] ) - gnutls? ( >=net-libs/gnutls-3.6.0:0= ) - http? ( >=net-libs/libmicrohttpd-0.9.33:0=[epoll(+)] ) - idn? ( net-dns/libidn2:= ) - importd? ( - app-arch/bzip2:0= - sys-libs/zlib:0= - ) - kmod? ( >=sys-apps/kmod-15:0= ) - lz4? ( >=app-arch/lz4-0_p131:0=[${MULTILIB_USEDEP}] ) - lzma? ( >=app-arch/xz-utils-5.0.5-r1:0=[${MULTILIB_USEDEP}] ) - iptables? ( net-firewall/iptables:0= ) - openssl? ( >=dev-libs/openssl-1.1.0:0= ) - pam? ( sys-libs/pam:=[${MULTILIB_USEDEP}] ) - pkcs11? ( app-crypt/p11-kit:0= ) - pcre? ( dev-libs/libpcre2 ) - pwquality? ( dev-libs/libpwquality:0= ) - qrcode? ( media-gfx/qrencode:0= ) - seccomp? ( >=sys-libs/libseccomp-2.3.3:0= ) - selinux? ( sys-libs/libselinux:0= ) - tpm? ( app-crypt/tpm2-tss:0= ) - xkb? ( >=x11-libs/libxkbcommon-0.4.1:0= ) - zstd? ( >=app-arch/zstd-1.4.0:0=[${MULTILIB_USEDEP}] ) -" - -# Newer linux-headers needed by ia64, bug #480218 -DEPEND="${COMMON_DEPEND} - >=sys-kernel/linux-headers-${MINKV} -" - -PEFILE_DEPEND='dev-python/pefile[${PYTHON_USEDEP}]' - -# baselayout-2.2 has /run -RDEPEND="${COMMON_DEPEND} - >=acct-group/adm-0-r1 - >=acct-group/wheel-0-r1 - >=acct-group/kmem-0-r1 - >=acct-group/tty-0-r1 - >=acct-group/utmp-0-r1 - >=acct-group/audio-0-r1 - >=acct-group/cdrom-0-r1 - >=acct-group/dialout-0-r1 - >=acct-group/disk-0-r1 - >=acct-group/input-0-r1 - >=acct-group/kvm-0-r1 - >=acct-group/lp-0-r1 - >=acct-group/render-0-r1 - acct-group/sgx - >=acct-group/tape-0-r1 - acct-group/users - >=acct-group/video-0-r1 - >=acct-group/systemd-journal-0-r1 - >=acct-user/root-0-r1 - acct-user/nobody - >=acct-user/systemd-journal-remote-0-r1 - >=acct-user/systemd-coredump-0-r1 - >=acct-user/systemd-network-0-r1 - acct-user/systemd-oom - >=acct-user/systemd-resolve-0-r1 - >=acct-user/systemd-timesync-0-r1 - >=sys-apps/baselayout-2.2 - ukify? ( - ${PYTHON_DEPS} - $(python_gen_cond_dep "${PEFILE_DEPEND}") - ) - selinux? ( - sec-policy/selinux-base-policy[systemd] - sec-policy/selinux-ntp - ) - sysv-utils? ( - !sys-apps/openrc[sysv-utils(-)] - !sys-apps/sysvinit - ) - !sysv-utils? ( sys-apps/sysvinit ) - resolvconf? ( !net-dns/openresolv ) - !sys-auth/nss-myhostname - !sys-fs/eudev - !sys-fs/udev -" - -# sys-apps/dbus: the daemon only (+ build-time lib dep for tests) -PDEPEND=">=sys-apps/dbus-1.9.8[systemd] - >=sys-fs/udev-init-scripts-34 - policykit? ( sys-auth/polkit ) - !vanilla? ( sys-apps/gentoo-systemd-integration )" - -BDEPEND=" - app-arch/xz-utils:0 - dev-util/gperf - >=dev-build/meson-0.46 - >=sys-apps/coreutils-8.16 - sys-devel/gettext - virtual/pkgconfig - test? ( - app-text/tree - dev-lang/perl - sys-apps/dbus - ) - app-text/docbook-xml-dtd:4.2 - app-text/docbook-xml-dtd:4.5 - app-text/docbook-xsl-stylesheets - dev-libs/libxslt:0 - ${PYTHON_DEPS} - $(python_gen_cond_dep " - dev-python/jinja2[\${PYTHON_USEDEP}] - dev-python/lxml[\${PYTHON_USEDEP}] - boot? ( >=dev-python/pyelftools-0.30[\${PYTHON_USEDEP}] ) - ukify? ( test? ( ${PEFILE_DEPEND} ) ) - ") -" - -QA_FLAGS_IGNORED="usr/lib/systemd/boot/efi/.*" -QA_EXECSTACK="usr/lib/systemd/boot/efi/*" - -pkg_pretend() { - if [[ ${MERGE_TYPE} != buildonly ]]; then - local CONFIG_CHECK="~BLK_DEV_BSG ~CGROUPS - ~CGROUP_BPF ~DEVTMPFS ~EPOLL ~FANOTIFY ~FHANDLE - ~INOTIFY_USER ~IPV6 ~NET ~NET_NS ~PROC_FS ~SIGNALFD ~SYSFS - ~TIMERFD ~TMPFS_XATTR ~UNIX ~USER_NS - ~CRYPTO_HMAC ~CRYPTO_SHA256 ~CRYPTO_USER_API_HASH - ~!GRKERNSEC_PROC ~!IDE ~!SYSFS_DEPRECATED - ~!SYSFS_DEPRECATED_V2" - - use acl && CONFIG_CHECK+=" ~TMPFS_POSIX_ACL" - use seccomp && CONFIG_CHECK+=" ~SECCOMP ~SECCOMP_FILTER" - - if kernel_is -ge 5 10 20; then - CONFIG_CHECK+=" ~KCMP" - else - CONFIG_CHECK+=" ~CHECKPOINT_RESTORE" - fi - - if kernel_is -ge 4 18; then - CONFIG_CHECK+=" ~AUTOFS_FS" - else - CONFIG_CHECK+=" ~AUTOFS4_FS" - fi - - if linux_config_exists; then - local uevent_helper_path=$(linux_chkconfig_string UEVENT_HELPER_PATH) - if [[ -n ${uevent_helper_path} ]] && [[ ${uevent_helper_path} != '""' ]]; then - ewarn "It's recommended to set an empty value to the following kernel config option:" - ewarn "CONFIG_UEVENT_HELPER_PATH=${uevent_helper_path}" - fi - if linux_chkconfig_present X86; then - CONFIG_CHECK+=" ~DMIID" - fi - fi - - if kernel_is -lt ${MINKV//./ }; then - ewarn "Kernel version at least ${MINKV} required" - fi - - check_extra_config - fi -} - -pkg_setup() { - use boot && secureboot_pkg_setup -} - -src_unpack() { - default - [[ ${PV} != 9999 ]] || git-r3_src_unpack -} - -src_prepare() { - local PATCHES=( - "${FILESDIR}/systemd-test-process-util.patch" - "${FILESDIR}/systemd-253-initrd-generators.patch" - "${FILESDIR}/254-PrivateDevices-userdbd.patch" - ) - - if ! use vanilla; then - PATCHES+=( - "${FILESDIR}/gentoo-generator-path-r2.patch" - "${FILESDIR}/gentoo-journald-audit-r1.patch" - ) - fi - - # Fails with split-usr. - sed -i -e '2i exit 77' test/test-rpm-macros.sh || die - - default -} - -src_configure() { - # Prevent conflicts with i686 cross toolchain, bug 559726 - tc-export AR CC NM OBJCOPY RANLIB - - python_setup - - multilib-minimal_src_configure -} - -multilib_src_configure() { - local myconf=( - --localstatedir="${EPREFIX}/var" - -Dsupport-url="https://gentoo.org/support/" - -Dpamlibdir="$(getpam_mod_dir)" - # avoid bash-completion dep - -Dbashcompletiondir="$(get_bashcompdir)" - $(meson_use split-usr) - $(meson_use split-usr split-bin) - -Drootprefix="$(usex split-usr "${EPREFIX:-/}" "${EPREFIX}/usr")" - -Drootlibdir="${EPREFIX}/usr/$(get_libdir)" - # Disable compatibility with sysvinit - -Dsysvinit-path= - -Dsysvrcnd-path= - # Avoid infinite exec recursion, bug 642724 - -Dtelinit-path="${EPREFIX}/lib/sysvinit/telinit" - # no deps - -Dima=true - -Ddefault-hierarchy=$(usex cgroup-hybrid hybrid unified) - # Optional components/dependencies - $(meson_native_use_bool acl) - $(meson_native_use_bool apparmor) - $(meson_native_use_bool audit) - $(meson_native_use_bool boot bootloader) - $(meson_native_use_bool cryptsetup libcryptsetup) - $(meson_native_use_bool curl libcurl) - $(meson_native_use_bool dns-over-tls dns-over-tls) - $(meson_native_use_bool elfutils) - $(meson_native_use_bool fido2 libfido2) - $(meson_use gcrypt) - $(meson_native_use_bool gnutls) - $(meson_native_use_bool homed) - $(meson_native_use_bool http microhttpd) - $(meson_native_use_bool idn) - $(meson_native_use_bool importd) - $(meson_native_use_bool importd bzip2) - $(meson_native_use_bool importd zlib) - $(meson_native_use_bool kernel-install) - $(meson_native_use_bool kmod) - $(meson_use lz4) - $(meson_use lzma xz) - $(meson_use test tests) - $(meson_use zstd) - $(meson_native_use_bool iptables libiptc) - $(meson_native_use_bool openssl) - $(meson_use pam) - $(meson_native_use_bool pkcs11 p11kit) - $(meson_native_use_bool pcre pcre2) - $(meson_native_use_bool policykit polkit) - $(meson_native_use_bool pwquality) - $(meson_native_use_bool qrcode qrencode) - $(meson_native_use_bool seccomp) - $(meson_native_use_bool selinux) - $(meson_native_use_bool tpm tpm2) - $(meson_native_use_bool test dbus) - $(meson_native_use_bool ukify) - $(meson_native_use_bool xkb xkbcommon) - -Dntp-servers="0.gentoo.pool.ntp.org 1.gentoo.pool.ntp.org 2.gentoo.pool.ntp.org 3.gentoo.pool.ntp.org" - # Breaks screen, tmux, etc. - -Ddefault-kill-user-processes=false - -Dcreate-log-dirs=false - - # multilib options - $(meson_native_true backlight) - $(meson_native_true binfmt) - $(meson_native_true coredump) - $(meson_native_true environment-d) - $(meson_native_true firstboot) - $(meson_native_true hibernate) - $(meson_native_true hostnamed) - $(meson_native_true ldconfig) - $(meson_native_true localed) - $(meson_native_true man) - $(meson_native_true networkd) - $(meson_native_true quotacheck) - $(meson_native_true randomseed) - $(meson_native_true rfkill) - $(meson_native_true sysusers) - $(meson_native_true timedated) - $(meson_native_true timesyncd) - $(meson_native_true tmpfiles) - $(meson_native_true vconsole) - ) - - meson_src_configure "${myconf[@]}" -} - -multilib_src_test() { - unset DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR - local -x COLUMNS=80 - meson_src_test --timeout-multiplier=10 -} - -multilib_src_install_all() { - local rootprefix=$(usex split-usr '' /usr) - local sbin=$(usex split-usr sbin bin) - - # meson doesn't know about docdir - mv "${ED}"/usr/share/doc/{systemd,${PF}} || die - - einstalldocs - dodoc "${FILESDIR}"/nsswitch.conf - - insinto /usr/lib/tmpfiles.d - doins "${FILESDIR}"/legacy.conf - - if ! use resolvconf; then - rm -f "${ED}${rootprefix}/${sbin}"/resolvconf || die - fi - - if ! use sysv-utils; then - rm "${ED}${rootprefix}/${sbin}"/{halt,init,poweroff,reboot,shutdown} || die - rm "${ED}"/usr/share/man/man1/init.1 || die - rm "${ED}"/usr/share/man/man8/{halt,poweroff,reboot,shutdown}.8 || die - fi - - # https://bugs.gentoo.org/761763 - rm -r "${ED}"/usr/lib/sysusers.d || die - - # Preserve empty dirs in /etc & /var, bug #437008 - keepdir /etc/{binfmt.d,modules-load.d,tmpfiles.d} - keepdir /etc/kernel/install.d - keepdir /etc/systemd/{network,system,user} - keepdir /etc/udev/rules.d - - keepdir /etc/udev/hwdb.d - - keepdir "${rootprefix}"/lib/systemd/{system-sleep,system-shutdown} - keepdir /usr/lib/{binfmt.d,modules-load.d} - keepdir /usr/lib/systemd/user-generators - keepdir /var/lib/systemd - keepdir /var/log/journal - - if use pam; then - if use selinux; then - newpamd "${FILESDIR}"/systemd-user-selinux.pam systemd-user - else - newpamd "${FILESDIR}"/systemd-user.pam systemd-user - fi - fi - - if use split-usr; then - # Avoid breaking boot/reboot - dosym ../../../lib/systemd/systemd /usr/lib/systemd/systemd - dosym ../../../lib/systemd/systemd-shutdown /usr/lib/systemd/systemd-shutdown - fi - - gen_usr_ldscript -a systemd udev - - if use kernel-install; then - # Dummy config, remove to make room for sys-kernel/installkernel - rm "${ED}/usr/lib/kernel/install.conf" || die - fi - - use ukify && python_fix_shebang "${ED}" - use boot && secureboot_auto_sign -} - -migrate_locale() { - local envd_locale_def="${EROOT}/etc/env.d/02locale" - local envd_locale=( "${EROOT}"/etc/env.d/??locale ) - local locale_conf="${EROOT}/etc/locale.conf" - - if [[ ! -L ${locale_conf} && ! -e ${locale_conf} ]]; then - # If locale.conf does not exist... - if [[ -e ${envd_locale} ]]; then - # ...either copy env.d/??locale if there's one - ebegin "Moving ${envd_locale} to ${locale_conf}" - mv "${envd_locale}" "${locale_conf}" - eend ${?} || FAIL=1 - else - # ...or create a dummy default - ebegin "Creating ${locale_conf}" - cat > "${locale_conf}" <<-EOF - # This file has been created by the sys-apps/systemd ebuild. - # See locale.conf(5) and localectl(1). - - # LANG=${LANG} - EOF - eend ${?} || FAIL=1 - fi - fi - - if [[ ! -L ${envd_locale} ]]; then - # now, if env.d/??locale is not a symlink (to locale.conf)... - if [[ -e ${envd_locale} ]]; then - # ...warn the user that he has duplicate locale settings - ewarn - ewarn "To ensure consistent behavior, you should replace ${envd_locale}" - ewarn "with a symlink to ${locale_conf}. Please migrate your settings" - ewarn "and create the symlink with the following command:" - ewarn "ln -s -n -f ../locale.conf ${envd_locale}" - ewarn - else - # ...or just create the symlink if there's nothing here - ebegin "Creating ${envd_locale_def} -> ../locale.conf symlink" - ln -n -s ../locale.conf "${envd_locale_def}" - eend ${?} || FAIL=1 - fi - fi -} - -pkg_preinst() { - if [[ -e ${EROOT}/etc/sysctl.conf ]]; then - # Symlink /etc/sysctl.conf for easy migration. - dosym ../../../etc/sysctl.conf /usr/lib/sysctl.d/99-sysctl.conf - fi - - if ! use split-usr; then - local dir - for dir in bin sbin lib usr/sbin; do - if [[ ! -L ${EROOT}/${dir} ]]; then - eerror "'${EROOT}/${dir}' is not a symbolic link." - FAIL=1 - fi - done - if [[ ${FAIL} ]]; then - eerror "Migration to system layout with merged directories must be performed before" - eerror "installing ${CATEGORY}/${PN} with USE=\"-split-usr\" to avoid run-time breakage." - die "System layout with split directories still used" - fi - fi - if ! use boot && has_version "sys-apps/systemd[gnuefi(-)]"; then - ewarn "The 'gnuefi' USE flag has been renamed to 'boot'." - ewarn "Make sure to enable the 'boot' USE flag if you use systemd-boot." - fi -} - -pkg_postinst() { - systemd_update_catalog - - # Keep this here in case the database format changes so it gets updated - # when required. - systemd-hwdb --root="${ROOT}" update - - udev_reload || FAIL=1 - - # Bug 465468, make sure locales are respected, and ensure consistency - # between OpenRC & systemd - migrate_locale - - if [[ -z ${REPLACING_VERSIONS} ]]; then - if type systemctl &>/dev/null; then - systemctl --root="${ROOT:-/}" enable getty@.service remote-fs.target || FAIL=1 - fi - elog "To enable a useful set of services, run the following:" - elog " systemctl preset-all --preset-mode=enable-only" - fi - - if [[ -L ${EROOT}/var/lib/systemd/timesync ]]; then - rm "${EROOT}/var/lib/systemd/timesync" - fi - - if [[ ${FAIL} ]]; then - eerror "One of the postinst commands failed. Please check the postinst output" - eerror "for errors. You may need to clean up your system and/or try installing" - eerror "systemd again." - eerror - fi - - if use boot; then - optfeature "installing kernels in systemd-boot's native layout and update loader entries" \ - "sys-kernel/installkernel[systemd-boot]" - fi - if use ukify; then - optfeature "generating unified kernel image on each kernel installation" \ - "sys-kernel/installkernel[ukify]" - fi -} - -pkg_prerm() { - # If removing systemd completely, remove the catalog database. - if [[ ! ${REPLACED_BY_VERSION} ]]; then - rm -f -v "${EROOT}"/var/lib/systemd/catalog/database - fi -} diff --git a/sys-apps/systemd/systemd-254.24.ebuild b/sys-apps/systemd/systemd-254.24.ebuild deleted file mode 100644 index ab7340e9f25b4..0000000000000 --- a/sys-apps/systemd/systemd-254.24.ebuild +++ /dev/null @@ -1,539 +0,0 @@ -# Copyright 2011-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -PYTHON_COMPAT=( python3_{10..13} ) - -# Avoid QA warnings -TMPFILES_OPTIONAL=1 -UDEV_OPTIONAL=1 - -QA_PKGCONFIG_VERSION=$(ver_cut 1) - -if [[ ${PV} == 9999 ]]; then - EGIT_REPO_URI="https://github.com/systemd/systemd.git" - inherit git-r3 -else - if [[ ${PV} == *.* ]]; then - MY_PN=systemd-stable - else - MY_PN=systemd - fi - MY_PV=${PV/_/-} - MY_P=${MY_PN}-${MY_PV} - S=${WORKDIR}/${MY_P} - SRC_URI="https://github.com/systemd/${MY_PN}/archive/v${MY_PV}/${MY_P}.tar.gz" - KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86" -fi - -inherit bash-completion-r1 linux-info meson-multilib optfeature pam python-single-r1 -inherit secureboot systemd toolchain-funcs udev usr-ldscript - -DESCRIPTION="System and service manager for Linux" -HOMEPAGE="http://systemd.io/" - -LICENSE="GPL-2 LGPL-2.1 MIT public-domain" -SLOT="0/2" -IUSE=" - acl apparmor audit boot cgroup-hybrid cryptsetup curl +dns-over-tls elfutils - fido2 +gcrypt gnutls homed http idn importd iptables +kernel-install +kmod - +lz4 lzma +openssl pam pcre pkcs11 policykit pwquality qrcode - +resolvconf +seccomp selinux split-usr +sysv-utils test tpm ukify vanilla xkb +zstd -" -REQUIRED_USE=" - ${PYTHON_REQUIRED_USE} - dns-over-tls? ( || ( gnutls openssl ) ) - fido2? ( cryptsetup openssl ) - homed? ( cryptsetup pam openssl ) - importd? ( curl lzma || ( gcrypt openssl ) ) - pwquality? ( homed ) - boot? ( kernel-install ) - ukify? ( boot ) -" -RESTRICT="!test? ( test )" - -MINKV="4.15" - -COMMON_DEPEND=" - >=sys-apps/util-linux-2.30:0=[${MULTILIB_USEDEP}] - sys-libs/libcap:0=[${MULTILIB_USEDEP}] - virtual/libcrypt:=[${MULTILIB_USEDEP}] - acl? ( sys-apps/acl:0= ) - apparmor? ( sys-libs/libapparmor:0= ) - audit? ( >=sys-process/audit-2:0= ) - cryptsetup? ( >=sys-fs/cryptsetup-2.0.1:0= ) - curl? ( net-misc/curl:0= ) - elfutils? ( >=dev-libs/elfutils-0.158:0= ) - fido2? ( dev-libs/libfido2:0= ) - gcrypt? ( >=dev-libs/libgcrypt-1.4.5:0=[${MULTILIB_USEDEP}] ) - gnutls? ( >=net-libs/gnutls-3.6.0:0= ) - http? ( >=net-libs/libmicrohttpd-0.9.33:0=[epoll(+)] ) - idn? ( net-dns/libidn2:= ) - importd? ( - app-arch/bzip2:0= - sys-libs/zlib:0= - ) - kmod? ( >=sys-apps/kmod-15:0= ) - lz4? ( >=app-arch/lz4-0_p131:0=[${MULTILIB_USEDEP}] ) - lzma? ( >=app-arch/xz-utils-5.0.5-r1:0=[${MULTILIB_USEDEP}] ) - iptables? ( net-firewall/iptables:0= ) - openssl? ( >=dev-libs/openssl-1.1.0:0= ) - pam? ( sys-libs/pam:=[${MULTILIB_USEDEP}] ) - pkcs11? ( app-crypt/p11-kit:0= ) - pcre? ( dev-libs/libpcre2 ) - pwquality? ( dev-libs/libpwquality:0= ) - qrcode? ( media-gfx/qrencode:0= ) - seccomp? ( >=sys-libs/libseccomp-2.3.3:0= ) - selinux? ( sys-libs/libselinux:0= ) - tpm? ( app-crypt/tpm2-tss:0= ) - xkb? ( >=x11-libs/libxkbcommon-0.4.1:0= ) - zstd? ( >=app-arch/zstd-1.4.0:0=[${MULTILIB_USEDEP}] ) -" - -# Newer linux-headers needed by ia64, bug #480218 -DEPEND="${COMMON_DEPEND} - >=sys-kernel/linux-headers-${MINKV} -" - -PEFILE_DEPEND='dev-python/pefile[${PYTHON_USEDEP}]' - -# baselayout-2.2 has /run -RDEPEND="${COMMON_DEPEND} - >=acct-group/adm-0-r1 - >=acct-group/wheel-0-r1 - >=acct-group/kmem-0-r1 - >=acct-group/tty-0-r1 - >=acct-group/utmp-0-r1 - >=acct-group/audio-0-r1 - >=acct-group/cdrom-0-r1 - >=acct-group/dialout-0-r1 - >=acct-group/disk-0-r1 - >=acct-group/input-0-r1 - >=acct-group/kvm-0-r1 - >=acct-group/lp-0-r1 - >=acct-group/render-0-r1 - acct-group/sgx - >=acct-group/tape-0-r1 - acct-group/users - >=acct-group/video-0-r1 - >=acct-group/systemd-journal-0-r1 - >=acct-user/root-0-r1 - acct-user/nobody - >=acct-user/systemd-journal-remote-0-r1 - >=acct-user/systemd-coredump-0-r1 - >=acct-user/systemd-network-0-r1 - acct-user/systemd-oom - >=acct-user/systemd-resolve-0-r1 - >=acct-user/systemd-timesync-0-r1 - >=sys-apps/baselayout-2.2 - ukify? ( - ${PYTHON_DEPS} - $(python_gen_cond_dep "${PEFILE_DEPEND}") - ) - selinux? ( - sec-policy/selinux-base-policy[systemd] - sec-policy/selinux-ntp - ) - sysv-utils? ( - !sys-apps/openrc[sysv-utils(-)] - !sys-apps/sysvinit - ) - !sysv-utils? ( sys-apps/sysvinit ) - resolvconf? ( !net-dns/openresolv ) - !sys-auth/nss-myhostname - !sys-fs/eudev - !sys-fs/udev -" - -# sys-apps/dbus: the daemon only (+ build-time lib dep for tests) -PDEPEND=">=sys-apps/dbus-1.9.8[systemd] - >=sys-fs/udev-init-scripts-34 - policykit? ( sys-auth/polkit ) - !vanilla? ( sys-apps/gentoo-systemd-integration )" - -BDEPEND=" - app-arch/xz-utils:0 - dev-util/gperf - >=dev-build/meson-0.46 - >=sys-apps/coreutils-8.16 - sys-devel/gettext - virtual/pkgconfig - test? ( - app-text/tree - dev-lang/perl - sys-apps/dbus - ) - app-text/docbook-xml-dtd:4.2 - app-text/docbook-xml-dtd:4.5 - app-text/docbook-xsl-stylesheets - dev-libs/libxslt:0 - ${PYTHON_DEPS} - $(python_gen_cond_dep " - dev-python/jinja2[\${PYTHON_USEDEP}] - dev-python/lxml[\${PYTHON_USEDEP}] - boot? ( >=dev-python/pyelftools-0.30[\${PYTHON_USEDEP}] ) - ukify? ( test? ( ${PEFILE_DEPEND} ) ) - ") -" - -QA_FLAGS_IGNORED="usr/lib/systemd/boot/efi/.*" -QA_EXECSTACK="usr/lib/systemd/boot/efi/*" - -pkg_pretend() { - if [[ ${MERGE_TYPE} != buildonly ]]; then - local CONFIG_CHECK="~BLK_DEV_BSG ~CGROUPS - ~CGROUP_BPF ~DEVTMPFS ~EPOLL ~FANOTIFY ~FHANDLE - ~INOTIFY_USER ~IPV6 ~NET ~NET_NS ~PROC_FS ~SIGNALFD ~SYSFS - ~TIMERFD ~TMPFS_XATTR ~UNIX ~USER_NS - ~CRYPTO_HMAC ~CRYPTO_SHA256 ~CRYPTO_USER_API_HASH - ~!GRKERNSEC_PROC ~!IDE ~!SYSFS_DEPRECATED - ~!SYSFS_DEPRECATED_V2" - - use acl && CONFIG_CHECK+=" ~TMPFS_POSIX_ACL" - use seccomp && CONFIG_CHECK+=" ~SECCOMP ~SECCOMP_FILTER" - - if kernel_is -ge 5 10 20; then - CONFIG_CHECK+=" ~KCMP" - else - CONFIG_CHECK+=" ~CHECKPOINT_RESTORE" - fi - - if kernel_is -ge 4 18; then - CONFIG_CHECK+=" ~AUTOFS_FS" - else - CONFIG_CHECK+=" ~AUTOFS4_FS" - fi - - if linux_config_exists; then - local uevent_helper_path=$(linux_chkconfig_string UEVENT_HELPER_PATH) - if [[ -n ${uevent_helper_path} ]] && [[ ${uevent_helper_path} != '""' ]]; then - ewarn "It's recommended to set an empty value to the following kernel config option:" - ewarn "CONFIG_UEVENT_HELPER_PATH=${uevent_helper_path}" - fi - if linux_chkconfig_present X86; then - CONFIG_CHECK+=" ~DMIID" - fi - fi - - if kernel_is -lt ${MINKV//./ }; then - ewarn "Kernel version at least ${MINKV} required" - fi - - check_extra_config - fi -} - -pkg_setup() { - use boot && secureboot_pkg_setup -} - -src_unpack() { - default - [[ ${PV} != 9999 ]] || git-r3_src_unpack -} - -src_prepare() { - local PATCHES=( - "${FILESDIR}/systemd-test-process-util.patch" - "${FILESDIR}/systemd-253-initrd-generators.patch" - "${FILESDIR}/254-PrivateDevices-userdbd.patch" - ) - - if ! use vanilla; then - PATCHES+=( - "${FILESDIR}/gentoo-generator-path-r2.patch" - "${FILESDIR}/gentoo-journald-audit-r1.patch" - ) - fi - - # Fails with split-usr. - sed -i -e '2i exit 77' test/test-rpm-macros.sh || die - - default -} - -src_configure() { - # Prevent conflicts with i686 cross toolchain, bug 559726 - tc-export AR CC NM OBJCOPY RANLIB - - python_setup - - multilib-minimal_src_configure -} - -multilib_src_configure() { - local myconf=( - --localstatedir="${EPREFIX}/var" - -Dsupport-url="https://gentoo.org/support/" - -Dpamlibdir="$(getpam_mod_dir)" - # avoid bash-completion dep - -Dbashcompletiondir="$(get_bashcompdir)" - $(meson_use split-usr) - $(meson_use split-usr split-bin) - -Drootprefix="$(usex split-usr "${EPREFIX:-/}" "${EPREFIX}/usr")" - -Drootlibdir="${EPREFIX}/usr/$(get_libdir)" - # Disable compatibility with sysvinit - -Dsysvinit-path= - -Dsysvrcnd-path= - # Avoid infinite exec recursion, bug 642724 - -Dtelinit-path="${EPREFIX}/lib/sysvinit/telinit" - # no deps - -Dima=true - -Ddefault-hierarchy=$(usex cgroup-hybrid hybrid unified) - # Optional components/dependencies - $(meson_native_use_bool acl) - $(meson_native_use_bool apparmor) - $(meson_native_use_bool audit) - $(meson_native_use_bool boot bootloader) - $(meson_native_use_bool cryptsetup libcryptsetup) - $(meson_native_use_bool curl libcurl) - $(meson_native_use_bool dns-over-tls dns-over-tls) - $(meson_native_use_bool elfutils) - $(meson_native_use_bool fido2 libfido2) - $(meson_use gcrypt) - $(meson_native_use_bool gnutls) - $(meson_native_use_bool homed) - $(meson_native_use_bool http microhttpd) - $(meson_native_use_bool idn) - $(meson_native_use_bool importd) - $(meson_native_use_bool importd bzip2) - $(meson_native_use_bool importd zlib) - $(meson_native_use_bool kernel-install) - $(meson_native_use_bool kmod) - $(meson_use lz4) - $(meson_use lzma xz) - $(meson_use test tests) - $(meson_use zstd) - $(meson_native_use_bool iptables libiptc) - $(meson_native_use_bool openssl) - $(meson_use pam) - $(meson_native_use_bool pkcs11 p11kit) - $(meson_native_use_bool pcre pcre2) - $(meson_native_use_bool policykit polkit) - $(meson_native_use_bool pwquality) - $(meson_native_use_bool qrcode qrencode) - $(meson_native_use_bool seccomp) - $(meson_native_use_bool selinux) - $(meson_native_use_bool tpm tpm2) - $(meson_native_use_bool test dbus) - $(meson_native_use_bool ukify) - $(meson_native_use_bool xkb xkbcommon) - -Dntp-servers="0.gentoo.pool.ntp.org 1.gentoo.pool.ntp.org 2.gentoo.pool.ntp.org 3.gentoo.pool.ntp.org" - # Breaks screen, tmux, etc. - -Ddefault-kill-user-processes=false - -Dcreate-log-dirs=false - - # multilib options - $(meson_native_true backlight) - $(meson_native_true binfmt) - $(meson_native_true coredump) - $(meson_native_true environment-d) - $(meson_native_true firstboot) - $(meson_native_true hibernate) - $(meson_native_true hostnamed) - $(meson_native_true ldconfig) - $(meson_native_true localed) - $(meson_native_true man) - $(meson_native_true networkd) - $(meson_native_true quotacheck) - $(meson_native_true randomseed) - $(meson_native_true rfkill) - $(meson_native_true sysusers) - $(meson_native_true timedated) - $(meson_native_true timesyncd) - $(meson_native_true tmpfiles) - $(meson_native_true vconsole) - ) - - meson_src_configure "${myconf[@]}" -} - -multilib_src_test() { - unset DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR - local -x COLUMNS=80 - meson_src_test --timeout-multiplier=10 -} - -multilib_src_install_all() { - local rootprefix=$(usex split-usr '' /usr) - local sbin=$(usex split-usr sbin bin) - - # meson doesn't know about docdir - mv "${ED}"/usr/share/doc/{systemd,${PF}} || die - - einstalldocs - dodoc "${FILESDIR}"/nsswitch.conf - - insinto /usr/lib/tmpfiles.d - doins "${FILESDIR}"/legacy.conf - - if ! use resolvconf; then - rm -f "${ED}${rootprefix}/${sbin}"/resolvconf || die - fi - - if ! use sysv-utils; then - rm "${ED}${rootprefix}/${sbin}"/{halt,init,poweroff,reboot,shutdown} || die - rm "${ED}"/usr/share/man/man1/init.1 || die - rm "${ED}"/usr/share/man/man8/{halt,poweroff,reboot,shutdown}.8 || die - fi - - # https://bugs.gentoo.org/761763 - rm -r "${ED}"/usr/lib/sysusers.d || die - - # Preserve empty dirs in /etc & /var, bug #437008 - keepdir /etc/{binfmt.d,modules-load.d,tmpfiles.d} - keepdir /etc/kernel/install.d - keepdir /etc/systemd/{network,system,user} - keepdir /etc/udev/rules.d - - keepdir /etc/udev/hwdb.d - - keepdir "${rootprefix}"/lib/systemd/{system-sleep,system-shutdown} - keepdir /usr/lib/{binfmt.d,modules-load.d} - keepdir /usr/lib/systemd/user-generators - keepdir /var/lib/systemd - keepdir /var/log/journal - - if use pam; then - if use selinux; then - newpamd "${FILESDIR}"/systemd-user-selinux.pam systemd-user - else - newpamd "${FILESDIR}"/systemd-user.pam systemd-user - fi - fi - - if use split-usr; then - # Avoid breaking boot/reboot - dosym ../../../lib/systemd/systemd /usr/lib/systemd/systemd - dosym ../../../lib/systemd/systemd-shutdown /usr/lib/systemd/systemd-shutdown - fi - - gen_usr_ldscript -a systemd udev - - if use kernel-install; then - # Dummy config, remove to make room for sys-kernel/installkernel - rm "${ED}/usr/lib/kernel/install.conf" || die - fi - - use ukify && python_fix_shebang "${ED}" - use boot && secureboot_auto_sign -} - -migrate_locale() { - local envd_locale_def="${EROOT}/etc/env.d/02locale" - local envd_locale=( "${EROOT}"/etc/env.d/??locale ) - local locale_conf="${EROOT}/etc/locale.conf" - - if [[ ! -L ${locale_conf} && ! -e ${locale_conf} ]]; then - # If locale.conf does not exist... - if [[ -e ${envd_locale} ]]; then - # ...either copy env.d/??locale if there's one - ebegin "Moving ${envd_locale} to ${locale_conf}" - mv "${envd_locale}" "${locale_conf}" - eend ${?} || FAIL=1 - else - # ...or create a dummy default - ebegin "Creating ${locale_conf}" - cat > "${locale_conf}" <<-EOF - # This file has been created by the sys-apps/systemd ebuild. - # See locale.conf(5) and localectl(1). - - # LANG=${LANG} - EOF - eend ${?} || FAIL=1 - fi - fi - - if [[ ! -L ${envd_locale} ]]; then - # now, if env.d/??locale is not a symlink (to locale.conf)... - if [[ -e ${envd_locale} ]]; then - # ...warn the user that he has duplicate locale settings - ewarn - ewarn "To ensure consistent behavior, you should replace ${envd_locale}" - ewarn "with a symlink to ${locale_conf}. Please migrate your settings" - ewarn "and create the symlink with the following command:" - ewarn "ln -s -n -f ../locale.conf ${envd_locale}" - ewarn - else - # ...or just create the symlink if there's nothing here - ebegin "Creating ${envd_locale_def} -> ../locale.conf symlink" - ln -n -s ../locale.conf "${envd_locale_def}" - eend ${?} || FAIL=1 - fi - fi -} - -pkg_preinst() { - if [[ -e ${EROOT}/etc/sysctl.conf ]]; then - # Symlink /etc/sysctl.conf for easy migration. - dosym ../../../etc/sysctl.conf /usr/lib/sysctl.d/99-sysctl.conf - fi - - if ! use split-usr; then - local dir - for dir in bin sbin lib usr/sbin; do - if [[ ! -L ${EROOT}/${dir} ]]; then - eerror "'${EROOT}/${dir}' is not a symbolic link." - FAIL=1 - fi - done - if [[ ${FAIL} ]]; then - eerror "Migration to system layout with merged directories must be performed before" - eerror "installing ${CATEGORY}/${PN} with USE=\"-split-usr\" to avoid run-time breakage." - die "System layout with split directories still used" - fi - fi - if ! use boot && has_version "sys-apps/systemd[gnuefi(-)]"; then - ewarn "The 'gnuefi' USE flag has been renamed to 'boot'." - ewarn "Make sure to enable the 'boot' USE flag if you use systemd-boot." - fi -} - -pkg_postinst() { - systemd_update_catalog - - # Keep this here in case the database format changes so it gets updated - # when required. - systemd-hwdb --root="${ROOT}" update - - udev_reload || FAIL=1 - - # Bug 465468, make sure locales are respected, and ensure consistency - # between OpenRC & systemd - migrate_locale - - if [[ -z ${REPLACING_VERSIONS} ]]; then - if type systemctl &>/dev/null; then - systemctl --root="${ROOT:-/}" enable getty@.service remote-fs.target || FAIL=1 - fi - elog "To enable a useful set of services, run the following:" - elog " systemctl preset-all --preset-mode=enable-only" - fi - - if [[ -L ${EROOT}/var/lib/systemd/timesync ]]; then - rm "${EROOT}/var/lib/systemd/timesync" - fi - - if [[ ${FAIL} ]]; then - eerror "One of the postinst commands failed. Please check the postinst output" - eerror "for errors. You may need to clean up your system and/or try installing" - eerror "systemd again." - eerror - fi - - if use boot; then - optfeature "installing kernels in systemd-boot's native layout and update loader entries" \ - "sys-kernel/installkernel[systemd-boot]" - fi - if use ukify; then - optfeature "generating unified kernel image on each kernel installation" \ - "sys-kernel/installkernel[ukify]" - fi -} - -pkg_prerm() { - # If removing systemd completely, remove the catalog database. - if [[ ! ${REPLACED_BY_VERSION} ]]; then - rm -f -v "${EROOT}"/var/lib/systemd/catalog/database - fi -} diff --git a/sys-fs/squashfs-tools/Manifest b/sys-fs/squashfs-tools/Manifest index d945ad94f2dba..341737eb18edc 100644 --- a/sys-fs/squashfs-tools/Manifest +++ b/sys-fs/squashfs-tools/Manifest @@ -1,3 +1,4 @@ DIST squashfs-tools-4.5.1.tar.gz 270112 BLAKE2B cbd35daf582d284b021911bb754ed548763f2773e1bc02516ca18bab7034e352780c11eb7dfed1f047b70974dcfb716bb1a1d3729e5b25662203cfbf93553b73 SHA512 b3934ea1e26c7508110312711465644a6d9674b6b5332a7d011e191fa3c1d4b8be694214794a0f6005263d0f4e18bab96af2f7ed66a178f8e3bb3a781cd44896 DIST squashfs-tools-4.6.1.tar.gz 286848 BLAKE2B 05e38681de219413573e8b1a7f36d2f7e87734f68a929ecdeb5ae6017076fbfd67b897448980e047689ef4b154d2dcd1a90162367a6a5babab45f1ef36f09325 SHA512 10e8a4b1e2327e062aef4f85860e76ebcd7a29e4c19e152ff7edec4a38316982b5bcfde4ab69da6bcb931258d264c2b6cb40cb5f635f9e6f6eba1ed5976267cb DIST squashfs-tools-4.6.tar.gz 286409 BLAKE2B 1c04a8f6149863667151e76b3c1ecfdd5e9a181b305bea694af1d4968ac361114c9e926b351dcee2647796a21bc8cfc55b3d95f020ad88c3388007460de26053 SHA512 3a9effb9a5cf46fbb9f393e58bd938874dc4121828b77c67d659117ee84643917998a8503d629f46f1eff1826f6d7ae59ac2d803a5cdc3cfb1006ef2b3abf8c8 +DIST squashfs-tools-4.7.tar.gz 519217 BLAKE2B 331b5c9dfeb0c9829858a1b7e400120dc74cc503059b1c4a730633ae30d8f9839f420a042f2f3ae4b4d14eb753be622714a0cb22a1c3ac4bdf2e81d9cc77d84b SHA512 db69937dd62c61c77ee555df0346942a5da671e5a9c2e93cd76ea1132f7e20b17fc701d53d8a232b192301c4769869b6b1ea47dac877afcc8dfa9a4eea31e1e0 diff --git a/sys-fs/squashfs-tools/squashfs-tools-4.7.ebuild b/sys-fs/squashfs-tools/squashfs-tools-4.7.ebuild new file mode 100644 index 0000000000000..4fbed2884460c --- /dev/null +++ b/sys-fs/squashfs-tools/squashfs-tools-4.7.ebuild @@ -0,0 +1,57 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic toolchain-funcs + +DESCRIPTION="Tools to create and extract Squashfs filesystems" +HOMEPAGE="https://github.com/plougher/squashfs-tools/" +SRC_URI=" + https://github.com/plougher/squashfs-tools/archive/${PV}.tar.gz + -> ${P}.tar.gz +" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="debug lz4 lzma lzo xattr zstd" + +DEPEND=" + sys-libs/zlib + lz4? ( app-arch/lz4 ) + lzma? ( app-arch/xz-utils ) + lzo? ( dev-libs/lzo ) + xattr? ( sys-apps/attr ) + zstd? ( app-arch/zstd ) +" +RDEPEND=${DEPEND} + +use10() { + usex "${1}" 1 0 +} + +src_compile() { + # set up make command line variables in EMAKE_SQUASHFS_CONF + local opts=( + LZMA_XZ_SUPPORT=$(use10 lzma) + LZO_SUPPORT=$(use10 lzo) + LZ4_SUPPORT=$(use10 lz4) + XATTR_SUPPORT=$(use10 xattr) + XZ_SUPPORT=$(use10 lzma) + ZSTD_SUPPORT=$(use10 zstd) + ) + + tc-export CC + use debug && append-cppflags -DSQUASHFS_TRACE + emake "${opts[@]}" -C squashfs-tools +} + +src_install() { + dobin squashfs-tools/{mksquashfs,unsquashfs} + dodoc ACKNOWLEDGEMENTS CHANGES README* + doman Documentation/manpages/*.1 + + dosym unsquashfs /usr/bin/sqfscat + dosym mksquashfs /usr/bin/sqfstar +} diff --git a/sys-process/htop/htop-3.4.1-r1.ebuild b/sys-process/htop/htop-3.4.1-r1.ebuild index f1186e3c78ec3..9a8cc7e85c255 100644 --- a/sys-process/htop/htop-3.4.1-r1.ebuild +++ b/sys-process/htop/htop-3.4.1-r1.ebuild @@ -96,7 +96,7 @@ pkg_postinst() { xdg_desktop_database_update xdg_icon_cache_update - fcaps cap_sys_ptrace /usr/bin/${PN} + fcaps cap_sys_ptrace usr/bin/${PN} optfeature "Viewing processes accessing certain files" sys-process/lsof } diff --git a/sys-process/htop/htop-9999.ebuild b/sys-process/htop/htop-9999.ebuild index f1186e3c78ec3..9a8cc7e85c255 100644 --- a/sys-process/htop/htop-9999.ebuild +++ b/sys-process/htop/htop-9999.ebuild @@ -96,7 +96,7 @@ pkg_postinst() { xdg_desktop_database_update xdg_icon_cache_update - fcaps cap_sys_ptrace /usr/bin/${PN} + fcaps cap_sys_ptrace usr/bin/${PN} optfeature "Viewing processes accessing certain files" sys-process/lsof }