Merge updates from master

This commit is contained in:
Repository mirror & CI
2025-06-04 02:27:01 +00:00
82 changed files with 5857 additions and 2176 deletions

View File

@@ -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

View File

@@ -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
}

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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

View File

@@ -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
}

View File

@@ -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]
"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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"
}

View File

@@ -38,7 +38,7 @@ IUSE="doc"
RDEPEND="
dev-libs/icu:=
dev-libs/xerces-c[icu]
dev-libs/xerces-c:=[icu]
"
DEPEND="${RDEPEND}"
BDEPEND+="

View File

@@ -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

View File

@@ -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.

View File

@@ -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
}

View File

@@ -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() {

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}
}

View File

@@ -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

View File

@@ -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/jmespath-2[${PYTHON_USEDEP}]
dev-python/python-dateutil[${PYTHON_USEDEP}]
>=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}
}

View File

@@ -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

View File

@@ -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=
}

View File

@@ -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

View File

@@ -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/httplib2-1[${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}]
<dev-python/uritemplate-5[${PYTHON_USEDEP}]
"
BDEPEND="
test? (
dev-python/mock[${PYTHON_USEDEP}]
dev-python/pandas[${PYTHON_USEDEP}]
dev-python/parameterized[${PYTHON_USEDEP}]
)
"
distutils_enable_tests pytest
python_test() {
local EPYTEST_DESELECT=(
# require Internet access (and credentials)
tests/test_discovery.py::DiscoveryErrors::test_credentials_and_credentials_file_mutually_exclusive
tests/test_discovery.py::DiscoveryFromDocument::test_api_endpoint_override_from_client_options_mapping_object
tests/test_discovery.py::Universe::test_client_options_universe_configured_with_mtls
tests/test_discovery.py::Universe::test_universe_env_var_configured_with_mtls
)
epytest tests
}

View File

@@ -1,2 +1,3 @@
DIST mkdocstrings_python-1.16.10.tar.gz 205771 BLAKE2B 3eca060176ea85e0191ad618ebf274e741a740ebf0da2d1c3b0ef6bcca4129a8f6486fda940ee161cea54f167a26122b55cb1105359dea17508a9c02e4dec638 SHA512 761a616654b3986feaeaa75e3faf5d6cc19786f740086c5c654444679be54fba4ad1a85d227a51e9798030cef889009a4f51d9461ea00c7ffb0e87fba8e1047c
DIST mkdocstrings_python-1.16.11.tar.gz 205392 BLAKE2B 9442f60570b70912ed9fcb067b8ae507f4c7fe02e209c60e9a9f52171a77552857c01288f1f63f7c48d13857409136ee1c2de70889c7802af6876087eb70a64d SHA512 beb6da8c3fe19b0ffd69cabfb622f03bdc7b5727b628dcb7c7370a24e166fa5e759324585e3b6147521b706d18e2e2037c60ada25bebd7ec2a8ef6fd86978ab7
DIST mkdocstrings_python-1.16.12.tar.gz 206065 BLAKE2B 444d4208f804423b60e7ca70c5488d8871210d9b83f53ffa99b6bf76adbbc541ab63a6a57fe488ff625a82b42a445e0adbeef33acfc62e208c51cda5e6154b01 SHA512 62ce0960059d0fd307e2d31516b53f79a68726d79ac196e016934778fca4c85b82653e85d75c9fbf89f93f7da9d814837ed930477d2fa207207f8ba20212521c

View File

