Merge pull request #2797 from flatcar/buildbot/weekly-portage-stable-package-updates-2025-03-31

Weekly portage-stable package updates 2025-03-31
This commit is contained in:
Krzesimir Nowak 2025-04-02 11:01:38 +02:00 committed by GitHub
commit 424f718f62
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
424 changed files with 7205 additions and 11920 deletions

View File

@ -0,0 +1,5 @@
- cifs-utils ([CVE-2025-2312](https://nvd.nist.gov/vuln/detail/CVE-2025-2312))
- crun ([CVE-2025-24965](https://nvd.nist.gov/vuln/detail/CVE-2025-24965))
- libarchive ([CVE-2025-25724](https://nvd.nist.gov/vuln/detail/CVE-2025-25724))
- libxslt ([CVE-2025-24855](https://nvd.nist.gov/vuln/detail/CVE-2025-24855), [CVE-2024-55549](https://nvd.nist.gov/vuln/detail/CVE-2024-55549))
- socat ([socat-20250221](https://repo.or.cz/socat.git/blob/refs/tags/tag-1.8.0.3:/CHANGES#l4))

View File

@ -0,0 +1,15 @@
- base, dev: btrfs-progs ([6.13](https://raw.githubusercontent.com/kdave/btrfs-progs/refs/tags/v6.13/CHANGES))
- base, dev: cifs-utils ([7.3](https://lists.samba.org/archive/samba-technical/2025-March/139360.html) (includes [7.2](https://lists.samba.org/archive/samba-technical/2025-February/139330.html), [7.1](https://lists.samba.org/archive/samba-technical/2024-October/139146.html)))
- base, dev: expat ([2.7.1](https://github.com/libexpat/libexpat/blob/R_2_7_1/expat/Changes#L40))
- base, dev: git ([2.49.0](https://github.com/git/git/blob/v2.49.0/Documentation/RelNotes/2.49.0.adoc))
- base, dev: libarchive ([3.7.8](https://github.com/libarchive/libarchive/releases/tag/v3.7.8))
- base, dev: libxml2 ([2.13.7](https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.7) (includes [2.13.6](https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.6), [2.13.5](https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.5), [2.13.4](https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.4), [2.13.3](https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.3), [2.13.2](https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.2), [2.13.1](https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.1), [2.13.0](https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.13.0)))
- base, dev: nghttp2 ([1.65.0](https://github.com/nghttp2/nghttp2/releases/tag/v1.65.0))
- base, dev: socat ([1.8.0.3](https://repo.or.cz/socat.git/blob/refs/tags/tag-1.8.0.3:/CHANGES))
- base, dev: strace ([6.13](https://github.com/strace/strace/releases/tag/v6.13))
- sysext-podman: catatonit ([0.2.1](https://github.com/openSUSE/catatonit/releases/tag/v0.2.1))
- sysext-podman: crun ([1.20](https://github.com/containers/crun/releases/tag/1.20))
- sysext-podman: gpgme ([1.24.2](https://dev.gnupg.org/T7524))
- sysext-python: trove-classifiers ([2025.3.19.19](https://github.com/pypa/trove-classifiers/releases/tag/2025.3.19.19))
- vmware: libxslt ([1.1.43](https://gitlab.gnome.org/GNOME/libxslt/-/releases/v1.1.43) (includes [1.1.42](https://gitlab.gnome.org/GNOME/libxslt/-/releases/v1.1.42), [1.1.41](https://gitlab.gnome.org/GNOME/libxslt/-/releases/v1.1.41), [1.1.40](https://gitlab.gnome.org/GNOME/libxslt/-/releases/v1.1.40)))
- vmware: xmlsec ([1.3.7](https://github.com/lsh123/xmlsec/releases/tag/1.3.7))

View File

@ -1,31 +0,0 @@
From 82912103214506316bd9990d73f33d743d55f570 Mon Sep 17 00:00:00 2001
From: Tim Kientzle <kientzle@acm.org>
Date: Mon, 9 Dec 2024 21:09:29 -0800
Subject: [PATCH] Handle truncation in the middle of a GNU long linkname
(#2422)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Thanks to gbdngb12 김동건 for reporting this.
Resolves Issue #2415
---
libarchive/archive_read_support_format_tar.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libarchive/archive_read_support_format_tar.c b/libarchive/archive_read_support_format_tar.c
index 4aaf1b90ce..b1344ae57d 100644
--- a/libarchive/archive_read_support_format_tar.c
+++ b/libarchive/archive_read_support_format_tar.c
@@ -1146,7 +1146,9 @@ header_gnu_longlink(struct archive_read *a, struct tar *tar,
struct archive_string linkpath;
archive_string_init(&linkpath);
err = read_body_to_string(a, tar, &linkpath, h, unconsumed);
- archive_entry_set_link(entry, linkpath.s);
+ if (err == ARCHIVE_OK) {
+ archive_entry_set_link(entry, linkpath.s);
+ }
archive_string_free(&linkpath);
return (err);
}

View File

@ -1,5 +0,0 @@
The
`0001-Handle-truncation-in-the-middle-of-a-GNU-long-linkname.patch`
patch addresses CVE-2024-57970. Currently it is only a part of the
master branch so this patch could be dropped when updating to either
3.8.0 or 3.7.8.

View File

@ -10,8 +10,8 @@
# Keep versions on both arches in sync.
=app-containers/cri-tools-1.32.0 ~arm64
# Needed to address CVE-2024-11218.
=app-containers/podman-5.3.2 ~amd64 ~arm64
# Needed to address CVE-2025-24965.
=app-containers/crun-1.20 ~amd64 ~arm64
# Seems to be the only available ebuild in portage-stable right now.
=app-crypt/adcli-0.9.2 ~arm64
@ -36,6 +36,9 @@
# The only available ebuild (from GURU) has ~amd64 and no keyword for arm64 yet.
=dev-libs/jose-12 **
# Keep versions on both arches in sync.
=dev-libs/libxml2-2.13.7 ~arm64
# The only available ebuild (from GURU) has ~amd64 and no keyword for arm64 yet.
=dev-libs/luksmeta-9-r1 **
@ -48,18 +51,15 @@
# Keep versions on both arches in sync.
=net-firewall/conntrack-tools-1.4.8-r1 ~arm64
# Needed to address CVE-2024-12243.
=net-libs/gnutls-3.8.9 ~amd64 ~arm64
# Needed to address CVE-2025-2312.
=net-fs/cifs-utils-7.3 ~amd64 ~arm64
# Keep versions on both arches in sync.
=net-libs/libnetfilter_cthelper-1.0.1-r1 ~arm64
=net-libs/libnetfilter_cttimeout-1.0.1 ~arm64
# Needed to address CVE-2025-0167, CVE-2025-0665, CVE-2025-0725.
=net-misc/curl-8.12.1 ~amd64 ~arm64
# Needed to address CVE-2024-54661
=net-misc/socat-1.8.0.2 ~amd64 ~arm64
=net-misc/socat-1.8.0.3 ~amd64 ~arm64
# Package has not been stabilised yet.
=sys-apps/azure-vm-utils-0.4.0 ~amd64 ~arm64
@ -81,5 +81,4 @@
# Keep versions on both arches in sync.
=sys-libs/libsemanage-3.7 ~arm64
=sys-libs/ncurses-6.5_p20250125 ~arm64
=sys-process/audit-4.0.2-r1 ~arm64

View File

@ -1,2 +1,2 @@
DIST eselect-1.4.27.tar.xz 184464 BLAKE2B 718874f4d0651194f361ca3202e5140982812bf486c8efe82354944d55206b0113fa135992203e8baa00019c3fd773a90ddaf67157c16f4ac2d69965d9822fbd SHA512 f534785fc1f79869840f420b4ab2b2bf35593c504cce878a6d3d07f75012cf32288009ea9ac2a5607dba216a794110a64c5f2c54d5d8a3c641328489cecc024b
DIST eselect-1.4.29.tar.xz 185948 BLAKE2B bb387a14c81d5ff5bf2e6e703465b24140b047f1464dee3c7fc0a125c9d94544a9afd801b42d2902dd6dee1af705f7dcfad854286d7e243a0f654cec35ab8eea SHA512 0466be2634f9d632d628cb11793d604002d989c222758ed33259c6b1dede80765d80f782242b22704e890bde84b2e1e3b3fb3d31574812cc803aad64ba8e7cf6
DIST eselect-1.4.30.tar.xz 186060 BLAKE2B f58c2bdacfcb933aef2414e65866a4be33d02ddc42005770fd4f3200a7aa0437d31301ac35991309d51f2e95e8be2eafa0590600281801c6c63db08b3451b9ef SHA512 89ff9af40849e5d712716c35705e21bfc5d073536da8750566368d519d1b7de823575ffe730faabab4170ca773df31e7bb9d633d8e48361704102987c5d3e681

View File

@ -1,7 +1,7 @@
# Copyright 1999-2023 Gentoo Authors
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
# Packages sharing a common release tarball:
# app-admin/eselect
@ -16,7 +16,7 @@ SRC_URI="https://dev.gentoo.org/~ulm/eselect/${P}.tar.xz"
LICENSE="GPL-2+ || ( GPL-2+ CC-BY-SA-4.0 )"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="doc emacs vim-syntax"
# coreutils for realpath

View File

@ -1,7 +1,7 @@
# Copyright 1999-2023 Gentoo Authors
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/eselect.git"

View File

@ -1,2 +1,2 @@
DIST libarchive-3.7.7.tar.xz 5480580 BLAKE2B e118c693f7a78e86ab868fc6c2c77beba539cf5c7d5999e270cdceb225e9f85c68c938ec6ce3a33f75b2a44a6f7debe2c280d2573c1bcf05806300e8dce1a4f0 SHA512 2524f71f4c2ebc254a1927279be3394e820d0a0c6dec7ef835a862aa08c35756edaa4208bcdc710dd092872b59c200b555b78670372e2830822e278ff1ec4e4a
DIST libarchive-3.7.7.tar.xz.asc 659 BLAKE2B 066d97312ded566e2c96ffc4603477fc829bcf17dcc057249dad51a0abea7aa5559691c0c25b581212168f8442db028a2dcc34148c648e973450fcb9dd5e35af SHA512 9f532df76bc381b40d7454a7bbbab85e34a646167ee7ca197fae45c713002e32f40e2b2871bc4a0d7149df19e69e2079efd9ab2f22eccf959b203604293d6094
DIST libarchive-3.7.8.tar.xz 5493312 BLAKE2B ba058b2fa2afbfe53127d6ffd0a7ab00d9e8faf62340ae2eb8871a0ca232c2de482dbff2c4eedf2c45d944eb555123d765c462818158046bb72951f6421d9ea0 SHA512 a2b6c8c337e75bcce73126c30a3b564dc586df973780d9c7d5a9eed693dbe3779bf762b64c49c47203c2768c92a4a7d2dc8c0445b1dc398eafd2d58b0ba5aae6
DIST libarchive-3.7.8.tar.xz.asc 659 BLAKE2B 2050214592b0add7cbd758b815c4289a8760bfb2e5b5db581afdbe741d348252b73f99919641cacd908b586cf4f8fc30a591d88b869bd607adc837251d8fbd4e SHA512 3f1d70318f5e2369fa59e94f91bf8473630a448ded11e2ff3502657380221b9e11e849dc98ba0806c3110c7267cee251f7d681db27751e2a45a948f6ad558404

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

View File

@ -1,4 +1,2 @@
DIST tar-1.34.tar.xz 2226068 BLAKE2B 741a662457509a6775338ffe5d2d84872fcf38b93ace70c8b748a81055b9b62f65a48c4e541955d08ae99e6f528509e89eacd7c799a65bcc3d017a259110c115 SHA512 5e77c4a7b49983ad7d15238c2bce28be7a8aa437b4b1815fc00abd13096da308b6bba196cc6e3ed79d85e62823d520ae0d8fcda2d93873842cf84dc3369fc902
DIST tar-1.34.tar.xz.sig 181 BLAKE2B 2fae91293a9dacda0374706e1f83498042a9d5224f80f6f0e14abdb914cb5a8e980f720eb4a453485844c7fe26e0525f230c0eab11c7fa89159a1a929370795c SHA512 55297f41549deee511f5b14c6b5dc7bb3d9282dad52bcc85f9dddfad24b677f989ba86387ad9b133c3698feedbd6b6cd7e9f005e8e4c89f72c80543eeceb78f7
DIST tar-1.35.tar.xz 2317208 BLAKE2B e1a200d21f433cd7d917dd979db16919a9167056ae62cf7d038a6118e56b2fe419cd4a396eee66f1f4dc13a8dc380e23f6ffd7ee0ca84e5dd9ad9411f60e002c SHA512 8b84ed661e6c878fa33eb5c1808d20351e6f40551ac63f96014fb0d0b9c72d5d94d8865d39e36bcb184fd250f84778a3b271bbd8bd2ceb69eece0c3568577510
DIST tar-1.35.tar.xz.sig 95 BLAKE2B 8501b55b700bc99b81f04519db1cd8f7bc3d87dd5bfefa25a3d979b23359f02dfb770f3dd66dca275baa70a99612cb85c1019faaf3a1f0bcf50c9815b8e32eca SHA512 00e5c95bf8015f75f59556a82ed7f50bddefe89754c7ff3c19411aee2f37626a5d65c33e18b87f7f8f96388d3f175fd095917419a3ad1c0fc9d6188088bac944

View File

@ -1,32 +0,0 @@
Gentoo Bug: https://bugs.gentoo.org/898176
Upstream Commit Link: https://git.savannah.gnu.org/cgit/tar.git/commit/?id=3da78400eafcccb97e2f2fd4b227ea40d794ede8
From 3da78400eafcccb97e2f2fd4b227ea40d794ede8 Mon Sep 17 00:00:00 2001
From: Sergey Poznyakoff <gray@gnu.org>
Date: Sat, 11 Feb 2023 11:57:39 +0200
Subject: [PATCH] Fix boundary checking in base-256 decoder
* src/list.c (from_header): Base-256 encoding is at least 2 bytes
long.
---
src/list.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/list.c b/src/list.c
index 9fafc425..86bcfdd1 100644
--- a/src/list.c
+++ b/src/list.c
@@ -881,8 +881,9 @@ from_header (char const *where0, size_t digs, char const *type,
where++;
}
}
- else if (*where == '\200' /* positive base-256 */
- || *where == '\377' /* negative base-256 */)
+ else if (where <= lim - 2
+ && (*where == '\200' /* positive base-256 */
+ || *where == '\377' /* negative base-256 */))
{
/* Parse base-256 output. A nonnegative number N is
represented as (256**DIGS)/2 + N; a negative number -N is
--
2.39.2.637.g21b0678d19-goog

View File

@ -1,106 +0,0 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/tar.asc
inherit verify-sig
DESCRIPTION="Use this to make tarballs :)"
HOMEPAGE="https://www.gnu.org/software/tar/"
SRC_URI="mirror://gnu/tar/${P}.tar.xz
https://alpha.gnu.org/gnu/tar/${P}.tar.xz"
SRC_URI+=" verify-sig? (
mirror://gnu/tar/${P}.tar.xz.sig
https://alpha.gnu.org/gnu/tar/${P}.tar.xz.sig
)"
LICENSE="GPL-3+"
SLOT="0"
if [[ -z "$(ver_cut 3)" ]] || [[ "$(ver_cut 3)" -lt 90 ]] ; then
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
fi
IUSE="acl minimal nls selinux xattr"
RDEPEND="
acl? ( virtual/acl )
selinux? ( sys-libs/libselinux )
"
DEPEND="${RDEPEND}
xattr? ( elibc_glibc? ( sys-apps/attr ) )
"
BDEPEND="
nls? ( sys-devel/gettext )
verify-sig? ( sec-keys/openpgp-keys-tar )
"
PDEPEND="
app-alternatives/tar
"
PATCHES=(
"${FILESDIR}"/${P}-fix-cve-2022-48303.patch
)
src_configure() {
# -fanalyzer doesn't make sense for us in ebuilds, as it's for static analysis
export gl_cv_warn_c__fanalyzer=no
local myeconfargs=(
--bindir="${EPREFIX}"/bin
# Avoid -Werror
--disable-gcc-warnings
--enable-backup-scripts
--libexecdir="${EPREFIX}"/usr/sbin
$(use_with acl posix-acls)
$(use_enable nls)
$(use_with selinux)
$(use_with xattr xattrs)
# autoconf looks for gtar before tar (in configure scripts), hence
# in Prefix it is important that it is there, otherwise, a gtar from
# the host system (FreeBSD, Solaris, Darwin) will be found instead
# of the Prefix provided (GNU) tar
--program-prefix=g
)
FORCE_UNSAFE_CONFIGURE=1 econf "${myeconfargs[@]}"
}
src_install() {
default
# a nasty yet required piece of baggage
exeinto /etc
doexe "${FILESDIR}"/rmt
mv "${ED}"/usr/sbin/{gbackup,backup-tar} || die
mv "${ED}"/usr/sbin/{grestore,restore-tar} || die
mv "${ED}"/usr/sbin/{g,}backup.sh || die
mv "${ED}"/usr/sbin/{g,}dump-remind || die
if use minimal ; then
find "${ED}"/etc "${ED}"/*bin/ "${ED}"/usr/*bin/ \
-type f -a '!' -name gtar \
-delete || die
fi
if ! use minimal; then
dosym grmt /usr/sbin/rmt
fi
dosym grmt.8 /usr/share/man/man8/rmt.8
}
pkg_postinst() {
# ensure to preserve the symlink before app-alternatives/tar
# is installed
if [[ ! -h ${EROOT}/bin/tar ]]; then
if [[ -e ${EROOT}/usr/bin/tar ]] ; then
# bug #904887
ewarn "${EROOT}/usr/bin/tar exists but is not a symlink."
ewarn "This is expected during Prefix bootstrap and unusual otherwise."
ewarn "Moving away unexpected ${EROOT}/usr/bin/tar to .bak."
mv "${EROOT}/usr/bin/tar" "${EROOT}/usr/bin/tar.bak" || die
fi
ln -s gtar "${EROOT}/bin/tar" || die
fi
}

View File

@ -1,2 +1,3 @@
DIST unzip60.tar.gz 1376845 BLAKE2B 5016d300b4452018a391f4ebc03c6960c068df400a0407c0c60bd7bb5ec5012031f916d8b204a6149ba291c2c35beba40d9b43c76fc093026e79471329ab0e47 SHA512 0694e403ebc57b37218e00ec1a406cae5cc9c5b52b6798e0d4590840b6cdbf9ddc0d9471f67af783e960f8fa2e620394d51384257dca23d06bcd90224a80ce5d
DIST unzip_6.0-27.debian.tar.xz 24980 BLAKE2B e53a96f12af0cf5227600c73a35003484fca5de138cd37991eb1eb25b97b80371c3a566d989feeb04deb1a93acd9444253b091cd7e920b23520c87c5f5a94eeb SHA512 e1e605f023c7b314a6c5b2857a3bd630350df2d7e4bf6bb38ab8594f967336384666b4db8afad931251b85261ee4e2c38d78641c74ac7e5fd02523f26e92ddb2
DIST unzip_6.0-29.debian.tar.xz 25876 BLAKE2B b4477fe1c611e91bf878aeab868a2fd5b5fc62f81a43eb8505716edea8d56509947ca5fe6ca2b0a72899e1681e75cdb22911c3ba454eb453eb401c0e63af7e9a SHA512 527baae307d9ae169b6f9ad29319c61a2386de523319200efeda4a763b78777554e9ec035351c0da9160656c8b8e7aba60cc18fe1eb23fccca1e0115dee63e57

View File

@ -0,0 +1,93 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit flag-o-matic multilib toolchain-funcs
MY_PV="${PV//.}"
MY_PV="${MY_PV%_p*}"
MY_P="${PN}${MY_PV}"
DESCRIPTION="unzipper for pkzip-compressed files"
HOMEPAGE="https://infozip.sourceforge.net/UnZip.html"
SRC_URI="
https://downloads.sourceforge.net/infozip/${MY_P}.tar.gz
mirror://debian/pool/main/u/${PN}/${PN}_${PV/_p/-}.debian.tar.xz
"
S="${WORKDIR}/${MY_P}"
LICENSE="Info-ZIP"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="bzip2 natspec unicode"
DEPEND="
bzip2? ( app-arch/bzip2 )
natspec? ( dev-libs/libnatspec )
"
RDEPEND="${DEPEND}"
PATCHES=(
"${WORKDIR}"/debian/patches
"${FILESDIR}"/${PN}-6.0-no-exec-stack.patch
"${FILESDIR}"/${PN}-6.0-format-security.patch
"${FILESDIR}"/${PN}-6.0-fix-false-overlap-detection-on-32bit-systems.patch
)
src_prepare() {
# bug #275244
use natspec && PATCHES+=( "${FILESDIR}"/${PN}-6.0-natspec.patch )
rm "${WORKDIR}"/debian/patches/02-this-is-debian-unzip.patch || die
default
sed -i -r \
-e '/^CFLAGS/d' \
-e '/CFLAGS/s:-O[0-9]?:$(CFLAGS) $(CPPFLAGS):' \
-e '/^STRIP/s:=.*:=true:' \
-e "s:\<CC *= *\"?g?cc2?\"?\>:CC=\"$(tc-getCC)\":" \
-e "s:\<LD *= *\"?(g?cc2?|ld)\"?\>:LD=\"$(tc-getCC)\":" \
-e "s:\<AS *= *\"?(g?cc2?|as)\"?\>:AS=\"$(tc-getCC)\":" \
-e 's:LF2 = -s:LF2 = :' \
-e 's:LF = :LF = $(LDFLAGS) :' \
-e 's:SL = :SL = $(LDFLAGS) :' \
-e 's:FL = :FL = $(LDFLAGS) :' \
-e "/^#L_BZ2/s:^$(use bzip2 && echo .)::" \
-e 's:$(AS) :$(AS) $(ASFLAGS) :g' \
unix/Makefile \
|| die "sed unix/Makefile failed"
# Delete bundled code to make sure we don't use it.
rm -r bzip2 || die
}
src_configure() {
case ${CHOST} in
i?86*-*linux*) TARGET="linux_asm" ;;
*linux*) TARGET="linux_noasm" ;;
*-darwin*) TARGET="macosx" ;;
*-solaris*) TARGET="linux_noasm" ;;
*) die "Unknown target; please update the ebuild to handle ${CHOST}" ;;
esac
[[ ${CHOST} == *linux* ]] && append-cppflags -DNO_LCHMOD
[[ ${CHOST} == *-solaris* ]] && append-cppflags -DNO_LCHMOD -DBSD4_4
use bzip2 && append-cppflags -DUSE_BZIP2
use unicode && append-cppflags -DUNICODE_SUPPORT -DUNICODE_WCHAR -DUTF8_MAYBE_NATIVE -DUSE_ICONV_MAPPING
# bug #281473
append-cppflags -DLARGE_FILE_SUPPORT
}
src_compile() {
ASFLAGS="${ASFLAGS} $(get_abi_CFLAGS)" emake -f unix/Makefile ${TARGET}
}
src_install() {
dobin unzip funzip unzipsfx unix/zipgrep
dosym unzip /usr/bin/zipinfo
doman man/*.1
dodoc BUGS History* README ToDo WHERE
}

View File

@ -4,5 +4,5 @@ DIST xz-5.6.3.tar.gz 2279396 BLAKE2B 9f09926f1ec7d72e6564f5816101512717bcb37610b
DIST xz-5.6.3.tar.gz.sig 566 BLAKE2B b59899d9ddc3325bd0de084dac420440ccdeb5f57f3656300f235fdae997a8943c2dc44edc3b83150b78717a7bf761152f09b41035d245fa536c45b8c06dd00d SHA512 65a0eb674b804309417d736b3ec9edb9c9bf39485593d81f352ee847662f5a95b3d5084fab21451e3510d74e4e2ee8f9cf4e8615d1128b6e16d5c211481481db
DIST xz-5.6.4.tar.gz 2280985 BLAKE2B 3d27c143f4856589d501bc47ff5c86c1c49b1d0b8c8fd2143bcbfe86b860ca93f6a103f628e06ce5c2839ce1941cecc7552d91b1aac5c11def40fd9182d93eee SHA512 b966950eb9206e31f284c9dc3bb0a79f2fabbaf515e88c89da53d3da41ddfeebd2fc6d3d3f8fcd150c70caaaefa43dec0bce84aa183e08bf339d1aebbe041751
DIST xz-5.6.4.tar.gz.sig 566 BLAKE2B 475b576431f573b9ce390ae2c43fc4f307f00ef523a741ec6795f182f5ff2c30f2049b1b4d2a3a7e61769bb7dc568de0f5af89661cb09341a58bbcdcdda3c877 SHA512 1ece59b7a540f6d215206ced14759aa971f192433705f8803b6ad8db0857e246145300c853cb571d8750b8152483d13736c478a7c0abb40d7ed25305d80a841c
DIST xz-5.7.2beta.tar.gz 2568902 BLAKE2B e7474e89bb628ea1a4a906ecad19be6b2bef30f2a674f9a384d20a5f1536cd8db0486f953de828ab327cef22a50dc23786e925b266b4f7398510c06707184699 SHA512 a9f373dcbfbfa0badac78f51678c078b455fc977744b80e04ae1f1dc19b1df681adb4097a4dfe2f50c7811e8f89287ab9d3bc28c00a8b48549adfe9bbc3f00a1
DIST xz-5.7.2beta.tar.gz.sig 566 BLAKE2B 477e29d86a8dd76ea4eede8da223031ae36110d859afd46f18cd9fe67af6bc64cd0d80501d83c5fbd044d01b5307a69d634fe15a244096d2278a28c576628148 SHA512 cbbe79a2e00af78aeecb959fcda4dfe6d178f0a11cb9f64407b8850e586dcd50a386de41a675a9274b9be3d2122facf1377271a5fc6f9f3288e7b1f2598e5999
DIST xz-5.8.0.tar.gz 2579807 BLAKE2B 4fe1f19e5951640b27e7405da4de40a811caf4349141e5eb571e6dd3fb9e8a9ffcb9d7a7bc72ccda1540e3f2298a88da393a95dffeeb13da5dd70e2d96967eaf SHA512 ea9a0ba73529c12df776cd2b5088726e253b5517653700676db77780d5bd13db54e36b427bbf934eb1e17f6330767d097ea8720e43c3052c6f58f4c7fc53f7b1
DIST xz-5.8.0.tar.gz.sig 566 BLAKE2B 38f925e96b1f1dd9e9afc0c0b68e7c30921e8ac46f8ca62bfdd9145356b3ef4c359ae77f89c8b1ef76ca8197e34bf743a6617bcc1a76a44491ff9fedac65783c SHA512 88eb39a2078ff235f1ae9222e789d06f55d225845072a96b0e6ef8f218781aad04cc53623537b0b18607d3cd7c51b6cee3c07b36d912b3a8b7c9991ebfe795d3

View File

@ -35,7 +35,7 @@ else
"
if [[ ${PV} != *_alpha* && ${PV} != *_beta* ]] ; then
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
fi
S="${WORKDIR}/${MY_P}"

View File

@ -0,0 +1,45 @@
https://github.com/facebook/zstd/pull/4341
From cd8ca9d92e6fb3a4c962f8f6f50c3ee467177e06 Mon Sep 17 00:00:00 2001
From: "Z. Liu" <zhixu.liu@gmail.com>
Date: Thu, 20 Mar 2025 03:28:37 +0000
Subject: [PATCH] lib/zstd.h: move pragma before static
otherwise will cause dev-python/zstandard build failed when compiling with
clang as reported at https://bugs.gentoo.org/950259
the root cause is pycparser, which is unfixed since reported 2.5 years
ago, :(
Signed-off-by: Z. Liu <zhixu.liu@gmail.com>
---
lib/zstd.h | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/lib/zstd.h b/lib/zstd.h
index 9fe542ed..85046949 100644
--- a/lib/zstd.h
+++ b/lib/zstd.h
@@ -1868,15 +1868,14 @@ ZSTDLIB_STATIC_API const ZSTD_DDict* ZSTD_initStaticDDict(
typedef void* (*ZSTD_allocFunction) (void* opaque, size_t size);
typedef void (*ZSTD_freeFunction) (void* opaque, void* address);
typedef struct { ZSTD_allocFunction customAlloc; ZSTD_freeFunction customFree; void* opaque; } ZSTD_customMem;
-static
-#ifdef __GNUC__
-__attribute__((__unused__))
-#endif
-
#if defined(__clang__) && __clang_major__ >= 5
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant"
#endif
+static
+#ifdef __GNUC__
+__attribute__((__unused__))
+#endif
ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /**< this constant defers to stdlib's functions */
#if defined(__clang__) && __clang_major__ >= 5
#pragma clang diagnostic pop
--
2.45.2

View File

@ -0,0 +1,72 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit meson-multilib
DESCRIPTION="zstd fast compression library"
HOMEPAGE="https://facebook.github.io/zstd/"
SRC_URI="https://github.com/facebook/zstd/releases/download/v${PV}/${P}.tar.gz"
S="${WORKDIR}"/${P}/build/meson
LICENSE="|| ( BSD GPL-2 )"
SLOT="0/1"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="+lzma lz4 static-libs test zlib"
RESTRICT="!test? ( test )"
RDEPEND="
lzma? ( app-arch/xz-utils )
lz4? ( app-arch/lz4:= )
zlib? ( sys-libs/zlib )
"
DEPEND="${RDEPEND}"
MESON_PATCHES=(
# Workaround until Valgrind bugfix lands
"${FILESDIR}"/${PN}-1.5.4-no-find-valgrind.patch
)
PATCHES=(
"${FILESDIR}"/${PN}-1.5.7-move-pragma-before-static.patch
)
src_prepare() {
cd "${WORKDIR}"/${P} || die
default
cd "${S}" || die
eapply "${MESON_PATCHES[@]}"
}
multilib_src_configure() {
local native_file="${T}"/meson.${CHOST}.${ABI}.ini.local
# This replaces the no-find-valgrind patch once bugfix lands in a meson
# release + we can BDEPEND on it (https://github.com/mesonbuild/meson/pull/11372)
cat >> ${native_file} <<-EOF || die
[binaries]
valgrind='valgrind-falseified'
EOF
local emesonargs=(
-Ddefault_library=$(multilib_native_usex static-libs both shared)
$(meson_native_true bin_programs)
$(meson_native_true bin_contrib)
$(meson_use test bin_tests)
$(meson_native_use_feature zlib)
$(meson_native_use_feature lzma)
$(meson_native_use_feature lz4)
--native-file "${native_file}"
)
meson_src_configure
}
multilib_src_test() {
meson_src_test --timeout-multiplier=2
}

View File

@ -12,7 +12,7 @@ S="${WORKDIR}"/${P}/build/meson
LICENSE="|| ( BSD GPL-2 )"
SLOT="0/1"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="+lzma lz4 static-libs test zlib"
RESTRICT="!test? ( test )"

View File

@ -1,8 +1,6 @@
DIST aardvark-dns-1.10.0.crate 51028 BLAKE2B 81cdc4eb7eaff7359a1a12657b2bc42603383cf0f80a3a599ce9ce277e15ad83e9d5b36c3de3bef15b3201a1e60d86286ad61469d1d58ba2252b4c0174506ea2 SHA512 3d67f1b3c66aeaf4878c09e5e8fc34717cea6c348e0295bc0521c0c4144433656a3306731c24bb362a0e340e652b036b7544e544cca99b61590547bd7a6ce629
DIST aardvark-dns-1.11.0.crate 8977859 BLAKE2B d37c2015d1a46308bea214682133d6364fb50c75e840b664c692c6f344d21a093acab5a93dbf1c7dd624a0adc7cdd38cedc35be8dfde0904a7a773b4f620e002 SHA512 0fb9f9cb20e6c548483778a1109ec315c6135dc1afa3736980754847b06a2e988f5704de7b52b2784b20297d370d47d034137d3899f519d2bb5818a5a68234d8
DIST aardvark-dns-1.12.2.crate 55913 BLAKE2B b1c4e647c5a31946a48deb01c4428eb43550e8d906f3328226399ab6ba2ea44907382ceea47ba7ce125800bc8d0a01c287f6a73630a48671873a8df644ede488 SHA512 05a1410229e6e9cc495015e92fb4252d55af8439b9e6cbbba1b0a8b78256b01bca4bc205f61be903201eab27497062335f1c4235ea6ed7818a325d6cc68eb09d
DIST aardvark-dns-1.9.0.crate 50846 BLAKE2B bae46eae2ec2071b1a1a301f00dc3e3aac0b3a5f1247f1f5be4f2e4b1d9d906fc22c53e5d56967731fcf226a295e8b1d8868dcfae228b05674a5ddecb58a1455 SHA512 1f21b4c40567c0aff967d38ea224884d5c2cb4a85ddffe7bbc5badd237a1195943e4d76f3c65ceb0cab984aa0c2528d8486e78e1e53c5376792477a6a5f426e7
DIST aardvark-dns-v1.10.0-vendor.tar.gz 6283889 BLAKE2B cb69144eabf876e418667782171273541bbc416b456193780b4d7f1d22ad03e18f06ec0d6b1e51e21eab912317bd61dd73266d717fa97a81b4314a3c7d14776a SHA512 68d0106b71f42ba789810020d62911d880debf90a35a086aabfd614403985025dc0c5934087a98943b53f6dfd8ede4add99465cec1ae9a098ff1de1082e1ef9c
DIST aardvark-dns-1.14.0.crate 58825 BLAKE2B 4c87b1986308aea5367042374fe5311f7a219bcd953a417526f0e67cda5b09ab9300ba9bcd9a40668be2267e7506c6c6ebc5f84d5eaf69101541065e40983ffc SHA512 c65258b2d3c2d9f0b507f1bdbddbd3235ac0745b3103631b16b99bd55473bed5eeb54e4d4b76610ec24f983846bfed1007f41b546135c9950bc7047ee588d389
DIST aardvark-dns-v1.11.0-vendor.tar.gz 6829221 BLAKE2B 42f7df29c407dd91e8e9ea1b43fc368b6795ea17169091d3900e59aea12be16174241c996b016e2f5de3e7a592ac3a1fa1c6b817f16ba282ebdda1ab65bfe61a SHA512 e49a6bb410238b90287a75adee481b8fe899ff680be48831c9b3cf36f9985d1fec1ba5bb858a095ffd520c05888651163d65f8b038e7512e975cfa522c0bee56
DIST aardvark-dns-v1.12.2-vendor.tar.gz 6919039 BLAKE2B 5edc43d9e7044da6e3a1694af77dd20c2e2d7ef897083a1609bee32fa96a9c63d18b7e9310e3a7226e71d921a44c5b5184b9975d2712163604a671a1236dcc0d SHA512 1dfacc29962acca5c7baa11fbe4d1c93276b91cb5e1db6033d8e23e963ca4c4098bdbf4bdf89730fdea4d5a45b3a2c00ee65888d502e8009d2adaaa6f8374dba
DIST aardvark-dns-v1.9.0-vendor.tar.gz 8085548 BLAKE2B 487f69a9c34832d74783b66c565a7c2f67f101527e8a44c215f167e4ea80f069846b25decbb423972cd42cd9ee7717efc21c3d1b0885a7d87c0fbdb9cfb9d26f SHA512 f7174f1c4275991a6a2655046697f32511586f53fb343efa25f995cc07663091a634e8a82395840b022b6b3c8363863cdf8c9b6d4e38984fb841978eef0b1f22
DIST aardvark-dns-v1.14.0-vendor.tar.gz 7516081 BLAKE2B d11cc8bf1ae6c21b47bb56a92426494b99467f50e5058dce21956dfd399456ddaf235d5308c770fe71a8d17ce727acbc9c6670d01f165eed08a7a4c4865b66c3 SHA512 0d738d0a737bfc9b6b2fe728de343a6a91c6e197d888fd37c0859b831b05f8c92efce13c268fc8f31a09bb78d43f4330230a0454744523df5a4fa96498ca3dac

View File

@ -1,47 +0,0 @@
# Copyright 2023-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
[[ ${PV} == 9999* ]] || CRATES="${PN}@${PV}"
inherit cargo
DESCRIPTION="A container-focused DNS server"
HOMEPAGE="https://github.com/containers/aardvark-dns"
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/containers/aardvark-dns.git"
else
SRC_URI="${CARGO_CRATE_URIS}"
SRC_URI+="https://github.com/containers/aardvark-dns/releases/download/v${PV}/${PN}-v${PV}-vendor.tar.gz"
KEYWORDS="amd64 arm64 ~ppc64 ~riscv"
fi
# main
LICENSE="Apache-2.0"
# deps
LICENSE+=" 0BSD Apache-2.0-with-LLVM-exceptions MIT Unlicense Unicode-DFS-2016 ZLIB"
SLOT="0"
QA_FLAGS_IGNORED="usr/libexec/podman/${PN}"
QA_PRESTRIPPED="usr/libexec/podman/${PN}"
ECARGO_VENDOR="${WORKDIR}/vendor"
src_unpack() {
if [[ ${PV} == 9999* ]]; then
git-r3_src_unpack
cargo_live_src_unpack
else
cargo_src_unpack
fi
}
src_prepare() {
default
sed -i -e "s|m0755 bin|m0755 $(cargo_target_dir)|g;" Makefile || die
}
src_install() {
export PREFIX="${EPREFIX}"/usr
default
}

View File

@ -15,7 +15,7 @@ if [[ ${PV} == 9999* ]]; then
else
SRC_URI="${CARGO_CRATE_URIS}"
SRC_URI+="https://github.com/containers/aardvark-dns/releases/download/v${PV}/${PN}-v${PV}-vendor.tar.gz"
KEYWORDS="amd64 arm64 ~ppc64 ~riscv"
KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv"
fi
# main

View File

@ -13,7 +13,7 @@ if [[ ${PV} == 9999* ]]; then
EGIT_REPO_URI="https://github.com/openSUSE/catatonit.git"
else
SRC_URI="https://github.com/openSUSE/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv"
KEYWORDS="amd64 arm64 ~loong ~ppc64 ~riscv"
fi
LICENSE="GPL-2+"

View File

@ -1,4 +1,5 @@
DIST conmon-2.1.10.tar.gz 121047 BLAKE2B 14b4c2d541607eac0af6b335f35bd506c9a6c3d2b4e4e3ad79f32550385e90b6f7533f505565f90fb4bb1f42d528c41e9ddc7ec275c16ee982a6d0afe1c65bff SHA512 ecf1a961f431b005b54faa68b5c1bcf31d448f994ca66a56f13002216074dba79b53b52a377d4f8dab08141d6c6cf44467352fbff37175135d3da84081b27a18
DIST conmon-2.1.11-make-docs-target-not-depend-on-install.tools.patch 985 BLAKE2B f2f34ca9a6f067f88f39726b52c5d476946413e84a93bfff2b9d4e9a0b9b117bf25a903455c3a762895746c5bca6eb93bf2ac7c2c6123d7b9bca9c345aba6230 SHA512 a9716057b0127d2b5aaca303e6d26484a5dbe91b9114259b2fded2a0c803568749b725e816004c80cb8b47ddff7a2fbcc231edd2df1d78a56ecaf6d3020c7fd7
DIST conmon-2.1.11.tar.gz 121573 BLAKE2B 600a3e13eee5f71ef5f7aa21d9cf0184dd01c8e5e68d31aa35efcb08c3cf4305313fcfcf0aba3eedb243fe36f0e1e27f68a71627e2050c8ed4a73de273b98131 SHA512 47952f6cbbb810591d78c67856100be0edbf96d30328a10f22c3ec927bc6d1187540824c388d1fc7f3bb16fb7414339f3f20311d1baffb1fae1e38c4d5e7249c
DIST conmon-2.1.13.tar.gz 116624 BLAKE2B b6e707521a1d4f1f843b07af7e861f7e2ef29f5f7f52a2cd73add16718b8d9c71659c620d236ce9287cf75048d0427139bfcc798c5eeb6a91e8c20bb9448a826 SHA512 cb98b26b3c5f5e5f0b09f5373bd58dc958b66ac4edcac2aa509f48be8b7e9a33001428016290944c4002ddbf63e11fb4657aaad879c89c5776f8c8031f4d1d08
DIST conmon-2.1.8.tar.gz 120541 BLAKE2B 8ae12e674edf49f233f7423f2566a1ddea793bd4fc888618a8903a84309cb4aacea9d200bb0f8e0895c96796dca9bc2e6e73c9c8a7dcc5f2c540b05f7a73a21e SHA512 a277de8f8adf001c3e3ef6ef19d4bade36d48c5395a624ee99cb22708ea26a9954df76362006a1331efc06265cb790883b43e84f0006f80c1725a7470ff244c3

View File

@ -0,0 +1,46 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit toolchain-funcs
DESCRIPTION="An OCI container runtime monitor"
HOMEPAGE="https://github.com/containers/conmon"
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/containers/conmon.git"
else
SRC_URI="https://github.com/containers/conmon/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv"
fi
LICENSE="Apache-2.0"
SLOT="0"
IUSE="+seccomp systemd"
RESTRICT="test"
RDEPEND="dev-libs/glib:=
seccomp? ( sys-libs/libseccomp )
systemd? ( sys-apps/systemd:= )"
DEPEND="${RDEPEND}"
BDEPEND="dev-go/go-md2man"
src_prepare() {
default
sed -i -e "s|shell.*--exists libsystemd.* && echo \"0\"|shell echo $(usex systemd 0 1)|g;" Makefile || die
echo -e "#!/usr/bin/env bash\necho $(usex seccomp 0 1)" > hack/seccomp-notify.sh || die
}
src_compile() {
tc-export CC PKG_CONFIG
export PREFIX="${EPREFIX}/usr" GOMD2MAN=$(command -v go-md2man)
default
}
src_install() {
default
dodir /usr/libexec/podman
dosym ../../bin/"${PN}" /usr/libexec/podman/"${PN}"
}

View File

@ -1 +1,2 @@
DIST containers-common-0.60.4.tar.gz 13106900 BLAKE2B 1afb428044bc8eebd002b884f2a2072971cd83fca561fd509b83088ccdf82b3a62d63ff32ec5ef856c3d0ee0ffac316201fa8f1d7956153ce30e2244cc860f02 SHA512 5d61415d4959486223a36ff98304363a558e6da9ccbdca94f976649a37d404ac00c8454019f60a79360029c91c9565d22868b109dbb84c19f13377e0e23dcc4d
DIST containers-common-0.62.2.tar.gz 13367528 BLAKE2B 05a16b12cdf89263836df4b4d09ff7b12aba758a08c4f85a0c124dfb378a28fcb33dc6fa41adc81b33e4c3b0949344cc18af5537d3b741bdd07498e7b13e52be SHA512 5e4b6bc6df79e75e5360130ef7b837e216c05955e03968b8df44997c4d88fc095e5ab2ed5db716edaccfb912063d29ba54460231ae5907413da3b6f9771d095e

View File

@ -0,0 +1,83 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit readme.gentoo-r1
DESCRIPTION="Common config files and docs for Containers stack"
HOMEPAGE="https://github.com/containers/common"
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/containers/common.git"
else
SRC_URI="https://github.com/containers/common/archive/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${P#containers-}"
KEYWORDS="~amd64 ~arm64 ~loong ~riscv"
fi
LICENSE="Apache-2.0"
SLOT="0"
RESTRICT="test"
RDEPEND="
>=app-containers/aardvark-dns-1.12.0
>=app-containers/crun-1.17
>=app-containers/containers-image-5.32.0
>=app-containers/containers-storage-1.55.0
app-containers/containers-shortnames
>=app-containers/netavark-1.12.0
net-firewall/nftables
net-firewall/iptables[nftables]
>=net-misc/passt-2024.09.06
>=sys-fs/fuse-overlayfs-1.14
"
BDEPEND="
>=dev-go/go-md2man-2.0.3
"
PATCHES=(
"${FILESDIR}/examplify-mounts-conf.patch"
)
DOC_CONTENTS="\n
For rootless operations, one needs to configure subuid(5) and subgid(5)\n
See /etc/sub{uid,gid} to check whether rootless user is already configured\n
If not, quickly configure it with:\n
usermod --add-subuids 1065536-1131071 <rootless user>\n
usermod --add-subgids 1065536-1131071 <rootless user>\n
"
src_prepare() {
default
[[ -f docs/Makefile && -f Makefile ]] || die
sed -i -e 's|/usr/local|/usr|g;' docs/Makefile Makefile || die
}
src_compile() {
emake docs
touch {images,layers}.lock || die
}
src_install() {
emake DESTDIR="${ED}" install
readme.gentoo_create_doc
insinto /usr/share/containers
doins pkg/seccomp/seccomp.json pkg/subscriptions/mounts.conf
keepdir /etc/containers/{certs.d,oci/hooks.d,networks,systemd} /var/lib/containers/sigstore \
/usr/lib/containers/storage
diropts -m0700
dodir /usr/lib/containers/storage/overlay-{images,layers}
for i in images layers; do
insinto /usr/lib/containers/storage/overlay-"${i}"
doins "${i}".lock
done
}
pkg_postinst() {
readme.gentoo_print_elog
}

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
@ -58,6 +58,7 @@ src_prepare() {
src_compile() {
emake docs
touch {images,layers}.lock || die
}
src_install() {
@ -67,7 +68,14 @@ src_install() {
insinto /usr/share/containers
doins pkg/seccomp/seccomp.json pkg/subscriptions/mounts.conf
keepdir /etc/containers/certs.d /etc/containers/oci/hooks.d /etc/containers/systemd /var/lib/containers/sigstore
keepdir /etc/containers/{certs.d,oci/hooks.d,networks,systemd} /var/lib/containers/sigstore \
/usr/lib/containers/storage
diropts -m0700
dodir /usr/lib/containers/storage/overlay-{images,layers}
for i in images layers; do
insinto /usr/lib/containers/storage/overlay-"${i}"
doins "${i}".lock
done
}
pkg_postinst() {

View File

@ -1,2 +1,3 @@
DIST containers-image-5.30.0.tar.gz 719070 BLAKE2B 5952ab703b6df793f326dd4fc82f50c5f672e2b9d142e0bc706014092420e3563599d9f1c1f65f743e1a8144b91f92b2326d7bf4c3024b5efb466d777a8ad613 SHA512 89cd0d482bb5d70037ff51413b7abca01d36bc7f39e9dc130c78462e501dae32193137a367d81532afd216a7432e127728147e6e839d5d99eeb6b6680f31d4dc
DIST containers-image-5.32.2.tar.gz 735422 BLAKE2B a0585c877b4679226d1760bf873ceeb5cba7f5177ab83fa6f8a161b1f3958f3d660445556b13b4221712c241cee94429cabdb1fd4186d4dc6edba7b032fce2bc SHA512 7498f9e446b2c205b033703641f7cfcb6c8bd8f097b12ef3f734c94772d63fc7b9b40a6700d53d93919d2c34772f079aa3cb7d9f9e5a130b6587f4fe2a558df6
DIST containers-image-5.34.2.tar.gz 766227 BLAKE2B 27593e4d0035aee9eabc1011a837f16369d7985558ae1275e6726ff1b859d09ab036f150dc978ab0290cee7ba2b0878c50edcb131a2eb63ff947567fa1f10c2a SHA512 7e7cc5bfd2e8d71c332f08aab34c1b1cccadcf9f313d9519a294e9dfc370fd48d18f1e00dd0d74a19edf40ac511a544033fc27cf9537dcbb9458f721d88d564d

View File

@ -0,0 +1,38 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="Default config and docs related to Containers' images"
HOMEPAGE="https://github.com/containers/image"
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/containers/image.git"
else
SRC_URI="https://github.com/containers/image/archive/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${P#containers-}"
KEYWORDS="~amd64 ~arm64 ~loong ~riscv"
fi
LICENSE="Apache-2.0"
SLOT="0"
# https://github.com/gentoo/gentoo/pull/35012#discussion_r1473740969
RESTRICT='test'
BDEPEND=">=dev-go/go-md2man-2.0.3"
RDEPEND="!<=app-containers/containers-common-0.57.0"
PATCHES=(
"${FILESDIR}"/remove-go-as-bdepend-5.34.2.patch
)
src_compile() {
emake docs
}
src_install() {
emake DESTDIR="${ED}" install
insinto /etc/containers
doins registries.conf
}

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
@ -22,6 +22,9 @@ SLOT="0"
RESTRICT='test'
BDEPEND=">=dev-go/go-md2man-2.0.3"
RDEPEND="!<=app-containers/containers-common-0.57.0"
PATCHES=(
"${FILESDIR}"/remove-go-as-bdepend-5.34.2.patch
)
src_compile() {
emake docs

View File

@ -0,0 +1,22 @@
--- a/Makefile
+++ b/Makefile
@@ -3,11 +3,6 @@
export GOPROXY=https://proxy.golang.org
-GOBIN := $(shell go env GOBIN)
-ifeq ($(GOBIN),)
-GOBIN := $(shell go env GOPATH)/bin
-endif
-
# when cross compiling _for_ a Darwin or windows host, then we must use openpgp
BUILD_TAGS_WINDOWS_CROSS = containers_image_openpgp
BUILD_TAGS_DARWIN_CROSS = containers_image_openpgp
@@ -15,7 +10,6 @@ BUILD_TAGS_DARWIN_CROSS = containers_image_openpgp
BUILDTAGS = btrfs_noversion libdm_no_deferred_remove
BUILDFLAGS := -tags "$(BUILDTAGS)"
-PACKAGES := $(shell go list $(BUILDFLAGS) ./...)
SOURCE_DIRS = $(shell echo $(PACKAGES) | awk 'BEGIN{FS="/"; RS=" "}{print $$4}' | uniq)
PREFIX ?= ${DESTDIR}/usr

View File

@ -1 +1,2 @@
DIST containers-shortnames-2023.02.20.tar.gz 13527 BLAKE2B 165a4c51bd284078990c94059145bb6b4bd5de4d8595eb2ccd2acc6fe8561e7edc300b7edadc684675ee281d7ada1c3a6d5aa0117c640ec22c2d2ef7e46486b5 SHA512 856dbbeb2acda276e9605bd1ecec0f8d65952c597ee2af61dd8909d7d3c04e5ef06c40b69ec4a98f79e623c536850f614c1b0af3a19637e300e7d3a285933193
DIST containers-shortnames-2025.03.19.tar.gz 13672 BLAKE2B a72160f65aa13316c33b984173e151f0519720ec9617395980f0d7c5f25dc14b400aafbcb2fa8769eace9c1e51d4f1ddbe783e68fc0e40280743f90fbce30aa9 SHA512 edadadda8920ac4880f2c44f396e5d4c844bf15c964d7ef5d14c68637ac43e0df91f4efd2be747bca74bd0da959ea21cc3200ab14b2b57aba5975cff8f2fbefa

View File

@ -0,0 +1,36 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="Configures default shortnames (aliases) for Containers"
HOMEPAGE="https://github.com/containers/shortnames"
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/containers/shortnames.git"
else
SRC_URI="https://github.com/containers/shortnames/archive/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${P#containers-}"
KEYWORDS="~amd64 ~arm64 ~loong ~riscv"
fi
LICENSE="Apache-2.0"
SLOT="0"
src_configure() {
return
}
src_compile() {
return
}
src_test() {
return
}
src_install() {
insinto /etc/containers/registries.conf.d
newins shortnames.conf 000-shortnames.conf
}

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
@ -6,13 +6,13 @@ EAPI=8
DESCRIPTION="Configures default shortnames (aliases) for Containers"
HOMEPAGE="https://github.com/containers/shortnames"
if [[ ${PV} == *9999* ]]; then
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/containers/shortnames.git"
else
SRC_URI="https://github.com/containers/shortnames/archive/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${P#containers-}"
KEYWORDS="~amd64 ~loong"
KEYWORDS="~amd64 ~arm64 ~loong ~riscv"
fi
LICENSE="Apache-2.0"

View File

@ -1 +1,2 @@
DIST containers-storage-1.55.1.tar.gz 4197824 BLAKE2B 5859e2267096541449aeff8576ad1dc00a72993d123ec5571e775f0081a6bc9cfc588bfd522bf7742bd417314e3a699d51e57127f66c152abb7cf805ffe61464 SHA512 3ba244d28e25c6a88f01a73ff26a4a0747c71124a6191d086d8521e1622f36740cfa0b1cbac56f7699a5af9a7001382e71c32fd0644960a53a97c00fd09a754e
DIST containers-storage-1.57.2.tar.gz 4258308 BLAKE2B 1d068aaeb984060d1934c55e71824520963f32fe00c19b978e317032408c555c7f0ac028c9900e840a4ba7d1369892669cca15acb4f2d4ce9bdae77e3c29c636 SHA512 f092df52d2b8512d453ca4964304363481ef6bda3d05998654a2e3269fc9494af3a9c7c98f2a6895f6595c43733a4e9ebd39e3b62e1575a036134a8547dc3081

View File

@ -0,0 +1,32 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="Default config and docs related to Containers' storage"
HOMEPAGE="https://github.com/containers/storage"
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/containers/storage.git"
else
SRC_URI="https://github.com/containers/storage/archive/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${P#containers-}"
KEYWORDS="~amd64 ~arm64 ~loong ~riscv"
fi
LICENSE="Apache-2.0"
SLOT="0"
BDEPEND=">=dev-go/go-md2man-2.0.2"
src_compile() {
emake -C docs GOMD2MAN=go-md2man containers-storage.conf.5
}
src_install() {
emake DESTDIR="${ED}" -C docs install
insinto /usr/share/containers
doins storage.conf
}

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
@ -27,6 +27,6 @@ src_compile() {
src_install() {
emake DESTDIR="${ED}" -C docs install
insinto /etc/containers
insinto /usr/share/containers
doins storage.conf
}

View File

@ -1,2 +1,4 @@
DIST netavark-1.12.2.crate 156878 BLAKE2B 787fd23e3fa233a18a753aa55a43413aafff47b4d0733a9f2250d3f2159c1a3d0dd20272997701b3bc39a6a042060e3d2edad2418326873111d8183f0060560c SHA512 45e423e15945ce63e1bb5d2364377de65efd2f2edfeb0fd3522d2d8afb5cb60e1951b5810ac1dbdbbdf77176885b738ad864132daa8d7de858fb4edce340d7ea
DIST netavark-1.14.1.crate 167516 BLAKE2B b6ec5eaef66798416fc0fc82f6de81d07feb52a95946a3844a9f4b34c16bfaa37bc3b5228e38b912d40381d30940f7e49bf052426989f20fffc712e2c4499ebb SHA512 ae7892858e85fda499742e9c9553f7e5e887bd62f155832b630c4b4fc0b32f52469d72d901d9b222816f324ec4f877cb758c9edad22e282eee77e05d98b05fc6
DIST netavark-v1.12.2-vendor.tar.gz 18364290 BLAKE2B e2f09d53ac8106196aa873732df66f0357a5e26488cc1b8f1d10f5f5d650d471272efca7f33860afe6242500d934ee22d9ea58c256e47e296ed57d8d563f1f27 SHA512 1396eb4e41282745949a7a511c6c44e703c810624e56b8ca9455fec52c59d4ec4333103e00188b2b8c08a60bb9e8a8eca6ed995103c0dc20b3b91c1e0a1d0dfb
DIST netavark-v1.14.1-vendor.tar.gz 18508797 BLAKE2B 8b63673700f26e19ac2c2274e71a803bf99ba7aec58d8f66320e0cdd7c72c016f16083df46b0b454bd91df5e62e5c4170bcb2ee636c094a5578951bd8f38eb24 SHA512 84545bcb791a698a20d3b1f41502beaa568a5e519156cbb6e9d28bef34a24ed006a87cd77c8d972f63ad9c3ef9049637b15bd0d446d80c88dcdd9f268486959a

View File

@ -0,0 +1,59 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
[[ ${PV} == 9999* ]] || CRATES="${PN}@${PV}"
inherit cargo systemd
DESCRIPTION="A container network stack"
HOMEPAGE="https://github.com/containers/netavark"
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/containers/netavark.git"
else
SRC_URI="${CARGO_CRATE_URIS} https://github.com/containers/netavark/releases/download/v${PV}/${PN}-v${PV}-vendor.tar.gz"
KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv"
fi
# main
LICENSE="Apache-2.0"
# deps
LICENSE+=" Apache-2.0-with-LLVM-exceptions BSD BSD-2 Boost-1.0 MIT Unicode-DFS-2016 Unlicense ZLIB"
SLOT="0"
BDEPEND="dev-go/go-md2man
dev-libs/protobuf[protoc(+)]"
QA_FLAGS_IGNORED="
usr/libexec/podman/${PN}"
QA_PRESTRIPPED="
usr/libexec/podman/${PN}"
ECARGO_VENDOR="${WORKDIR}/vendor"
src_unpack() {
if [[ ${PV} == 9999* ]]; then
git-r3_src_unpack
cargo_live_src_unpack
else
cargo_src_unpack
fi
}
src_prepare() {
default
sed -i -e "s|m0755 bin|m0755 $(cargo_target_dir)|g;" Makefile || die
}
src_compile() {
cargo_src_compile
export PREFIX="${EPREFIX}"/usr SYSTEMDDIR="$(systemd_get_systemunitdir)"
emake docs
}
# Following is needed because we want to use `make install` instead of `cargo install` (exported by cargo.eclass)
src_install() {
default
}

View File

@ -1,3 +1,3 @@
DIST podman-5.2.5.tar.gz 23834863 BLAKE2B 2264c9b19e621a1269ae5baee6fee148e6f1b9cacbdd83fdbecf671f87855d0ae566e41e4e8cbffe57662b7e9a3d653d57a7d2acb8f30b869b8af1bd7473a617 SHA512 29f71c67a5700e8dffe45e6e91acab509d8c8924a5f3cf9b4eee95f665a9ed19333285df89da892699ee314cee27c0c8a4a62d29e4205198781f5d5f585135a9
DIST podman-5.3.0.tar.gz 24194165 BLAKE2B fb2da37e4f97d69997b9518425bb1ec74846e4e26855bf9ece0eeefb723f603051d4d4a1b3320cdba5c97595db12e1948f280776429819d10bfe83a57f349c78 SHA512 3f1ab7e792850e2e21823c59ca9e03d348e78267e3ec5344a04c38e51466159717944c318cf5e61ad9a785d9112b468b9fc37f3b60a40e8764d5cac9f58e7d16
DIST podman-5.3.2.tar.gz 24207488 BLAKE2B 68f618b74be41bf489de97b009d335f3033634c5c065b1089cc9a6132e38e3a7f707b959d29d955ab0bd805721c14cda90c77fa60f6ba09327f38d4a8bc19112 SHA512 b7007278dd3f493bd0d0185ed4328570d5af527d4864c4435e7b330543d60ba87f04f36c94407d4e11e622a4af8b6467f66474e9b66cbeacb8eecb3088b4439e
DIST podman-5.4.1.tar.gz 25462641 BLAKE2B 33e2afa9a89a76333940d354af800d7f6b9959e6366d15bd573bccc724b02291d44cdee58d7359956955b014b892c034130e4df2df04fdca15d4f7144920f1cb SHA512 7cbe02c4fdfce83e8becd5c167768d25eab621794e736e7741ca8d4d1384e7db550c59b2f45356aaabd49d9d236bae65bad7f60dc2392a0903ceec812fa5d1c2

View File

@ -17,7 +17,7 @@ else
SRC_URI="https://github.com/containers/podman/archive/v${PV/_rc/-rc}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${P/_rc/-rc}"
[[ ${PV} != *rc* ]] && \
KEYWORDS="~amd64 ~arm64 ~loong ~riscv"
KEYWORDS="amd64 arm64 ~loong ~riscv"
fi
# main pkg

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
@ -17,7 +17,7 @@ else
SRC_URI="https://github.com/containers/podman/archive/v${PV/_rc/-rc}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${P/_rc/-rc}"
[[ ${PV} != *rc* ]] && \
KEYWORDS="amd64 arm64 ~loong ~riscv"
KEYWORDS="~amd64 ~arm64 ~loong ~riscv"
fi
# main pkg
@ -89,7 +89,7 @@ src_prepare() {
}
src_compile() {
export PREFIX="${EPREFIX}/usr"
export PREFIX="${EPREFIX}/usr" BUILD_ORIGIN="Gentoo Portage"
# For non-live versions, prevent git operations which causes sandbox violations
# https://github.com/gentoo/gentoo/pull/33531#issuecomment-1786107493

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
@ -89,7 +89,7 @@ src_prepare() {
}
src_compile() {
export PREFIX="${EPREFIX}/usr"
export PREFIX="${EPREFIX}/usr" BUILD_ORIGIN="Gentoo Portage"
# For non-live versions, prevent git operations which causes sandbox violations
# https://github.com/gentoo/gentoo/pull/33531#issuecomment-1786107493

View File

@ -1,28 +0,0 @@
https://bugs.gentoo.org/942467
https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=c0cb0175c9e6e8d6a3bdd2e40f85fa730fa325af
From c0cb0175c9e6e8d6a3bdd2e40f85fa730fa325af Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <gniibe@fsij.org>
Date: Tue, 9 Jul 2024 10:48:02 +0900
Subject: [PATCH] scd: Add <unistd.h> for read(2) / write(2) .
* scd/app.c: Include <unistd.h>.
--
Reported-by: David Bohman
GnuPG-bug-id: 7193
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
(cherry picked from commit 1d5cfa9b7fd22e1c46eeed5fa9fed2af6f81d34f)
--- a/scd/app.c
+++ b/scd/app.c
@@ -22,6 +22,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <unistd.h>
#include <npth.h>
#ifndef HAVE_W32_SYSTEM
--
2.30.2

View File

@ -34,7 +34,7 @@ LICENSE="GPL-2 LGPL-2.1"
# Bump FUDGE if a release is made which breaks ABI without changing SONAME.
# (Reset to 0 if FUDGE != 0 if libgpgme/libgpgmepp/libqpggme change.)
SLOT="1/11.6.15.2"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="common-lisp static-libs +cxx python qt5 qt6 test"
RESTRICT="!test? ( test )"
REQUIRED_USE="

View File

@ -25,6 +25,7 @@ DIST bash-5.2.tar.gz.sig 95 BLAKE2B 2991b7c46ef1cdca08062f419be47fca7551f4c5d9aa
DIST bash-5.3-beta.tar.gz 10667630 BLAKE2B d6d3a1efd5ed69b131e2831e35c4a620968132e7d9da079de155decb4d3c736cd6c9f1180523e85dd41aeecdb9b380e4768bc551afafaee478168c462ce90929 SHA512 f8f02b4a90312c8e7c589efd1a0a43a4db3bcb47d19cb95190961e4ae254b2d6d26472197ce216868d914fe1adf62741f927552239559a1c3b2c64dfcfaa8cb0
DIST bash-5.3-beta.tar.gz.sig 94 BLAKE2B a4b85d5755e200abddd5669c3d21b1ee6be8036b27934e25473c14b15ffc1bc7cbbd5a94f39a0dc6bf6050908590509f0ba39d28c33947154cc966e11d454c8c SHA512 72184ca2afe3d0c8c2165516499a61da2aecc0c8c83661cab0038c3d849623115729d2ade73c4b5973ea9b5e8169af4bc2aea51f0b70356af26342285adab2f5
DIST bash-5.3_beta_p20250307-c3997d51f8ba359eeabb45b90b9cdae4fe599b5a.tar.gz 15761772 BLAKE2B c87d4cac04e910bd9f7441b349233c92c53cfa3e74356c3ffc18d236313f8e9d1c7b49ffaa7435aee8b1ef4ce216a74f2ffe5564e30d448d8ce77895df5a2f75 SHA512 b5802f900a081880ae4f3c799bdf98d4bcc70661921d27ab403dcc4acbececc834ffdb3c02d1ea7d24736e122f6a3e9286a1306c3962c8daef94606e8f999c3c
DIST bash-5.3_beta_p20250324-e009d30dfff92d5389f7bb05ec8627e524d5a0ca.tar.gz 15771260 BLAKE2B 4d347c16d0dd897c289447e64d4e99c0673cf058fef3db630243c76095e335079715fb913198ea7ec6755d4a197e837fe8448feeb2648b1d815199159b2de8b9 SHA512 55558af53b4b880ea744c9711cd823991e97876daf21ef67a72be69ffe762bc7c698425f0fc1e8ab1818736f8d64d6cef15f0cb604ac0dae066c2df976102b87
DIST bash205b-001 1132 BLAKE2B 0c5eef29777d54ef05957ea3d63b1556fb380bd20c238dc28993d822b37bc4e78ff4048ad069f6b8cd25da77ccdeb7aecd86c4349cb9d81e5e94c7001eeae5e6 SHA512 5ce4357468821b05e747201f3aa57225ad8f540c9e2c87051720490e039c30b478b9b662a68f14a0800fefe40184e4495e2645665200f9d75e9a115b2ac08071
DIST bash205b-002 755 BLAKE2B 6a6ed5679d451f02f8104b345c1722d11718ce3b4043b581c17786d40d8da69a34786fb56d0c363dba277b8e9dd33f12f70c9cc73a9fc39ba4a8319406f0458d SHA512 46947b0229478d5c2cfeff68b8ebc00e4ef0c8b94e336ca12f72b4490ba3622c0240c01c17c1641c3b07adc2c64ec94d6d780365e8990768ec8888f3a9526883
DIST bash205b-003 2356 BLAKE2B b7887d00d92fd298cd07a15e1c73b516dabd22ecd74c97091636dd97a0cd55024ed698e5cc924c4311d994dd326b1ad074bea35e7650cf9cf4e25c60d2713fa7 SHA512 74528ca5d165b812d299f1c69b47757bd677c0b22ce4217e155cd641708b02364a93c6709fb57b546b376b36da74429a61493921c7c199563da40ddcf1c1f399

View File

@ -0,0 +1,410 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/chetramey.asc
inherit flag-o-matic toolchain-funcs prefix verify-sig
# Uncomment if we have a patchset.
#GENTOO_PATCH_DEV="sam"
#GENTOO_PATCH_VER="${PV}"
MY_PV=${PV/_p*}
MY_PV=${MY_PV/_/-}
MY_P=${PN}-${MY_PV}
MY_PATCHES=()
# Determine the patchlevel.
case ${PV} in
9999|*_alpha*|*_beta*|*_rc*)
# Set a negative patchlevel to indicate that it's a pre-release.
PLEVEL=-1
;;
*_p*)
PLEVEL=${PV##*_p}
;;
*)
PLEVEL=0
esac
# The version of readline this bash normally ships with. Note that we only use
# the bundled copy of readline for pre-releases.
READLINE_VER="8.3_alpha"
DESCRIPTION="The standard GNU Bourne again shell"
HOMEPAGE="https://tiswww.case.edu/php/chet/bash/bashtop.html https://git.savannah.gnu.org/cgit/bash.git"
if [[ ${PV} == 9999 ]]; then
EGIT_REPO_URI="https://git.savannah.gnu.org/git/bash.git"
EGIT_BRANCH=devel
inherit git-r3
elif (( PLEVEL < 0 )) && [[ ${PV} == *_p* ]] ; then
# It can be useful to have snapshots in the pre-release period once
# the first alpha is out, as various bugs get reported and fixed from
# the alpha, and the next pre-release is usually quite far away.
#
# i.e. if it's worth packaging the alpha, it's worth packaging a followup.
BASH_COMMIT="e009d30dfff92d5389f7bb05ec8627e524d5a0ca"
SRC_URI="https://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-${BASH_COMMIT}.tar.gz -> ${P}-${BASH_COMMIT}.tar.gz"
S=${WORKDIR}/${PN}-${BASH_COMMIT}
else
my_urls=( {'mirror://gnu/bash','ftp://ftp.cwru.edu/pub/bash'}/"${MY_P}.tar.gz" )
# bash-5.1 -> bash51
my_p=${PN}$(ver_cut 1-2) my_p=${my_p/.}
for (( my_patch_idx = 1; my_patch_idx <= PLEVEL; my_patch_idx++ )); do
printf -v my_patch_ver %s-%03d "${my_p}" "${my_patch_idx}"
my_urls+=( {'mirror://gnu/bash','ftp://ftp.cwru.edu/pub/bash'}/"${MY_P}-patches/${my_patch_ver}" )
MY_PATCHES+=( "${DISTDIR}/${my_patch_ver}" )
done
SRC_URI="${my_urls[*]} verify-sig? ( ${my_urls[*]/%/.sig} )"
S=${WORKDIR}/${MY_P}
unset -v my_urls my_p my_patch_idx my_patch_ver
fi
if [[ ${GENTOO_PATCH_VER} ]]; then
SRC_URI+=" https://dev.gentoo.org/~${GENTOO_PATCH_DEV:?}/distfiles/${CATEGORY}/${PN}/${PN}-${GENTOO_PATCH_VER:?}-patches.tar.xz"
fi
LICENSE="GPL-3+"
SLOT="0"
if (( PLEVEL >= 0 )); then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
fi
IUSE="afs bashlogger examples mem-scramble +net nls plugins pgo +readline"
DEPEND="
>=sys-libs/ncurses-5.2-r2:=
nls? ( virtual/libintl )
"
if (( PLEVEL >= 0 )); then
DEPEND+=" readline? ( >=sys-libs/readline-${READLINE_VER}:= )"
fi
RDEPEND="
${DEPEND}
"
# We only need bison (yacc) when the .y files get patched (bash42-005, bash51-011).
BDEPEND="
pgo? ( dev-util/gperf )
verify-sig? ( sec-keys/openpgp-keys-chetramey )
"
# EAPI 8 tries to append it but it doesn't exist here.
QA_CONFIGURE_OPTIONS="--disable-static"
PATCHES=(
#"${WORKDIR}"/${PN}-${GENTOO_PATCH_VER}/
# Patches to or from Chet, posted to the bug-bash mailing list.
"${FILESDIR}/${PN}-5.0-syslog-history-extern.patch"
)
pkg_setup() {
# bug #7332
if is-flag -malign-double; then
eerror "Detected bad CFLAGS '-malign-double'. Do not use this"
eerror "as it breaks LFS (struct stat64) on x86."
die "remove -malign-double from your CFLAGS mr ricer"
fi
if use bashlogger; then
ewarn "The logging patch should ONLY be used in restricted (i.e. honeypot) envs."
ewarn "This will log ALL output you enter into the shell, you have been warned."
fi
}
src_unpack() {
local patch
if [[ ${PV} == 9999 ]]; then
git-r3_src_unpack
elif (( PLEVEL < 0 )) && [[ ${PV} == *_p* ]] ; then
default
else
if use verify-sig; then
verify-sig_verify_detached "${DISTDIR}/${MY_P}.tar.gz"{,.sig}
for patch in "${MY_PATCHES[@]}"; do
verify-sig_verify_detached "${patch}"{,.sig}
done
fi
unpack "${MY_P}.tar.gz"
if [[ ${GENTOO_PATCH_VER} ]]; then
unpack "${PN}-${GENTOO_PATCH_VER}-patches.tar.xz"
fi
fi
}
src_prepare() {
# Include official patches.
(( PLEVEL > 0 )) && eapply -p0 "${MY_PATCHES[@]}"
# Clean out local libs so we know we use system ones w/releases. The
# touch utility is invoked for the benefit of config.status.
if (( PLEVEL >= 0 )); then
rm -rf lib/{readline,termcap}/* \
&& touch lib/{readline,termcap}/Makefile.in \
&& sed -i -E 's:\$[{(](RL|HIST)_LIBSRC[)}]/[[:alpha:]_-]*\.h::g' Makefile.in \
|| die
fi
# Prefixify hardcoded path names. No-op for non-prefix.
hprefixify pathnames.h.in
# Avoid regenerating docs after patches, bug #407985.
sed -i -E '/^(HS|RL)USER/s:=.*:=:' doc/Makefile.in \
&& touch -r . doc/* \
|| die
# Sometimes hangs (more noticeable w/ pgo), bug #907403.
rm tests/run-jobs || die
eapply -p0 "${PATCHES[@]}"
eapply_user
}
src_configure() {
local -a myconf
# Upstream only test with Bison and require GNUisms like YYEOF and
# YYERRCODE. The former at least may be in POSIX soon:
# https://www.austingroupbugs.net/view.php?id=1269.
# configure warns on use of non-Bison but doesn't abort. The result
# may misbehave at runtime.
unset -v YACC
myconf=(
--disable-profiling
# Force linking with system curses ... the bundled termcap lib
# sucks bad compared to ncurses. For the most part, ncurses
# is here because readline needs it. But bash itself calls
# ncurses in one or two small places :(.
--with-curses
$(use_enable mem-scramble)
$(use_enable net net-redirections)
$(use_enable readline)
$(use_enable readline bang-history)
$(use_enable readline history)
$(use_with afs)
$(use_with mem-scramble bash-malloc)
)
# For descriptions of these, see config-top.h.
# bashrc/#26952 bash_logout/#90488 ssh/#24762 mktemp/#574426
append-cppflags \
-DDEFAULT_PATH_VALUE=\'\""${EPREFIX}"/usr/local/sbin:"${EPREFIX}"/usr/local/bin:"${EPREFIX}"/usr/sbin:"${EPREFIX}"/usr/bin:"${EPREFIX}"/sbin:"${EPREFIX}"/bin\"\' \
-DSTANDARD_UTILS_PATH=\'\""${EPREFIX}"/bin:"${EPREFIX}"/usr/bin:"${EPREFIX}"/sbin:"${EPREFIX}"/usr/sbin\"\' \
-DSYS_BASHRC=\'\""${EPREFIX}"/etc/bash/bashrc\"\' \
-DSYS_BASH_LOGOUT=\'\""${EPREFIX}"/etc/bash/bash_logout\"\' \
-DNON_INTERACTIVE_LOGIN_SHELLS \
-DSSH_SOURCE_BASHRC \
$(use bashlogger && echo -DSYSLOG_HISTORY)
use nls || myconf+=( --disable-nls )
if (( PLEVEL >= 0 )); then
# Historically, we always used the builtin readline, but since
# our handling of SONAME upgrades has gotten much more stable
# in the PM (and the readline ebuild itself preserves the old
# libs during upgrades), linking against the system copy should
# be safe.
# Exact cached version here doesn't really matter as long as it
# is at least what's in the DEPEND up above.
export ac_cv_rl_version=${READLINE_VER%%_*}
# Use system readline only with released versions.
myconf+=( --with-installed-readline=. )
fi
if use plugins; then
append-ldflags "-Wl,-rpath,${EPREFIX}/usr/$(get_libdir)/bash"
else
# Disable the plugins logic by hand since bash doesn't provide
# a way of doing it.
export ac_cv_func_dl{close,open,sym}=no \
ac_cv_lib_dl_dlopen=no ac_cv_header_dlfcn_h=no
sed -i -e '/LOCAL_LDFLAGS=/s:-rdynamic::' configure || die
fi
# bug #444070
tc-export AR
econf "${myconf[@]}"
}
src_compile() {
local -a pgo_generate_flags pgo_use_flags
local flag
# -fprofile-partial-training because upstream notes the test suite isn't
# super comprehensive.
# https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html#sec-gcc10-pgo
if use pgo; then
pgo_generate_flags=(
-fprofile-update=atomic
-fprofile-dir="${T}"/pgo
-fprofile-generate="${T}"/pgo
)
pgo_use_flags=(
-fprofile-use="${T}"/pgo
-fprofile-dir="${T}"/pgo
)
if flag=$(test-flags-CC -fprofile-partial-training); then
pgo_generate_flags+=( "${flag}" )
pgo_use_flags+=( "${flag}" )
fi
fi
# builtins/evalstring.c needs y.tab.h but can't (easily) specify the dep on it from above
emake CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" y.tab.h
emake CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}"
use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" all others
# Build Bash and run its tests to generate profiles.
if (( ${#pgo_generate_flags[@]} )); then
# Used in test suite.
unset -v A
emake CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" -k check
if tc-is-clang; then
llvm-profdata merge "${T}"/pgo --output="${T}"/pgo/default.profdata || die
fi
# Rebuild Bash using the profiling data we just generated.
emake clean
emake CFLAGS="${CFLAGS} ${pgo_use_flags[*]}" y.tab.h
emake CFLAGS="${CFLAGS} ${pgo_use_flags[*]}"
use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} ${pgo_use_flags[*]}" all others
fi
}
src_test() {
# Used in test suite.
unset -v A
default
}
src_install() {
local d f
default
my_prefixify() {
while read -r; do
if [[ $REPLY == *$1* ]]; then
REPLY=${REPLY/"/etc/"/"${EPREFIX}/etc/"}
fi
printf '%s\n' "${REPLY}" || ! break
done < "$2" || die
}
dodir /bin
mv -- "${ED}"/usr/bin/bash "${ED}"/bin/ || die
dosym bash /bin/rbash
insinto /etc/bash
doins "${FILESDIR}"/bash_logout
my_prefixify bashrc.d "${FILESDIR}"/bashrc-r1 | newins - bashrc
insinto /etc/bash/bashrc.d
my_prefixify DIR_COLORS "${FILESDIR}"/bashrc.d/10-gentoo-color.bash | newins - 10-gentoo-color.bash
newins "${FILESDIR}"/bashrc.d/10-gentoo-title-r1.bash 10-gentoo-title.bash
if [[ ! ${EPREFIX} ]]; then
doins "${FILESDIR}"/bashrc.d/15-gentoo-bashrc-check.bash
fi
insinto /etc/skel
for f in bash{_logout,_profile,rc}; do
newins "${FILESDIR}/dot-${f}" ".${f}"
done
if use plugins; then
exeinto "/usr/$(get_libdir)/bash"
set -- examples/loadables/*.o
doexe "${@%.o}"
insinto /usr/include/bash-plugins
doins *.h builtins/*.h include/*.h lib/{glob/glob.h,tilde/tilde.h}
fi
if use examples; then
for d in examples/{functions,misc,scripts,startup-files}; do
exeinto "/usr/share/doc/${PF}/${d}"
docinto "${d}"
for f in "${d}"/*; do
if [[ ${f##*/} != @(PERMISSION|*README) ]]; then
doexe "${f}"
else
dodoc "${f}"
fi
done
done
fi
# Install bash_builtins.1 and rbash.1.
emake -C doc DESTDIR="${D}" install_builtins
sed 's:bash\.1:man1/&:' doc/rbash.1 > "${T}"/rbash.1 || die
doman "${T}"/rbash.1
newdoc CWRU/changelog ChangeLog
dosym bash.info /usr/share/info/bashref.info
}
pkg_preinst() {
if [[ -e ${EROOT}/etc/bashrc ]] && [[ ! -d ${EROOT}/etc/bash ]]; then
mkdir -p -- "${EROOT}"/etc/bash \
&& mv -f -- "${EROOT}"/etc/bashrc "${EROOT}"/etc/bash/ \
|| die
fi
}
pkg_postinst() {
local old_ver
# If /bin/sh does not exist, provide it.
if [[ ! -e ${EROOT}/bin/sh ]]; then
ln -sf -- bash "${EROOT}"/bin/sh || die
fi
read -r old_ver <<<"${REPLACING_VERSIONS}"
if [[ ! $old_ver ]]; then
:
elif ver_test "$old_ver" -ge "5.2" && ver_test "$old_ver" -ge "5.2_p26-r8"; then
return
fi
while read -r; do ewarn "${REPLY}"; done <<'EOF'
Files under /etc/bash/bashrc.d must now have a suffix of .sh or .bash.
Gentoo now defaults to defining PROMPT_COMMAND as an array. Depending on the
characteristics of the operating environment, it may contain a command to set
the terminal's window title. Those who were already choosing to customise the
PROMPT_COMMAND variable are now advised to append their commands like so:
PROMPT_COMMAND+=('custom command goes here')
Gentoo no longer defaults to having bash set the window title in the case
that the terminal is controlled by sshd(8), unless screen is launched on the
remote side or the terminal reliably supports saving and restoring the title
(as alacritty, foot and tmux do). Those wanting for the title to be set
regardless may adjust ~/.bashrc - or create a custom /etc/bash/bashrc.d
drop-in - to set PROMPT_COMMMAND like so:
PROMPT_COMMAND=(genfun_set_win_title)
Those who would prefer for bash never to interfere with the window title may
now opt out of the default title setting behaviour, either with the "unset -v
PROMPT_COMMAND" command or by re-defining PROMPT_COMMAND as desired.
EOF
}

View File

@ -1,2 +1 @@
DIST gentoo-syntax-14.tar.bz2 20988 BLAKE2B 2f11628bec985ef486ad6f04b694df7a2b1e5ef34f5ddb364c7d9dea4a507d9bae4d8de6b00b33358cf651b4fc6816164f22f7760275a1fd0668b89927859cfb SHA512 63914ffb1911d83fa8991a901f9a23ccfc30f0170a6a730cb02919f4adf0ad34c70f4457e006b1c08a004448c6b9e85d97634a8ed8fdf0b4f98ef9fd804eef00
DIST gentoo-syntax-15.tar.bz2 21018 BLAKE2B 2b0ead6d5701f14f321ad02b1cd3fe426b8e98e4d80e66331387f0543d88a2ac6b5d78a1f8c9125dadf24f3508c34d915fa896dc2fb85a8664984d771b48a29e SHA512 69cdcd58933b4f83da81ecc943e205689591748c283005b2e6cd342e623d8e0643979d913ec6a9464ca2b49431ea2317dfb0e6454143d6757f6ba287286d24f1

View File

@ -1,42 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit vim-plugin
DESCRIPTION="vim plugin: Gentoo and Portage syntax highlighting"
HOMEPAGE="https://github.com/gentoo/gentoo-syntax"
SRC_URI="https://gitweb.gentoo.org/proj/gentoo-syntax.git/snapshot/${P}.tar.bz2"
LICENSE="vim"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="ignore-glep31"
VIM_PLUGIN_HELPFILES="gentoo-syntax"
VIM_PLUGIN_MESSAGES="filetype"
src_prepare() {
default
if use ignore-glep31 ; then
for f in ftplugin/*.vim ; do
ebegin "Removing UTF-8 rules from ${f} ..."
sed -i -e 's~\(setlocal fileencoding=utf-8\)~" \1~' ${f} \
|| die "waah! bad sed voodoo. need more goats."
eend $?
done
fi
}
pkg_postinst() {
vim-plugin_pkg_postinst
if [[ -z ${REPLACING_VERSIONS} ]] ; then
if use ignore-glep31 1>/dev/null ; then
ewarn "You have chosen to disable the rules which ensure GLEP 31"
ewarn "compliance. When editing ebuilds, please make sure you get"
ewarn "the character set correct."
fi
fi
}

View File

@ -11,7 +11,7 @@ SRC_URI="https://gitweb.gentoo.org/proj/gentoo-syntax.git/snapshot/${P}.tar.bz2"
LICENSE="vim"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="ignore-glep31"
VIM_PLUGIN_HELPFILES="gentoo-syntax"

View File

@ -2,10 +2,6 @@ DIST cmake-3.28.0-docs.tar.xz 525776 BLAKE2B b643f76012768f0100c51f0dd146230eba2
DIST cmake-3.28.5-SHA-256.txt 1646 BLAKE2B 763cbec9ede58cc43a7435e3fe97a9a9f28b201712f52d98ecdf8035887232fe6000675c9bab90f275ff6d44406839f04352784a921dcbc9d65c5e2440b53f52 SHA512 0fdeed277d113e4642c11b87b98305da43213bd89566e3aaaf427a11e168d9e6754632c2fd76fae542d29fddfa8b67c3c0df19f741c53fdd3aea8ce7bec73ff3
DIST cmake-3.28.5-SHA-256.txt.asc 833 BLAKE2B bde735a577b556bc30ae1a5de0df8533243c955cc5d222537b3323e7108900af2f01799a4bfa843d953b141cc76a19aed77bfba15cf4e2c3cc36a0e7e844e853 SHA512 d495afd2ce4e16f8d3ecc0b319d59c3634aae71c26110d14225f9dd628bfe173cdd94818c69c930ef5cfff3b331445e192db0082188e0822155184e3f6f80e7d
DIST cmake-3.28.5.tar.gz 11076017 BLAKE2B 7da653e42fca4848362a97e80320ffcc85ced4951dfe475f48f1619a40dc674d2828a78df2ef09589868f41f1da86970074186f730e675851cd9e7c1b099ba4c SHA512 d8f1c056e94c835c2078a5e68b23a3918f0e2cc40ef9dacaf5df4f2c26106149d85364c01528fcc2d6a4b6c2182ba420d938c519fa98757a5fc375cf152c7f82
DIST cmake-3.30.0-docs.tar.xz 572276 BLAKE2B 0c258f8dd0a518bb7bf97d35a778d8e406c986e123fc8acafb174a750ad0883d346254d12e8134dd9d030faefddc13b8260e7b43e405272157ada742c75b5fc2 SHA512 9d534b0efc30829f1144fb32c4f10ba25749e238c8ceeb4399b6d1eb8421b9fb1363972a497757ef84689bb987840619cbb4333ae95fd2397eea07eebed112c1
DIST cmake-3.30.6-SHA-256.txt 1646 BLAKE2B 370ec5fecb60a7ee6bf36503553a7478b66cfabbd48ea2ab17ae44841b371f5892c33bc9c64388ac84ea07e86f3bee9a82b9dc378ff4624f3a7c5025716b82bf SHA512 6049a237f0904a48c4658352ea0f0fb007bccd30886a1eb9e026ba85d15d892502e2ed6763023c61712e370d68b209f83e7e6c7d236f169603fc85e0f8c286ef
DIST cmake-3.30.6-SHA-256.txt.asc 833 BLAKE2B 73b841a2eb1d476696506706d95f371e5c46c2b777c012bf1d930f072c242bb431cde282ab371bf62a7845c92ba014270e3599d3c30d8503335ce249aa3ecb5c SHA512 34374445ecb012c4607fcf65fc6719dda16af189c0d2d38898a5cd506fc6c24462437556810c693ca45773cb8824cd0a03445ee07b69e010d1b7c509e32c617d
DIST cmake-3.30.6.tar.gz 11503061 BLAKE2B a381bea86b7cedb5dfae3598a4a243e74b0b34e78c105fe7ee17343593700c30f1dc42b06cbd872894a043f68e23853e7b1fdc6cb2161584f57e4aa89515e23a SHA512 8349d522ae098d72df625ef44700b672a5f85e7bd6c44ee9c0c3ba3f07561348f715f4d5a6f4a9b0e92bd9984e590473bc684160841f94842b5ee128fcc0bb07
DIST cmake-3.31.0-docs.tar.xz 562756 BLAKE2B ef1d145658fd197ea515f05fbbad54b213bf458f3068829634242bc43bdb4f97bd45fcc45c9958919d2a78276ffc1d14d507822831f44fe9be5080ecc62e75fe SHA512 b4025633a0f42003005dfacdaea55c67e08d8f9082c8c6c564540b4d536246acedece41adb76cb00042d2f25f85b3817d23f70e393eb22a0857693d51ca60748
DIST cmake-3.31.5-SHA-256.txt 1646 BLAKE2B 45b9e829febf185ba9f532c208e6b49bcf56e6ffbdf2fb46fb8e6bc6cc58bb890a4a27cb00eb7acfc12b595aa20dcd1343142ab9e1fd42baee12af941cb786de SHA512 1b5a6f405cdb1cfaf52a5666b67d76261121ee66e6c9b73338da72af5f6eb6a27f87b642f657ab9d64bc491b9d8526cae4699e8f053e44550b2e01c3a0f3aa1a
DIST cmake-3.31.5-SHA-256.txt.asc 833 BLAKE2B 0206a62c7816b4115e56e1f1519b6357610037f18949a3a5ce894bfd364de39918073fa267516ec4071eaf35fd641363cdaeeb0704de5918d2f6aace9e7bdfbe SHA512 016ec25b29b28845c1a2680e0b25f35b7ce89e466493caa99acaad4f8e32f9173a72afcecdddd90e89ea00ac10df3fa0dc37b3edc1de1923198e393f9f54e769
@ -13,7 +9,7 @@ DIST cmake-3.31.5.tar.gz 11706495 BLAKE2B 16375229d7344b10db40c76fe2fc8a3f906266
DIST cmake-3.31.6-SHA-256.txt 1646 BLAKE2B f5d3bb67759b4b227bd38eb7de8405052fd55cef528d3a4d4754d77815cdb018831fadcb51e590186faa5e7911bd6d9ceba29d971a7d125435df06132276a00d SHA512 8e3d939ccab2260380fce92c31ba8244c7b4d19c7245d5bc9607e9352f2e7fa1e0e4ecc8555f8418f9659f53c142111dd34aba0739d947f387e5a88345dd6b46
DIST cmake-3.31.6-SHA-256.txt.asc 833 BLAKE2B a99307a7e8011a1df30a2f364ae68b2f5d286d0d98f8a9b5d27283aa109963d6989218a8b3787666d7aa3a7e37e4d6468077c16b6550727efd1295f8c0504caa SHA512 c7a728110790a85ba89dace68c9bd4c22c81ae4482a758297fdb49e7eb11ccf0056d0d4fcf100be71eed7cc2ae3f633722df801dba2d61dd0fafb476d5b09128
DIST cmake-3.31.6.tar.gz 11710589 BLAKE2B ea1bee1a98568407dfc164f82bf0e3ab082124bbbb12cfa18489bdbe9964418ee30fb62b4915bc06645bcd2cf1e17bfb9c210812da070acbba848db186d06044 SHA512 839d06b6ebd0bf78cbe8f7ae3a7c00026e70d759a81ac51aa103f35ad985ac69be9e667aae7b5fe48c5e0c41baec791259279679dbdf2ddd8b63a48382a8a2a0
DIST cmake-4.0.0-rc4-SHA-256.txt 2099 BLAKE2B 9a902a5ceb3a4c8a1886fc2df05f5b229f76670781e77fc423be723f5455d0b323b5babd242f72bc737ea75e657bae1cbf67e54b50c2ecd385d0e8baa8812ece SHA512 0691a37482e90b27be913c925100c1485768221824e6e91f992671dacf18f6c318c7d2dc67551e391e6c7e0b1ee418ad9b88ed82309456b0bc3c86b53981173b
DIST cmake-4.0.0-rc4-SHA-256.txt.asc 833 BLAKE2B a9118933d4daebe4afd8e0a54afbcdb32f961248fa70c9f468bcf5743a6aa5e30f6083d78b1b51550e6e1388e99926e0f0ef07a1853cf62d7d7d169430e73b3a SHA512 a4db155a0e3df77332420e806e333d9435f927b82a4b03eabb263346cb632f62a44168e45f5a7a0aa2e12ab54fd2edb049544be8796997898734f1ed7454a6f8
DIST cmake-4.0.0-rc4.tar.gz 11825037 BLAKE2B cca7e01a79bedea65622754c1e920f621b4ce1e4637a11e7d3b880d26fc074d52766593c4441a32898ec9c61a1ed9fd27ac47c95985ec22e8c355bbbc3025e68 SHA512 a2325e22f23bd62a048b6e9e9c2b6c069260b510169686ee69e45fe1596b53947bef449b32c14471ecc94840d8275e5fe3de89dd63b2aa9e7bdcbd7972e5a457
DIST cmake-4.0.0-SHA-256.txt 2015 BLAKE2B 8f3737f51768c61a16543e8d4a4bc6c359f2f2c128b1d7a5b80cae6c09e64d8ed28147619336172b217d0ea264ce424b2ef519b36bc6e30771a7144bee6d67b1 SHA512 50abb18d59e2685ea462d1e4cbafb005172030c1dc7f77a959e178caba744347d67b575318d3a09c1f44966f5efcfdb2fa0dd2dbbddb1fc8487f54c0e4207d69
DIST cmake-4.0.0-SHA-256.txt.asc 833 BLAKE2B 2e9fe03e6db837dffe703740c76b312fced691ac2b2a5df6c8c199489902ce36ab8bef6ba599734470e5c4ded7ab4ad75eb374578b2204ed72d5711ad8af843d SHA512 93da422a75ce068d26b96e0a50746511f7ee3da6f8fd8d232bf9fd6a95853290ae98858ab8a00719091b79a9a6064bf7c0f840d45fa773baaa48b489ea4f54fc
DIST cmake-4.0.0.tar.gz 11824527 BLAKE2B 21ab208f663498a4851e312bdee884fae9a711234ffd7da73c56894a51d2cd7a479f18fc0d3f276c9eee964e97965d0d57ccfe9a95a10f1bb7ad319c8fe0b7af SHA512 6892f68a48f428b7d7321e646b75d72f751a20b44e74696d445c90dc0dc8be7894f546d70e3749ff44a1bbea0371e9f4d509a9c116c17c231db65affe60945df
DIST cmake-4.0.0_rc1-docs.tar.xz 577536 BLAKE2B 74a742ffef8e1af1652746e1c177d4198155145a039635e6a0ea40af463f3a2d45b6c6ce7d3a9b1fee24f0c1cfd1c3aa95c27669ca3c6281d54e701fc0ece202 SHA512 74c20067d3b82493024b2f2711b55b93998ce3b5f35ab5a154f33a8268a35a29d01127c55ce6b85b80ff252d15284ed1065e1338422124f6722a4190a984637c

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
@ -20,13 +20,13 @@ CMAKE_DOCS_USEFLAG="+doc"
CMAKE_MAKEFILE_GENERATOR="emake"
CMAKE_REMOVE_MODULES_LIST=( none )
inherit bash-completion-r1 cmake flag-o-matic multiprocessing \
toolchain-funcs virtualx xdg-utils
toolchain-funcs xdg-utils
MY_P="${P/_/-}"
DESCRIPTION="Cross platform Make"
HOMEPAGE="https://cmake.org/"
if [[ ${PV} == 9999 ]] ; then
if [[ ${PV} == *9999* ]] ; then
CMAKE_DOCS_PREBUILT=0
EGIT_REPO_URI="https://gitlab.kitware.com/cmake/cmake.git"
@ -47,7 +47,7 @@ else
https://github.com/Kitware/CMake/releases/download/v$(ver_cut 1-3)/${MY_P}-SHA-256.txt.asc
)"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
KEYWORDS="ppc"
BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-bradking-20230817 )"
fi
@ -59,7 +59,7 @@ S="${WORKDIR}/${MY_P}"
LICENSE="BSD"
SLOT="0"
IUSE="${CMAKE_DOCS_USEFLAG} dap gui ncurses qt6 test"
IUSE="${CMAKE_DOCS_USEFLAG} dap gui ncurses test"
RESTRICT="!test? ( test )"
RDEPEND="
@ -72,14 +72,7 @@ RDEPEND="
sys-libs/zlib
virtual/pkgconfig
dap? ( dev-cpp/cppdap )
gui? (
!qt6? (
dev-qt/qtcore:5
dev-qt/qtgui:5
dev-qt/qtwidgets:5
)
qt6? ( dev-qt/qtbase:6[gui,widgets] )
)
gui? ( dev-qt/qtbase:6[gui,widgets] )
ncurses? ( sys-libs/ncurses:= )
"
DEPEND="${RDEPEND}"
@ -208,7 +201,7 @@ src_configure() {
-DBUILD_QtDialog=$(usex gui)
)
use gui && mycmakeargs+=( -DCMake_QT_MAJOR_VERSION=$(usex qt6 6 5) )
use gui && mycmakeargs+=( -DCMake_QT_MAJOR_VERSION=6 )
cmake_src_configure
}
@ -223,7 +216,7 @@ src_test() {
pushd "${BUILD_DIR}" > /dev/null || die
# Excluded tests:
# BootstrapTest: we actualy bootstrap it every time so why test it.
# BootstrapTest: we actually bootstrap it every time so why test it.
# BundleUtilities: bundle creation broken
# CMakeOnly.AllFindModules: pthread issues
# CTest.updatecvs: which fails to commit as root
@ -240,7 +233,9 @@ src_test() {
-E "(BootstrapTest|BundleUtilities|CMakeOnly.AllFindModules|CompileOptions|CTest.UpdateCVS|Fortran|RunCMake.CompilerLauncher|RunCMake.CPack_(DEB|RPM)|TestUpload|RunCMake.CMP0125)" \
)
virtx cmake_src_test
local -x QT_QPA_PLATFORM=offscreen
cmake_src_test
}
src_install() {

View File

@ -1,293 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Generate using https://github.com/thesamesam/sam-gentoo-scripts/blob/main/niche/generate-cmake-docs
# Set to 1 if prebuilt, 0 if not
# (the construct below is to allow overriding from env for script)
: ${CMAKE_DOCS_PREBUILT:=1}
CMAKE_DOCS_PREBUILT_DEV=sam
CMAKE_DOCS_VERSION=$(ver_cut 1-2).0
# Default to generating docs (inc. man pages) if no prebuilt; overridden later
# See bug #784815
CMAKE_DOCS_USEFLAG="+doc"
# TODO RunCMake.LinkWhatYouUse fails consistently w/ ninja
# ... but seems fine as of 3.22.3?
# TODO ... but bootstrap sometimes(?) fails with ninja now. bug #834759.
CMAKE_MAKEFILE_GENERATOR="emake"
CMAKE_REMOVE_MODULES_LIST=( none )
inherit bash-completion-r1 cmake flag-o-matic multiprocessing \
toolchain-funcs xdg-utils
MY_P="${P/_/-}"
DESCRIPTION="Cross platform Make"
HOMEPAGE="https://cmake.org/"
if [[ ${PV} == 9999 ]] ; then
CMAKE_DOCS_PREBUILT=0
EGIT_REPO_URI="https://gitlab.kitware.com/cmake/cmake.git"
inherit git-r3
else
SRC_URI="https://cmake.org/files/v$(ver_cut 1-2)/${MY_P}.tar.gz"
if [[ ${CMAKE_DOCS_PREBUILT} == 1 ]] ; then
SRC_URI+=" !doc? ( https://dev.gentoo.org/~${CMAKE_DOCS_PREBUILT_DEV}/distfiles/${CATEGORY}/${PN}/${PN}-${CMAKE_DOCS_VERSION}-docs.tar.xz )"
fi
if [[ ${PV} != *_rc* ]] ; then
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/bradking.asc
inherit verify-sig
SRC_URI+=" verify-sig? (
https://github.com/Kitware/CMake/releases/download/v$(ver_cut 1-3)/${MY_P}-SHA-256.txt
https://github.com/Kitware/CMake/releases/download/v$(ver_cut 1-3)/${MY_P}-SHA-256.txt.asc
)"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-bradking-20230817 )"
fi
fi
[[ ${CMAKE_DOCS_PREBUILT} == 1 ]] && CMAKE_DOCS_USEFLAG="doc"
S="${WORKDIR}/${MY_P}"
LICENSE="BSD"
SLOT="0"
IUSE="${CMAKE_DOCS_USEFLAG} dap gui ncurses qt6 test"
RESTRICT="!test? ( test )"
RDEPEND="
>=app-arch/libarchive-3.3.3:=
app-crypt/rhash:0=
>=dev-libs/expat-2.0.1
>=dev-libs/jsoncpp-1.9.2-r2:0=
>=dev-libs/libuv-1.10.0:=
>=net-misc/curl-7.21.5[ssl]
sys-libs/zlib
virtual/pkgconfig
dap? ( dev-cpp/cppdap )
gui? (
!qt6? (
dev-qt/qtcore:5
dev-qt/qtgui:5
dev-qt/qtwidgets:5
)
qt6? ( dev-qt/qtbase:6[gui,widgets] )
)
ncurses? ( sys-libs/ncurses:= )
"
DEPEND="${RDEPEND}"
BDEPEND+="
doc? (
dev-python/requests
dev-python/sphinx
)
test? ( app-arch/libarchive[zstd] )
"
SITEFILE="50${PN}-gentoo.el"
PATCHES=(
# Prefix
"${FILESDIR}"/${PN}-3.27.0_rc1-0001-Don-t-use-.so-for-modules-on-darwin-macos.-Use-.bund.patch
"${FILESDIR}"/${PN}-3.27.0_rc1-0002-Set-some-proper-paths-to-make-cmake-find-our-tools.patch
# Misc
"${FILESDIR}"/${PN}-3.27.0_rc1-0003-Prefer-pkgconfig-in-FindBLAS.patch
"${FILESDIR}"/${PN}-3.27.0_rc1-0004-Ensure-that-the-correct-version-of-Qt-is-always-used.patch
"${FILESDIR}"/${PN}-3.27.0_rc1-0005-Respect-Gentoo-s-Python-eclasses.patch
# Cuda
"${FILESDIR}/${PN}-3.30.3-cudahostld.patch"
# Upstream fixes (can usually be removed with a version bump)
)
cmake_src_bootstrap() {
# disable running of cmake in bootstrap command
sed -i \
-e '/"${cmake_bootstrap_dir}\/cmake"/s/^/#DONOTRUN /' \
bootstrap || die "sed failed"
# execinfo.h on Solaris isn't quite what it is on Darwin
if [[ ${CHOST} == *-solaris* ]] ; then
sed -i -e 's/execinfo\.h/blablabla.h/' \
Source/kwsys/CMakeLists.txt || die
fi
# bootstrap script isn't exactly /bin/sh compatible
tc-env_build ${CONFIG_SHELL:-sh} ./bootstrap \
--prefix="${T}/cmakestrap/" \
--parallel=$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)") \
|| die "Bootstrap failed"
}
src_unpack() {
if [[ ${PV} == 9999 ]] ; then
git-r3_src_unpack
elif [[ ${PV} == *_rc* ]] || ! use verify-sig ; then
default
else
cd "${DISTDIR}" || die
# See https://mgorny.pl/articles/verify-sig-by-example.html#verifying-using-a-checksum-file-with-a-detached-signature
verify-sig_verify_detached ${MY_P}-SHA-256.txt{,.asc}
verify-sig_verify_unsigned_checksums ${MY_P}-SHA-256.txt sha256 ${MY_P}.tar.gz
cd "${WORKDIR}" || die
default
fi
}
src_prepare() {
cmake_src_prepare
if [[ ${CHOST} == *-darwin* ]] ; then
# Disable Xcode hooks, bug #652134
sed -i -e 's/cm\(\|Global\|Local\)XCode[^.]\+\.\(cxx\|h\)//' \
Source/CMakeLists.txt || die
sed -i -e '/define CMAKE_USE_XCODE/s/XCODE/NO_XCODE/' \
-e '/cmGlobalXCodeGenerator.h/d' \
Source/cmake.cxx || die
# Disable system integration, bug #933744
sed -i -e 's/__APPLE__/__DISABLED__/' \
Source/cmFindProgramCommand.cxx \
Source/CPack/cmCPackGeneratorFactory.cxx || die
sed -i -e 's/__MAC_OS_X_VERSION_MIN_REQUIRED/__DISABLED__/' \
Source/cmMachO.cxx || die
sed -i -e 's:CPack/cmCPack\(Bundle\|DragNDrop\|PKG\|ProductBuild\)Generator.cxx::' \
Source/CMakeLists.txt || die
# Disable isysroot usage with GCC, we've properly instructed
# where things are via GCC configuration and ldwrapper
sed -i -e '/cmake_gnu_set_sysroot_flag/d' \
Modules/Platform/Apple-GNU-*.cmake || die
# Disable isysroot usage with clang as well
sed -i -e '/_SYSROOT_FLAG/d' \
Modules/Platform/Apple-Clang.cmake || die
# Don't set a POSIX standard, system headers don't like that, #757426
sed -i -e 's/^#if !defined(_WIN32) && !defined(__sun)/& \&\& !defined(__APPLE__)/' \
Source/cmLoadCommandCommand.cxx \
Source/cmStandardLexer.h \
Source/cmSystemTools.cxx \
Source/cmTimestamp.cxx
sed -i -e 's/^#if !defined(_POSIX_C_SOURCE) && !defined(_WIN32) && !defined(__sun)/& \&\& !defined(__APPLE__)/' \
Source/cmStandardLexer.h
fi
# Add gcc libs to the default link paths
sed -i \
-e "s|@GENTOO_PORTAGE_GCCLIBDIR@|${EPREFIX}/usr/${CHOST}/lib/|g" \
-e "$(usex prefix-guest "s|@GENTOO_HOST@||" "/@GENTOO_HOST@/d")" \
-e "s|@GENTOO_PORTAGE_EPREFIX@|${EPREFIX}/|g" \
Modules/Platform/{UnixPaths,Darwin}.cmake || die "sed failed"
## in theory we could handle these flags in src_configure, as we do in many other packages. But we *must*
## handle them as part of bootstrapping, sadly.
# Fix linking on Solaris
[[ ${CHOST} == *-solaris* ]] && append-ldflags -lsocket -lnsl
# ODR warnings, bug #858335
# https://gitlab.kitware.com/cmake/cmake/-/issues/20740
filter-lto
if ! has_version -b \>=${CATEGORY}/${PN}-3.13 || ! cmake --version &>/dev/null ; then
CMAKE_BINARY="${S}/Bootstrap.cmk/cmake"
cmake_src_bootstrap
fi
}
src_configure() {
local mycmakeargs=(
-DCMAKE_USE_SYSTEM_LIBRARIES=ON
-DCMake_ENABLE_DEBUGGER=$(usex dap)
-DCMAKE_DOC_DIR=/share/doc/${PF}
-DCMAKE_MAN_DIR=/share/man
-DCMAKE_DATA_DIR=/share/${PN}
-DSPHINX_MAN=$(usex doc)
-DSPHINX_HTML=$(usex doc)
-DBUILD_CursesDialog="$(usex ncurses)"
-DBUILD_TESTING=$(usex test)
-DBUILD_QtDialog=$(usex gui)
)
use gui && mycmakeargs+=( -DCMake_QT_MAJOR_VERSION=$(usex qt6 6 5) )
cmake_src_configure
}
src_test() {
# Fix OutDir and SelectLibraryConfigurations tests
# these are altered thanks to our eclass
sed -i -e 's:^#_cmake_modify_IGNORE ::g' \
"${S}"/Tests/{OutDir,CMakeOnly/SelectLibraryConfigurations}/CMakeLists.txt \
|| die
unset CLICOLOR CLICOLOR_FORCE CMAKE_COMPILER_COLOR_DIAGNOSTICS CMAKE_COLOR_DIAGNOSTICS
pushd "${BUILD_DIR}" > /dev/null || die
# Excluded tests:
# BootstrapTest: we actualy bootstrap it every time so why test it.
# BundleUtilities: bundle creation broken
# CMakeOnly.AllFindModules: pthread issues
# CTest.updatecvs: which fails to commit as root
# Fortran: requires fortran
# RunCMake.CompilerLauncher: also requires fortran
# RunCMake.CPack_RPM: breaks if app-arch/rpm is installed because
# debugedit binary is not in the expected location
# RunCMake.CPack_DEB: breaks if app-arch/dpkg is installed because
# it can't find a deb package that owns libc
# TestUpload, which requires network access
# RunCMake.CMP0125, known failure reported upstream (bug #829414)
local myctestargs=(
--output-on-failure
-E "(BootstrapTest|BundleUtilities|CMakeOnly.AllFindModules|CompileOptions|CTest.UpdateCVS|Fortran|RunCMake.CompilerLauncher|RunCMake.CPack_(DEB|RPM)|TestUpload|RunCMake.CMP0125)" \
)
local -x QT_QPA_PLATFORM=offscreen
cmake_src_test
}
src_install() {
cmake_src_install
# If USE=doc, there'll be newly generated docs which we install instead.
if ! use doc && [[ ${CMAKE_DOCS_PREBUILT} == 1 ]] ; then
doman "${WORKDIR}"/${PN}-${CMAKE_DOCS_VERSION}-docs/man*/*.[0-8]
fi
insinto /usr/share/vim/vimfiles/syntax
doins Auxiliary/vim/syntax/cmake.vim
insinto /usr/share/vim/vimfiles/indent
doins Auxiliary/vim/indent/cmake.vim
insinto /usr/share/vim/vimfiles/ftdetect
doins "${FILESDIR}/${PN}.vim"
dobashcomp Auxiliary/bash-completion/{${PN},ctest,cpack}
}
pkg_postinst() {
if use gui; then
xdg_icon_cache_update
xdg_desktop_database_update
xdg_mimeinfo_database_update
fi
}
pkg_postrm() {
if use gui; then
xdg_icon_cache_update
xdg_desktop_database_update
xdg_mimeinfo_database_update
fi
}

View File

@ -1,313 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Generate using https://github.com/thesamesam/sam-gentoo-scripts/blob/main/niche/generate-cmake-docs
# Set to 1 if prebuilt, 0 if not
# (the construct below is to allow overriding from env for script)
: ${CMAKE_DOCS_PREBUILT:=1}
CMAKE_DOCS_PREBUILT_DEV=sam
CMAKE_DOCS_VERSION=$(ver_cut 1-2).0
# Default to generating docs (inc. man pages) if no prebuilt; overridden later
# See bug #784815
CMAKE_DOCS_USEFLAG="+doc"
# TODO RunCMake.LinkWhatYouUse fails consistently w/ ninja
# ... but seems fine as of 3.22.3?
# TODO ... but bootstrap sometimes(?) fails with ninja now. bug #834759.
CMAKE_MAKEFILE_GENERATOR="emake"
CMAKE_REMOVE_MODULES_LIST=( none )
inherit bash-completion-r1 cmake flag-o-matic multiprocessing \
toolchain-funcs xdg-utils
MY_P="${P/_/-}"
DESCRIPTION="Cross platform Make"
HOMEPAGE="https://cmake.org/"
if [[ ${PV} == *9999* ]] ; then
CMAKE_DOCS_PREBUILT=0
EGIT_REPO_URI="https://gitlab.kitware.com/cmake/cmake.git"
inherit git-r3
else
SRC_URI="https://cmake.org/files/v$(ver_cut 1-2)/${MY_P}.tar.gz"
if [[ ${CMAKE_DOCS_PREBUILT} == 1 ]] ; then
SRC_URI+=" !doc? ( https://dev.gentoo.org/~${CMAKE_DOCS_PREBUILT_DEV}/distfiles/${CATEGORY}/${PN}/${PN}-${CMAKE_DOCS_VERSION}-docs.tar.xz )"
fi
if [[ ${PV} != *_rc* ]] ; then
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/bradking.asc
inherit verify-sig
SRC_URI+=" verify-sig? (
https://github.com/Kitware/CMake/releases/download/v$(ver_cut 1-3)/${MY_P}-SHA-256.txt
https://github.com/Kitware/CMake/releases/download/v$(ver_cut 1-3)/${MY_P}-SHA-256.txt.asc
)"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-bradking-20240902 )"
fi
fi
[[ ${CMAKE_DOCS_PREBUILT} == 1 ]] && CMAKE_DOCS_USEFLAG="doc"
S="${WORKDIR}/${MY_P}"
LICENSE="BSD"
SLOT="0"
IUSE="${CMAKE_DOCS_USEFLAG} dap gui ncurses test"
RESTRICT="!test? ( test )"
RDEPEND="
>=app-arch/libarchive-3.3.3:=
app-crypt/rhash:0=
>=dev-libs/expat-2.0.1
>=dev-libs/jsoncpp-1.9.2-r2:0=
>=dev-libs/libuv-1.10.0:=
>=net-misc/curl-7.21.5[ssl]
sys-libs/zlib
virtual/pkgconfig
dap? ( dev-cpp/cppdap )
gui? ( dev-qt/qtbase:6[gui,widgets] )
ncurses? ( sys-libs/ncurses:= )
"
DEPEND="${RDEPEND}"
BDEPEND+="
doc? (
dev-python/requests
dev-python/sphinx
)
test? ( app-arch/libarchive[zstd] )
"
SITEFILE="50${PN}-gentoo.el"
PATCHES=(
# Prefix
"${FILESDIR}"/${PN}-3.27.0_rc1-0001-Don-t-use-.so-for-modules-on-darwin-macos.-Use-.bund.patch
"${FILESDIR}"/${PN}-3.27.0_rc1-0002-Set-some-proper-paths-to-make-cmake-find-our-tools.patch
# Misc
"${FILESDIR}"/${PN}-3.27.0_rc1-0003-Prefer-pkgconfig-in-FindBLAS.patch
"${FILESDIR}"/${PN}-3.27.0_rc1-0004-Ensure-that-the-correct-version-of-Qt-is-always-used.patch
"${FILESDIR}"/${PN}-3.27.0_rc1-0005-Respect-Gentoo-s-Python-eclasses.patch
# Cuda
"${FILESDIR}/${PN}-3.30.3-cudahostld.patch"
# Upstream fixes (can usually be removed with a version bump)
)
cmake_src_bootstrap() {
# disable running of cmake in bootstrap command
sed -i \
-e '/"${cmake_bootstrap_dir}\/cmake"/s/^/#DONOTRUN /' \
bootstrap || die "sed failed"
# execinfo.h on Solaris isn't quite what it is on Darwin
if [[ ${CHOST} == *-solaris* ]] ; then
sed -i -e 's/execinfo\.h/blablabla.h/' \
Source/kwsys/CMakeLists.txt || die
fi
# bootstrap script isn't exactly /bin/sh compatible
tc-env_build ${CONFIG_SHELL:-sh} ./bootstrap \
--prefix="${T}/cmakestrap/" \
--parallel=$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)") \
|| die "Bootstrap failed"
}
pkg_pretend() {
if [[ -z ${EPREFIX} ]] ; then
local file
local errant_files=()
# See bug #599684 and bug #753581 (at least)
for file in /etc/arch-release /etc/redhat-release /etc/debian_version ; do
if [[ -e ${file} ]]; then
errant_files+=( "${file}" )
fi
done
# If errant files exist
if [[ ${#errant_files[@]} -gt 0 ]]; then
eerror "Errant files found!"
eerror "The presence of these files is known to confuse CMake's"
eerror "library path logic. Please (re)move these files:"
for file in "${errant_files[@]}"; do
eerror " mv ${file} ${file}.bak"
done
die "Stray files found in /etc/, see above message"
fi
fi
}
src_unpack() {
if [[ ${PV} == 9999 ]] ; then
git-r3_src_unpack
elif [[ ${PV} == *_rc* ]] || ! use verify-sig ; then
default
else
cd "${DISTDIR}" || die
# See https://mgorny.pl/articles/verify-sig-by-example.html#verifying-using-a-checksum-file-with-a-detached-signature
verify-sig_verify_detached ${MY_P}-SHA-256.txt{,.asc}
verify-sig_verify_unsigned_checksums ${MY_P}-SHA-256.txt sha256 ${MY_P}.tar.gz
cd "${WORKDIR}" || die
default
fi
}
src_prepare() {
cmake_src_prepare
if [[ ${CHOST} == *-darwin* ]] ; then
# Disable Xcode hooks, bug #652134
sed -i -e 's/cm\(\|Global\|Local\)XCode[^.]\+\.\(cxx\|h\)//' \
Source/CMakeLists.txt || die
sed -i -e '/define CMAKE_USE_XCODE/s/XCODE/NO_XCODE/' \
-e '/cmGlobalXCodeGenerator.h/d' \
Source/cmake.cxx || die
# Disable system integration, bug #933744
sed -i -e 's/__APPLE__/__DISABLED__/' \
Source/cmFindProgramCommand.cxx \
Source/CPack/cmCPackGeneratorFactory.cxx || die
sed -i -e 's/__MAC_OS_X_VERSION_MIN_REQUIRED/__DISABLED__/' \
Source/cmMachO.cxx || die
sed -i -e 's:CPack/cmCPack\(Bundle\|DragNDrop\|PKG\|ProductBuild\)Generator.cxx::' \
Source/CMakeLists.txt || die
# Disable isysroot usage with GCC, we've properly instructed
# where things are via GCC configuration and ldwrapper
sed -i -e '/cmake_gnu_set_sysroot_flag/d' \
Modules/Platform/Apple-GNU-*.cmake || die
# Disable isysroot usage with clang as well
sed -i -e '/_SYSROOT_FLAG/d' \
Modules/Platform/Apple-Clang.cmake || die
# Don't set a POSIX standard, system headers don't like that, #757426
sed -i -e 's/^#if !defined(_WIN32) && !defined(__sun)/& \&\& !defined(__APPLE__)/' \
Source/cmLoadCommandCommand.cxx \
Source/cmStandardLexer.h \
Source/cmSystemTools.cxx \
Source/cmTimestamp.cxx
sed -i -e 's/^#if !defined(_POSIX_C_SOURCE) && !defined(_WIN32) && !defined(__sun)/& \&\& !defined(__APPLE__)/' \
Source/cmStandardLexer.h
fi
# Add gcc libs to the default link paths
sed -i \
-e "s|@GENTOO_PORTAGE_GCCLIBDIR@|${EPREFIX}/usr/${CHOST}/lib/|g" \
-e "$(usex prefix-guest "s|@GENTOO_HOST@||" "/@GENTOO_HOST@/d")" \
-e "s|@GENTOO_PORTAGE_EPREFIX@|${EPREFIX}/|g" \
Modules/Platform/{UnixPaths,Darwin}.cmake || die "sed failed"
## in theory we could handle these flags in src_configure, as we do in many other packages. But we *must*
## handle them as part of bootstrapping, sadly.
# Fix linking on Solaris
[[ ${CHOST} == *-solaris* ]] && append-ldflags -lsocket -lnsl
# ODR warnings, bug #858335
# https://gitlab.kitware.com/cmake/cmake/-/issues/20740
filter-lto
if ! has_version -b \>=${CATEGORY}/${PN}-3.13 || ! cmake --version &>/dev/null ; then
CMAKE_BINARY="${S}/Bootstrap.cmk/cmake"
cmake_src_bootstrap
fi
}
src_configure() {
local mycmakeargs=(
-DCMAKE_USE_SYSTEM_LIBRARIES=ON
-DCMake_ENABLE_DEBUGGER=$(usex dap)
-DCMAKE_DOC_DIR=/share/doc/${PF}
-DCMAKE_MAN_DIR=/share/man
-DCMAKE_DATA_DIR=/share/${PN}
-DSPHINX_MAN=$(usex doc)
-DSPHINX_HTML=$(usex doc)
-DBUILD_CursesDialog="$(usex ncurses)"
-DBUILD_TESTING=$(usex test)
-DBUILD_QtDialog=$(usex gui)
)
use gui && mycmakeargs+=( -DCMake_QT_MAJOR_VERSION=6 )
cmake_src_configure
}
src_test() {
# Fix OutDir and SelectLibraryConfigurations tests
# these are altered thanks to our eclass
sed -i -e 's:^#_cmake_modify_IGNORE ::g' \
"${S}"/Tests/{OutDir,CMakeOnly/SelectLibraryConfigurations}/CMakeLists.txt \
|| die
unset CLICOLOR CLICOLOR_FORCE CMAKE_COMPILER_COLOR_DIAGNOSTICS CMAKE_COLOR_DIAGNOSTICS
pushd "${BUILD_DIR}" > /dev/null || die
# Excluded tests:
# BootstrapTest: we actually bootstrap it every time so why test it?
# BundleUtilities: bundle creation broken
# CMakeOnly.AllFindModules: pthread issues
# CTest.updatecvs: which fails to commit as root
# Fortran: requires fortran
# RunCMake.CompilerLauncher: also requires fortran
# RunCMake.CPack_RPM: breaks if app-arch/rpm is installed because
# debugedit binary is not in the expected location
# RunCMake.CPack_DEB: breaks if app-arch/dpkg is installed because
# it can't find a deb package that owns libc
# TestUpload, which requires network access
# RunCMake.CMP0125, known failure reported upstream (bug #829414)
local myctestargs=(
--output-on-failure
-E "(BootstrapTest|BundleUtilities|CMakeOnly.AllFindModules|CompileOptions|CTest.UpdateCVS|Fortran|RunCMake.CompilerLauncher|RunCMake.CPack_(DEB|RPM)|TestUpload|RunCMake.CMP0125)" \
)
local -x QT_QPA_PLATFORM=offscreen
cmake_src_test
}
src_install() {
cmake_src_install
# If USE=doc, there'll be newly generated docs which we install instead.
if ! use doc && [[ ${CMAKE_DOCS_PREBUILT} == 1 ]] ; then
doman "${WORKDIR}"/${PN}-${CMAKE_DOCS_VERSION}-docs/man*/*.[0-8]
fi
insinto /usr/share/vim/vimfiles/syntax
doins Auxiliary/vim/syntax/cmake.vim
insinto /usr/share/vim/vimfiles/indent
doins Auxiliary/vim/indent/cmake.vim
insinto /usr/share/vim/vimfiles/ftdetect
doins "${FILESDIR}/${PN}.vim"
dobashcomp Auxiliary/bash-completion/{${PN},ctest,cpack}
}
pkg_postinst() {
if use gui; then
xdg_icon_cache_update
xdg_desktop_database_update
xdg_mimeinfo_database_update
fi
}
pkg_postrm() {
if use gui; then
xdg_icon_cache_update
xdg_desktop_database_update
xdg_mimeinfo_database_update
fi
}

View File

@ -1,345 +0,0 @@
https://bugs.gentoo.org/945770
https://bugs.gentoo.org/945769
https://github.com/mesonbuild/meson/issues/13850
https://github.com/mesonbuild/meson/commit/d8ea5c4d8875bf198f088c603868edf66a3c7c65
From d8ea5c4d8875bf198f088c603868edf66a3c7c65 Mon Sep 17 00:00:00 2001
From: Charles Brunet <charles.brunet@optelgroup.com>
Date: Tue, 29 Oct 2024 16:51:36 -0400
Subject: [PATCH] fix generate_gir with BothLibraries dependency
Co-authored-by: Xavier Claessens <xclaesse@gmail.com>
---
mesonbuild/build.py | 52 ++++++++++++-------
mesonbuild/interpreter/interpreter.py | 22 ++++----
mesonbuild/interpreter/interpreterobjects.py | 10 ++--
.../frameworks/38 gir both_libraries/bar.c | 7 +++
.../frameworks/38 gir both_libraries/bar.h | 1 +
.../frameworks/38 gir both_libraries/foo.c | 6 +++
.../frameworks/38 gir both_libraries/foo.h | 1 +
.../38 gir both_libraries/meson.build | 42 +++++++++++++++
.../38 gir both_libraries/test.json | 3 ++
9 files changed, 111 insertions(+), 33 deletions(-)
create mode 100644 test cases/frameworks/38 gir both_libraries/bar.c
create mode 100644 test cases/frameworks/38 gir both_libraries/bar.h
create mode 100644 test cases/frameworks/38 gir both_libraries/foo.c
create mode 100644 test cases/frameworks/38 gir both_libraries/foo.h
create mode 100644 test cases/frameworks/38 gir both_libraries/meson.build
create mode 100644 test cases/frameworks/38 gir both_libraries/test.json
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index a00209ad45a8..35f1f24a42f8 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -774,6 +774,7 @@ def __init__(
}
self.pic = False
self.pie = False
+ self.both_lib: T.Optional[T.Union[StaticLibrary, SharedLibrary]] = None
# Track build_rpath entries so we can remove them at install time
self.rpath_dirs_to_remove: T.Set[bytes] = set()
self.process_sourcelist(sources)
@@ -1740,16 +1741,20 @@ def process_vs_module_defs_kw(self, kwargs: T.Dict[str, T.Any]) -> None:
def extract_targets_as_list(self, kwargs: T.Dict[str, T.Union[LibTypes, T.Sequence[LibTypes]]], key: T.Literal['link_with', 'link_whole']) -> T.List[LibTypes]:
bl_type = self.environment.coredata.get_option(OptionKey('default_both_libraries'))
if bl_type == 'auto':
- bl_type = 'static' if isinstance(self, StaticLibrary) else 'shared'
-
- def _resolve_both_libs(lib: LibTypes) -> LibTypes:
- if isinstance(lib, BothLibraries):
- return lib.get(bl_type)
- return lib
+ if isinstance(self, StaticLibrary):
+ bl_type = 'static'
+ elif isinstance(self, SharedLibrary):
+ bl_type = 'shared'
self_libs: T.List[LibTypes] = self.link_targets if key == 'link_with' else self.link_whole_targets
- lib_list = listify(kwargs.get(key, [])) + self_libs
- return [_resolve_both_libs(t) for t in lib_list]
+
+ lib_list = []
+ for lib in listify(kwargs.get(key, [])) + self_libs:
+ if isinstance(lib, (Target, BothLibraries)):
+ lib_list.append(lib.get(bl_type))
+ else:
+ lib_list.append(lib)
+ return lib_list
def get(self, lib_type: T.Literal['static', 'shared', 'auto']) -> LibTypes:
"""Base case used by BothLibraries"""
@@ -2204,6 +2209,14 @@ def is_linkable_target(self):
def is_internal(self) -> bool:
return not self.install
+ def set_shared(self, shared_library: SharedLibrary) -> None:
+ self.both_lib = shared_library
+
+ def get(self, lib_type: T.Literal['static', 'shared', 'auto']) -> LibTypes:
+ if lib_type == 'shared':
+ return self.both_lib or self
+ return self
+
class SharedLibrary(BuildTarget):
known_kwargs = known_shlib_kwargs
@@ -2470,6 +2483,14 @@ def type_suffix(self):
def is_linkable_target(self):
return True
+ def set_static(self, static_library: StaticLibrary) -> None:
+ self.both_lib = static_library
+
+ def get(self, lib_type: T.Literal['static', 'shared']) -> LibTypes:
+ if lib_type == 'static':
+ return self.both_lib or self
+ return self
+
# A shared library that is meant to be used with dlopen rather than linking
# into something else.
class SharedModule(SharedLibrary):
@@ -2506,7 +2527,7 @@ def get_default_install_dir(self) -> T.Union[T.Tuple[str, str], T.Tuple[None, No
return self.environment.get_shared_module_dir(), '{moduledir_shared}'
class BothLibraries(SecondLevelHolder):
- def __init__(self, shared: SharedLibrary, static: StaticLibrary, preferred_library: Literal['shared', 'static', 'auto']) -> None:
+ def __init__(self, shared: SharedLibrary, static: StaticLibrary, preferred_library: Literal['shared', 'static']) -> None:
self._preferred_library = preferred_library
self.shared = shared
self.static = static
@@ -2914,23 +2935,14 @@ class AliasTarget(RunTarget):
typename = 'alias'
- def __init__(self, name: str, dependencies: T.Sequence[T.Union[Target, BothLibraries]],
+ def __init__(self, name: str, dependencies: T.Sequence[Target],
subdir: str, subproject: str, environment: environment.Environment):
- super().__init__(name, [], list(self._deps_generator(dependencies)), subdir, subproject, environment)
+ super().__init__(name, [], dependencies, subdir, subproject, environment)
def __repr__(self):
repr_str = "<{0} {1}>"
return repr_str.format(self.__class__.__name__, self.get_id())
- @staticmethod
- def _deps_generator(dependencies: T.Sequence[T.Union[Target, BothLibraries]]) -> T.Iterator[Target]:
- for dep in dependencies:
- if isinstance(dep, BothLibraries):
- yield dep.shared
- yield dep.static
- else:
- yield dep
-
class Jar(BuildTarget):
known_kwargs = known_jar_kwargs
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 58385c58c5f7..10ca3e6bb2e8 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -31,7 +31,7 @@
from ..interpreterbase import Disabler, disablerIfNotFound
from ..interpreterbase import FeatureNew, FeatureDeprecated, FeatureBroken, FeatureNewKwargs
from ..interpreterbase import ObjectHolder, ContextManagerObject
-from ..interpreterbase import stringifyUserArguments, resolve_second_level_holders
+from ..interpreterbase import stringifyUserArguments
from ..modules import ExtensionModule, ModuleObject, MutableModuleObject, NewExtensionModule, NotFoundExtensionModule
from ..optinterpreter import optname_regex
@@ -681,7 +681,6 @@ def func_files(self, node: mparser.FunctionNode, args: T.Tuple[T.List[str]], kwa
KwargInfo('version', (str, NoneType)),
KwargInfo('objects', ContainerTypeInfo(list, build.ExtractedObjects), listify=True, default=[], since='1.1.0'),
)
- @noSecondLevelHolderResolving
def func_declare_dependency(self, node: mparser.BaseNode, args: T.List[TYPE_var],
kwargs: kwtypes.FuncDeclareDependency) -> dependencies.Dependency:
deps = kwargs['dependencies']
@@ -1906,15 +1905,12 @@ def func_jar(self, node: mparser.BaseNode,
@permittedKwargs(known_build_target_kwargs)
@typed_pos_args('build_target', str, varargs=SOURCES_VARARGS)
@typed_kwargs('build_target', *BUILD_TARGET_KWS, allow_unknown=True)
- @noSecondLevelHolderResolving
def func_build_target(self, node: mparser.BaseNode,
args: T.Tuple[str, SourcesVarargsType],
kwargs: kwtypes.BuildTarget
) -> T.Union[build.Executable, build.StaticLibrary, build.SharedLibrary,
build.SharedModule, build.BothLibraries, build.Jar]:
target_type = kwargs['target_type']
- if target_type not in {'both_libraries', 'library'}:
- args, kwargs = resolve_second_level_holders(args, kwargs)
if target_type == 'executable':
return self.build_target(node, args, kwargs, build.Executable)
@@ -2176,13 +2172,19 @@ def func_run_target(self, node: mparser.FunctionNode, args: T.Tuple[str],
@FeatureNew('alias_target', '0.52.0')
@typed_pos_args('alias_target', str, varargs=(build.Target, build.BothLibraries), min_varargs=1)
@noKwargs
- @noSecondLevelHolderResolving
def func_alias_target(self, node: mparser.BaseNode, args: T.Tuple[str, T.List[T.Union[build.Target, build.BothLibraries]]],
kwargs: TYPE_kwargs) -> build.AliasTarget:
name, deps = args
if any(isinstance(d, build.RunTarget) for d in deps):
FeatureNew.single_use('alias_target that depends on run_targets', '0.60.0', self.subproject)
- tg = build.AliasTarget(name, deps, self.subdir, self.subproject, self.environment)
+ real_deps: T.List[build.Target] = []
+ for d in deps:
+ if isinstance(d, build.BothLibraries):
+ real_deps.append(d.shared)
+ real_deps.append(d.static)
+ else:
+ real_deps.append(d)
+ tg = build.AliasTarget(name, real_deps, self.subdir, self.subproject, self.environment)
self.add_target(name, tg)
return tg
@@ -3286,16 +3288,18 @@ def build_both_libraries(self, node: mparser.BaseNode, args: T.Tuple[str, Source
# Keep only compilers used for linking
static_lib.compilers = {k: v for k, v in static_lib.compilers.items() if k in compilers.clink_langs}
+ # Cross reference them to implement as_shared() and as_static() methods.
+ shared_lib.set_static(static_lib)
+ static_lib.set_shared(shared_lib)
+
return build.BothLibraries(shared_lib, static_lib, preferred_library)
def build_library(self, node: mparser.BaseNode, args: T.Tuple[str, SourcesVarargsType], kwargs: kwtypes.Library):
default_library = self.coredata.get_option(OptionKey('default_library', subproject=self.subproject))
assert isinstance(default_library, str), 'for mypy'
if default_library == 'shared':
- args, kwargs = resolve_second_level_holders(args, kwargs)
return self.build_target(node, args, T.cast('kwtypes.StaticLibrary', kwargs), build.SharedLibrary)
elif default_library == 'static':
- args, kwargs = resolve_second_level_holders(args, kwargs)
return self.build_target(node, args, T.cast('kwtypes.SharedLibrary', kwargs), build.StaticLibrary)
elif default_library == 'both':
return self.build_both_libraries(node, args, kwargs)
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py
index a919102607be..f4a2b4107ed3 100644
--- a/mesonbuild/interpreter/interpreterobjects.py
+++ b/mesonbuild/interpreter/interpreterobjects.py
@@ -1001,8 +1001,6 @@ class SharedLibraryHolder(BuildTargetHolder[build.SharedLibrary]):
class BothLibrariesHolder(BuildTargetHolder[build.BothLibraries]):
def __init__(self, libs: build.BothLibraries, interp: 'Interpreter'):
- # FIXME: This build target always represents the shared library, but
- # that should be configurable.
super().__init__(libs, interp)
self.methods.update({'get_shared_lib': self.get_shared_lib_method,
'get_static_lib': self.get_static_lib_method,
@@ -1017,12 +1015,16 @@ def __repr__(self) -> str:
@noPosargs
@noKwargs
def get_shared_lib_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> build.SharedLibrary:
- return self.held_object.shared
+ lib = copy.copy(self.held_object.shared)
+ lib.both_lib = None
+ return lib
@noPosargs
@noKwargs
def get_static_lib_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> build.StaticLibrary:
- return self.held_object.static
+ lib = copy.copy(self.held_object.static)
+ lib.both_lib = None
+ return lib
class SharedModuleHolder(BuildTargetHolder[build.SharedModule]):
pass
diff --git a/test cases/frameworks/38 gir both_libraries/bar.c b/test cases/frameworks/38 gir both_libraries/bar.c
new file mode 100644
index 000000000000..4cb41f798294
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/bar.c
@@ -0,0 +1,7 @@
+#include "bar.h"
+#include "foo.h"
+
+int bar_func(void)
+{
+ return foo_func() + 42;
+}
diff --git a/test cases/frameworks/38 gir both_libraries/bar.h b/test cases/frameworks/38 gir both_libraries/bar.h
new file mode 100644
index 000000000000..d22827b837f7
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/bar.h
@@ -0,0 +1 @@
+int bar_func(void);
diff --git a/test cases/frameworks/38 gir both_libraries/foo.c b/test cases/frameworks/38 gir both_libraries/foo.c
new file mode 100644
index 000000000000..b88aa91dabb4
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/foo.c
@@ -0,0 +1,6 @@
+#include "foo.h"
+
+int foo_func(void)
+{
+ return 42;
+}
diff --git a/test cases/frameworks/38 gir both_libraries/foo.h b/test cases/frameworks/38 gir both_libraries/foo.h
new file mode 100644
index 000000000000..2a0867249307
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/foo.h
@@ -0,0 +1 @@
+int foo_func(void);
diff --git a/test cases/frameworks/38 gir both_libraries/meson.build b/test cases/frameworks/38 gir both_libraries/meson.build
new file mode 100644
index 000000000000..cb9cdd31f3ed
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/meson.build
@@ -0,0 +1,42 @@
+project('gir both libraries', 'c')
+
+gir = dependency('gobject-introspection-1.0', required: false)
+if not gir.found()
+ error('MESON_SKIP_TEST gobject-introspection not found.')
+endif
+
+if host_machine.system() == 'cygwin'
+ # FIXME: g-ir-scanner seems broken on cygwin:
+ # ERROR: can't resolve libraries to shared libraries: foo++
+ error('MESON_SKIP_TEST g-ir-scanner is broken on cygwin.')
+endif
+
+gnome = import('gnome')
+
+# Regression test simulating how GStreamer generate its GIRs.
+# Generated gobject-introspection binaries for every GStreamer libraries must
+# first call gst_init() defined in the main libgstreamer, which means they need
+# to link on that lib.
+# A regression caused by https://github.com/mesonbuild/meson/pull/12632 made
+# Meson not link the binary generated for bar with libfoo in the case it uses
+# both_libraries().
+
+libfoo = both_libraries('foo', 'foo.c')
+foo_gir = gnome.generate_gir(libfoo,
+ namespace: 'foo',
+ nsversion: '1.0',
+ sources: ['foo.c', 'foo.h'],
+)
+foo_dep = declare_dependency(
+ link_with: libfoo,
+ sources: foo_gir,
+)
+
+libbar = both_libraries('bar', 'bar.c', dependencies: foo_dep)
+gnome.generate_gir(libbar,
+ namespace: 'bar',
+ nsversion: '1.0',
+ sources: ['bar.c', 'bar.h'],
+ extra_args: '--add-init-section=extern void foo_func(void);foo_func();',
+ dependencies: foo_dep,
+)
diff --git a/test cases/frameworks/38 gir both_libraries/test.json b/test cases/frameworks/38 gir both_libraries/test.json
new file mode 100644
index 000000000000..82ac42a293b3
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/test.json
@@ -0,0 +1,3 @@
+{
+ "expect_skip_on_jobname": ["azure", "macos", "msys2", "cygwin"]
+}
\ No newline at end of file

View File

@ -21,7 +21,7 @@ fi
LICENSE="BSD"
SLOT="0/1"
KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ~mips ppc ~ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
KEYWORDS="amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
IUSE="gflags +libunwind llvm-libunwind test"
RESTRICT="!test? ( test )"

View File

@ -75,7 +75,7 @@ LICENSE="GPL-3+ LGPL-2.1+"
SLOT="0"
IUSE="cet debuginfod guile lzma multitarget nls +python rocm +server sim source-highlight test vanilla xml xxhash zstd"
if [[ -n ${REGULAR_RELEASE} ]] ; then
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
fi
REQUIRED_USE="
guile? ( ${GUILE_REQUIRED_USE} )
@ -90,7 +90,6 @@ RDEPEND="
>=sys-libs/ncurses-5.2-r2:=
>=sys-libs/readline-7:=
sys-libs/zlib
elibc_glibc? ( net-libs/libnsl:= )
debuginfod? (
dev-libs/elfutils[debuginfod(-)]
)

View File

@ -0,0 +1,351 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# See https://sourceware.org/gdb/wiki/DistroAdvice for general packaging
# tips & notes.
GUILE_COMPAT=( 2-2 3-0 )
PYTHON_COMPAT=( python3_{10..13} )
inherit flag-o-matic guile-single linux-info python-single-r1 strip-linguas toolchain-funcs
export CTARGET=${CTARGET:-${CHOST}}
if [[ ${CTARGET} == ${CHOST} ]] ; then
if [[ ${CATEGORY} == cross-* ]] ; then
export CTARGET=${CATEGORY#cross-}
fi
fi
is_cross() { [[ ${CHOST} != ${CTARGET} ]] ; }
case ${PV} in
9999*)
# live git tree
EGIT_REPO_URI="https://sourceware.org/git/binutils-gdb.git"
inherit git-r3
SRC_URI=""
;;
*.*.50_p2???????|*.*.90_p2???????)
# Weekly snapshots
MY_PV="${PV/_p/.}"
SRC_URI="
https://sourceware.org/pub/gdb/snapshots/branch/gdb-weekly-${MY_PV}.tar.xz
https://sourceware.org/pub/gdb/snapshots/current/gdb-weekly-${MY_PV}.tar.xz
https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/gdb-weekly-${MY_PV}.tar.xz
"
S="${WORKDIR}/${PN}-${MY_PV}"
# e.g. 13.1.90_p20230325 is a snapshot on the stable branch, so it's fine
if [[ ${PV} == *.[123456789].9?_p2??????? ]] ; then
REGULAR_RELEASE=1
fi
;;
*.*.9?)
# Prereleases
MY_PV="${PV/_p/.}"
SRC_URI="
https://sourceware.org/pub/gdb/snapshots/branch/gdb-${MY_PV}.tar.xz
https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/gdb-${MY_PV}.tar.xz
"
S="${WORKDIR}/${PN}-${MY_PV}"
;;
*)
# Normal upstream release
SRC_URI="
mirror://gnu/gdb/${P}.tar.xz
https://sourceware.org/pub/gdb/releases/${P}.tar.xz
"
REGULAR_RELEASE=1
esac
PATCH_DEV=""
PATCH_VER=""
DESCRIPTION="GNU debugger"
HOMEPAGE="https://sourceware.org/gdb/"
SRC_URI="
${SRC_URI}
${PATCH_DEV:+https://dev.gentoo.org/~${PATCH_DEV}/distfiles/${CATEGORY}/${PN}/${P}-patches-${PATCH_VER}.tar.xz}
${PATCH_VER:+mirror://gentoo/${P}-patches-${PATCH_VER}.tar.xz}
"
LICENSE="GPL-3+ LGPL-2.1+"
SLOT="0"
IUSE="babeltrace cet debuginfod guile lzma multitarget nls +python rocm +server sim source-highlight test vanilla xml xxhash zstd"
if [[ -n ${REGULAR_RELEASE} ]] ; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
fi
REQUIRED_USE="
guile? ( ${GUILE_REQUIRED_USE} )
python? ( ${PYTHON_REQUIRED_USE} )
rocm? ( multitarget )
"
RESTRICT="!test? ( test )"
RDEPEND="
dev-libs/mpfr:=
dev-libs/gmp:=
>=sys-libs/ncurses-5.2-r2:=
>=sys-libs/readline-7:=
sys-libs/zlib
babeltrace? ( dev-util/babeltrace:= )
debuginfod? (
dev-libs/elfutils[debuginfod(-)]
)
lzma? ( app-arch/xz-utils )
python? ( ${PYTHON_DEPS} )
guile? ( ${GUILE_DEPS} )
xml? ( dev-libs/expat )
rocm? ( <dev-libs/rocdbgapi-6.3 )
source-highlight? (
dev-util/source-highlight
)
xxhash? (
dev-libs/xxhash
)
zstd? ( app-arch/zstd:= )
"
DEPEND="${RDEPEND}"
BDEPEND="
app-arch/xz-utils
sys-apps/texinfo
app-alternatives/yacc
nls? ( sys-devel/gettext )
source-highlight? ( virtual/pkgconfig )
test? ( dev-util/dejagnu )
"
QA_CONFIG_IMPL_DECL_SKIP=(
MIN # gnulib FP (bug #898688)
)
QA_PREBUILT="usr/share/gdb/guile/*"
PATCHES=(
"${FILESDIR}"/${PN}-8.3.1-verbose-build.patch
)
pkg_setup() {
local CONFIG_CHECK
if kernel_is -ge 6.11.3 ; then
# https://forums.gentoo.org/viewtopic-p-8846891.html
#
# Either CONFIG_PROC_MEM_ALWAYS_FORCE or CONFIG_PROC_MEM_FORCE_PTRACE
# should be okay, but not CONFIG_PROC_MEM_NO_FORCE.
CONFIG_CHECK+="
~!PROC_MEM_NO_FORCE
"
fi
linux-info_pkg_setup
use guile && guile-single_pkg_setup
use python && python-single-r1_pkg_setup
}
src_prepare() {
default
use guile && guile_bump_sources
strip-linguas -u bfd/po opcodes/po
# Avoid using ancient termcap from host on Prefix systems
sed -i -e 's/termcap tinfow/tinfow/g' \
gdb/configure{.ac,} || die
if [[ ${CHOST} == *-solaris* ]] ; then
# code relies on C++11, so make sure we get that selected
# due to Python 3.11 pymacro.h doing stuff to work around
# versioning mess based on the C version, while we're compiling
# C++ here, so we need to make it clear we're doing C++11/C11
# because Solaris system headers act on these
sed -i -e 's/-x c++/-std=c++11/' gdb/Makefile.in || die
fi
}
gdb_branding() {
printf "Gentoo ${PV} "
if ! use vanilla && [[ -n ${PATCH_VER} ]] ; then
printf "p${PATCH_VER}"
else
printf "vanilla"
fi
[[ -n ${EGIT_COMMIT} ]] && printf " ${EGIT_COMMIT}"
}
src_configure() {
strip-unsupported-flags
# See https://www.gnu.org/software/make/manual/html_node/Parallel-Output.html
# Avoid really confusing logs from subconfigure spam, makes logs far
# more legible.
MAKEOPTS="--output-sync=line ${MAKEOPTS}"
local myconf=(
# portage's econf() does not detect presence of --d-d-t
# because it greps only top-level ./configure. But not
# libiberty's or gdb's configure.
--disable-dependency-tracking
--disable-silent-rules
--with-pkgversion="$(gdb_branding)"
--with-bugurl='https://bugs.gentoo.org/'
--disable-werror
# Disable modules that are in a combined binutils/gdb tree. bug #490566
--disable-{binutils,etc,gas,gold,gprof,gprofng,ld}
$(use_with babeltrace)
$(use_with debuginfod)
$(use_enable test unit-tests)
# Allow user to opt into CET for host libraries.
# Ideally we would like automagic-or-disabled here.
# But the check does not quite work on i686: bug #760926.
$(use_enable cet)
# Helps when cross-compiling. Not to be confused with --with-sysroot.
--with-build-sysroot="${ESYSROOT}"
)
is_cross && myconf+=(
--with-sysroot="\${prefix}/${CTARGET}"
--includedir="\${prefix}/include/${CTARGET}"
--with-gdb-datadir="\${datadir}/gdb/${CTARGET}"
)
# gdbserver only works for native targets (CHOST==CTARGET).
# it also doesn't support all targets, so rather than duplicate
# the target list (which changes between versions), use the
# "auto" value when things are turned on, which is triggered
# whenever no --enable or --disable is given
if is_cross || use !server ; then
myconf+=( --disable-gdbserver )
fi
myconf+=(
--enable-64-bit-bfd
--disable-install-libbfd
--disable-install-libiberty
--enable-obsolete
# This only disables building in the readline subdir.
# For gdb itself, it'll use the system version.
--disable-readline
--with-system-readline
# This only disables building in the zlib subdir.
# For gdb itself, it'll use the system version.
--without-zlib
--with-system-zlib
--with-separate-debug-dir="${EPREFIX}"/usr/lib/debug
--with-amd-dbgapi=$(usex rocm)
$(use_with xml expat)
$(use_with lzma)
$(use_enable nls)
$(use_enable sim)
$(use_enable source-highlight)
$(use multitarget && echo --enable-targets=all)
$(use_with python python "${EPYTHON}")
$(use_with xxhash)
$(use_with guile)
$(use_with zstd)
# Find libraries using the toolchain sysroot rather than the configured
# prefix. Needed when cross-compiling.
#
# Check which libraries to apply this to with:
# "${S}"/gdb/configure --help | grep without-lib | sort
--without-lib{babeltrace,expat,gmp,iconv,ipt,lzma,mpfr,xxhash}-prefix
)
# source-highlight is detected with pkg-config: bug #716558
export ac_cv_path_pkg_config_prog_path="$(tc-getPKG_CONFIG)"
export CC_FOR_BUILD="$(tc-getBUILD_CC)"
# ensure proper compiler is detected for Clang builds: bug #831202
export GCC_FOR_TARGET="${CC_FOR_TARGET:-$(tc-getCC)}"
econf "${myconf[@]}"
}
src_test() {
# Run the unittests (nabbed invocation from Fedora's spec file) at least
emake -k -C gdb run GDBFLAGS='-batch -ex "maintenance selftest"'
# Too many failures
# In fact, gdb's test suite needs some work to get passing.
# See e.g. https://sourceware.org/gdb/wiki/TestingGDB.
# As of 11.2, on amd64: "# of unexpected failures 8600"
# Also, ia64 kernel crashes when gdb testsuite is running.
#emake -k check
}
src_install() {
emake DESTDIR="${D}" install
find "${ED}"/usr -name libiberty.a -delete || die
# Delete translations that conflict with binutils-libs. bug #528088
# Note: Should figure out how to store these in an internal gdb dir.
if use nls ; then
find "${ED}" \
-regextype posix-extended -regex '.*/(bfd|opcodes)[.]g?mo$' \
-delete || die
fi
# Don't install docs when building a cross-gdb
if [[ ${CTARGET} != ${CHOST} ]] ; then
rm -rf "${ED}"/usr/share/{doc,info,locale} || die
local f
for f in "${ED}"/usr/share/man/*/* ; do
if [[ ${f##*/} != ${CTARGET}-* ]] ; then
mv "${f}" "${f%/*}/${CTARGET}-${f##*/}" || die
fi
done
return 0
fi
# Install it by hand for now:
# https://sourceware.org/ml/gdb-patches/2011-12/msg00915.html
# Only install if it exists due to the twisted behavior (see
# notes in src_configure above).
[[ -e gdbserver/gdbreplay ]] && dobin gdbserver/gdbreplay
docinto gdb
dodoc gdb/CONTRIBUTE gdb/README gdb/MAINTAINERS \
gdb/NEWS gdb/PROBLEMS
docinto sim
dodoc sim/{MAINTAINERS,README-HACKING}
if use server ; then
docinto gdbserver
dodoc gdbserver/README
fi
# Remove shared info pages
rm -f "${ED}"/usr/share/info/{annotate,bfd,configure,ctf-spec,standards}.info*
use guile && guile_unstrip_ccache
if use python ; then
python_optimize "${ED}"/usr/share/gdb/python/gdb
fi
}
pkg_postinst() {
# Portage doesn't unmerge files in /etc
rm -vf "${EROOT}"/etc/skel/.gdbinit
if use prefix && [[ ${CHOST} == *-darwin* ]] ; then
ewarn "gdb is unable to get a mach task port when installed by Prefix"
ewarn "Portage, unprivileged. To make gdb fully functional you'll"
ewarn "have to perform the following steps:"
ewarn " % sudo chgrp procmod ${EPREFIX}/usr/bin/gdb"
ewarn " % sudo chmod g+s ${EPREFIX}/usr/bin/gdb"
fi
}

View File

@ -77,7 +77,7 @@ SRC_URI="
LICENSE="GPL-3+ LGPL-2.1+"
SLOT="0"
IUSE="cet debuginfod guile lzma multitarget nls +python rocm +server sim source-highlight test vanilla xml xxhash zstd"
IUSE="babeltrace cet debuginfod guile lzma multitarget nls +python rocm +server sim source-highlight test vanilla xml xxhash zstd"
if [[ -n ${REGULAR_RELEASE} ]] ; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
fi
@ -94,7 +94,7 @@ RDEPEND="
>=sys-libs/ncurses-5.2-r2:=
>=sys-libs/readline-7:=
sys-libs/zlib
elibc_glibc? ( net-libs/libnsl:= )
babeltrace? ( dev-util/babeltrace:= )
debuginfod? (
dev-libs/elfutils[debuginfod(-)]
)
@ -203,6 +203,7 @@ src_configure() {
# Disable modules that are in a combined binutils/gdb tree. bug #490566
--disable-{binutils,etc,gas,gold,gprof,gprofng,ld}
$(use_with babeltrace)
$(use_with debuginfod)
$(use_enable test unit-tests)

View File

@ -77,7 +77,7 @@ SRC_URI="
LICENSE="GPL-3+ LGPL-2.1+"
SLOT="0"
IUSE="cet debuginfod guile lzma multitarget nls +python rocm +server sim source-highlight test vanilla xml xxhash zstd"
IUSE="babeltrace cet debuginfod guile lzma multitarget nls +python rocm +server sim source-highlight test vanilla xml xxhash zstd"
if [[ -n ${REGULAR_RELEASE} ]] ; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
fi
@ -94,7 +94,7 @@ RDEPEND="
>=sys-libs/ncurses-5.2-r2:=
>=sys-libs/readline-7:=
sys-libs/zlib
elibc_glibc? ( net-libs/libnsl:= )
babeltrace? ( dev-util/babeltrace:= )
debuginfod? (
dev-libs/elfutils[debuginfod(-)]
)
@ -203,6 +203,7 @@ src_configure() {
# Disable modules that are in a combined binutils/gdb tree. bug #490566
--disable-{binutils,etc,gas,gold,gprof,gprofng,ld}
$(use_with babeltrace)
$(use_with debuginfod)
$(use_enable test unit-tests)

View File

@ -6,6 +6,7 @@
<name>Gentoo Toolchain Project</name>
</maintainer>
<use>
<flag name="babeltrace">Enable <pkg>dev-util/babeltrace</pkg> support</flag>
<flag name="cet">Enable Intel Control-flow Enforcement Technology.</flag>
<flag name="lzma">Support lzma compression in ELF debug info</flag>
<flag name="multitarget">Support all known targets in one gdb binary</flag>

View File

@ -40,7 +40,6 @@ LIB_DEPEND="
DEPEND="
static? ( ${LIB_DEPEND} )
aio? ( >=dev-libs/libaio-0.3.106 )
sys-kernel/linux-headers
"
RDEPEND="
!static? ( ${LIB_DEPEND//\[static-libs(+)]} )
@ -84,14 +83,18 @@ src_configure() {
local myeconfargs=(
--disable-gcc-Werror
# Don't require mpers support on non-multilib systems. #649560
# Don't require mpers support on non-multilib systems (bug #649560)
--enable-mpers=check
# We don't want to pin to exact linux-headers versions (bug #950309)
--enable-bundled=yes
$(use_enable static)
$(use_with unwind libunwind)
$(use_with elfutils libdw)
$(use_with selinux libselinux)
)
econf "${myeconfargs[@]}"
}

View File

@ -16,7 +16,7 @@ else
https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz
verify-sig? ( https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz.asc )
"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
fi
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/strace.asc
@ -40,7 +40,6 @@ LIB_DEPEND="
DEPEND="
static? ( ${LIB_DEPEND} )
aio? ( >=dev-libs/libaio-0.3.106 )
sys-kernel/linux-headers
"
RDEPEND="
!static? ( ${LIB_DEPEND//\[static-libs(+)]} )
@ -87,11 +86,15 @@ src_configure() {
# Don't require mpers support on non-multilib systems. #649560
--enable-mpers=check
# We don't want to pin to exact linux-headers versions (bug #950309)
--enable-bundled=yes
$(use_enable static)
$(use_with unwind libunwind)
$(use_with elfutils libdw)
$(use_with selinux libselinux)
)
econf "${myeconfargs[@]}"
}

View File

@ -40,7 +40,6 @@ LIB_DEPEND="
DEPEND="
static? ( ${LIB_DEPEND} )
aio? ( >=dev-libs/libaio-0.3.106 )
sys-kernel/linux-headers
"
RDEPEND="
!static? ( ${LIB_DEPEND//\[static-libs(+)]} )
@ -87,11 +86,15 @@ src_configure() {
# Don't require mpers support on non-multilib systems. #649560
--enable-mpers=check
# We don't want to pin to exact linux-headers versions (bug #950309)
--enable-bundled=yes
$(use_enable static)
$(use_with unwind libunwind)
$(use_with elfutils libdw)
$(use_with selinux libselinux)
)
econf "${myeconfargs[@]}"
}

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
@ -40,7 +40,6 @@ LIB_DEPEND="
DEPEND="
static? ( ${LIB_DEPEND} )
aio? ( >=dev-libs/libaio-0.3.106 )
sys-kernel/linux-headers
"
RDEPEND="
!static? ( ${LIB_DEPEND//\[static-libs(+)]} )
@ -87,11 +86,15 @@ src_configure() {
# Don't require mpers support on non-multilib systems. #649560
--enable-mpers=check
# We don't want to pin to exact linux-headers versions (bug #950309)
--enable-bundled=yes
$(use_enable static)
$(use_with unwind libunwind)
$(use_with elfutils libdw)
$(use_with selinux libselinux)
)
econf "${myeconfargs[@]}"
}

View File

@ -8,25 +8,17 @@ DIST Python-3.12.9.tar.xz 20502440 BLAKE2B df1a8ba4996219c018fc14156958ca9c0e8af
DIST Python-3.12.9.tar.xz.asc 963 BLAKE2B d90b9c1a3aafa1a942ef8d978b566829656db1114b74f1565b7cbba188cf3bf5637c1dbeec3432ae0af0f826a154c40f27fd8fc46350a757ef91f5c426908149 SHA512 b59251ca3a0a17c06ff7d165f6c025eb91127c80be0782642590f5c922297e0710544ac5a9ae977378e393f1c4861149576a0515af5ec0e54e6827c4010d544f
DIST Python-3.13.2.tar.xz 22621108 BLAKE2B 79c7dff8a15fd2487d62847a8e654c02433a89887aa4f93819020b60a30587e3ba92b101553d971b59e132677f9f74dfc41cd7c7901db78a7787607ec96c6664 SHA512 bb1c0598914c6d4326554faa568f660f10b20c701d0f36bf1fa58837b6498d728a407416b06ede39604caea1ca93f60545b83b01ae8ee65f55d4cc83242b63fe
DIST Python-3.13.2.tar.xz.asc 963 BLAKE2B 95a36c305dd452df23b4f119de05e1d3a2b2c9e0c2778a52dc4065f82b52752b68d89eb737cc54cced70623ad4a7b48c85fdff781bf7d7e3b747dacb1ef77db0 SHA512 5f019be530f688b0adf5d5cc9f2c2243e2f1dc7338559db14c1eedd12aadc85404d42c7aafd74e41828205d85f13f278876662ac30c8f3382a1ee081ba5f29f2
DIST Python-3.14.0a5.tar.xz 22850560 BLAKE2B 69d57ff07aad021fcfb626f9164529ce071e08182a4334a95b8411c451aa93db09c60d149868bbaad67d8c4bd79598ea22fa76856c3f70b9c35b04b6f48dbeb4 SHA512 ae34c994f00c36c6ce18091c63eb3469aa545ee391c6879c89f5722f7311f2e97cc997477897969777dfaf98090e3dd01dcdb655c986140e9a7796f963be9df9
DIST Python-3.14.0a5.tar.xz.sigstore 5067 BLAKE2B c3ef20345e05763d201090756ce7e786969d8351ba567b5708ec7a20e6d348c626201fd5b63afa51c0b6740aa3406222b4e07f01d81a8e3812dfc84b751ca248 SHA512 e6755be4a974d8007519e18b9ef417129fa032c9dff508f5170622bf8e8ef0616c8395a1261e9e0e80848c739f31e8369fb5893e7b29f308ad8d62cf1033d609
DIST Python-3.14.0a6.tar.xz 22956068 BLAKE2B e8605da0dfa0f4ecf2f21cd770a074e73a2fbb24182d8adb27b1583da0ab48157bd9e70438c8efbb8fd17a66447e934a33128e0d50d9f253bde2f6c17df80375 SHA512 0fca503199bed0744139823aaf3ead30d7876556750b476fa6e1f701ae71fa7fe333cd46c775929c26729cf71bef6ba545fdc0118a0efca17c2434de3cadabe1
DIST Python-3.14.0a6.tar.xz.sigstore 5227 BLAKE2B 1e517fc1205a2d9ec448fe17afac2c6a1874c08904b78f1f0ef6bb4140696ebc03e34080bb973eeae6fbb4adc9b0e3ad3a9133fbef0b48ba4aca99ae81f59862 SHA512 e1824480165f68597822e8934a58e744e3c4098b8646006548d20d42b8e8809ca95f129cc23edd49bd9dbaf158a36d60b7bc5bfd449c08af9e08e8e552e21f7d
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.20.tar.xz 19648968 BLAKE2B 80a337ff406130599b8320068d11bc275d23473cedd7c85fcb9e40134f0f2d533be6e712139e788a6423cdc74cea938f306aa37c2a5099e3051f3e390159279c SHA512 c828f33edf1704e3149499d6d34e89264cb5cdb2b09ff05561641b359716d7996f0fe928629e09f006b1fd7850fdaf937275919c7fdd83f5efc32707c64d814b
DIST Python-3.9.20.tar.xz.asc 833 BLAKE2B bcd5a612281bf8e057e19db9105b199cb7e44050441b19832843e8149088d277f4b625421099b09d4ed6fac5578505f46dbfea13b041d157d695eaf668c3a7de SHA512 f21c012f4f642542479ba329da9654589e5a7f7305c39fb1b6f136b578316bdb115cef9773c9a9fe4e195677af01cb80af05780613cca83f42fae131862a9584
DIST Python-3.9.21.tar.xz 19647056 BLAKE2B 7f77a7fb38d9a9f4fda7007587f744ade5f32b7bcd911dd72ab82b00d324173f28ddfbe492c71bf0f71edb8494e61314b4bf6f70298289b0e5796c6d002ff738 SHA512 cc84c967cd7a05361ec144d87ca044bd416032ee92dfb78658758d4e1274971f5fb288876d9c599a729bb21258974a786089341bce6bdcffd9c30ebd69b7ca58
DIST Python-3.9.21.tar.xz.asc 833 BLAKE2B f6e666179d745638a38ace35e13c26cc3e07c116a8c8362cc260a74113cd29a5c1909d2091f2eed4bb088bc71b79ed18c5503739d1cc3cb7ff95d625f4311421 SHA512 1e5e5a5db8074a7ee5eb51e6c789d6e46467165d72d2d636d1fc0d3e15d4355051f9f7ad3063ba43b37b611095765c9d654ed890067c201c087da1eecb620ef9
DIST python-gentoo-patches-2.7.18_p16.tar.xz 35448 BLAKE2B 0139c0944f62f9cdd236f6a8557e0ed19704c7d72869af1cb7d8bd3e646a746cd4a0201e1b44232a5e78ef49f254db20b0d0271bf744fbfd4fe0f1e99b8f3e6c SHA512 810be590d0e06fab4b2165e6852ca49662f09dcd7e20b47a29f613ad7653252c8dfac3f0eb228d77c8a914efa7c08788b2fbd552a4b47504f5fd0ec17450c48f
DIST python-gentoo-patches-3.10.16_p1.tar.xz 24964 BLAKE2B 93cf5d208f80f1017e4afdcf7d3551d150a1d68c378312af43c668156d98f10087d2b6f315f717823a9aae1114e2baa999f61ce179639e5511d30ed9620c9570 SHA512 74ad92d3256d744e3572c0d858b4ba4d5f0f6fda84d8f3c1a1fb675376c2d525e2d9fd636a65c8a859a0a312eda00877b13ba311f620b6a51e47dfb082843333
DIST python-gentoo-patches-3.10.16_p2.tar.xz 29428 BLAKE2B fa63d2fcdbb53e3b6381eaadfbcfca02a03eddd7035dd4776c706fd1aa0226a2c809260ba5a543a209a63563dab12ea109bf03a2026ea4b5797fa6afc7b45c52 SHA512 0186abf035632a3f8018052f8021c1d0dadbc28b7d03551f6992a658fe53878ac9ea86b79512e0e147efecedfda133cf7936746946238177918be9c695248f15
DIST python-gentoo-patches-3.11.11_p1.tar.xz 11644 BLAKE2B d080e1b987ea0e1b397113f20a5c84f6a34d6619a3ed9f7389fd10d95636169563fba97d212477ca7f9b93d2bd0b66c9521fc61963bb468805a661ca3ab287a7 SHA512 f6045adf25923053fc9a60506b9164c9c062580d6886f1a3dcaca00dc4affe69aa9e138f8ce93f093798ccf33322ccca2aca674ab87457df98a93dcaca234b44
DIST python-gentoo-patches-3.11.11_p2.tar.xz 16224 BLAKE2B d8404c8c87e109d2c699dbab63c20a319c6efd5b62dab5fcc1b53b5b291e25686e69ef92b495eed0d80491cfa29ae9f523df6b53c7c6a12c3f713c53e3c5b7c6 SHA512 f1bf897305678c2b113aef4553d14e916e83312708352765725d754dffbf2f5dd7ef0f7cd84a774e4a8c18dde8a517d7eaf8e58720d73d25430b28fe49906258
DIST python-gentoo-patches-3.12.9.tar.xz 10736 BLAKE2B 1f87d1bba8c094936e5cd3e0ef2eede0dbca3e658430f81b398735d8f02fff1f87739914014dbcb17163f8a969ffc5e7e4cce7d71557ce3c2e58487e6ed8b80f SHA512 342f11df85926e32455d52115d06b817a17f7ae104e3ea8e852046d321d829835bba7c07803c50dd5433ac8b615499428d5bc1a088b484ca0c4304eb8b2cb879
DIST python-gentoo-patches-3.13.2.tar.xz 8316 BLAKE2B 2367808924c83c02b8b2ca765fd4768d4f12cb8e8451eab9d084ce5950a5a81829e573d415f9a16db2e053105def90b5f52c91423fc71e57cd182a1d9c824d8c SHA512 580332ca037c1453f314d5811f96f7bf74defc16cfe515c4fe82ea08a7bf3679aa88d5456db846d988bcf4fbc9eeb4ebe7cee01d135bd55c87931206250e301a
DIST python-gentoo-patches-3.14.0a5.tar.xz 5668 BLAKE2B b12801ac5bfa50cb6e3bf4b79e70956b771e0a4c0d5d4265115cf144740a914f764655171fdbf3178ba76f91b7765aa681f0097aaa55e6aa330eeeec3320bb4e SHA512 3110f99058136e8587a4cce2f594a5fde7c575027440e9e4d3b77dba0428c6af60cd0d259833d5d46e3b9ac3f24a2ad3111e4c5436cb423079f5c1a230e47d97
DIST python-gentoo-patches-3.14.0a6.tar.xz 5680 BLAKE2B 704014b9935db57b28e9191b1a9d478b2e3d17c66fc1bbe1d5df4de0197f51ae184ad44c8434d22c3113545c3267fa8838dc8fa90bab00aa50223e38c9f1be7e SHA512 e5446d9bf25334f117e7967d5d77424bfd8b4a5a277358b8e4c27aaa15686a0fd0c6957b4fd0306622dc83f02de5e2d2f02d1f9a5675412915bfbab4b072e94d
DIST python-gentoo-patches-3.8.20_p6.tar.xz 50876 BLAKE2B df0df21c75972fb73e36f66f0c90d3f953b14d7a59bf97ce4214dce6e6d937ed52fbf3db8f3eaf42cde141bfe4d7a731b06e41723285517461c790912706be9e SHA512 48ef567f6972e7975cb61d34a876d8c0db42f1a3c0b832f9366091dd5f2ca854c02887808843d314816c8cf6d7b0738c40e7835fedbba7b84e57f2515dde45e2
DIST python-gentoo-patches-3.9.20_p2.tar.xz 36140 BLAKE2B af0a9e08f3bfd8eb631760d100ec8f54db968a6bd201820192c4ea63ec88e0f83ffe77c709fcf4da43ad8d44eeb239ca1984561c3e7846e3fe4edd757d2321a4 SHA512 d451b41401de631eed996c34f40f2146d4d2f11bfa04fffa762c9b654e690d0ef95be0f51224a964a7c33784bb9b21e58434f6fee17cf39c20b5af34200569d5
DIST python-gentoo-patches-3.9.21_p1.tar.xz 35404 BLAKE2B 7b5ac27e814b06791fa5f0566763711c1b65a7c82ba66f97e237eebc6076f0bfdad3d8269ece6c4d4c238b62cc75b01f68ea3a5d7c4fffc46e88f79b2ba3e7fc SHA512 92c8548b31100a921378c72cc94a81062c96fd795fa2cd001c57a71e4af39e91b21b99e9e84db12adb142d9c4bda809445519c5c8a35545bd10230926bd7eded

View File

@ -1,595 +0,0 @@
# 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:=
>=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 )
"
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 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
append-flags -fwrapv
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"
# 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

@ -28,7 +28,7 @@ S="${WORKDIR}/${MY_P}"
LICENSE="PSF-2"
SLOT="${PYVER}"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 sparc x86"
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

View File

@ -1,626 +0,0 @@
# 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 eapi9-ver 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
append-flags -fwrapv
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
)
;;
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
}
pkg_postinst() {
if ver_replacing -lt 3.11.0_beta4-r2; then
ewarn "Python 3.11.0b4 has changed its module ABI. The .pyc files"
ewarn "installed previously are no longer valid and will be regenerated"
ewarn "(or ignored) on the next import. This may cause sandbox failures"
ewarn "when installing some packages and checksum mismatches when removing"
ewarn "old versions. To actively prevent this, rebuild all packages"
ewarn "installing Python 3.11 modules, e.g. using:"
ewarn
ewarn " emerge -1v /usr/lib/python3.11/site-packages"
fi
}

View File

@ -28,7 +28,7 @@ S="${WORKDIR}/${MY_P}"
LICENSE="PSF-2"
SLOT="${PYVER}"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 sparc x86"
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

View File

@ -1,635 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="8"
LLVM_COMPAT=( 19 )
LLVM_OPTIONAL=1
VERIFY_SIG_METHOD=sigstore
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/_alpha/a}
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.sigstore
)
"
S="${WORKDIR}/${MY_P}"
LICENSE="PSF-2"
SLOT="${PYVER}"
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:=
>=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
# https://www.python.org/downloads/metadata/sigstore/
VERIFY_SIG_CERT_IDENTITY=hugo@python.org
VERIFY_SIG_CERT_OIDC_ISSUER=https://github.com/login/oauth
# 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{,.sigstore}
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
append-flags -fwrapv
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
)
;;
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)
)
# https://bugs.gentoo.org/700012
if tc-is-lto; then
append-cflags $(test-flags-CC -ffat-lto-objects)
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

@ -1,630 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="8"
LLVM_COMPAT=( 19 )
LLVM_OPTIONAL=1
VERIFY_SIG_METHOD=sigstore
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/_alpha/a}
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.sigstore
)
"
S="${WORKDIR}/${MY_P}"
LICENSE="PSF-2"
SLOT="${PYVER}"
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:=
>=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
# https://www.python.org/downloads/metadata/sigstore/
VERIFY_SIG_CERT_IDENTITY=hugo@python.org
VERIFY_SIG_CERT_OIDC_ISSUER=https://github.com/login/oauth
# 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
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{,.sigstore}
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
append-flags -fwrapv
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
)
;;
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)
)
# https://bugs.gentoo.org/700012
if tc-is-lto; then
append-cflags $(test-flags-CC -ffat-lto-objects)
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

@ -1,584 +0,0 @@
# 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 +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
append-flags -fwrapv
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=/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=/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"
# 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

@ -479,6 +479,43 @@ DIST rust-1.85.0-x86_64-unknown-linux-gnu.tar.xz 182464920 BLAKE2B 42169d926f43b
DIST rust-1.85.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7c84bfee06171633feecb2a3be2e85a9fff8941098cbe2b42c4b77b5c8d253f09a0e954fc6ac3c1073aa2999211f059ea5c20a483e5fe2c075997fe1c942b4f5 SHA512 7b4a698cfc41b23c9015e0b00d4ef377cb452992e15ae8d2faac6d1ad7dca3d59e80993be30c1d240fd2e732355d1941b348069c3da27f0a9df6dee637175967
DIST rust-1.85.0-x86_64-unknown-linux-musl.tar.xz 263244196 BLAKE2B 5e8391ab184a3ac641aef3c4e8a6a4c90ecb12fcfd1264d2dd6c1a062af96bf40c0e7940521eff5f86614b6e8b6ee9a1d6dab4240be9accd8a4316403bd46841 SHA512 18c8a3cdf4f57465417930c6dc83cb51410b4b882e80f86b959c945167e1e0c04f4b5feb3c65ef9f2f9be1f10975d8e7424a8ad4e92ca4de843d0c7c83c9dbed
DIST rust-1.85.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 123423d989204841da45e388589a0c1a4fa4d9102f691686d79502288f7a6d882055497f22f3ed63229d78c22c843a802abad31089035769123618d35da915a6 SHA512 da076d70fe804ebbc02df656fc6e384b03ac2d2f0fc36fb536b877b81a81fb45b5faf1a60e5a4d7b99d6d9b873382f67a3242d6299c2e85321a2842d6ae08c55
DIST rust-1.85.1-aarch64-unknown-linux-gnu.tar.xz 241899836 BLAKE2B a67e4174871e0667dcd600dda9f1559cd75eca3dc44879d9302ca266ff34d42b98b39c3000a6d5aad1624ff2b367583512aa36b4eb293a6039ff4f4d68c36a42 SHA512 7658b6cb663f173e3f7d7da42e5a6dbf193b4d5f5aaa267f4f57fb2cd08534923278a6ef402fdca0efedfca28f10cbc34c2e6138a870e1a98572feb16c796b71
DIST rust-1.85.1-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 69c0e455a830cc2d1302e9d80e87831c7ddc57c20cb1ca8087b977329049106bb69cd17734d41f4a00e39981db94962c33bf679202e947a6921e3d2eca97d635 SHA512 4922f2bc82ae64496c06516418ccf06698d70c53f383e9c004bb8edbe6488ed967255c69033843029c1737eb4de9d2998cd165e2717af3cde651058113bee03c
DIST rust-1.85.1-aarch64-unknown-linux-musl.tar.xz 218838184 BLAKE2B eae06b23bf294ecc96e052f15886b76909f1c07d1943dcfdbe3d5809cd71b7b6be8bf70b0c73e3dc66318d12d14ae018a8ea24e79ddc1ae54ed988f666d13b06 SHA512 640d6facc63b5ce6f97c3562c5869846f8412ac1830419878d690778921d1a30f013384580f2007a2c65414e5c1c833f83e640b8d7e5ef7a5503d7751323e5c2
DIST rust-1.85.1-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 8bee75a90cfc5b3d63e5d41a5400cac3e94980d9acae6d5725b4091e2c0c82127ea98b824c95f501c9979c0da904904d0bde6cbb215d06d429e379f68230bdc2 SHA512 fc7599a0136f0010899df4a4764f706c252f5205a8cebd8f18f14e6f3151b34b6d67c3d2fa9b45fb1222e93a2582a3e3567e62aafe84a1360d66c94eb9fccebc
DIST rust-1.85.1-arm-unknown-linux-gnueabi.tar.xz 203435192 BLAKE2B 40cfe60009cb18d94b6ba664c87ca085c4f0b8450786fdcdc3c87444514649fa13adeba3fa1684bf21e3ea1b3c30749217ebe695248688815d438614ecc11312 SHA512 f553df6c62ca1c30b80370b2bbbb62c78e7ab62297beb9b3e2ca503f2c61759ba5d10994039d1e001ff3db8ebc9cc5fdf008d182cd2c182ffef005183080f907
DIST rust-1.85.1-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B d3891690de72fcaf44233a70c2d6c02f006bd3af13d831ce86495fa20ffd297bfb9dec5d4e9984722c71986b82dc7b637cf62c24b878a649903a0305ac5cb187 SHA512 dc0eb767441e9f6b2fef32162fe8fc855ff3c1552bfc515d992c89e47c43fac1f5d226f33c5e31d1f90bacf1cfd7dff476a516c09fd4fdcdde6dc6490bde986c
DIST rust-1.85.1-arm-unknown-linux-gnueabihf.tar.xz 204291948 BLAKE2B 933e0ed70bd2558a2a90c0f73df5932b8897092473ac3fa6f8b85b98bf1bad504ef3264d8d518e6acb3ce1b4ec55b6ada5d279eb1a99233b974f1099d07dba92 SHA512 15b63a55049a64ee95025eddfca3f002dbe74bc8260d748b7c2d91bb558375988bb09f046e5e36b190cf3854c4a19e0d8f2ba021e7b3a752bd97b618bbc3d4c0
DIST rust-1.85.1-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B d95d2cf3a9b048b18ad50ff1f8efca7589adf1caeb6a6bc981ad99af8a240d2e26def681838a12030fbd0050eb88765d8969ffe29c836541783cb85474a66370 SHA512 b72fda3f390b46d83c5995f4e28a41e17649bc1fdde03e514ad83580ca3d036642d026f8892d6e206336097bea3a17d94092dd1ab70155cf0a9c98376be88970
DIST rust-1.85.1-armv7-unknown-linux-gnueabihf.tar.xz 209597268 BLAKE2B 1a32f55193fae11ed799ad241c43409867ff7765c6b2957ffea6cc142c8946b7156245b5cbfad09a3a260103b3f5dfc6bc9b75b07f9870f9d5dca5c734bf1f4e SHA512 8a637f8b967d2a8c55af278f9510bb132e0f704fd64483d2ac0381c2dd2385877eebd4c366785af2cef4c09fd9f4aa5cbbc8813764efb6af2904210f495e1347
DIST rust-1.85.1-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 82c5a73528a13c3f06fe9e0a8f07f849d5819bef828b742848e3a82da2600732441bffd01f2c592ba4977d07202117139572b77a8dec807bbb6877bdf3f33ad5 SHA512 11d4cf8613d754311b51dabef74710d5bd2c06a609ac862837bdc7f6b26e2d534ceb0c6b8bb9ece6af9038ce17cf7fe5f90b450c81fea0f0bbf62e4ef9b3958f
DIST rust-1.85.1-i686-unknown-linux-gnu.tar.xz 236496844 BLAKE2B dc6f9272af0e481bb40bb914cb0f17f9f48ce893761769c1a9d81da0c60e13e6a72d4ad7a632e251253f7c319c078be3b34a7b2cf4e75644572157daf563bb1c SHA512 2684710e78138ffd23ea348386e02062b23fec4522580cdcd9a72855719c1cf9e8b389639948018b0d296cb83e34eb3c4c051697b2456f6f1ccdaf1c0925e095
DIST rust-1.85.1-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 77a409a9297f9b8e001de5c6c35ef608636de1ffe57f2e5a9d44e8fc6e26cc336d312c1f5e98ddba9fa0011cbd9a57e34b60e7a459a11a43eef27a57070e1e44 SHA512 90cf37037220a0b2b3640907070892a598d6ca4288734fecf836af29883ac7c3c563aeec382b2cd0247e6555606d9d15eb2a686f6bf907ecff2189f0825aa0bf
DIST rust-1.85.1-loongarch64-unknown-linux-gnu.tar.xz 234511720 BLAKE2B 58fad76f102156042c65b1219ee0f936fd5dd0f978781856f335c41464eb25cfe9ea9539d2588ca29e063c2f03c10d3c3fce755e1dda63d05bb238550e5aa636 SHA512 c84904fe15671920a7f6ca5b3dda2e0bd473d5e7911ee2ef974410daa68b1d40dca1ff7e156145f3a77b01ce83bb3cb10f366b3bf9f428fa75855016a6f2d580
DIST rust-1.85.1-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 4e11d752e9769053239e73ad63a34560637e16d82e8b586e571e536899066fbeaee0453f47b6513c090d519ba2b0c3535943fbb8e3acc5afd69cd6580ef96e11 SHA512 e10f1343ef9f924a36a19adbded8501ab97e3b25c0080cfe25b4c8cb1cb1ba2f6bf371c66cfaf9e1e876bd11b76b64f0f32e7f4cea917e419c462521b3191b48
DIST rust-1.85.1-mips-unknown-linux-gnu.tar.xz 75817800 BLAKE2B 077fc41cc50939f35c0b376474275d04f2bad874f441f753319a41f95e8e18761a972fdf4365ddb1c03b3933d42041c5801f3b3b2449437406a398f32f7d95e3 SHA512 c025bb2f5d2fa2075142e53db540449271e5a6e6d0e2f36d3bc3a8e88af31b026cb1625b060e1c6d5535a3b3ba077ed912546d57656707aa7ac0cfa9bd12e74e
DIST rust-1.85.1-mips64-unknown-linux-gnuabi64.tar.xz 75513560 BLAKE2B 08716f49c784f30f018048749049cea299c6de997fdd2eca805cc790307515ad8b6ff711d9b415de312120e74e251c4833555e8c043f3c72fcd838a1791f4ab8 SHA512 6c3c3e4f52620ccd07a0c38ae8085d57f37072a24aba63bb16fb2f067096b3a4dfb71e5e5a3e5d939075d4c107d716e6af12c35cfd41e1b8f3f25b439ac086d9
DIST rust-1.85.1-mips64el-unknown-linux-gnuabi64.tar.xz 77135980 BLAKE2B 0c8e17925feb025cb3fab3bb98112703977bbf9f5301241f9c541ed3b2cee5d0b712555fbe6a608f98d7ff09cfd96bf27169ba8e3eb45df5894587d982257252 SHA512 770825c2ad0c7cc7ff2b6a3196349ab0c04ed6b36b5497abd3c573d836d93b4924f45db71568a087a93e6236f342ef69f3466abd63661082e30b61b9e30a0180
DIST rust-1.85.1-mipsel-unknown-linux-gnu.tar.xz 77489772 BLAKE2B 8644253c388451e8df20ea4e3f4d39baf4dd25783a4dace381382af1d465196ea3e93972b3346e8444f2500b36cb3a32efe430c0760e1bd2c6dd5e3f7d9c42d7 SHA512 a6aea2114a3c9de7852d27059dcd96eeea1165841fe730eddd4d7a1c63a610676f8edddd9659f4871058dca4c58312da721cbd8d57d0b3b0d40530a4b866ba7b
DIST rust-1.85.1-powerpc-unknown-linux-gnu.tar.xz 225991296 BLAKE2B a01f041fdf989cba65cf1440340cac9ff265cfc523cb5aa8ac2a269c95d3cb91be3f17b3de82d1538f6b590ffb6dca5cc4f8734343de5cb3d3191cc1408f068c SHA512 bfdd77220666490bff2d29abc4797d7aa20c299ac2171595a9d988397c25f6982780772c8f33273666a454a8f97ff49e7319c23387202d7ec79820a861617d70
DIST rust-1.85.1-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B deb26727e4852b44377eb139be38ebdf06485c3e96d4295ca0e07e798e7da6b3aa44c196822318283db4aabf0723e002f7fc8adb11008a9faa390df165c37fbd SHA512 9d8334c8db1c137b9ede1e3538ccb8ad5d22cf632722ebf061fa0709a86d3c880e7621b09d70ef09494224da77542f87611a9add7caaaf3d9de17bdfab91cf9f
DIST rust-1.85.1-powerpc64-unknown-linux-gnu.tar.xz 222758020 BLAKE2B ad00b033d5ee08867cf733a3493998168e3357801bccb3bf3ebbaa742cb885abd51f6d0d02372e11ec45ecd951e695e3fa61c7b5f9cbb241be60981783217948 SHA512 b6b09358f57ffa50ab34c39275dd60ba8cdfdee3954ab75a3a3bc67b5818d3ffc26cc36ccbbec8be5a1146f3a19e9e04e0cd0d8df4cbc1d8be1e67dc42f03c7b
DIST rust-1.85.1-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 4370117112ce508282c0553af845719f74451798f7e766eba67866e6c076ab9d8dba4c63c214becea4005ba47b7784c6d7cf8caf90424594a37964539f697a79 SHA512 0ebf39a0a31b78ea041f5683b55f40faaf4ae875711e08c513e1416c4939b1c388f29e87cce7c0e84146e09b40f20604fd5e90a720bc4297e59f243bec3d090b
DIST rust-1.85.1-powerpc64-unknown-linux-musl.tar.xz 78247440 BLAKE2B 999536e9bd00dbd08cbf99f698efecacafaa27ce5bf96d9f40c21d7027c1ea4904c4814c75609ca5ff2b9ffc5412145b43c1081d056b1a12903ad0f426584357 SHA512 c7943d08a8f27c9cf97e6d4cbca24efc27a7073e1fbfdb32b0a40365785d5ac9ea546a0df8550881045b1fdb105064502efa5cbc330c6b679313991750af2769
DIST rust-1.85.1-powerpc64le-unknown-linux-gnu.tar.xz 235436220 BLAKE2B 93eaf0b9add5d4e697ff17203a10d91e9abd675883f8fc8478a36223cb6a7859adb2e9f18f386646a76c56c4d9ca8dff590e98bd22e0d4f7226f7b57dd78d8a0 SHA512 2e8ad5931533c79e46b8fd29ffe0250c91bedca6fd5b8177bfaff2531fd7b45419d32c6185919cde6a06d9c0fbfbe2e8f8b4c7eae0f7c8c6cf216060d6087179
DIST rust-1.85.1-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 46dab390e629ef1f9d1304f0e6460695da591c7af9e6d4464f4e96102997ba669e6fe419edc0b99674e75eefe53e098e200feffe66a4a65891fa94e8e3309bea SHA512 897ac9a93645c02832831cfeb5c4a6ecd062f96b151be92540b3e6d33cff1da97386303594f13f4bd564e37e852138ea79cdbc7ab96474bc6f4d158b4910150a
DIST rust-1.85.1-powerpc64le-unknown-linux-musl.tar.xz 239163456 BLAKE2B 141daf887db9d554066a8bd43b477730d9cc6cc7f92692867e170c754a4f3bd48a6cfd7d9c1fdc0e4251ea3960bb767139dc58a7ca62e0346f1dc86b8df4c21b SHA512 f0b971b7d743e2ee8e377a5ae72c0eec2ce2550a1a03c9f591d2b677555e8c95c7b7f8a0e8b43ab1fb459f2d64e36d066b07de1d806c3b6632d8fcf6edda567d
DIST rust-1.85.1-powerpc64le-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 758665a047851e1415b6cfcbf3763bb44fcd5dad3713fd028d1f19d1ce3d39254c74b1af8027b8cf54ebc2e6effab3e0cb594a292521f7a96635ad1416220182 SHA512 45c5b674d9d0c368714fbc478d307fafcf213b4f188965afae05a70afc77de02338c7037992235f22456f5189e744ec4c2f2d6e288374fefdca6aa85a920c877
DIST rust-1.85.1-riscv64gc-unknown-linux-gnu.tar.xz 221683940 BLAKE2B 57dafd510ca6c801fcf9e9d4572e3f1614dd291374d7e5f099896f245864f7b21a6897c31d6a0c3d40eb3a2bc57897136ed9ab792d56f0ed81bec9a48f0d4b7f SHA512 eda63ce47f6a55f5888ebae1814de3a7cfcca6a264b568a23291eb5ffa790c0d9119dd240615f24f33378d2e23646644e3c0dfaa8349e1b0fd21fc09df5b4002
DIST rust-1.85.1-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b0699a5b4750e4aeb99b6aefa18ad425ecdd41bdd5f33091bddd6bc1c14b66afa095530d1e851d79339f0a91d15825a0134000f97b7d63d94716f1bb6b2e3a1c SHA512 dcc85de56863cbabb22b8b396de24f38e3fb5dde0580a5ca6abd87d58525ec0480ec1b2122253a9a53af3c9f604e02c19c20a4f934de35f6706477e5daf0d6e9
DIST rust-1.85.1-riscv64gc-unknown-linux-musl.tar.xz 82068332 BLAKE2B c1d6c26dd6541c5f9af1e478688a5e10e05223cd77c49f53e698643a68f98a6df356666125f468c89ec29ac2cbf89398718aebdb3d84b21230d8e5574452fbb7 SHA512 726dc6a3b8847ef11d581dddf99c6b751d9585a501913a287199291fb60e856feb79b40cb8a86c559cd69698cddb21806565b2fbcdc13e157b420cfc2905adfe
DIST rust-1.85.1-s390x-unknown-linux-gnu.tar.xz 224750504 BLAKE2B db2023f89b3298adffcd9c0f53dfbf7c26e5ecdcbc0640fbe54db7e69247871644a50916778c9229a25f86ded2fc3a72e62e51dfc16a63f96dee9d210b687c71 SHA512 243115b334939371562a0e57080c57642610646a5d4632bc016618b42be20077a3593ed64d56cc98a794f010cf09817548d40d6e9c0d27bbb6feef02dfe0346b
DIST rust-1.85.1-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7d8addceaf42c9506955d145be6fa2d64491f83839e1d82aad0a5f943917b8e8f7c1aaa4e5342128d1c37bfa2ca206fda5bcbdaf86f787d360d0b6ed34271675 SHA512 aea826ce0b42e3630ba3184ebb8182bccbf8175339718981979e28421d3e1d0634d1b70678955fb16d26db79563bb7b5bd8ba247b761d48df1f0cd62f0bf58da
DIST rust-1.85.1-sparc64-unknown-linux-gnu.tar.xz 73939080 BLAKE2B 66370a754c333f73c15d71a2c6847b01a31c553de94764746e08da044d260ce2d167924626ae6963024031d147572096f831ee7179066c6a1df42f8a88556413 SHA512 512081689d9158af5c985f2f60fb8b4071a4d696e2a0ada62cb7e5ae0f6adb59240761b45b93d723fd524dc917a0dddda1b82cb4f5592195cda020d0d301566f
DIST rust-1.85.1-x86_64-unknown-linux-gnu.tar.xz 182566732 BLAKE2B 8c776fcb1a2f9c7249a97560b555051927cdfc38cbee23e93bb754c3929a674ee83eba8d899a23310b0945cedf57acd926fe3aabee131fec91365c02f4fbca2d SHA512 00ccc4feda5043f44193ad151333b40bbed2ef80eefd18c5ba257d9752453002b7eea01ae62b328806b5c8164813099274aa9b7e2f60acfa7fe4f5704b5c884a
DIST rust-1.85.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 68d7bf6ddcfe5dcc25c857be305e650222507bd6015b24611fe983d85be48e38b4e3529db72a41ff13d1e3331a7138e86ff4b56a8344a1e459421e9555ed14c1 SHA512 792520a1de8c9b6ac6bc12e74a1182dd30edd8668d0c6fa5f3709bfa6ed3981eb378f079794459caf4e9fd982b71ba0296a7e515f56e5ac45cf7925e7cc296c7
DIST rust-1.85.1-x86_64-unknown-linux-musl.tar.xz 262611472 BLAKE2B 9f6efc6ae4bbe97469bbb80e3d6fbb74a4ad63142af150d0c1f8867cd81f9a2b41f96787408681b79ba7b37b1b9f0d67089796eedfee5f0e228a30bed441a84a SHA512 8f3e60a6d83ed0ce0d31967707ba51eb7b9a8b2fb981b37aeb03ef4142965c3086a21768b08b4f26b81edceb7eecd10f83bd76e5c7bd12030774d916ac5a45c4
DIST rust-1.85.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B ac25b4ccc84cb0c06708c7164b0a7b926478b3794683e2ca5e1de26a17b5098892c8633c9b8b8cde18040d2c6f195941b9093162594e39c04dd3b0e4a45f1204 SHA512 0df04cb4bd584efa1f6a63649ddc44bf4a30d018a2b60ec83b6defe4c25bfd8b61c8acb6c93783e9d110abc114be859542116d45b3087090f88743761149ad6b
DIST rust-1.86.0_beta20250218-aarch64-unknown-linux-gnu.tar.xz 241961984 BLAKE2B 9553edf94165922470e138a62f2baead6e04aaa81384d22f5b6628462a1c5bbc2387fff5ff05a9efbb81aec5f28301f94d3c9b53899e80afc7997323dd44e089 SHA512 c846832d71d7203759749d8e3aca6c718b91b7e075e02a0a0eac71302d5ed2e23a23c611efc93c3dedec26e9e8931e819eb1d9fe757e9c7b51a6abc1cd6f0598
DIST rust-1.86.0_beta20250218-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 0323dc2fc992e29d8619978d560c888f1873df3b403a7e2a25ab06ae5979d2eb6c42481612f9fcf0b5e435ede3735603d8c1eda733e0f3523b3bddb055d6662b SHA512 f17268a0c2b6568da4c621c23a2b43f2645a3cf2355d4eb7af22be6c6b11df23053eed35fb891f7bcaaff0400910bb7d0e7749d87b0541c401b8ece37d994c90
DIST rust-1.86.0_beta20250218-aarch64-unknown-linux-musl.tar.xz 218887600 BLAKE2B a2be264a1d7c9b78209484d175c959278a9b9596a1a917c1033d04061ffa42d3e1aac491ea02fef1d5d2c3642be72ca04c912f581a5fdcf216a9bd86b3567d3c SHA512 d391a7cb96dc34cd95b862c888d7c5fa199de6924726c3e5b82de96296e890913716083b11f9e7ecb153531b07bc98fec753be4d94cbc57f27c7bff4f31db203
@ -549,5 +586,6 @@ DIST rust-src-1.83.0.tar.xz 2998424 BLAKE2B de758c5bfb29865a3ab7ab02d17b0282272f
DIST rust-src-1.84.0.tar.xz 3016148 BLAKE2B e948d4edb88f81ecfb49f56a3ca6331c4e9de17bd9f56af823e1cefdc5098abebc2bb013d7c12ca1713a43fec588f33befcb7146713eeade1511914f70146d62 SHA512 ccb45d57c7cdac311478a5b4689144297717e6404f9c4fb168127804f13f72c15433b32765f90ce56e6f34435229e754241cb3656b28a4b33c6070b6f79b7c53
DIST rust-src-1.84.1.tar.xz 3016012 BLAKE2B c9edeaf0797a22e384c54b3fe3e7c833464c09f8828474e05400a561a369d836626387caa495689e4b14fad691a85d6859098c84347211a6f79e2ef2c8d9d6f2 SHA512 564c440a05b67fd3a5dcb4dea21800d32ae65ca12230b804b5efa4bd468fe1b185bd7ed89041782018f70f60afd7554d7755edbe20e9cdc930a9fad390deb317
DIST rust-src-1.85.0.tar.xz 3036988 BLAKE2B b7281b23eef60cf052e1641a29915c02c590166a73e5ae75890072ce80f95a2ab71cead3e3da7adf757ec0352d1dcc87ba4c3070282a27657b34420fe24a0c16 SHA512 613cfa603dc457cee34b154acef9573d766ce5757c9e8342b13d362f2e62b4cee47071a59df9fd5fa42ecade1a9efdada5784402aaf7254d5996558533bff8db
DIST rust-src-1.85.1.tar.xz 3036412 BLAKE2B f137ffcebd2d231d8b3dc5c9072f6afe39a071bc9608ac468bca364fafaa9c277b91e40da870a083c802cc13b9b876a548d7fa8ae67ad9552321a7412b7d8cd8 SHA512 d230cbb1daae3e2f5168abef94c5b99fb118c34a980f018d5df3e43f6ead4e0a17d6ea29bcfbcd0fb745e215f7a4d0282a99a714dba77b98a16254bb27c2d2ad
DIST rust-src-1.86.0_beta20250218.tar.xz 3035860 BLAKE2B 506df30188382d43798c6661a8b730c10a74a230bf5ceb7c04f2892f14a45630182ee174f79b564dc5a6dd8e3bc84963b8391fc9641efc57d0ed90e69b89d545 SHA512 4c7cc4d1860f7d97f615ff5dc030754a7fb72d1eb47b27a2e25dbb5a9b0326b8a1b82b6b60a784da910c4730d3b728bb27e1d27f30dabdb7e455143550f0c424
DIST rust-src-1.86.0_beta20250225.tar.xz 3053616 BLAKE2B 19abffb74a9926c73fd112589be340b2955e3117d4344f4185de08899be5a5ac9835395e601224f21e63fa0f91053fb39ca02e98a6442570dd54c6b0a39f85a9 SHA512 57b8eb0fa06e5ee37d89ee486375b7022d2085fcd88061a20c3e8406c312fa912bc0b52c9259bb3682bbba1e2ea4b044eab9f9ae66262a67c19657033fe918e1

View File

@ -173,13 +173,15 @@ patchelf_for_bin() {
rust_native_abi_install() {
pushd "${S}" >/dev/null || die
local analysis="$(grep 'analysis' ./components || die "analysis not found in components")"
local std="$(grep 'std' ./components || die "std not found in components")"
local components=( "rustc" "cargo" "${std}" )
use doc && components+=( "rust-docs" )
use clippy && components+=( "clippy-preview" )
use rustfmt && components+=( "rustfmt-preview" )
use rust-analyzer && components+=( "rust-analyzer-preview" "${analysis}" )
if use rust-analyzer; then
local analysis="$(grep 'analysis' ./components || die "analysis not found in components")"
components+=( "rust-analyzer-preview" "${analysis}" )
fi
# Rust component 'rust-src' is extracted from separate archive
if use rust-src; then
einfo "Combining rust and rust-src installers"

View File

@ -22,7 +22,7 @@ elif [[ ${PV} == *beta* ]]; then
else
# curl -Ls static.rust-lang.org/dist/channel-rust-${PV}.toml | grep "xz_url.*rust-src"
SRC_URI="$(rust_all_arch_uris "rust-${PV}")
rust-src? ( ${RUST_TOOLCHAIN_BASEURL%/}/2025-02-20/rust-src-${PV}.tar.xz )
rust-src? ( ${RUST_TOOLCHAIN_BASEURL%/}/2025-03-18/rust-src-${PV}.tar.xz )
ppc64? ( elibc_musl? ( !big-endian? (
$(rust_arch_uri powerpc64le-unknown-linux-musl rust-${PV})
) ) )
@ -64,7 +64,10 @@ RDEPEND="
>=app-eselect/eselect-rust-20190311
dev-libs/openssl
sys-apps/lsb-release
sys-devel/gcc:*
|| (
llvm-runtimes/libgcc
sys-devel/gcc:*
)
!dev-lang/rust:stable
!dev-lang/rust-bin:stable
"
@ -170,13 +173,15 @@ patchelf_for_bin() {
rust_native_abi_install() {
pushd "${S}" >/dev/null || die
local analysis="$(grep 'analysis' ./components || die "analysis not found in components")"
local std="$(grep 'std' ./components || die "std not found in components")"
local components=( "rustc" "cargo" "${std}" )
use doc && components+=( "rust-docs" )
use clippy && components+=( "clippy-preview" )
use rustfmt && components+=( "rustfmt-preview" )
use rust-analyzer && components+=( "rust-analyzer-preview" "${analysis}" )
if use rust-analyzer; then
local analysis="$(grep 'analysis' ./components || die "analysis not found in components")"
components+=( "rust-analyzer-preview" "${analysis}" )
fi
# Rust component 'rust-src' is extracted from separate archive
if use rust-src; then
einfo "Combining rust and rust-src installers"

View File

@ -6,7 +6,7 @@ DIST rustc-1.83.0-src.tar.xz 353808388 BLAKE2B 217c85f7351a7c57a2684da2c7c81a320
DIST rustc-1.83.0-src.tar.xz.asc 801 BLAKE2B 3bacb43d50ebba579dc2d4f1726298a7887e303e15f039ef72b840e30d90bc2cf9cdbe4617a9ee113a2b1a48f1982e72cf30323d72cdfb9a65b5b4d734ca0024 SHA512 84b252ccaddc06cb05858ff64f582dd25823818c81b1e3a00362deeda06f09e6c36948fd316d5f0ca5e24949e6f99bb14a14dbd2af1cfbb85e679e27ab0a813c
DIST rustc-1.84.1-src.tar.xz 355078168 BLAKE2B 849e8c909493bf76ce9749b9dcb1967180223b91a41d690bc477e78557d4e24949c9a8d8276d824af8c54ad62bc4a998e7a8efbc0bbd2008a4f64f51a7690d48 SHA512 f1cc4765736551508408126e44086988e8ddc30c1a929bf7b61c6be85ad0d65928dd5fb1041cfaeee8eb37d2208f2c1917e276aef2bc9a8e40e34f6713b349e1
DIST rustc-1.84.1-src.tar.xz.asc 801 BLAKE2B f3decd3470fd1eff33adbb376490a30eb8db28dd4176bde0fefe4f60acf79c3dd0e1a330d519b5319360136ea7d0a124f6720dea08617202d9e9298da992ccf6 SHA512 a241fe3efba293f3e872b74f09dd0d184e0239afd1416326d57bf1134d92721c65b187f5c99962b51671877a539f18e82d2d797c76af42615c11a8bb3905f796
DIST rustc-1.85.0-src.tar.xz 274011696 BLAKE2B 9cb1c5b9fa9b0ee8a3150d634b58f4d14c38342f19cffbdcaa4e783150f9b3c516763d549d9998d90e11377cd59e9d9442a99079aafccdc005739b075574447a SHA512 3e9c933d1d9b6e5fb081837cf07eb1638b1a6b4fd1cb607dd860c5021ba7b521edbaf8ba0fa8f182f62178b72a3e1a3e6b26675e8fb6530871137852a074443c
DIST rustc-1.85.0-src.tar.xz.asc 801 BLAKE2B 8168c984f69356898f7a51199f3250a51c58a6512463cd5011acdff8c63754ba196bb050dba95b73d37c7e6d4bbcd3d1cb471d067a6615cd81b8969394e3539a SHA512 b96fffde7eb3d98cca6abe44e671fd4752416357ab3180d2a09a60fc022ac03d10e64ae285ef6276b8d881d6154fd7398f46666f5a2ea6f3023ea38fd543f59e
DIST rustc-1.85.1-src.tar.xz 274028992 BLAKE2B 1dddbbc0d14fe9551fd2eb59a47521ac7eaf783b8ebf5e89d3e82b38f3f1539c14626a86b6530a47e5a967d47a04db7a3daef568eb5164f42d98b6826346cffe SHA512 d61afb4f00d0c63eef132e10ca5369202064ecad8ab5bcf4fbd62e9a20b2bd71840b2a769dadcf43452fc0448865975c9de1c129752caa9928d2757027bacf7c
DIST rustc-1.85.1-src.tar.xz.asc 801 BLAKE2B 07409ef6c044b72394a28dfd5b5decb237ca540714010a4f81e4213a3bf7ffb2e14029789f930cea0dab115a6e986859f6cdefd3798be780c2ff21c3e5fa6593 SHA512 7f19653fd05c89390a4073f5184ca162863b7116cc4d8867a5aa4304568880707ebb9f9dda166d7d04f30b2df6ed223eedd98df1744f809773054edfcd2385ff
DIST rustc-1.86.0_beta20250218-src.tar.xz 280540916 BLAKE2B ed3fe1b1ce392ffd264dd78c00e43b478d14c6bf9bc7120aa484c46a72ff904abf3ed1d1d539828a22071997860d186ecf9d5d4abed25f14cbbe0068dee06a5e SHA512 bd8982d6adee08e0b39a58786741594e0c651cd107818178aca0ded3c3272239be3c4f0f6b617679bc8b1cea67e4b5924d6bb1ae8a9d5903fb77245dd8ac528b
DIST rustc-1.86.0_beta20250218-src.tar.xz.asc 801 BLAKE2B 8a7c489f9087342074262c64089922b97e886aa6d3f89c2a0ed1185e084c8bed07d57c363608f26536ca884d764aa43e3ade214ab4fe4e67e9c6d7e1338e93aa SHA512 d34b536200fdb4c7e85af005b1753ce88f32a1faa418a01de21de992679d744ec396fd0f9aaaf851569de1f4f06f14a6481b68b1378659b3475d30818421ea3a

View File

@ -28,6 +28,8 @@ DIST rustc-1.84.1-src.tar.xz 355078168 BLAKE2B 849e8c909493bf76ce9749b9dcb196718
DIST rustc-1.84.1-src.tar.xz.asc 801 BLAKE2B f3decd3470fd1eff33adbb376490a30eb8db28dd4176bde0fefe4f60acf79c3dd0e1a330d519b5319360136ea7d0a124f6720dea08617202d9e9298da992ccf6 SHA512 a241fe3efba293f3e872b74f09dd0d184e0239afd1416326d57bf1134d92721c65b187f5c99962b51671877a539f18e82d2d797c76af42615c11a8bb3905f796
DIST rustc-1.85.0-src.tar.xz 274011696 BLAKE2B 9cb1c5b9fa9b0ee8a3150d634b58f4d14c38342f19cffbdcaa4e783150f9b3c516763d549d9998d90e11377cd59e9d9442a99079aafccdc005739b075574447a SHA512 3e9c933d1d9b6e5fb081837cf07eb1638b1a6b4fd1cb607dd860c5021ba7b521edbaf8ba0fa8f182f62178b72a3e1a3e6b26675e8fb6530871137852a074443c
DIST rustc-1.85.0-src.tar.xz.asc 801 BLAKE2B 8168c984f69356898f7a51199f3250a51c58a6512463cd5011acdff8c63754ba196bb050dba95b73d37c7e6d4bbcd3d1cb471d067a6615cd81b8969394e3539a SHA512 b96fffde7eb3d98cca6abe44e671fd4752416357ab3180d2a09a60fc022ac03d10e64ae285ef6276b8d881d6154fd7398f46666f5a2ea6f3023ea38fd543f59e
DIST rustc-1.85.1-src.tar.xz 274028992 BLAKE2B 1dddbbc0d14fe9551fd2eb59a47521ac7eaf783b8ebf5e89d3e82b38f3f1539c14626a86b6530a47e5a967d47a04db7a3daef568eb5164f42d98b6826346cffe SHA512 d61afb4f00d0c63eef132e10ca5369202064ecad8ab5bcf4fbd62e9a20b2bd71840b2a769dadcf43452fc0448865975c9de1c129752caa9928d2757027bacf7c
DIST rustc-1.85.1-src.tar.xz.asc 801 BLAKE2B 07409ef6c044b72394a28dfd5b5decb237ca540714010a4f81e4213a3bf7ffb2e14029789f930cea0dab115a6e986859f6cdefd3798be780c2ff21c3e5fa6593 SHA512 7f19653fd05c89390a4073f5184ca162863b7116cc4d8867a5aa4304568880707ebb9f9dda166d7d04f30b2df6ed223eedd98df1744f809773054edfcd2385ff
DIST rustc-1.86.0_beta20250218-src.tar.xz 280540916 BLAKE2B ed3fe1b1ce392ffd264dd78c00e43b478d14c6bf9bc7120aa484c46a72ff904abf3ed1d1d539828a22071997860d186ecf9d5d4abed25f14cbbe0068dee06a5e SHA512 bd8982d6adee08e0b39a58786741594e0c651cd107818178aca0ded3c3272239be3c4f0f6b617679bc8b1cea67e4b5924d6bb1ae8a9d5903fb77245dd8ac528b
DIST rustc-1.86.0_beta20250218-src.tar.xz.asc 801 BLAKE2B 8a7c489f9087342074262c64089922b97e886aa6d3f89c2a0ed1185e084c8bed07d57c363608f26536ca884d764aa43e3ade214ab4fe4e67e9c6d7e1338e93aa SHA512 d34b536200fdb4c7e85af005b1753ce88f32a1faa418a01de21de992679d744ec396fd0f9aaaf851569de1f4f06f14a6481b68b1378659b3475d30818421ea3a
DIST rustc-1.86.0_beta20250225-src.tar.xz 280546668 BLAKE2B ea1956a83175a2cda21b6ad1ead38d8d0f6c95559d2e329bf0e4ca13d0ff6562d017d5bffbb57f9d6d232b1f87f3d190718bc0b90c6938b06763526fac083ada SHA512 782fafa305b8766db3d23796014a5897470988c9447baf4bee35d98b90382b5a727d0aecc3dabbdab0f82b6d862def8be23d8a6cf3d98cc96f18cf4a2bc38f66

View File

@ -333,7 +333,7 @@ src_configure() {
debuginfo-level-tests = 0
backtrace = true
incremental = false
default-linker = "$(tc-getCC)"
default-linker = "${CHOST}-cc"
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"
description = "gentoo"

View File

@ -399,7 +399,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"

View File

@ -365,7 +365,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"

View File

@ -364,7 +364,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"

View File

@ -363,7 +363,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"

View File

@ -362,7 +362,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"

View File

@ -362,7 +362,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"

View File

@ -361,7 +361,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"

View File

@ -365,7 +365,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"

View File

@ -373,7 +373,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"

View File

@ -373,7 +373,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"

View File

@ -68,6 +68,7 @@ BDEPEND="${PYTHON_DEPS}
>=sys-devel/gcc-4.7[cxx]
>=llvm-core/clang-3.5
)
lto? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )
!system-llvm? (
>=dev-build/cmake-3.13.4
app-alternatives/ninja
@ -234,6 +235,10 @@ src_prepare() {
fi
fi
if use lto && tc-is-clang && ! tc-ld-is-lld; then
export RUSTFLAGS+=" -C link-arg=-fuse-ld=lld"
fi
default
}
@ -374,7 +379,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"
@ -386,6 +391,9 @@ src_configure() {
dist-src = false
remap-debuginfo = true
lld = $(usex system-llvm false $(toml_usex wasm))
$(if use lto && tc-is-clang ; then
echo "use-lld = true"
fi)
# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
# https://github.com/rust-lang/rust/issues/74976
# https://github.com/rust-lang/rust/issues/76526

View File

@ -68,6 +68,7 @@ BDEPEND="${PYTHON_DEPS}
>=sys-devel/gcc-4.7[cxx]
>=llvm-core/clang-3.5
)
lto? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )
!system-llvm? (
>=dev-build/cmake-3.13.4
app-alternatives/ninja
@ -234,6 +235,10 @@ src_prepare() {
fi
fi
if use lto && tc-is-clang && ! tc-ld-is-lld; then
export RUSTFLAGS+=" -C link-arg=-fuse-ld=lld"
fi
default
}
@ -374,7 +379,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"
@ -386,6 +391,9 @@ src_configure() {
dist-src = false
remap-debuginfo = true
lld = $(usex system-llvm false $(toml_usex wasm))
$(if use lto && tc-is-clang ; then
echo "use-lld = true"
fi)
# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
# https://github.com/rust-lang/rust/issues/74976
# https://github.com/rust-lang/rust/issues/76526

View File

@ -94,6 +94,7 @@ BDEPEND="${PYTHON_DEPS}
>=sys-devel/gcc-4.7[cxx]
>=llvm-core/clang-3.5
)
lto? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )
!system-llvm? (
>=dev-build/cmake-3.13.4
app-alternatives/ninja
@ -306,6 +307,10 @@ src_prepare() {
fi
fi
if use lto && tc-is-clang && ! tc-ld-is-lld; then
export RUSTFLAGS+=" -C link-arg=-fuse-ld=lld"
fi
default
}
@ -462,7 +467,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
channel = "${build_channel}"
description = "gentoo"
@ -473,6 +478,9 @@ src_configure() {
dist-src = false
remap-debuginfo = true
lld = $(usex system-llvm false $(toml_usex wasm))
$(if use lto && tc-is-clang ; then
echo "use-lld = true"
fi)
# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
# https://github.com/rust-lang/rust/issues/74976
# https://github.com/rust-lang/rust/issues/76526

View File

@ -94,6 +94,7 @@ BDEPEND="${PYTHON_DEPS}
>=sys-devel/gcc-4.7[cxx]
>=llvm-core/clang-3.5
)
lto? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )
!system-llvm? (
>=dev-build/cmake-3.13.4
app-alternatives/ninja
@ -305,6 +306,10 @@ src_prepare() {
fi
fi
if use lto && tc-is-clang && ! tc-ld-is-lld; then
export RUSTFLAGS+=" -C link-arg=-fuse-ld=lld"
fi
default
}
@ -461,7 +466,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
channel = "${build_channel}"
description = "gentoo"
@ -472,6 +477,9 @@ src_configure() {
dist-src = false
remap-debuginfo = true
lld = $(usex system-llvm false $(toml_usex wasm))
$(if use lto && tc-is-clang ; then
echo "use-lld = true"
fi)
# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
# https://github.com/rust-lang/rust/issues/74976
# https://github.com/rust-lang/rust/issues/76526

View File

@ -0,0 +1,808 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
LLVM_COMPAT=( 19 )
PYTHON_COMPAT=( python3_{10..13} )
RUST_MAX_VER=${PV%%_*}
if [[ ${PV} == *9999* ]]; then
RUST_MIN_VER="1.85.0" # Update this as new `beta` releases come out.
elif [[ ${PV} == *beta* ]]; then
# Enforce that `beta` is built from `stable`.
# While uncommon it is possible for feature changes within `beta` to result
# in an older snapshot being unable to build a newer one without modifying the sources.
# 'stable' releases should always be able to build a beta snapshot so just use those.
RUST_MAX_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).1"
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
else
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
fi
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \
multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
if [[ ${PV} = *9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/rust-lang/rust.git"
EGIT_SUBMODULES=(
"*"
"-src/gcc"
)
elif [[ ${PV} == *beta* ]]; then
# Identify the snapshot date of the beta release:
# curl -Ls static.rust-lang.org/dist/channel-rust-beta.toml | grep beta-src.tar.xz
betaver=${PV//*beta}
BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
MY_P="rustc-beta"
SRC_URI="https://static.rust-lang.org/dist/${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz
verify-sig? ( https://static.rust-lang.org/dist/${BETA_SNAPSHOT}/rustc-beta-src.tar.xz.asc
-> rustc-${PV}-src.tar.xz.asc )
"
S="${WORKDIR}/${MY_P}-src"
else
MY_P="rustc-${PV}"
SRC_URI="https://static.rust-lang.org/dist/${MY_P}-src.tar.xz
verify-sig? ( https://static.rust-lang.org/dist/${MY_P}-src.tar.xz.asc )
"
S="${WORKDIR}/${MY_P}-src"
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
fi
DESCRIPTION="Systems programming language originally developed by Mozilla"
HOMEPAGE="https://www.rust-lang.org/"
# keep in sync with llvm ebuild of the same version as bundled one.
ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
WebAssembly X86 XCore Xtensa )
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
# https://github.com/rust-lang/llvm-project/blob/rustc-1.84.0/llvm/CMakeLists.txt
_ALL_RUST_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
declare -A ALL_RUST_EXPERIMENTAL_TARGETS
for _x in "${_ALL_RUST_EXPERIMENTAL_TARGETS[@]}"; do
ALL_RUST_EXPERIMENTAL_TARGETS["llvm_targets_${_x}"]=0
done
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV%%_*}" # Beta releases get to share the same SLOT as the eventual stable
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
if [[ ${PV} = *9999* ]]; then
# These USE flags require nightly rust
IUSE+=" miri"
fi
LLVM_DEPEND=()
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
for _x in "${ALL_LLVM_TARGETS[@]}"; do
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
if [[ -v ALL_RUST_EXPERIMENTAL_TARGETS["${_x}"] ]] ; then
ALL_RUST_EXPERIMENTAL_TARGETS["${_x}"]=1
fi
done
LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" )
LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" )
BDEPEND="${PYTHON_DEPS}
app-eselect/eselect-rust
|| (
>=sys-devel/gcc-4.7[cxx]
>=llvm-core/clang-3.5
)
lto? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )
!system-llvm? (
>=dev-build/cmake-3.13.4
app-alternatives/ninja
)
test? ( dev-debug/gdb )
verify-sig? ( sec-keys/openpgp-keys-rust )
"
DEPEND="
>=app-arch/xz-utils-5.2
net-misc/curl:=[http2,ssl]
sys-libs/zlib:=
dev-libs/openssl:0=
system-llvm? (
${LLVM_DEPEND[*]}
llvm-libunwind? ( llvm-runtimes/libunwind:= )
)
!system-llvm? (
!llvm-libunwind? (
elibc_musl? ( sys-libs/libunwind:= )
)
)
"
RDEPEND="${DEPEND}
app-eselect/eselect-rust
dev-lang/rust-common
sys-apps/lsb-release
!dev-lang/rust:stable
!dev-lang/rust-bin:stable
"
REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
rust-analyzer? ( rust-src )
test? ( ${ALL_LLVM_TARGETS[*]} )
wasm? ( llvm_targets_WebAssembly )
x86? ( cpu_flags_x86_sse2 )
"
# we don't use cmake.eclass, but can get a warning
CMAKE_WARN_UNUSED_CLI=no
QA_FLAGS_IGNORED="
usr/lib/${PN}/${SLOT}/bin/.*
usr/lib/${PN}/${SLOT}/libexec/.*
usr/lib/${PN}/${SLOT}/lib/lib.*.so
usr/lib/${PN}/${SLOT}/lib/rustlib/.*/bin/.*
usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/lib.*.so
"
QA_SONAME="
usr/lib/${PN}/${SLOT}/lib/lib.*.so.*
usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/lib.*.so
"
QA_PRESTRIPPED="
usr/lib/${PN}/${SLOT}/lib/rustlib/.*/bin/rust-llvm-dwp
usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/self-contained/crtn.o
"
# An rmeta file is custom binary format that contains the metadata for the crate.
# rmeta files do not support linking, since they do not contain compiled object files.
# so we can safely silence the warning for this QA check.
QA_EXECSTACK="usr/lib/${PN}/${SLOT}/lib/rustlib/*/lib*.rlib:lib.rmeta"
# causes double bootstrap
RESTRICT="test"
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
PATCHES=(
"${FILESDIR}"/1.85.0-cross-compile-libz.patch
"${FILESDIR}"/1.85.0-musl-dynamic-linking.patch
"${FILESDIR}"/1.67.0-doc-wasm.patch
)
clear_vendor_checksums() {
sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
}
toml_usex() {
usex "${1}" true false
}
src_unpack() {
if [[ ${PV} = *9999* ]]; then
git-r3_src_unpack
mkdir "${S}/.cargo" || die # The vendor script has a check for .cargo/config{,.toml}
touch "${S}/.cargo/config.toml" || die
local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")"
local rust_build=""
local rust_host=""
# Configure vendor to use the portage-provided toolchain. This prevents it from
# attempting to fetch a `beta` toolchain from the internet.
cat <<- _EOF_ > "${T}/vendor-config.toml"
[build]
build = "$(rust_abi "${CBUILD}")"
host = ["$(rust_abi "${CHOST}")"]
target = ["$(rust_abi "${CHOST}")"]
cargo = "${rust_stage0_root}/bin/cargo"
rustc = "${rust_stage0_root}/bin/rustc"
rustfmt = "${rust_stage0_root}/bin/rustfmt"
_EOF_
# We're using git sources so we need to run the Vendor script
# to ensure that all dependencies are present and up-to-date
mkdir "${S}/vendor" || die
# This also compiles the 'build helper', there's no way to avoid this.
${EPYTHON} "${S}"/x.py vendor -vvv --config="${T}"/vendor-config.toml -j$(makeopts_jobs) ||
die "Failed to vendor dependencies"
# TODO: This has to be generated somehow, this is from a 1.84.x tarball I had lying around.
cat <<- _EOF_ > "${S}/.cargo/config.toml"
[source.crates-io]
replace-with = "vendored-sources"
[source."git+https://github.com/rust-lang/team"]
git = "https://github.com/rust-lang/team"
replace-with = "vendored-sources"
[source.vendored-sources]
directory = "vendor"
_EOF_
else
verify-sig_src_unpack
fi
}
pre_build_checks() {
local M=9216
# multiply requirements by 1.3 if we are doing x86-multilib
if use amd64; then
M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
fi
M=$(( $(usex clippy 128 0) + ${M} ))
if [[ ${PV} == *9999* ]]; then
M=$(( $(usex miri 128 0) + ${M} ))
fi
M=$(( $(usex rustfmt 256 0) + ${M} ))
# add 2G if we compile llvm and 256M per llvm_target
if ! use system-llvm; then
M=$(( 2048 + ${M} ))
local ltarget
for ltarget in ${ALL_LLVM_TARGETS[@]}; do
M=$(( $(usex ${ltarget} 256 0) + ${M} ))
done
fi
M=$(( $(usex wasm 256 0) + ${M} ))
M=$(( $(usex debug 2 1) * ${M} ))
eshopts_push -s extglob
if is-flagq '-g?(gdb)?([1-9])'; then
M=$(( 15 * ${M} / 10 ))
fi
eshopts_pop
M=$(( $(usex doc 256 0) + ${M} ))
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
}
llvm_check_deps() {
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
}
# Is LLVM being linked against libc++?
is_libcxx_linked() {
local code='#include <ciso646>
#if defined(_LIBCPP_VERSION)
HAVE_LIBCXX
#endif
'
local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
[[ ${out} == *HAVE_LIBCXX* ]]
}
pkg_pretend() {
pre_build_checks
}
pkg_setup() {
pre_build_checks
python-any-r1_pkg_setup
export LIBGIT2_NO_PKG_CONFIG=1 #749381
if tc-is-cross-compiler; then
use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
use "llvm_targets_${cross_llvm_target}" || \
die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
fi
rust_pkg_setup
if use system-llvm; then
llvm-r1_pkg_setup
local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
export LLVM_LINK_SHARED=1
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
fi
}
src_prepare() {
if [[ ${PV} = *9999* ]]; then
# We need to update / generate lockfiles for the workspace
${CARGO} generate-lockfile --offline
fi
# Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set.
if use x86; then
if ! use cpu_flags_x86_sse2; then
eapply "${FILESDIR}/1.82.0-i586-baseline.patch"
#grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die
fi
fi
if use lto && tc-is-clang && ! tc-ld-is-lld; then
export RUSTFLAGS+=" -C link-arg=-fuse-ld=lld"
fi
default
}
src_configure() {
if tc-is-cross-compiler; then
export PKG_CONFIG_ALLOW_CROSS=1
export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig"
export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include"
export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)"
fi
filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
local rust_target="" rust_targets="" arch_cflags
# Collect rust target names to compile standard libs for all ABIs.
for v in $(multilib_get_enabled_abi_pairs); do
rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
done
if use wasm; then
rust_targets+=",\"wasm32-unknown-unknown\""
if use system-llvm; then
# un-hardcode rust-lld linker for this target
# https://bugs.gentoo.org/715348
sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die
fi
fi
rust_targets="${rust_targets#,}"
# cargo and rustdoc are mandatory and should always be included
local tools='"cargo","rustdoc"'
use clippy && tools+=',"clippy"'
use rustfmt && tools+=',"rustfmt"'
use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
use rust-src && tools+=',"src"'
if [[ ${PV} == *9999* ]]; then
use miri && tools+=',"miri"'
fi
local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")"
# in case of prefix it will be already prefixed, as --print sysroot returns full path
[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
rust_target="$(rust_abi)"
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
RUST_EXPERIMENTAL_TARGETS=()
for _x in "${!ALL_RUST_EXPERIMENTAL_TARGETS[@]}"; do
if [[ ${ALL_RUST_EXPERIMENTAL_TARGETS[${_x}]} == 1 ]] && use ${_x} ; then
RUST_EXPERIMENTAL_TARGETS+=( ${_x#llvm_targets_} )
fi
done
RUST_EXPERIMENTAL_TARGETS=${RUST_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
local build_channel
local build_miri="false"
case "${PV}" in
*9999*)
build_channel="nightly"
;;
*beta*)
build_channel="beta"
;;
*)
build_channel="stable"
;;
esac
cat <<- _EOF_ > "${S}"/config.toml
# https://github.com/rust-lang/rust/issues/135358 (bug #947897)
profile = "dist"
[llvm]
download-ci-llvm = false
optimize = $(toml_usex !debug)
release-debuginfo = $(toml_usex debug)
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = "${RUST_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632
echo "use-libcxx = true"
echo "static-libstdcpp = false"
fi)
$(case "${rust_target}" in
i586-*-linux-*)
# https://github.com/rust-lang/rust/issues/93059
echo 'cflags = "-fcf-protection=none"'
echo 'cxxflags = "-fcf-protection=none"'
echo 'ldflags = "-fcf-protection=none"'
;;
*)
;;
esac)
enable-warnings = false
[llvm.build-config]
CMAKE_VERBOSE_MAKEFILE = "ON"
$(if ! tc-is-cross-compiler; then
# When cross-compiling, LLVM is compiled twice, once for host and
# once for target. Unfortunately, this build configuration applies
# to both, which means any flags applicable to one target but not
# the other will break. Conditionally disable respecting user
# flags when cross-compiling.
echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
fi)
[build]
build-stage = 2
test-stage = 2
build = "${rust_build}"
host = ["${rust_host}"]
target = [${rust_targets}]
cargo = "${rust_stage0_root}/bin/cargo"
rustc = "${rust_stage0_root}/bin/rustc"
rustfmt = "${rust_stage0_root}/bin/rustfmt"
docs = $(toml_usex doc)
compiler-docs = false
submodules = false
python = "${EPYTHON}"
locked-deps = true
vendor = true
extended = true
tools = [${tools}]
verbose = 2
sanitizers = false
profiler = true
cargo-native-static = false
[install]
prefix = "${EPREFIX}/usr/lib/${PN}/${SLOT}"
sysconfdir = "etc"
docdir = "share/doc/rust"
bindir = "bin"
libdir = "lib"
mandir = "share/man"
[rust]
# https://github.com/rust-lang/rust/issues/54872
codegen-units-std = 1
optimize = true
debug = $(toml_usex debug)
debug-assertions = $(toml_usex debug)
debug-assertions-std = $(toml_usex debug)
debuginfo-level = $(usex debug 2 0)
debuginfo-level-rustc = $(usex debug 2 0)
debuginfo-level-std = $(usex debug 2 0)
debuginfo-level-tools = $(usex debug 2 0)
debuginfo-level-tests = 0
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"${CHOST}-cc\""
fi)
channel = "${build_channel}"
description = "gentoo"
rpath = true
verbose-tests = true
optimize-tests = $(toml_usex !debug)
codegen-tests = true
dist-src = false
remap-debuginfo = true
lld = $(usex system-llvm false $(toml_usex wasm))
$(if use lto && tc-is-clang ; then
echo "use-lld = true"
fi)
# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
# https://github.com/rust-lang/rust/issues/74976
# https://github.com/rust-lang/rust/issues/76526
deny-warnings = $(usex wasm $(usex doc false true) true)
backtrace-on-ice = true
jemalloc = false
# See https://github.com/rust-lang/rust/issues/121124
lto = "$(usex lto thin off)"
[dist]
src-tarball = false
compression-formats = ["xz"]
compression-profile = "balanced"
_EOF_
for v in $(multilib_get_enabled_abi_pairs); do
rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
arch_cflags="$(get_abi_CFLAGS ${v##*.})"
export CFLAGS_${rust_target//-/_}="${arch_cflags}"
cat <<- _EOF_ >> "${S}"/config.toml
[target.${rust_target}]
ar = "$(tc-getAR)"
cc = "$(tc-getCC)"
cxx = "$(tc-getCXX)"
linker = "$(tc-getCC)"
ranlib = "$(tc-getRANLIB)"
llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
_EOF_
if use system-llvm; then
cat <<- _EOF_ >> "${S}"/config.toml
llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
_EOF_
fi
# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
# but we patch it and set to false here as well
if use elibc_musl; then
cat <<- _EOF_ >> "${S}"/config.toml
crt-static = false
musl-root = "$($(tc-getCC) -print-sysroot)/usr"
_EOF_
fi
done
if use wasm; then
wasm_target="wasm32-unknown-unknown"
export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")"
cat <<- _EOF_ >> "${S}"/config.toml
[target.wasm32-unknown-unknown]
linker = "$(usex system-llvm lld rust-lld)"
# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
profiler = false
_EOF_
fi
if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
# experimental cross support
# discussion: https://bugs.gentoo.org/679878
# TODO: c*flags, clang, system-llvm, cargo.eclass target support
# it would be much better if we could split out stdlib
# complilation to separate ebuild and abuse CATEGORY to
# just install to /usr/lib/rustlib/<target>
# extra targets defined as a bash array
# spec format: <LLVM target>:<rust-target>:<CTARGET>
# best place would be /etc/portage/env/dev-lang/rust
# Example:
# RUST_CROSS_TARGETS=(
# "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
# )
# no extra hand holding is done, no target transformations, all
# values are passed as-is with just basic checks, so it's up to user to supply correct values
# valid rust targets can be obtained with
# rustc --print target-list
# matching cross toolchain has to be installed
# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
# only gcc toolchains installed with crossdev are checked for now.
# BUG: we can't pass host flags to cross compiler, so just filter for now
# BUG: this should be more fine-grained.
filter-flags '-mcpu=*' '-march=*' '-mtune=*'
local cross_target_spec
for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
local cross_llvm_target="${cross_target_spec%%:*}"
# extracts toolchain triples, <rust-target>:<CTARGET>
local cross_triples="${cross_target_spec#*:}"
# extracts first element after before : separator
local cross_rust_target="${cross_triples%%:*}"
# extracts last element after : separator
local cross_toolchain="${cross_triples##*:}"
use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
cat <<- _EOF_ >> "${S}"/config.toml
[target.${cross_rust_target}]
ar = "${cross_toolchain}-ar"
cc = "${cross_toolchain}-gcc"
cxx = "${cross_toolchain}-g++"
linker = "${cross_toolchain}-gcc"
ranlib = "${cross_toolchain}-ranlib"
_EOF_
if use system-llvm; then
cat <<- _EOF_ >> "${S}"/config.toml
llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
_EOF_
fi
if [[ "${cross_toolchain}" == *-musl* ]]; then
cat <<- _EOF_ >> "${S}"/config.toml
musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
_EOF_
fi
# append cross target to "normal" target list
# example 'target = ["powerpc64le-unknown-linux-gnu"]'
# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
rust_targets="${rust_targets},\"${cross_rust_target}\""
sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
ewarn
ewarn "Enabled ${cross_rust_target} rust target"
ewarn "Using ${cross_toolchain} cross toolchain"
ewarn
if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
ewarn "'sys-devel/binutils[multitarget]' is not installed"
ewarn "'strip' will be unable to strip cross libraries"
ewarn "cross targets will be installed with full debug information"
ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
ewarn
ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
ewarn
fi
done
fi # I_KNOW_WHAT_I_AM_DOING_CROSS
einfo "Rust configured with the following flags:"
echo
echo RUSTFLAGS="\"${RUSTFLAGS}\""
echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
env | grep "CARGO_TARGET_.*_RUSTFLAGS="
env | grep "CFLAGS_.*"
echo
einfo "config.toml contents:"
cat "${S}"/config.toml || die
echo
}
src_compile() {
RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
}
src_test() {
# https://rustc-dev-guide.rust-lang.org/tests/intro.html
# those are basic and codegen tests.
local tests=(
codegen
codegen-units
compile-fail
incremental
mir-opt
pretty
run-make
)
# fails if llvm is not built with ALL targets.
# and known to fail with system llvm sometimes.
use system-llvm || tests+=( assembly )
# fragile/expensive/less important tests
# or tests that require extra builds
# TODO: instead of skipping, just make some nonfatal.
if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
tests+=(
rustdoc
rustdoc-js
rustdoc-js-std
rustdoc-ui
run-make-fulldeps
ui
ui-fulldeps
)
fi
local i failed=()
einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
for i in "${tests[@]}"; do
local t="src/test/${i}"
einfo "rust_src_test: running ${t}"
if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
then
failed+=( "${t}" )
eerror "rust_src_test: ${t} failed"
fi
done
if [[ ${#failed[@]} -ne 0 ]]; then
eerror "rust_src_test: failure summary: ${failed[@]}"
die "aborting due to test failures"
fi
}
src_install() {
DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
docompress /usr/lib/${PN}/${SLOT}/share/man/
# bug #689562, #689160
rm -v "${ED}/usr/lib/${PN}/${SLOT}/etc/bash_completion.d/cargo" || die
rmdir -v "${ED}/usr/lib/${PN}/${SLOT}"/etc{/bash_completion.d,} || die
local symlinks=(
cargo
rustc
rustdoc
rust-gdb
rust-gdbgui
rust-lldb
)
use clippy && symlinks+=( clippy-driver cargo-clippy )
if [[ ${PV} = *9999* ]]; then
use miri && symlinks+=( miri cargo-miri )
fi
use rustfmt && symlinks+=( rustfmt cargo-fmt )
use rust-analyzer && symlinks+=( rust-analyzer )
einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
local i
for i in "${symlinks[@]}"; do
# we need realpath on /usr/bin/* symlink return version-appended binary path.
# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
# need to fix eselect-rust to remove this hack.
local ver_i="${i}-${PV%%_*}"
if [[ -f "${ED}/usr/lib/${PN}/${SLOT}/bin/${i}" ]]; then
einfo "Installing ${i} symlink"
ln -v "${ED}/usr/lib/${PN}/${SLOT}/bin/${i}" "${ED}/usr/lib/${PN}/${SLOT}/bin/${ver_i}" || die
else
ewarn "${i} symlink requested, but source file not found"
ewarn "please report this"
fi
dosym "../lib/${PN}/${SLOT}/bin/${ver_i}" "/usr/bin/${ver_i}"
done
# symlinks to switch components to active rust in eselect
dosym "${SLOT}/lib" "/usr/lib/${PN}/lib-${SLOT}"
use rust-analyzer && dosym "${SLOT}/libexec" "/usr/lib/${PN}/libexec-${SLOT}"
dosym "${SLOT}/share/man" "/usr/lib/${PN}/man-${SLOT}"
dosym "rust/${SLOT}/lib/rustlib" "/usr/lib/rustlib-${SLOT}"
dosym "../../lib/${PN}/${SLOT}/share/doc/rust" "/usr/share/doc/${P}"
newenvd - "50${P}" <<-_EOF_
MANPATH="${EPREFIX}/usr/lib/rust/man-${SLOT}"
_EOF_
rm -rf "${ED}/usr/lib/${PN}/${SLOT}"/*.old || die
rm -rf "${ED}/usr/lib/${PN}/${SLOT}/bin"/*.old || die
rm -rf "${ED}/usr/lib/${PN}/${SLOT}/doc"/*.old || die
# note: eselect-rust adds EROOT to all paths below
cat <<-_EOF_ > "${T}/provider-${PN}-${SLOT}"
/usr/bin/cargo
/usr/bin/rustdoc
/usr/bin/rust-gdb
/usr/bin/rust-gdbgui
/usr/bin/rust-lldb
/usr/lib/rustlib
/usr/lib/rust/lib
/usr/lib/rust/man
/usr/share/doc/rust
_EOF_
if use clippy; then
echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
fi
if [[ ${SLOT} == *9999* ]] && use miri; then
echo /usr/bin/miri >> "${T}/provider-${P}"
echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
fi
if use rustfmt; then
echo /usr/bin/rustfmt >> "${T}/provider-${P}"
echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
fi
if use rust-analyzer; then
echo /usr/lib/rust/libexec >> "${T}/provider-${P}"
echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
fi
insinto /etc/env.d/rust
doins "${T}/provider-${PN}-${SLOT}"
if use dist; then
"${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
insinto "/usr/lib/${PN}/${SLOT}/dist"
doins -r "${S}/build/dist/."
fi
}
pkg_postinst() {
eselect rust update
if has_version dev-debug/gdb || has_version llvm-core/lldb; then
elog "Rust installs helper scripts for calling GDB and LLDB,"
elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}."
fi
if has_version app-editors/emacs; then
optfeature "emacs support for rust" app-emacs/rust-mode
fi
if has_version app-editors/gvim || has_version app-editors/vim; then
optfeature "vim support for rust" app-vim/rust-vim
fi
}
pkg_postrm() {
eselect rust cleanup
}

View File

@ -95,6 +95,7 @@ BDEPEND="${PYTHON_DEPS}
>=sys-devel/gcc-4.7[cxx]
>=llvm-core/clang-3.5
)
lto? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )
!system-llvm? (
>=dev-build/cmake-3.13.4
app-alternatives/ninja
@ -313,6 +314,10 @@ src_prepare() {
fi
fi
if use lto && tc-is-clang && ! tc-ld-is-lld; then
export RUSTFLAGS+=" -C link-arg=-fuse-ld=lld"
fi
default
}
@ -469,7 +474,7 @@ src_configure() {
backtrace = true
incremental = false
$(if ! tc-is-cross-compiler; then
echo "default-linker = \"$(tc-getCC)\""
echo "default-linker = \"${CHOST}-cc\""
fi)
channel = "${build_channel}"
description = "gentoo"
@ -480,6 +485,9 @@ src_configure() {
dist-src = false
remap-debuginfo = true
lld = $(usex system-llvm false $(toml_usex wasm))
$(if use lto && tc-is-clang ; then
echo "use-lld = true"
fi)
# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
# https://github.com/rust-lang/rust/issues/74976
# https://github.com/rust-lang/rust/issues/76526

Some files were not shown because too many files have changed in this diff Show More