@@ -0,0 +1,48 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=pdm-backend
PYTHON_COMPAT=( pypy3_11 python3_{11..13} )
inherit distutils-r1 pypi
DESCRIPTION="Python handler for dev-python/mkdocstrings"
HOMEPAGE="
https://mkdocstrings.github.io/python/
https://github.com/mkdocstrings/python/
https://pypi.org/project/mkdocstrings-python/
"
LICENSE="ISC"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~riscv"
RDEPEND="
>=dev-python/griffe-1.6.2[${PYTHON_USEDEP}]
>=dev-python/mkdocstrings-0.28.3[${PYTHON_USEDEP}]
>=dev-python/mkdocs-autorefs-1.4[${PYTHON_USEDEP}]
"
BDEPEND="
test? (
>=dev-python/beautifulsoup4-4.12.3[${PYTHON_USEDEP}]
>=dev-python/inline-snapshot-0.18[${PYTHON_USEDEP}]
dev-python/mkdocs-material[${PYTHON_USEDEP}]
)
"
distutils_enable_tests pytest
export PDM_BUILD_SCM_VERSION=${PV}
python_test() {
local EPYTEST_DESELECT=(
# "None" meaning particular formatter not installed
"tests/test_rendering.py::test_format_code[None-print('Hello')]"
"tests/test_rendering.py::test_format_code[None-aaaaa(bbbbb, ccccc=1) + ddddd.eeeee[ffff] or {ggggg: hhhhh, iiiii: jjjjj}]"
)
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
epytest -p inline_snapshot
}

View File

@@ -1,2 +1,3 @@
DIST Nuitka-2.7.4.tar.gz 3885038 BLAKE2B c0c4456af4e3df2f653b8698a53470114ebd809bf48931240361ae2f5f55c7b88acf2171a07245f13550b9111ec067d2eb9390562718355e07c4f9026d2ba52e SHA512 62b91a298e69d4d8d76608fa5ccd192b8e47764232d6653ec8519244dc099a3623be68554ab7e0a822a69a3f86d19a9b898d2ecb16d68b93d765eed3b84a1937
DIST Nuitka-2.7.5.tar.gz 3885564 BLAKE2B e949b3da418393e7b847e4fce07add049181da6801040ba2c7d1eb46b5d5c0b0f88b98cf0bb1808a727414d3f9ed1d050cad4a3bc54a17d35488c6788effc8ee SHA512 e26f6990dc2a0842dfc5acfb80f5a4de975e2e4244f99d861e9a6e2f18c68dda66d6b1bfa64f4387ce72de321a003ad4582dee4f4385c009e5b54c7e0c63a877
DIST Nuitka-2.7.6.tar.gz 3885618 BLAKE2B 14425702c4940fd4c7bbf2e02fa717ec9b2d6fd5de2b15e736d74e8ac78617fd9749154ec14395da1ddb465526cc60ec53c55b6d7ec4af71c3da3cf49127f268 SHA512 65e35fd48de4f0cb4655d819d05161a36a73e5d2725e0d3dac3d86a42571c924d6568c4b3dda4b284240ae82575bf677daaddc74d30f94d3af70aea286eea8b3

View File

@@ -0,0 +1,55 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYPI_NO_NORMALIZE=1
PYPI_PN=${PN^}
PYTHON_COMPAT=( python3_{11..13} )
inherit distutils-r1 flag-o-matic optfeature pypi
DESCRIPTION="Python to native compiler"
HOMEPAGE="
https://nuitka.net/
https://github.com/Nuitka/Nuitka/
https://pypi.org/project/Nuitka/
"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~loong ~x86"
IUSE="test"
RESTRICT="!test? ( test )"
RDEPEND="
dev-build/scons[${PYTHON_USEDEP}]
>=dev-python/ordered-set-4.1.0[${PYTHON_USEDEP}]
>=dev-python/zstandard-0.15[${PYTHON_USEDEP}]
"
BDEPEND="
${RDEPEND}
test? ( dev-util/ccache )
"
distutils-r1_src_prepare() {
# remove vendored version of SCons that is Python2 only
# this should be removed when upstream removes support for Python2
rm -vR "nuitka/build/inline_copy/lib/scons-2.3.2/SCons" || die
eapply_user
}
python_install() {
distutils-r1_python_install
doman doc/nuitka.1 doc/nuitka-run.1
}
python_test() {
append-ldflags -Wl,--no-warn-search-mismatch
./tests/basics/run_all.py search || die
}
pkg_postinst() {
optfeature "support for stand-alone executables" dev-util/patchelf
}

View File

@@ -1 +1,2 @@
DIST openstacksdk-4.5.0.tar.gz 1284921 BLAKE2B 0b1ef6483c8c3724f20badb1108ec544937b83d9fd25d989289ac4143909d175c9d16b9545315bfe88a371a1ac2088511dbe4333cadf6141dd95200b3b45ed5c SHA512 7c8225089afa4e52ef501810a495c3047a15f31388cb32cecd035474c9cf56bd2b3181b13c71a619f841206935d455fd69787005fa6fcdf5a0d2f627c9a39dc3
DIST openstacksdk-4.6.0.tar.gz 1287222 BLAKE2B cd2af29901c89bee15ed01fc2d19d75c75a5e2bacd860f999f6696292d171967e7f129ad295fc4556222ba4bf7786cccc4e20bd612b19bf3b6c6507752a88e25 SHA512 9c11a537734e11a25a8e4c664fa700071a47743b12bd8656ce6b91294650c2cd9e119d1f9fe2e68b230c46c1435040ca6b33e28f6e750f3bf88d1686dc66a42c

View File

@@ -0,0 +1,92 @@
# 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="A collection of libraries for building applications to work with OpenStack"
HOMEPAGE="
https://opendev.org/openstack/openstacksdk/
https://github.com/openstack/openstacksdk/
https://pypi.org/project/openstacksdk/
"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
RDEPEND="
>=dev-python/cryptography-2.7[${PYTHON_USEDEP}]
>=dev-python/decorator-4.4.1[${PYTHON_USEDEP}]
>=dev-python/dogpile-cache-0.6.5[${PYTHON_USEDEP}]
>=dev-python/iso8601-0.1.11[${PYTHON_USEDEP}]
>=dev-python/jmespath-0.9.0[${PYTHON_USEDEP}]
>=dev-python/jsonpatch-1.21[${PYTHON_USEDEP}]
>=dev-python/keystoneauth1-5.10.0[${PYTHON_USEDEP}]
>=dev-python/os-service-types-1.7.0[${PYTHON_USEDEP}]
>=dev-python/pbr-2.2.0[${PYTHON_USEDEP}]
>=dev-python/platformdirs-3[${PYTHON_USEDEP}]
>=dev-python/psutil-3.2.2[${PYTHON_USEDEP}]
>=dev-python/pyyaml-3.13[${PYTHON_USEDEP}]
>=dev-python/requestsexceptions-1.2.0[${PYTHON_USEDEP}]
"
BDEPEND="
>=dev-python/pbr-2.2.0[${PYTHON_USEDEP}]
test? (
>=dev-python/ddt-1.0.1[${PYTHON_USEDEP}]
>=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
>=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
>=dev-python/oslo-config-6.1.0[${PYTHON_USEDEP}]
>=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
>=dev-python/prometheus-client-0.4.2[${PYTHON_USEDEP}]
>=dev-python/requests-mock-1.2.0[${PYTHON_USEDEP}]
>=dev-python/statsd-3.3.0[${PYTHON_USEDEP}]
>=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
>=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
>=dev-python/typing-extensions-4.12.0[${PYTHON_USEDEP}]
)
"
distutils_enable_tests unittest
src_prepare() {
# Internet?
sed -e 's:test_create_dynamic_large_object:_&:' \
-i openstack/tests/unit/cloud/test_object.py || die
# TODO
sed -e 's:test_generate_form:_&:' \
-e 's:test_create_static_large_object:_&:' \
-e 's:test_object_segment_retries:_&:' \
-e 's:test_object_segment_retry_failure:_&:' \
-e 's:test_slo_manifest_retry:_&:' \
-i openstack/tests/unit/cloud/test_object.py || die
sed -e 's:test_servers:_&:' \
-i openstack/tests/unit/test_stats.py || die
# unhappy about paths due to test runner
sed -e 's:test_method_not_supported:_&:' \
-i openstack/tests/unit/test_exceptions.py || die
sed -e 's:test_repr:_&:' \
-i openstack/tests/unit/test_resource.py || die
# requires hacking
rm openstack/tests/unit/test_hacking.py || die
# fragile warning-based tests
sed -e 's:test_unsupported_version_override:_&:' \
-i openstack/tests/unit/test_missing_version.py || die
sed -e 's:test_create_unknown_proxy:_&:' \
-i openstack/tests/unit/test_connection.py || die
distutils-r1_src_prepare
}
python_test() {
# functional tests require cloud instance access
eunittest -b openstack/tests/unit
}

View File

@@ -1,2 +1,2 @@
DIST pypi_attestations-0.0.25.tar.gz 124877 BLAKE2B cda14a611e8bb2a8f728753639030feffdcc8143c1539dc52bbd3498645879cf6ec24da122cc9e506c39f26d0a76e64374574f56281c9331a5835d0920231232 SHA512 6ebe1854290e017247c688fcc551727e6bfc7a65f3edfa277a703be433b36b940a0815d1b0b8ab6b1c07b04de5c195b93d3bd62a7f54c72e96922fc5cc0c5bd5
DIST pypi_attestations-0.0.26.tar.gz 120512 BLAKE2B 4963c0846dd79e63f3405af8a6e800f772a8fa5c641edc7d02679c9bce0e19d32c6e6fb40c8a5c88f71102af9df18cc2ae9c840236eaf3f0493505ec845db1c8 SHA512 0946016686228ee21be87410d778b8cf024ef23040a1c9bdb9bb2c36be72b8a4543d90f18cdb48055b4755d53b8a6888a0abf21996ad2fbdc8f179a9100144fb
DIST pypi_attestations-0.0.27.tar.gz 123543 BLAKE2B 11e6dabcb58c5201af4df0392784c5cda02eabfde4d6d2cd39464d3bf89fa7a54495c435e86e5b7031ed7d9a85230ec273279d2f8ab86ba5e1dec2eb431829e4 SHA512 206c6aaf523a0143defe2ef35ee886d8d5d3cc7d3010a5f1ef6d5e9f0af3dac56b2a3b3af87256b50bf475d88ff397ea35f7512aac540a2918e8a52c91ac6e03

View File

@@ -3,3 +3,4 @@ DIST pytest-8.0.2.tar.gz 1396924 BLAKE2B ad95d246f5592cfe54faea6c96e38cb60d3e271
DIST pytest-8.1.2.tar.gz 1410060 BLAKE2B 1379047c5ba434e98a383756c53a9cf31dc3bd3abcc49820f872b9110ec70906ca14080ce17ed2770b71195fbd79627a0eb16ee00429e165368144b20153a02b SHA512 a6ffae29da98ee4c357ebb03f00c4bc1a33f093ef867ad118841695548468c7f229eaa2c029a2ce3b158bbb0a65be5014e91555a223d04c1c72e614cb1d00546
DIST pytest-8.2.2.tar.gz 1427980 BLAKE2B 7f343e5ff05e4d26f816595ad1c52ee2b79d38029e75e3641ed0bbb7477e0a47e5ae48ebc3058a8e9f374cd1a391d360d9eda73eca2e41d8b533eda7948aedcb SHA512 896192f0d41f3fef49915dfea6ae33dbb939f6bbe54de27861bf1554bf87f910702169293e923af9bc40466e7f806aa19ca54cbe41a848c233f70b52bb86a63c
DIST pytest-8.3.5.tar.gz 1450891 BLAKE2B 7a5fb565eb13041f6513bef344ec6caa24464cb3e9a335c4a196ae12e47a51692cff658e839ad139f88965098831ec5ede7d32fd6bf3b29c51205d4dfe50ed9b SHA512 386573a40f78c1dc864a0af7d765d49e9e91a38dd61bef95b07631bffba0806b34264622a998e849727f50fb220ada7b8242f7f7dbd501408e7bf4701d36589d
DIST pytest-8.4.0.tar.gz 1515232 BLAKE2B fa4252f13af384d425f612d7faef48a6d0075d447aa619efd52029efc2e1c41c57fc78583c5fab818ad9666165f0ae0ad49759292d475ac4586f292553fef6d7 SHA512 aa4aff63e7a4c682322f231538d411b30f7d37335fc42efa8abe7824040278d0a546efaa51794ce2937da993f4972984aacbdad30f96a4d43fe9a3e23317c57a

View File

@@ -0,0 +1,115 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_TESTED=( python3_{11..14} pypy3_11 )
PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" python3_{13,14}t )
inherit distutils-r1 pypi
DESCRIPTION="Simple powerful testing with Python"
HOMEPAGE="
https://pytest.org/
https://github.com/pytest-dev/pytest/
https://pypi.org/project/pytest/
"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
RDEPEND="
dev-python/iniconfig[${PYTHON_USEDEP}]
dev-python/packaging[${PYTHON_USEDEP}]
<dev-python/pluggy-2[${PYTHON_USEDEP}]
>=dev-python/pluggy-1.5.0[${PYTHON_USEDEP}]
>=dev-python/pygments-2.7.2[${PYTHON_USEDEP}]
"
BDEPEND="
>=dev-python/setuptools-scm-6.2.3[${PYTHON_USEDEP}]
test? (
${RDEPEND}
$(python_gen_cond_dep '
dev-python/argcomplete[${PYTHON_USEDEP}]
>=dev-python/attrs-19.2[${PYTHON_USEDEP}]
>=dev-python/hypothesis-3.56[${PYTHON_USEDEP}]
dev-python/mock[${PYTHON_USEDEP}]
dev-python/pytest-xdist[${PYTHON_USEDEP}]
dev-python/requests[${PYTHON_USEDEP}]
dev-python/xmlschema[${PYTHON_USEDEP}]
' "${PYTHON_TESTED[@]}")
)
"
src_test() {
# workaround new readline defaults
echo "set enable-bracketed-paste off" > "${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
}

View File

@@ -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

View File

@@ -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}
!<dev-lang/python-3.11.9_p2-r1:${PYVER}
"
BDEPEND="
${PYTHON_DEPS}
verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
"
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc
src_unpack() {
if use verify-sig; then
verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
fi
default
}
src_prepare() {
local PATCHES=(
"${WORKDIR}/${PATCHSET}"
)
cd .. || die
default
}
src_install() {
python_setup
# keep in sync with TESTSUBDIRS in Makefile.pre.in
local dirs=(
ctypes/test distutils/tests idlelib/idle_test lib2to3/tests
./test tkinter/test unittest/test
)
local dir
for dir in "${dirs[@]}"; do
python_moduleinto "/usr/lib/python${PYVER}/${dir%/*}"
python_domodule "${dir}"
done
}

View File

@@ -0,0 +1,71 @@
# Copyright 2024-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_12 )
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}
!<dev-lang/python-3.12.5_p1-r1:${PYVER}
"
BDEPEND="
${PYTHON_DEPS}
verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
"
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc
src_unpack() {
if use verify-sig; then
verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
fi
default
}
src_prepare() {
local PATCHES=(
"${WORKDIR}/${PATCHSET}"
)
cd .. || die
default
}
src_install() {
python_setup
# keep in sync with TESTSUBDIRS in Makefile.pre.in
python_moduleinto "/usr/lib/python${PYVER}"
python_domodule test
python_moduleinto "/usr/lib/python${PYVER}/idlelib"
python_domodule idlelib/idle_test
}

View File

@@ -0,0 +1,70 @@
# Copyright 2024-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_13t )
inherit python-r1 verify-sig
MY_PV=${PV}
MY_P="Python-${MY_PV%_p*}"
PYVER=$(ver_cut 1-2)t
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}
"
BDEPEND="
${PYTHON_DEPS}
verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
"
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc
src_unpack() {
if use verify-sig; then
verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
fi
default
}
src_prepare() {
local PATCHES=(
"${WORKDIR}/${PATCHSET}"
)
cd .. || die
default
}
src_install() {
python_setup
# keep in sync with TESTSUBDIRS in Makefile.pre.in
python_moduleinto "/usr/lib/python${PYVER}"
python_domodule test
python_moduleinto "/usr/lib/python${PYVER}/idlelib"
python_domodule idlelib/idle_test
}

View File

@@ -0,0 +1,71 @@
# Copyright 2024-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_13 )
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}
!<dev-lang/python-3.13.0_rc1_p3-r1:${PYVER}
"
BDEPEND="
${PYTHON_DEPS}
verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
"
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc
src_unpack() {
if use verify-sig; then
verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
fi
default
}
src_prepare() {
local PATCHES=(
"${WORKDIR}/${PATCHSET}"
)
cd .. || die
default
}
src_install() {
python_setup
# keep in sync with TESTSUBDIRS in Makefile.pre.in
python_moduleinto "/usr/lib/python${PYVER}"
python_domodule test
python_moduleinto "/usr/lib/python${PYVER}/idlelib"
python_domodule idlelib/idle_test
}

View File

@@ -1,4 +1,4 @@
DIST sqlglot-26.23.0-crates.tar.xz 8859792 BLAKE2B abb2051b392c53dc3caa705ddd8df7076819a26dcdaa89fa3760559a79578db01e86943c2d0ffb8006263c2dca3aa50d20023eae9d772f8ebd12a8a2d3266cdd SHA512 7cca439a06433a62bcd4a2af33d240f46e9b5240cc158edbc654efb37a464aa0f1ebbe9749b2fc6352127b4809b63af2341fac6240050c414e578ae99444ba5d
DIST sqlglot-26.23.0.tar.gz 5369411 BLAKE2B 621d8bba91e72b3671aa0d2fa90ac0e4e9d3b6c116be02a423eb779ab8bd67f9edcabeb6e94ddea6856a22373a02e5517053945f7ea2728ef6b56333671e68c0 SHA512 54b378ad94be7c641b537e9917d2b69c3abdbcfff81a28b8a280d5198b35d6157f518289101332abf0643b3ea56670f948b6db598d358b06ac2a6ace38df8acc
DIST sqlglot-26.24.0-crates.tar.xz 8859792 BLAKE2B abb2051b392c53dc3caa705ddd8df7076819a26dcdaa89fa3760559a79578db01e86943c2d0ffb8006263c2dca3aa50d20023eae9d772f8ebd12a8a2d3266cdd SHA512 7cca439a06433a62bcd4a2af33d240f46e9b5240cc158edbc654efb37a464aa0f1ebbe9749b2fc6352127b4809b63af2341fac6240050c414e578ae99444ba5d
DIST sqlglot-26.24.0.tar.gz 5371208 BLAKE2B 76a6e3f1c940a7b2b3f6d9845fc6295b8d28bd32306aaef1b7829861ed6ceb151ab0fb3b7830717a91432f491e1268b404b26b830c5382d8a08b74d83bb27093 SHA512 84512d3adebc369a17dcb5823644b636954ec52cb566491ed7874765fc979f4df5c7e750855026b7eb83481d8779f65723562603ac671b371df0588d2af1d701
DIST sqlglot-26.25.0-crates.tar.xz 8859792 BLAKE2B abb2051b392c53dc3caa705ddd8df7076819a26dcdaa89fa3760559a79578db01e86943c2d0ffb8006263c2dca3aa50d20023eae9d772f8ebd12a8a2d3266cdd SHA512 7cca439a06433a62bcd4a2af33d240f46e9b5240cc158edbc654efb37a464aa0f1ebbe9749b2fc6352127b4809b63af2341fac6240050c414e578ae99444ba5d
DIST sqlglot-26.25.0.tar.gz 5320294 BLAKE2B ca9a5d32d191f36685a8c0a278cd4d13b1680e04e5e1d8321c019bb135d261be68df79bd7817842240fd9c4b4ad6883753cf974683937db4eace55f2b7e490dd SHA512 7830df0ff9713cc2097c9adc0a1586c6066b3abb70aea116b73779d253bfeb0b248d28832be038f7844c8b832f649285eb143f4016eb00aca19f0a253e5ac50e

View File

@@ -1 +1,2 @@
DIST treq-24.9.1.tar.gz 85614 BLAKE2B cce700ae1f18b7e97953c45cb835786655caf47a0e425944e58f94c76a33c5948920c38f89283f50b51624f365326045d6ebb163c86644069f5bf548e137b9c0 SHA512 b8ed6ed5262073559babe8d0413a1f5369215a41ac7459441172a9086c654cf1dc7e51a0497d4c714726ae02d2163760cddde7008e360f37ebb4586b82409bb8
DIST treq-25.5.0.tar.gz 83588 BLAKE2B 671e3e1f79f76abd1bda8b7826500bfc18c2d0bb192c668667f138fc123b178dcaee33e99e29f0ef437cbcaf12b511d54641b6300e6f068e85850a178dcf6617 SHA512 59fb457c2b4bc60ffa6fc0649c55fedcf4c64fdc43d7ea5c74241ab8e7a8afc23f878138dea249890e64ac0ba33959e8de443decb6ac388a976d8d4dabf64086

View File

@@ -0,0 +1,57 @@
# 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} )
inherit distutils-r1 pypi
DESCRIPTION="A requests-like API built on top of twisted.web's Agent"
HOMEPAGE="
https://github.com/twisted/treq/
https://pypi.org/project/treq/
"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
IUSE="test"
RESTRICT="!test? ( test )"
RDEPEND="
dev-python/attrs[${PYTHON_USEDEP}]
>=dev-python/hyperlink-21.0.0[${PYTHON_USEDEP}]
>=dev-python/incremental-24.7.2[${PYTHON_USEDEP}]
dev-python/multipart[${PYTHON_USEDEP}]
>=dev-python/requests-2.1.0[${PYTHON_USEDEP}]
>=dev-python/twisted-22.10.0[ssl,${PYTHON_USEDEP}]
>=dev-python/typing-extensions-3.10.0[${PYTHON_USEDEP}]
"
BDEPEND="
>=dev-python/incremental-24.7.2[${PYTHON_USEDEP}]
test? (
dev-python/httpbin[${PYTHON_USEDEP}]
dev-python/werkzeug[${PYTHON_USEDEP}]
)
"
distutils_enable_sphinx docs \
dev-python/sphinx-rtd-theme
src_prepare() {
distutils-r1_src_prepare
# fix relative path for docs generation
sed -e 's@("..")@("../src")@' -i docs/conf.py || die
# unbundle multipart
rm src/treq/_multipart.py || die
find -name '*.py' -exec \
sed -i -e 's:from [.]\+_multipart:from multipart:' {} + || die
}
python_test() {
"${EPYTHON}" -m twisted.trial treq || die "Tests failed with ${EPYTHON}"
}

View File

@@ -1,3 +1,4 @@
DIST uv_build-0.6.17.tar.gz 300696 BLAKE2B 3f15068232e20b4b70ef319f90a258efc0d38be668bc438c91354b5ede4cb03235abc912292e2747249eab5c54c1fbc3cfa91ab1335881b975fce9677340c54e SHA512 2827629a11a9775661554f3eae4f3c6018637203c18f739ce728973ee0e7f905bef7c9fcc200f95393e2e13c167e31fdf0ab8dced59c028c3c600d47ba373752
DIST uv_build-0.7.10.tar.gz 308530 BLAKE2B 01ec0cc519966665129c29e7cfe5522cf070d3377b4172265f7a8dbea441979022875eb091371e868ca6c9ab80c497c85b789b5c81b93c8e004fd8b6e0e05240 SHA512 744e4ac1e5be3579a7a89cdd2b6f0e40a1d681fd51c7dc44bcfbce8c51a61cffa8cdb8006c02526a7bb27ad7cf2b02cf33be7107b36487a89835e81e079ffa54
DIST uv_build-0.7.8.tar.gz 305609 BLAKE2B 89d2e7ff95f4375d4fff758463c1cf918c3ec475a1e0de04fcc51b4bd0fefe1aca50ea223b3cc456c5944f0673702ab971374829fb568e4521129acb0a770506 SHA512 bde37f82ae781531e50425ff247219e4e2908c7e46200a65a74e8e2b8b48a0d5cd60476138c160bd1d07aa8c9a581f5da01e79fd7883d018f10617ddba8b8349
DIST uv_build-0.7.9.tar.gz 308177 BLAKE2B 38bd8d4640a239dac740503929c7b31ba591e101e0778cbd5e3c9db6513082f0382bc982affc7cf3a5af3998647ae58ebf870388dc0d67e2ed7fda5764cc9176 SHA512 f316aae21cbf15dc281d79eaa10af1b56efd70d484ae37b831d7216c268e03c6a46c50a212e617e932a6cf0805f2cb114e91caf92afe1c1d994ba06209255e90

View File

@@ -0,0 +1,99 @@
# Copyright 2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Maturin compiles uv-build executable for every impl, we do not want
# that, so we use another backend. And since we use another backend,
# why not dogfood it in the first place?
DISTUTILS_USE_PEP517=standalone
PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
inherit distutils-r1 pypi
DESCRIPTION="PEP517 uv build backend"
HOMEPAGE="
https://github.com/astral-sh/uv/
https://pypi.org/project/uv-build/
"
LICENSE="|| ( Apache-2.0 MIT )"
SLOT="0"
KEYWORDS="~amd64"
IUSE="test"
RESTRICT="!test? ( test )"
RDEPEND="
>=dev-python/uv-${PV}
"
BDEPEND="
test? (
app-arch/unzip
dev-python/build[${PYTHON_USEDEP}]
)
"
src_prepare() {
distutils-r1_src_prepare
# use the executable from dev-python/uv instead of building
# a largely overlapping uv-build executable (at least for now)
sed -i -e '/USE_UV_EXECUTABLE/s:False:True:' python/uv_build/__init__.py || die
# replace the build-system section
sed -i -e '/\[build-system\]/,$d' pyproject.toml || die
cat >> 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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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
}

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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

View File

@@ -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]

View File

@@ -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]

View File

@@ -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]

View File

@@ -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]

View File

@@ -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 <floppym@gentoo.org> (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 <dilfridge@gentoo.org> (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

View File

@@ -1,6 +1,16 @@
# Copyright 2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# Mike Gilbert <floppym@gentoo.org> (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 <nowa@gentoo.org> (2023-12-07)
# Does not support split-usr filesystem geometry. Please migrate to
# a merged-usr profile.

View File

@@ -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 <floppym@gentoo.org> (2025-05-27)
# systemd does not support split-usr.
systemd
# Andreas K. Hüttel <dilfridge@gentoo.org> (2022-12-04)
# Unmask split-usr.
-split-usr

View File

@@ -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? (

View File

@@ -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 )

View File

@@ -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 )

View File

@@ -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

View File

@@ -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 <daan.j.demeyer@gmail.com>
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 <daan.j.demeyer@gmail.com>
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");

View File

@@ -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 <watanabe.yu+github@gmail.com>
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;
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}