mirror of
https://github.com/flatcar/scripts.git
synced 2026-05-04 19:56:32 +02:00
Merge pull request #963 from flatcar/buildbot/weekly-portage-stable-package-updates-2023-07-03
Weekly portage-stable package updates 2023-07-03
This commit is contained in:
commit
f2cf148031
@ -90,6 +90,7 @@ app-crypt/libb2
|
||||
app-crypt/libmd
|
||||
app-crypt/mit-krb5
|
||||
app-crypt/pinentry
|
||||
app-crypt/rhash
|
||||
|
||||
app-editors/nano
|
||||
app-editors/vim
|
||||
@ -389,7 +390,6 @@ sys-apps/portage
|
||||
sys-apps/pv
|
||||
sys-apps/sandbox
|
||||
sys-apps/sed
|
||||
sys-apps/semodule-utils
|
||||
sys-apps/smartmontools
|
||||
sys-apps/texinfo
|
||||
sys-apps/usbutils
|
||||
@ -432,6 +432,7 @@ sys-libs/ldb
|
||||
sys-libs/libcap
|
||||
sys-libs/libcap-ng
|
||||
sys-libs/libseccomp
|
||||
sys-libs/ncurses
|
||||
sys-libs/readline
|
||||
sys-libs/talloc
|
||||
sys-libs/tdb
|
||||
@ -440,8 +441,10 @@ sys-libs/zlib
|
||||
|
||||
sys-process/tini
|
||||
|
||||
virtual/libc
|
||||
virtual/libcrypt
|
||||
virtual/libelf
|
||||
virtual/os-headers
|
||||
virtual/perl-Carp
|
||||
virtual/perl-Exporter
|
||||
virtual/perl-ExtUtils-MakeMaker
|
||||
|
||||
2
changelog/security/2023-07-06-weekly-updates.md
Normal file
2
changelog/security/2023-07-06-weekly-updates.md
Normal file
@ -0,0 +1,2 @@
|
||||
- binutils ([CVE-2022-38533](https://nvd.nist.gov/vuln/detail/CVE-2022-38533), [CVE-2022-4285](https://nvd.nist.gov/vuln/detail/CVE-2022-4285), [CVE-2023-1579](https://nvd.nist.gov/vuln/detail/CVE-2023-1579), [CVE-2023-2222](https://nvd.nist.gov/vuln/detail/CVE-2023-2222))
|
||||
- ncurses ([CVE-2023-29491](https://nvd.nist.gov/vuln/detail/CVE-2023-29491))
|
||||
10
changelog/updates/2023-07-06-weekly-updates.md
Normal file
10
changelog/updates/2023-07-06-weekly-updates.md
Normal file
@ -0,0 +1,10 @@
|
||||
- SDK: qemu ([7.2.3](https://wiki.qemu.org/ChangeLog/7.2))
|
||||
- lua ([5.4.4](https://www.lua.org/manual/5.4/readme.html#changes))
|
||||
- SDK: perl ([5.36.1](https://perldoc.perl.org/perl5361delta))
|
||||
- elfutils ([0.189](https://sourceware.org/pipermail/elfutils-devel/2023q1/006023.html))
|
||||
- glib ([2.76.3](https://gitlab.gnome.org/GNOME/glib/-/releases/2.76.3))
|
||||
- nettle ([3.9.1](https://git.lysator.liu.se/nettle/nettle/-/blob/nettle_3.9.1_release_20230601/ChangeLog))
|
||||
- perf ([6.3](https://kernelnewbies.org/LinuxChanges#Linux_6.3.Tracing.2C_perf_and_BPF))
|
||||
- nmap ([7.94](https://nmap.org/changelog.html#7.94))
|
||||
- binutils ([2.40](https://lists.gnu.org/archive/html/info-gnu/2023-01/msg00003.html))
|
||||
- ncurses ([6.4](https://invisible-island.net/ncurses/announce.html#h2-release-notes))
|
||||
@ -3,6 +3,8 @@ if [[ $(cros_target) != "cros_host" ]] ; then
|
||||
openssh_mask="
|
||||
/etc/ssh/ssh_config
|
||||
/etc/ssh/sshd_config
|
||||
/etc/ssh/ssh_config.d
|
||||
/etc/ssh/sshd_config.d
|
||||
/usr/lib*/misc/ssh-keysign
|
||||
"
|
||||
PKG_INSTALL_MASK+=" ${openssh_mask}"
|
||||
|
||||
@ -1,10 +1,2 @@
|
||||
DIST openssh-8_5_P1-hpn-AES-CTR-15.2.diff 30096 BLAKE2B f0c020dd2403806c79d4c37a019996d275655b04997301e247f5c4dd7fad35d12b3b7c25afb1b078d915ef2a4ae02f736f0aec9ba2a8c56a405d7ca303bcadf7 SHA512 4c2dbf99a9b5953fdb955f700272bbaeaa025f108a8860d2190197962b849f8385327af82c4d6a3a130a7fba35a74a8ec9437d642867601acb29817c49632a8f
|
||||
DIST openssh-8_5_P1-hpn-DynWinNoneSwitch-15.2.diff 51428 BLAKE2B 370b88a7da7f148bf5a4d445f05cf593b486e9df53bba027e2e179726f534b68cf9d94edd6e53024e0b6ff5f20e568727bc9d26c94d0d415603602a80d3ad241 SHA512 2d8d887901164b33b2799ff3ec72e86a39ae4a1696e52bcee0872dbae7772fcc534351e6e7f87126ee71b164c74e9091350f14b782f4b242a09f09b4f50d047a
|
||||
DIST openssh-8_5_P1-hpn-PeakTput-15.2.diff 2429 BLAKE2B 849bf3c313719ab7a25c75e82d5dc5ac98365a038b2a66fe58d01eae5b20c7777258b94b5830e799d6909e75c69753cda05a910f3bdab9606fb7d5efa68e05f1 SHA512 c4a56fab55fabd1d902d45f235b603708d43f969920e45c9a57e557dccfa9cade2ec61f26d1ace938f6f73e79f17b12f119b5aea9166cbda8e3435b910500914
|
||||
DIST openssh-9.3_p1-X509-glue-14.1.1.patch.xz 936 BLAKE2B f1716ff7801a27aa2aad06f1cca2ca6988eef65fb0ddcbde483e5c9205506ca40b658f5c8c40b2625afb38ff9b56e40831eadcf751c8ee1c11f69ec559f3c147 SHA512 dace01bcf22b625cd00e18ce019b0be31b6f47f714845f3ebb98ebee41b4db0a769fa09cab63ea17536a7106ec90f2b15f87696ae49fa6f6e31bad94ae09719d
|
||||
DIST openssh-9.3_p1-hpn-15.2-X509-14.1.1-glue.patch.xz 6224 BLAKE2B 47c7054648e8d795b0d9e563d8313242c917df8a3620a60cff2d77f9ae8482cec861244e0f1433f711922f0704b775b7183284960a3baa48a27b99979ad7ffa3 SHA512 728cf2586bcc9480afe71b5106e2286b925857a9e04dce79f744b36cbe3ec2844ac5b4a6bd4b64117f32ad1b04c0943b9d6f935eee826202871588ed9a167387
|
||||
DIST openssh-9.3_p1-hpn-15.2-glue.patch.xz 5044 BLAKE2B 73205bd8f702612df7cb6f29e8b353df854428974dc20d5938033157da64418317f326ab8118893dc47173cd871dc7654a3e3ed601289744560becc98729cd3f SHA512 343b77109158b9af5d8d57f4ac7968bce8277fa3b4dcaa19b76593620fbddbfa832bd76c0da52e12179fe5f391f9fef67e7af51b138ab8cc69a8a6471b6a3909
|
||||
DIST openssh-9.3p1+x509-14.1.1.diff.gz 1221335 BLAKE2B 9203fbb6955fe44ebd7ed031245a90b8df7e149a6ad3205097ffd5d2d7655a0e6b8cd2e20d7f7216fbc6d3e8bd0a1453f3fc028f04e96c0f244ad0772a0e30ab SHA512 8a1036d680d25f99e1a24ea77a2c303e807c0f5c5323043684da9fcc9ff603f80384688935a654cc97216f84f85f00f590dc35d2ee2b1f0fb169f8b427559b2d
|
||||
DIST openssh-9.3p1-sctp-1.2.patch.xz 6836 BLAKE2B d12394ecaa7eca6e0b3590cea83b71537edc3230bc5f7b2992a06a67c77247cc4156be0ba151038a5baee1c3f105f76f1917cc5aad08d1aadadfd6e56858781b SHA512 ba5af014e5b825bf4a57368416a15c6e56afd355780e4c5eab44a396c3f4276ac4d813c5c15b83f3b8edf4763855221743796c038433b292fda9417f0b274a71
|
||||
DIST openssh-9.3p1.tar.gz 1856839 BLAKE2B 45578edf98bba3d23c7cefe60d8a7d3079e7c6676459f7422ace7a2461ab96943fbcadb478633a80f40bc098f2435722850b563714adb78b14922be53cb5753d SHA512 087ff6fe5f6caab4c6c3001d906399e02beffad7277280f11187420c2939fd4befdcb14643862a657ce4cad2f115b82a0a1a2c99df6ee54dcd76b53647637c19
|
||||
DIST openssh-9.3p1.tar.gz.asc 833 BLAKE2B e6533d64b117a400b76b90f71fa856d352dea57d91e4e89fa375429403ac0734cc0a2f075bc58c6bb4f40a8f9776735aa36bdb0bbf3880a2115cea787633e48b SHA512 6222378eb24a445c6c1db255392b405f5369b1af0e92f558d4ba05b0d83ab0d084cb8f4b91d7ae8636f333d970638a6635e2bc7af885135dd34992d87f2ef1f4
|
||||
|
||||
@ -1,48 +0,0 @@
|
||||
diff --git a/auth-options.c b/auth-options.c
|
||||
index b05d6d6f..d1f42f04 100644
|
||||
--- a/auth-options.c
|
||||
+++ b/auth-options.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <stdarg.h>
|
||||
#include <ctype.h>
|
||||
#include <limits.h>
|
||||
+#include <stdlib.h>
|
||||
|
||||
#include "openbsd-compat/sys-queue.h"
|
||||
|
||||
diff --git a/hmac.c b/hmac.c
|
||||
index 1c879640..a29f32c5 100644
|
||||
--- a/hmac.c
|
||||
+++ b/hmac.c
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <string.h>
|
||||
+#include <stdlib.h>
|
||||
|
||||
#include "sshbuf.h"
|
||||
#include "digest.h"
|
||||
diff --git a/krl.c b/krl.c
|
||||
index 8e2d5d5d..c32e147a 100644
|
||||
--- a/krl.c
|
||||
+++ b/krl.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
+#include <stdlib.h>
|
||||
|
||||
#include "sshbuf.h"
|
||||
#include "ssherr.h"
|
||||
diff --git a/mac.c b/mac.c
|
||||
index 51dc11d7..3d11eba6 100644
|
||||
--- a/mac.c
|
||||
+++ b/mac.c
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
|
||||
#include "digest.h"
|
||||
#include "hmac.h"
|
||||
@ -1,18 +0,0 @@
|
||||
diff -u a/openssh-8_5_P1-hpn-DynWinNoneSwitch-15.2.diff b/openssh-8_5_P1-hpn-DynWinNoneSwitch-15.2.diff
|
||||
--- a/openssh-8_5_P1-hpn-DynWinNoneSwitch-15.2.diff 2021-03-16 10:06:45.020527770 -0700
|
||||
+++ b/openssh-8_5_P1-hpn-DynWinNoneSwitch-15.2.diff 2021-03-16 10:07:01.294423665 -0700
|
||||
@@ -1414,14 +1414,3 @@
|
||||
# Example of overriding settings on a per-user basis
|
||||
#Match User anoncvs
|
||||
# X11Forwarding no
|
||||
-diff --git a/version.h b/version.h
|
||||
-index 6b4fa372..332fb486 100644
|
||||
---- a/version.h
|
||||
-+++ b/version.h
|
||||
-@@ -3,4 +3,5 @@
|
||||
- #define SSH_VERSION "OpenSSH_8.5"
|
||||
-
|
||||
- #define SSH_PORTABLE "p1"
|
||||
--#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
|
||||
-+#define SSH_HPN "-hpn15v2"
|
||||
-+#define SSH_RELEASE SSH_VERSION SSH_PORTABLE SSH_HPN
|
||||
@ -1,13 +0,0 @@
|
||||
diff --git a/kex.c b/kex.c
|
||||
index 34808b5c..88d7ccac 100644
|
||||
--- a/kex.c
|
||||
+++ b/kex.c
|
||||
@@ -1205,7 +1205,7 @@ kex_exchange_identification(struct ssh *ssh, int timeout_ms,
|
||||
if (version_addendum != NULL && *version_addendum == '\0')
|
||||
version_addendum = NULL;
|
||||
if ((r = sshbuf_putf(our_version, "SSH-%d.%d-%.100s%s%s\r\n",
|
||||
- PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_VERSION,
|
||||
+ PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE,
|
||||
version_addendum == NULL ? "" : " ",
|
||||
version_addendum == NULL ? "" : version_addendum)) != 0) {
|
||||
oerrno = errno;
|
||||
@ -1,14 +0,0 @@
|
||||
diff --git a/sandbox-seccomp-filter.c b/sandbox-seccomp-filter.c
|
||||
index 2e065ba3..4ce80cb2 100644
|
||||
--- a/sandbox-seccomp-filter.c
|
||||
+++ b/sandbox-seccomp-filter.c
|
||||
@@ -276,6 +276,9 @@ static const struct sock_filter preauth_insns[] = {
|
||||
#ifdef __NR_ppoll
|
||||
SC_ALLOW(__NR_ppoll),
|
||||
#endif
|
||||
+#ifdef __NR_ppoll_time64
|
||||
+ SC_ALLOW(__NR_ppoll_time64),
|
||||
+#endif
|
||||
#ifdef __NR_poll
|
||||
SC_ALLOW(__NR_poll),
|
||||
#endif
|
||||
@ -1,12 +0,0 @@
|
||||
diff -ur a/auth2.c b/auth2.c
|
||||
--- a/auth2.c 2022-05-19 15:59:32.875160028 -0700
|
||||
+++ b/auth2.c 2022-05-19 16:03:44.291594908 -0700
|
||||
@@ -226,7 +226,7 @@
|
||||
int digest_alg;
|
||||
size_t len;
|
||||
u_char *hash;
|
||||
- double delay;
|
||||
+ double delay = 0;
|
||||
|
||||
digest_alg = ssh_digest_maxbytes();
|
||||
if (len = ssh_digest_bytes(digest_alg) > 0) {
|
||||
@ -1,8 +1,6 @@
|
||||
diff --git a/auth.c b/auth.c
|
||||
index 00b168b4..8ee93581 100644
|
||||
--- a/auth.c
|
||||
+++ b/auth.c
|
||||
@@ -729,118 +729,6 @@ fakepw(void)
|
||||
@@ -637,118 +637,6 @@
|
||||
return (&fake);
|
||||
}
|
||||
|
||||
@ -121,11 +119,9 @@ index 00b168b4..8ee93581 100644
|
||||
/* These functions link key/cert options to the auth framework */
|
||||
|
||||
/* Log sshauthopt options locally and (optionally) for remote transmission */
|
||||
diff --git a/canohost.c b/canohost.c
|
||||
index a810da0e..18e9d8d4 100644
|
||||
--- a/canohost.c
|
||||
+++ b/canohost.c
|
||||
@@ -202,3 +202,117 @@ get_local_port(int sock)
|
||||
@@ -205,3 +205,117 @@
|
||||
{
|
||||
return get_sock_port(sock, 1);
|
||||
}
|
||||
@ -243,11 +239,9 @@ index a810da0e..18e9d8d4 100644
|
||||
+ return dnsname;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/readconf.c b/readconf.c
|
||||
index 03369a08..b45898ce 100644
|
||||
--- a/readconf.c
|
||||
+++ b/readconf.c
|
||||
@@ -161,6 +161,7 @@ typedef enum {
|
||||
@@ -160,6 +160,7 @@
|
||||
oClearAllForwardings, oNoHostAuthenticationForLocalhost,
|
||||
oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout,
|
||||
oAddressFamily, oGssAuthentication, oGssDelegateCreds,
|
||||
@ -255,7 +249,7 @@ index 03369a08..b45898ce 100644
|
||||
oServerAliveInterval, oServerAliveCountMax, oIdentitiesOnly,
|
||||
oSendEnv, oSetEnv, oControlPath, oControlMaster, oControlPersist,
|
||||
oHashKnownHosts,
|
||||
@@ -207,9 +208,11 @@ static struct {
|
||||
@@ -207,9 +208,11 @@
|
||||
#if defined(GSSAPI)
|
||||
{ "gssapiauthentication", oGssAuthentication },
|
||||
{ "gssapidelegatecredentials", oGssDelegateCreds },
|
||||
@ -267,7 +261,7 @@ index 03369a08..b45898ce 100644
|
||||
#endif
|
||||
#ifdef ENABLE_PKCS11
|
||||
{ "pkcs11provider", oPKCS11Provider },
|
||||
@@ -1117,6 +1120,10 @@ parse_time:
|
||||
@@ -1125,6 +1128,10 @@
|
||||
intptr = &options->gss_deleg_creds;
|
||||
goto parse_flag;
|
||||
|
||||
@ -278,7 +272,7 @@ index 03369a08..b45898ce 100644
|
||||
case oBatchMode:
|
||||
intptr = &options->batch_mode;
|
||||
goto parse_flag;
|
||||
@@ -2307,6 +2314,7 @@ initialize_options(Options * options)
|
||||
@@ -2341,6 +2348,7 @@
|
||||
options->pubkey_authentication = -1;
|
||||
options->gss_authentication = -1;
|
||||
options->gss_deleg_creds = -1;
|
||||
@ -286,7 +280,7 @@ index 03369a08..b45898ce 100644
|
||||
options->password_authentication = -1;
|
||||
options->kbd_interactive_authentication = -1;
|
||||
options->kbd_interactive_devices = NULL;
|
||||
@@ -2465,6 +2473,8 @@ fill_default_options(Options * options)
|
||||
@@ -2501,6 +2509,8 @@
|
||||
options->gss_authentication = 0;
|
||||
if (options->gss_deleg_creds == -1)
|
||||
options->gss_deleg_creds = 0;
|
||||
@ -295,11 +289,9 @@ index 03369a08..b45898ce 100644
|
||||
if (options->password_authentication == -1)
|
||||
options->password_authentication = 1;
|
||||
if (options->kbd_interactive_authentication == -1)
|
||||
diff --git a/readconf.h b/readconf.h
|
||||
index f7d53b06..c3a91898 100644
|
||||
--- a/readconf.h
|
||||
+++ b/readconf.h
|
||||
@@ -40,6 +40,7 @@ typedef struct {
|
||||
@@ -41,6 +41,7 @@
|
||||
int hostbased_authentication; /* ssh2's rhosts_rsa */
|
||||
int gss_authentication; /* Try GSS authentication */
|
||||
int gss_deleg_creds; /* Delegate GSS credentials */
|
||||
@ -307,11 +299,9 @@ index f7d53b06..c3a91898 100644
|
||||
int password_authentication; /* Try password
|
||||
* authentication. */
|
||||
int kbd_interactive_authentication; /* Try keyboard-interactive auth. */
|
||||
diff --git a/ssh_config.5 b/ssh_config.5
|
||||
index cd0eea86..27101943 100644
|
||||
--- a/ssh_config.5
|
||||
+++ b/ssh_config.5
|
||||
@@ -832,6 +832,16 @@ The default is
|
||||
@@ -843,6 +843,16 @@
|
||||
Forward (delegate) credentials to the server.
|
||||
The default is
|
||||
.Cm no .
|
||||
@ -328,11 +318,9 @@ index cd0eea86..27101943 100644
|
||||
.It Cm HashKnownHosts
|
||||
Indicates that
|
||||
.Xr ssh 1
|
||||
diff --git a/sshconnect2.c b/sshconnect2.c
|
||||
index fea50fab..aeff639b 100644
|
||||
--- a/sshconnect2.c
|
||||
+++ b/sshconnect2.c
|
||||
@@ -776,6 +776,13 @@ userauth_gssapi(struct ssh *ssh)
|
||||
@@ -764,6 +764,13 @@
|
||||
OM_uint32 min;
|
||||
int r, ok = 0;
|
||||
gss_OID mech = NULL;
|
||||
@ -346,7 +334,7 @@ index fea50fab..aeff639b 100644
|
||||
|
||||
/* Try one GSSAPI method at a time, rather than sending them all at
|
||||
* once. */
|
||||
@@ -790,7 +797,7 @@ userauth_gssapi(struct ssh *ssh)
|
||||
@@ -778,7 +785,7 @@
|
||||
elements[authctxt->mech_tried];
|
||||
/* My DER encoding requires length<128 */
|
||||
if (mech->length < 128 && ssh_gssapi_check_mechanism(&gssctxt,
|
||||
@ -1,5 +1,3 @@
|
||||
diff --git a/sandbox-seccomp-filter.c b/sandbox-seccomp-filter.c
|
||||
index 23b40b643..d93a357c6 100644
|
||||
--- a/sandbox-seccomp-filter.c
|
||||
+++ b/sandbox-seccomp-filter.c
|
||||
@@ -257,6 +257,15 @@ static const struct sock_filter preauth_insns[] = {
|
||||
|
||||
@ -5,9 +5,9 @@ https://bugs.gentoo.org/493866
|
||||
|
||||
--- a/regress/putty-ciphers.sh
|
||||
+++ b/regress/putty-ciphers.sh
|
||||
@@ -10,11 +10,17 @@ fi
|
||||
@@ -16,11 +16,17 @@
|
||||
|
||||
for c in aes 3des aes128-ctr aes192-ctr aes256-ctr ; do
|
||||
for c in aes 3des aes128-ctr aes192-ctr aes256-ctr chacha20 ; do
|
||||
verbose "$tid: cipher $c"
|
||||
+ rm -f ${COPY}
|
||||
cp ${OBJ}/.putty/sessions/localhost_proxy \
|
||||
@ -26,7 +26,7 @@ https://bugs.gentoo.org/493866
|
||||
if [ $? -ne 0 ]; then
|
||||
--- a/regress/putty-kex.sh
|
||||
+++ b/regress/putty-kex.sh
|
||||
@@ -14,6 +14,12 @@ for k in dh-gex-sha1 dh-group1-sha1 dh-group14-sha1 ; do
|
||||
@@ -20,6 +20,12 @@
|
||||
${OBJ}/.putty/sessions/kex_$k
|
||||
echo "KEX=$k" >> ${OBJ}/.putty/sessions/kex_$k
|
||||
|
||||
@ -41,7 +41,7 @@ https://bugs.gentoo.org/493866
|
||||
fail "KEX $k failed"
|
||||
--- a/regress/putty-transfer.sh
|
||||
+++ b/regress/putty-transfer.sh
|
||||
@@ -14,6 +14,13 @@ for c in 0 1 ; do
|
||||
@@ -26,6 +26,13 @@
|
||||
cp ${OBJ}/.putty/sessions/localhost_proxy \
|
||||
${OBJ}/.putty/sessions/compression_$c
|
||||
echo "Compression=$c" >> ${OBJ}/.putty/sessions/kex_$k
|
||||
@ -1,5 +1,3 @@
|
||||
diff --git a/gss-serv.c b/gss-serv.c
|
||||
index b5d4bb2d..00e3d118 100644
|
||||
--- a/gss-serv.c
|
||||
+++ b/gss-serv.c
|
||||
@@ -105,7 +105,7 @@ ssh_gssapi_acquire_cred(Gssctxt *ctx)
|
||||
33
sdk_container/src/third_party/coreos-overlay/net-misc/openssh/files/sshd-r1.confd
vendored
Normal file
33
sdk_container/src/third_party/coreos-overlay/net-misc/openssh/files/sshd-r1.confd
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
# /etc/conf.d/sshd: config file for /etc/init.d/sshd
|
||||
|
||||
# Where is your sshd_config file stored?
|
||||
|
||||
SSHD_CONFDIR="${RC_PREFIX%/}/etc/ssh"
|
||||
|
||||
|
||||
# Any random options you want to pass to sshd.
|
||||
# See the sshd(8) manpage for more info.
|
||||
|
||||
SSHD_OPTS=""
|
||||
|
||||
|
||||
# Wait one second (length chosen arbitrarily) to see if sshd actually
|
||||
# creates a PID file, or if it crashes for some reason like not being
|
||||
# able to bind to the address in ListenAddress.
|
||||
|
||||
#SSHD_SSD_OPTS="--wait 1000"
|
||||
|
||||
|
||||
# Pid file to use (needs to be absolute path).
|
||||
|
||||
#SSHD_PIDFILE="${RC_PREFIX%/}/run/sshd.pid"
|
||||
|
||||
|
||||
# Path to the sshd binary (needs to be absolute path).
|
||||
|
||||
#SSHD_BINARY="${RC_PREFIX%/}/usr/sbin/sshd"
|
||||
|
||||
|
||||
# Path to the ssh-keygen binary (needs to be absolute path).
|
||||
|
||||
#SSHD_KEYGEN_BINARY="${RC_PREFIX%/}/usr/bin/ssh-keygen"
|
||||
87
sdk_container/src/third_party/coreos-overlay/net-misc/openssh/files/sshd-r1.initd
vendored
Normal file
87
sdk_container/src/third_party/coreos-overlay/net-misc/openssh/files/sshd-r1.initd
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2019 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
extra_commands="checkconfig"
|
||||
extra_started_commands="reload"
|
||||
|
||||
: ${SSHD_CONFDIR:=${RC_PREFIX%/}/etc/ssh}
|
||||
: ${SSHD_CONFIG:=${SSHD_CONFDIR}/sshd_config}
|
||||
: ${SSHD_PIDFILE:=${RC_PREFIX%/}/run/${SVCNAME}.pid}
|
||||
: ${SSHD_BINARY:=${RC_PREFIX%/}/usr/sbin/sshd}
|
||||
: ${SSHD_KEYGEN_BINARY:=${RC_PREFIX%/}/usr/bin/ssh-keygen}
|
||||
|
||||
command="${SSHD_BINARY}"
|
||||
pidfile="${SSHD_PIDFILE}"
|
||||
command_args="${SSHD_OPTS} -o PidFile=${pidfile} -f ${SSHD_CONFIG}"
|
||||
|
||||
# Wait one second (length chosen arbitrarily) to see if sshd actually
|
||||
# creates a PID file, or if it crashes for some reason like not being
|
||||
# able to bind to the address in ListenAddress (bug 617596).
|
||||
: ${SSHD_SSD_OPTS:=--wait 1000}
|
||||
start_stop_daemon_args="${SSHD_SSD_OPTS}"
|
||||
|
||||
depend() {
|
||||
# Entropy can be used by ssh-keygen, among other things, but
|
||||
# is not strictly required (bug 470020).
|
||||
use logger dns entropy
|
||||
if [ "${rc_need+set}" = "set" ] ; then
|
||||
: # Do nothing, the user has explicitly set rc_need
|
||||
else
|
||||
local x warn_addr
|
||||
for x in $(awk '/^ListenAddress/{ print $2 }' "$SSHD_CONFIG" 2>/dev/null) ; do
|
||||
case "${x}" in
|
||||
0.0.0.0|0.0.0.0:*) ;;
|
||||
::|\[::\]*) ;;
|
||||
*) warn_addr="${warn_addr} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
if [ -n "${warn_addr}" ] ; then
|
||||
need net
|
||||
ewarn "You are binding an interface in ListenAddress statement in your sshd_config!"
|
||||
ewarn "You must add rc_need=\"net.FOO\" to your ${RC_PREFIX%/}/etc/conf.d/sshd"
|
||||
ewarn "where FOO is the interface(s) providing the following address(es):"
|
||||
ewarn "${warn_addr}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
checkconfig() {
|
||||
checkpath --mode 0755 --directory "${RC_PREFIX%/}/var/empty"
|
||||
|
||||
if [ ! -e "${SSHD_CONFIG}" ] ; then
|
||||
eerror "You need an ${SSHD_CONFIG} file to run sshd"
|
||||
eerror "There is a sample file in /usr/share/doc/openssh"
|
||||
return 1
|
||||
fi
|
||||
|
||||
${SSHD_KEYGEN_BINARY} -A || return 2
|
||||
|
||||
"${command}" -t ${command_args} || return 3
|
||||
}
|
||||
|
||||
start_pre() {
|
||||
# Make sure that the user's config isn't busted before we try
|
||||
# to start the daemon (this will produce better error messages
|
||||
# than if we just try to start it blindly).
|
||||
#
|
||||
# We always need to call checkconfig because this function will
|
||||
# also generate any missing host key and you can start a
|
||||
# non-running service with "restart" argument.
|
||||
checkconfig || return $?
|
||||
}
|
||||
|
||||
stop_pre() {
|
||||
# If this is a restart, check to make sure the user's config
|
||||
# isn't busted before we stop the running daemon.
|
||||
if [ "${RC_CMD}" = "restart" ] ; then
|
||||
checkconfig || return $?
|
||||
fi
|
||||
}
|
||||
|
||||
reload() {
|
||||
checkconfig || return $?
|
||||
ebegin "Reloading ${SVCNAME}"
|
||||
start-stop-daemon --signal HUP --pidfile "${pidfile}"
|
||||
eend $?
|
||||
}
|
||||
@ -6,31 +6,28 @@
|
||||
<name>Gentoo Base System</name>
|
||||
</maintainer>
|
||||
<longdescription>
|
||||
OpenSSH is a FREE version of the SSH protocol suite of network connectivity tools that
|
||||
increasing numbers of people on the Internet are coming to rely on. Many users of telnet,
|
||||
rlogin, ftp, and other such programs might not realize that their password is transmitted
|
||||
across the Internet unencrypted, but it is. OpenSSH encrypts all traffic (including passwords)
|
||||
to effectively eliminate eavesdropping, connection hijacking, and other network-level attacks.
|
||||
Additionally, OpenSSH provides a myriad of secure tunneling capabilities, as well as a variety
|
||||
of authentication methods.
|
||||
OpenSSH is a FREE version of the SSH protocol suite of network connectivity tools that
|
||||
increasing numbers of people on the Internet are coming to rely on. Many users of telnet,
|
||||
rlogin, ftp, and other such programs might not realize that their password is transmitted
|
||||
across the Internet unencrypted, but it is. OpenSSH encrypts all traffic (including passwords)
|
||||
to effectively eliminate eavesdropping, connection hijacking, and other network-level attacks.
|
||||
Additionally, OpenSSH provides a myriad of secure tunneling capabilities, as well as a variety
|
||||
of authentication methods.
|
||||
|
||||
The OpenSSH suite includes the ssh program which replaces rlogin and telnet, scp which
|
||||
replaces rcp, and sftp which replaces ftp. Also included is sshd which is the server side of
|
||||
the package, and the other basic utilities like ssh-add, ssh-agent, ssh-keysign, ssh-keyscan,
|
||||
ssh-keygen and sftp-server. OpenSSH supports SSH protocol versions 1.3, 1.5, and 2.0.
|
||||
The OpenSSH suite includes the ssh program which replaces rlogin and telnet, scp which
|
||||
replaces rcp, and sftp which replaces ftp. Also included is sshd which is the server side of
|
||||
the package, and the other basic utilities like ssh-add, ssh-agent, ssh-keysign, ssh-keyscan,
|
||||
ssh-keygen and sftp-server. OpenSSH supports SSH protocol versions 1.3, 1.5, and 2.0.
|
||||
</longdescription>
|
||||
<use>
|
||||
<flag name="hpn">Enable high performance ssh</flag>
|
||||
<flag name="ldns">Use LDNS for DNSSEC/SSHFP validation.</flag>
|
||||
<flag name="livecd">Enable root password logins for live-cd environment.</flag>
|
||||
<flag name="security-key">Include builtin U2F/FIDO support</flag>
|
||||
<flag name="ssl">Enable additional crypto algorithms via OpenSSL</flag>
|
||||
<flag name="X509">Adds support for X.509 certificate authentication</flag>
|
||||
<flag name="xmss">Enable XMSS post-quantum authentication algorithm</flag>
|
||||
</use>
|
||||
<upstream>
|
||||
<remote-id type="cpe">cpe:/a:openbsd:openssh</remote-id>
|
||||
<remote-id type="github">openssh/openssh-portable</remote-id>
|
||||
<remote-id type="sourceforge">hpnssh</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
||||
|
||||
@ -9,59 +9,26 @@ inherit user-info flag-o-matic autotools pam systemd toolchain-funcs verify-sig
|
||||
# and _p? releases.
|
||||
PARCH=${P/_}
|
||||
|
||||
# PV to USE for HPN patches
|
||||
#HPN_PV="${PV^^}"
|
||||
HPN_PV="8.5_P1"
|
||||
|
||||
HPN_VER="15.2"
|
||||
HPN_PATCHES=(
|
||||
${PN}-${HPN_PV/./_}-hpn-DynWinNoneSwitch-${HPN_VER}.diff
|
||||
${PN}-${HPN_PV/./_}-hpn-AES-CTR-${HPN_VER}.diff
|
||||
${PN}-${HPN_PV/./_}-hpn-PeakTput-${HPN_VER}.diff
|
||||
)
|
||||
HPN_GLUE_PATCH="${PN}-9.3_p1-hpn-${HPN_VER}-glue.patch"
|
||||
HPN_PATCH_DIR="HPN-SSH%%20${HPN_VER/./v}%%20${HPN_PV/_P/p}"
|
||||
|
||||
SCTP_VER="1.2"
|
||||
SCTP_PATCH="${PARCH}-sctp-${SCTP_VER}.patch.xz"
|
||||
|
||||
X509_VER="14.1.1"
|
||||
X509_PATCH="${PARCH}+x509-${X509_VER}.diff.gz"
|
||||
X509_GLUE_PATCH="${P}-X509-glue-${X509_VER}.patch"
|
||||
X509_HPN_GLUE_PATCH="${PN}-9.3_p1-hpn-${HPN_VER}-X509-${X509_VER}-glue.patch"
|
||||
|
||||
DESCRIPTION="Port of OpenBSD's free SSH release"
|
||||
HOMEPAGE="https://www.openssh.com/"
|
||||
SRC_URI="mirror://openbsd/OpenSSH/portable/${PARCH}.tar.gz
|
||||
${SCTP_PATCH:+sctp? ( https://dev.gentoo.org/~chutzpah/dist/openssh/${SCTP_PATCH} )}
|
||||
${HPN_VER:+hpn? (
|
||||
$(printf "mirror://sourceforge/project/hpnssh/Patches/${HPN_PATCH_DIR}/%s\n" "${HPN_PATCHES[@]}")
|
||||
https://dev.gentoo.org/~chutzpah/dist/openssh/${HPN_GLUE_PATCH}.xz
|
||||
)}
|
||||
${X509_VER:+X509? (
|
||||
https://roumenpetrov.info/openssh/x509-${X509_VER}/${X509_PATCH}
|
||||
https://dev.gentoo.org/~chutzpah/dist/openssh/${X509_GLUE_PATCH}.xz
|
||||
${HPN_VER:+hpn? ( https://dev.gentoo.org/~chutzpah/dist/openssh/${X509_HPN_GLUE_PATCH}.xz )}
|
||||
)}
|
||||
verify-sig? ( mirror://openbsd/OpenSSH/portable/${PARCH}.tar.gz.asc )
|
||||
"
|
||||
SRC_URI="
|
||||
mirror://openbsd/OpenSSH/portable/${PARCH}.tar.gz
|
||||
verify-sig? ( mirror://openbsd/OpenSSH/portable/${PARCH}.tar.gz.asc )"
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/openssh.org.asc
|
||||
S="${WORKDIR}/${PARCH}"
|
||||
|
||||
LICENSE="BSD GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
|
||||
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
# Probably want to drop ssl defaulting to on in a future version.
|
||||
IUSE="abi_mips_n32 audit debug hpn kerberos ldns libedit livecd pam +pie sctp security-key selinux +ssl static test X X509 xmss"
|
||||
IUSE="abi_mips_n32 audit debug kerberos ldns libedit livecd pam +pie security-key selinux +ssl static test X xmss"
|
||||
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
REQUIRED_USE="
|
||||
hpn? ( ssl )
|
||||
ldns? ( ssl )
|
||||
pie? ( !static )
|
||||
static? ( !kerberos !pam )
|
||||
X509? ( !sctp ssl !xmss )
|
||||
xmss? ( ssl )
|
||||
test? ( ssl )
|
||||
"
|
||||
@ -69,16 +36,13 @@ REQUIRED_USE="
|
||||
# tests currently fail with XMSS
|
||||
REQUIRED_USE+="test? ( !xmss )"
|
||||
|
||||
# Blocker on older gcc-config for bug #872416
|
||||
LIB_DEPEND="
|
||||
!<sys-devel/gcc-config-2.6
|
||||
audit? ( sys-process/audit[static-libs(+)] )
|
||||
ldns? (
|
||||
net-libs/ldns[static-libs(+)]
|
||||
net-libs/ldns[ecdsa(+),ssl(+)]
|
||||
)
|
||||
libedit? ( dev-libs/libedit:=[static-libs(+)] )
|
||||
sctp? ( net-misc/lksctp-tools[static-libs(+)] )
|
||||
security-key? ( >=dev-libs/libfido2-1.5.0:=[static-libs(+)] )
|
||||
selinux? ( >=sys-libs/libselinux-1.28[static-libs(+)] )
|
||||
ssl? ( >=dev-libs/openssl-1.1.1l-r1:0=[static-libs(+)] )
|
||||
@ -98,6 +62,7 @@ DEPEND="${RDEPEND}
|
||||
static? ( ${LIB_DEPEND} )
|
||||
"
|
||||
RDEPEND="${RDEPEND}
|
||||
!net-misc/openssh-contrib
|
||||
pam? ( >=sys-auth/pambase-20081028 )
|
||||
!prefix? ( sys-apps/shadow )
|
||||
X? ( x11-apps/xauth )
|
||||
@ -116,31 +81,41 @@ BDEPEND="
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-7.9_p1-include-stdlib.patch"
|
||||
"${FILESDIR}/${PN}-8.7_p1-GSSAPI-dns.patch" #165444 integrated into gsskex
|
||||
"${FILESDIR}/${PN}-6.7_p1-openssl-ignore-status.patch"
|
||||
"${FILESDIR}/${PN}-7.5_p1-disable-conch-interop-tests.patch"
|
||||
"${FILESDIR}/${PN}-8.0_p1-fix-putty-tests.patch"
|
||||
"${FILESDIR}/${PN}-9.3_p1-GSSAPI-dns.patch" #165444 integrated into gsskex
|
||||
"${FILESDIR}/${PN}-9.3_p1-openssl-ignore-status.patch"
|
||||
"${FILESDIR}/${PN}-9.3_p1-disable-conch-interop-tests.patch"
|
||||
"${FILESDIR}/${PN}-9.3_p1-fix-putty-tests.patch"
|
||||
"${FILESDIR}/${PN}-9.3_p1-deny-shmget-shmat-shmdt-in-preauth-privsep-child.patch"
|
||||
"${FILESDIR}/${PN}-8.9_p1-allow-ppoll_time64.patch" #834019
|
||||
"${FILESDIR}/${PN}-8.9_p1-gss-use-HOST_NAME_MAX.patch" #834044
|
||||
"${FILESDIR}/${PN}-9.3_p1-gss-use-HOST_NAME_MAX.patch" #834044
|
||||
"${FILESDIR}/${PN}-9.3_p1-openssl-version-compat-check.patch"
|
||||
)
|
||||
|
||||
pkg_pretend() {
|
||||
# this sucks, but i'd rather have people unable to `emerge -u openssh`
|
||||
# than not be able to log in to their server any more
|
||||
local missing=()
|
||||
check_feature() { use "${1}" && [[ -z ${!2} ]] && missing+=( "${1}" ); }
|
||||
check_feature hpn HPN_VER
|
||||
check_feature sctp SCTP_PATCH
|
||||
check_feature X509 X509_PATCH
|
||||
if [[ ${#missing[@]} -ne 0 ]] ; then
|
||||
eerror "Sorry, but this version does not yet support features"
|
||||
eerror "that you requested: ${missing[*]}"
|
||||
eerror "Please mask ${PF} for now and check back later:"
|
||||
eerror " # echo '=${CATEGORY}/${PF}' >> /etc/portage/package.mask"
|
||||
die "Missing requested third party patch."
|
||||
local i enabled_eol_flags disabled_eol_flags
|
||||
for i in hpn sctp X509; do
|
||||
if has_version "net-misc/openssh[${i}]"; then
|
||||
enabled_eol_flags+="${i},"
|
||||
disabled_eol_flags+="-${i},"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ -n ${enabled_eol_flags} && ${OPENSSH_EOL_USE_FLAGS_I_KNOW_WHAT_I_AM_DOING} != yes ]]; then
|
||||
ewarn "net-misc/openssh does not support USE='${enabled_eol_flags%,}' anymore."
|
||||
ewarn "The Base system team *STRONGLY* recommends you not rely on this functionality,"
|
||||
ewarn "since these USE flags required third-party patches that often trigger bugs"
|
||||
ewarn "and are of questionable provenance."
|
||||
ewarn
|
||||
ewarn "If you must continue relying on this functionality, switch to"
|
||||
ewarn "net-misc/openssh-contrib. You will have to remove net-misc/openssh from your"
|
||||
ewarn "world file first: 'emerge --deselect net-misc/openssh'"
|
||||
ewarn
|
||||
ewarn "In order to prevent loss of SSH remote login access, we will abort the build."
|
||||
ewarn "Whether you proceed with disabling the USE flags or switch to the -contrib"
|
||||
ewarn "variant, when re-emerging you will have to set"
|
||||
ewarn
|
||||
ewarn " OPENSSH_EOL_USE_FLAGS_I_KNOW_WHAT_I_AM_DOING=yes"
|
||||
|
||||
die "Building net-misc/openssh[${disabled_eol_flags%,}] without OPENSSH_EOL_USE_FLAGS_I_KNOW_WHAT_I_AM_DOING=yes"
|
||||
fi
|
||||
|
||||
# Make sure people who are using tcp wrappers are notified of its removal. #531156
|
||||
@ -150,13 +125,6 @@ pkg_pretend() {
|
||||
fi
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
default
|
||||
|
||||
# We don't have signatures for HPN, X509, so we have to write this ourselves
|
||||
use verify-sig && verify-sig_verify_detached "${DISTDIR}"/${PARCH}.tar.gz{,.asc}
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
sed -i \
|
||||
-e "/_PATH_XAUTH/s:/usr/X11R6/bin/xauth:${EPREFIX}/usr/bin/xauth:" \
|
||||
@ -169,107 +137,6 @@ src_prepare() {
|
||||
|
||||
[[ -d ${WORKDIR}/patches ]] && eapply "${WORKDIR}"/patches
|
||||
|
||||
local PATCHSET_VERSION_MACROS=()
|
||||
|
||||
if use X509 ; then
|
||||
pushd "${WORKDIR}" &>/dev/null || die
|
||||
eapply "${WORKDIR}/${X509_GLUE_PATCH}"
|
||||
popd &>/dev/null || die
|
||||
|
||||
eapply "${WORKDIR}"/${X509_PATCH%.*}
|
||||
eapply "${FILESDIR}/${PN}-9.0_p1-X509-uninitialized-delay.patch"
|
||||
|
||||
# We need to patch package version or any X.509 sshd will reject our ssh client
|
||||
# with "userauth_pubkey: could not parse key: string is too large [preauth]"
|
||||
# error
|
||||
einfo "Patching package version for X.509 patch set ..."
|
||||
sed -i \
|
||||
-e "s/^AC_INIT(\[OpenSSH\], \[Portable\]/AC_INIT([OpenSSH], [${X509_VER}]/" \
|
||||
"${S}"/configure.ac || die "Failed to patch package version for X.509 patch"
|
||||
|
||||
einfo "Patching version.h to expose X.509 patch set ..."
|
||||
sed -i \
|
||||
-e "/^#define SSH_PORTABLE.*/a #define SSH_X509 \"-PKIXSSH-${X509_VER}\"" \
|
||||
"${S}"/version.h || die "Failed to sed-in X.509 patch version"
|
||||
PATCHSET_VERSION_MACROS+=( 'SSH_X509' )
|
||||
fi
|
||||
|
||||
if use sctp ; then
|
||||
eapply "${WORKDIR}"/${SCTP_PATCH%.*}
|
||||
|
||||
einfo "Patching version.h to expose SCTP patch set ..."
|
||||
sed -i \
|
||||
-e "/^#define SSH_PORTABLE/a #define SSH_SCTP \"-sctp-${SCTP_VER}\"" \
|
||||
"${S}"/version.h || die "Failed to sed-in SCTP patch version"
|
||||
PATCHSET_VERSION_MACROS+=( 'SSH_SCTP' )
|
||||
|
||||
einfo "Disabling known failing test (cfgparse) caused by SCTP patch ..."
|
||||
sed -i \
|
||||
-e "/\t\tcfgparse \\\/d" \
|
||||
"${S}"/regress/Makefile || die "Failed to disable known failing test (cfgparse) caused by SCTP patch"
|
||||
fi
|
||||
|
||||
if use hpn ; then
|
||||
local hpn_patchdir="${T}/${P}-hpn${HPN_VER}"
|
||||
mkdir "${hpn_patchdir}" || die
|
||||
cp $(printf -- "${DISTDIR}/%s\n" "${HPN_PATCHES[@]}") "${hpn_patchdir}" || die
|
||||
pushd "${hpn_patchdir}" &>/dev/null || die
|
||||
eapply "${WORKDIR}/${HPN_GLUE_PATCH}"
|
||||
use X509 && eapply "${WORKDIR}/${X509_HPN_GLUE_PATCH}"
|
||||
use sctp && eapply "${FILESDIR}"/${PN}-8.5_p1-hpn-${HPN_VER}-sctp-glue.patch
|
||||
popd &>/dev/null || die
|
||||
|
||||
eapply "${hpn_patchdir}"
|
||||
|
||||
use X509 || eapply "${FILESDIR}/openssh-8.6_p1-hpn-version.patch"
|
||||
|
||||
einfo "Patching Makefile.in for HPN patch set ..."
|
||||
sed -i \
|
||||
-e "/^LIBS=/ s/\$/ -lpthread/" \
|
||||
"${S}"/Makefile.in || die "Failed to patch Makefile.in"
|
||||
|
||||
einfo "Patching version.h to expose HPN patch set ..."
|
||||
sed -i \
|
||||
-e "/^#define SSH_PORTABLE/a #define SSH_HPN \"-hpn${HPN_VER//./v}\"" \
|
||||
"${S}"/version.h || die "Failed to sed-in HPN patch version"
|
||||
PATCHSET_VERSION_MACROS+=( 'SSH_HPN' )
|
||||
|
||||
if [[ -n "${HPN_DISABLE_MTAES}" ]] ; then
|
||||
einfo "Disabling known non-working MT AES cipher per default ..."
|
||||
|
||||
cat > "${T}"/disable_mtaes.conf <<- EOF
|
||||
|
||||
# HPN's Multi-Threaded AES CTR cipher is currently known to be broken
|
||||
# and therefore disabled per default.
|
||||
DisableMTAES yes
|
||||
EOF
|
||||
sed -i \
|
||||
-e "/^#HPNDisabled.*/r ${T}/disable_mtaes.conf" \
|
||||
"${S}"/sshd_config || die "Failed to disabled MT AES ciphers in sshd_config"
|
||||
|
||||
sed -i \
|
||||
-e "/AcceptEnv.*_XXX_TEST$/a \\\tDisableMTAES\t\tyes" \
|
||||
"${S}"/regress/test-exec.sh || die "Failed to disable MT AES ciphers in test config"
|
||||
fi
|
||||
fi
|
||||
|
||||
if use X509 || use sctp || use hpn ; then
|
||||
einfo "Patching sshconnect.c to use SSH_RELEASE in send_client_banner() ..."
|
||||
sed -i \
|
||||
-e "s/PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_VERSION/PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE/" \
|
||||
"${S}"/sshconnect.c || die "Failed to patch send_client_banner() to use SSH_RELEASE (sshconnect.c)"
|
||||
|
||||
einfo "Patching sshd.c to use SSH_RELEASE in sshd_exchange_identification() ..."
|
||||
sed -i \
|
||||
-e "s/PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_VERSION/PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE/" \
|
||||
"${S}"/sshd.c || die "Failed to patch sshd_exchange_identification() to use SSH_RELEASE (sshd.c)"
|
||||
|
||||
einfo "Patching version.h to add our patch sets to SSH_RELEASE ..."
|
||||
sed -i \
|
||||
-e "s/^#define SSH_RELEASE.*/#define SSH_RELEASE SSH_VERSION SSH_PORTABLE ${PATCHSET_VERSION_MACROS[*]}/" \
|
||||
"${S}"/version.h || die "Failed to patch SSH_RELEASE (version.h)"
|
||||
fi
|
||||
|
||||
eapply_user #473004
|
||||
|
||||
# These tests are currently incompatible with PORTAGE_TMPDIR/sandbox
|
||||
@ -283,11 +150,6 @@ src_prepare() {
|
||||
-e 's:-D_FORTIFY_SOURCE=2::'
|
||||
)
|
||||
|
||||
# The -ftrapv flag ICEs on hppa #505182
|
||||
use hppa && sed_args+=(
|
||||
-e '/CFLAGS/s:-ftrapv:-fdisable-this-test:'
|
||||
-e '/OSSH_CHECK_CFLAG_LINK.*-ftrapv/d'
|
||||
)
|
||||
# _XOPEN_SOURCE causes header conflicts on Solaris
|
||||
[[ ${CHOST} == *-solaris* ]] && sed_args+=(
|
||||
-e 's/-D_XOPEN_SOURCE//'
|
||||
@ -323,20 +185,17 @@ src_configure() {
|
||||
--datadir="${EPREFIX}"/usr/share/openssh
|
||||
--with-privsep-path="${EPREFIX}"/var/empty
|
||||
--with-privsep-user=sshd
|
||||
--with-hardening
|
||||
$(use_with audit audit linux)
|
||||
$(use_with kerberos kerberos5 "${EPREFIX}"/usr)
|
||||
# We apply the sctp patch conditionally, so can't pass --without-sctp
|
||||
# unconditionally else we get unknown flag warnings.
|
||||
$(use sctp && use_with sctp)
|
||||
$(use_with ldns)
|
||||
$(use_with libedit)
|
||||
$(use_with pam)
|
||||
$(use_with pie)
|
||||
$(use_with selinux)
|
||||
$(usex X509 '' "$(use_with security-key security-key-builtin)")
|
||||
$(use_with security-key security-key-builtin)
|
||||
$(use_with ssl openssl)
|
||||
$(use_with ssl ssl-engine)
|
||||
$(use_with !elibc_Cygwin hardening) #659210
|
||||
)
|
||||
|
||||
if use elibc_musl; then
|
||||
@ -368,6 +227,37 @@ src_test() {
|
||||
emake -j1 "${tests[@]}" </dev/null
|
||||
}
|
||||
|
||||
insert_include() {
|
||||
local src_config=${1} options=${2} includedir=${3}
|
||||
local name copy regexp_options regexp lineno comment_options
|
||||
|
||||
name=${src_config##*/}
|
||||
copy="${T}/${name}"
|
||||
cp -a "${src_config}" "${copy}" || die
|
||||
|
||||
# Catch "Option ", "#Option " or "# Option ".
|
||||
regexp_options=${options//,/'\|'}
|
||||
regexp='^[[:space:]]*#\?[[:space:]]*\('"${regexp_options}"'\)[[:space:]]'
|
||||
lineno=$(set -o pipefail; grep -ne "${regexp}" -m 1 "${copy}" | cut -d : -f 1 || die)
|
||||
# We have found a first line with the option, now find a first
|
||||
# non-comment line just above the comments of the option. The
|
||||
# lineno - 2 is here to ignore the line just above the option
|
||||
# in case the comment block is separated by an empty line.
|
||||
lineno=$(set -o pipefail; head -n $((lineno - 2)) "${copy}" | grep -ne '^[[:space:]]*\([^#]\|$\)' | tail -n 1 | cut -d : -f 1 || die)
|
||||
|
||||
comment_options=${options//,/ or }
|
||||
{
|
||||
head -n "${lineno}" "${copy}" || die
|
||||
cat <<-EOF || die
|
||||
# Make sure that all ${comment_options} options are below this Include!
|
||||
Include "${EPREFIX}/${includedir}/*.conf"
|
||||
|
||||
EOF
|
||||
tail -n "+${lineno}" "${copy}" || die
|
||||
} >"${src_config}"
|
||||
rm -f "${copy}" || die
|
||||
}
|
||||
|
||||
# Gentoo tweaks to default config files.
|
||||
tweak_ssh_configs() {
|
||||
local locale_vars=(
|
||||
@ -380,46 +270,69 @@ tweak_ssh_configs() {
|
||||
LANGUAGE LC_ADDRESS LC_IDENTIFICATION LC_MEASUREMENT LC_NAME LC_PAPER LC_TELEPHONE
|
||||
)
|
||||
|
||||
# First the server config.
|
||||
cat <<-EOF >> "${ED}"/etc/ssh/sshd_config
|
||||
dodir /etc/ssh/ssh_config.d /etc/ssh/sshd_config.d
|
||||
|
||||
# Allow client to pass locale environment variables. #367017
|
||||
AcceptEnv ${locale_vars[*]}
|
||||
insert_include "${ED}"/etc/ssh/ssh_config 'Host,Match' '/etc/ssh/ssh_config.d'
|
||||
insert_include "${ED}"/etc/ssh/sshd_config 'Match' '/etc/ssh/sshd_config.d'
|
||||
|
||||
# Allow client to pass COLORTERM to match TERM. #658540
|
||||
AcceptEnv COLORTERM
|
||||
EOF
|
||||
|
||||
# Then the client config.
|
||||
cat <<-EOF >> "${ED}"/etc/ssh/ssh_config
|
||||
|
||||
# Send locale environment variables. #367017
|
||||
cat <<-EOF >> "${ED}"/etc/ssh/ssh_config.d/9999999gentoo.conf || die
|
||||
# Send locale environment variables (bug #367017)
|
||||
SendEnv ${locale_vars[*]}
|
||||
|
||||
# Send COLORTERM to match TERM. #658540
|
||||
# Send COLORTERM to match TERM (bug #658540)
|
||||
SendEnv COLORTERM
|
||||
EOF
|
||||
|
||||
cat <<-EOF >> "${ED}"/etc/ssh/ssh_config.d/9999999gentoo-security.conf || die
|
||||
RevokedHostKeys "${EPREFIX}/etc/ssh/ssh_revoked_hosts"
|
||||
EOF
|
||||
|
||||
cat <<-EOF >> "${ED}"/etc/ssh/ssh_revoked_hosts || die
|
||||
# https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
|
||||
EOF
|
||||
|
||||
# Move sshd's Subsystem option to a drop-in file.
|
||||
grep -ie 'subsystem' "${ED}"/etc/ssh/sshd_config >"${ED}"/etc/ssh/sshd_config.d/9999999gentoo-subsystem.conf || die
|
||||
sed -i -e '/[Ss]ubsystem/d' "${ED}"/etc/ssh/sshd_config
|
||||
|
||||
cat <<-EOF >> "${ED}"/etc/ssh/sshd_config.d/9999999gentoo.conf || die
|
||||
# Allow client to pass locale environment variables (bug #367017)
|
||||
AcceptEnv ${locale_vars[*]}
|
||||
|
||||
# Allow client to pass COLORTERM to match TERM (bug #658540)
|
||||
AcceptEnv COLORTERM
|
||||
EOF
|
||||
|
||||
if use pam ; then
|
||||
sed -i \
|
||||
-e "/^#UsePAM /s:.*:UsePAM yes:" \
|
||||
-e "/^#PasswordAuthentication /s:.*:PasswordAuthentication no:" \
|
||||
-e "/^#PrintMotd /s:.*:PrintMotd no:" \
|
||||
-e "/^#PrintLastLog /s:.*:PrintLastLog no:" \
|
||||
"${ED}"/etc/ssh/sshd_config || die
|
||||
cat <<-EOF >> "${ED}"/etc/ssh/sshd_config.d/9999999gentoo-pam.conf || die
|
||||
UsePAM yes
|
||||
# This interferes with PAM.
|
||||
PasswordAuthentication no
|
||||
# PAM can do its own handling of MOTD.
|
||||
PrintMotd no
|
||||
PrintLastLog no
|
||||
EOF
|
||||
fi
|
||||
|
||||
if use livecd ; then
|
||||
sed -i \
|
||||
-e '/^#PermitRootLogin/c# Allow root login with password on livecds.\nPermitRootLogin Yes' \
|
||||
"${ED}"/etc/ssh/sshd_config || die
|
||||
cat <<-EOF >> "${ED}"/etc/ssh/sshd_config.d/9999999gentoo-livecd.conf || die
|
||||
# Allow root login with password on livecds.
|
||||
PermitRootLogin Yes
|
||||
EOF
|
||||
fi
|
||||
|
||||
local sshd_drop_ins=("${ED}"/etc/ssh/sshd_config.d/*.conf)
|
||||
fperms 0700 /etc/ssh/sshd_config.d
|
||||
fperms 0600 "${sshd_drop_ins[@]#${ED}}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
emake install-nokeys DESTDIR="${D}"
|
||||
fperms 600 /etc/ssh/sshd_config
|
||||
dobin contrib/ssh-copy-id
|
||||
newinitd "${FILESDIR}"/sshd-r1.initd sshd
|
||||
newconfd "${FILESDIR}"/sshd-r1.confd sshd
|
||||
|
||||
if use pam; then
|
||||
newpamd "${FILESDIR}"/sshd.pam_include.2 sshd
|
||||
@ -428,9 +341,7 @@ src_install() {
|
||||
tweak_ssh_configs
|
||||
|
||||
doman contrib/ssh-copy-id.1
|
||||
dodoc CREDITS OVERVIEW README* TODO sshd_config
|
||||
use hpn && dodoc HPN-README
|
||||
use X509 || dodoc ChangeLog
|
||||
dodoc ChangeLog CREDITS OVERVIEW README* TODO sshd_config
|
||||
|
||||
diropts -m 0700
|
||||
dodir /etc/skel/.ssh
|
||||
@ -501,16 +412,4 @@ pkg_postinst() {
|
||||
elog "no longer support dss/rsa/ecdsa keys. You will need to generate ed25519 keys"
|
||||
elog "and update all clients/servers that utilize them."
|
||||
fi
|
||||
|
||||
if use hpn && [[ -n "${HPN_DISABLE_MTAES}" ]] ; then
|
||||
elog ""
|
||||
elog "HPN's multi-threaded AES CTR cipher is currently known to be broken"
|
||||
elog "and therefore disabled at runtime per default."
|
||||
elog "Make sure your sshd_config is up to date and contains"
|
||||
elog ""
|
||||
elog " DisableMTAES yes"
|
||||
elog ""
|
||||
elog "Otherwise you maybe unable to connect to this sshd using any AES CTR cipher."
|
||||
elog ""
|
||||
fi
|
||||
}
|
||||
@ -13,9 +13,9 @@ USE_EXPAND="${USE_EXPAND} GO_VERSION"
|
||||
# Extra use flags for CoreOS SDK
|
||||
USE="${USE} cros_host expat -cracklib -introspection -cups -tcpd -berkdb"
|
||||
|
||||
# Only net-analyzer/nmap uses lua and it's compatible only with lua5-3.
|
||||
LUA_SINGLE_TARGET="lua5-3"
|
||||
LUA_TARGETS="lua5-3"
|
||||
# Only net-analyzer/nmap uses lua and it's compatible only with lua5-4.
|
||||
LUA_SINGLE_TARGET="lua5-4"
|
||||
LUA_TARGETS="lua5-4"
|
||||
|
||||
# Use Python 3 as the default version
|
||||
USE="${USE} -python_single_target_python2_7 python_single_target_python3_11"
|
||||
|
||||
@ -9,14 +9,14 @@
|
||||
|
||||
# Needed by arm64-native SDK.
|
||||
=app-crypt/efitools-1.9.2 ~arm64
|
||||
=app-crypt/rhash-1.4.2 ~arm64
|
||||
=app-emulation/open-vmdk-1.0 *
|
||||
|
||||
# Keep versions on both arches in sync.
|
||||
=app-emulation/qemu-7.2.3 ~arm64
|
||||
=app-misc/pax-utils-1.3.7 ~amd64
|
||||
|
||||
# Required for addressing CVE-2022-3715.
|
||||
=app-shells/bash-5.2_p15-r3 ~amd64 ~arm64
|
||||
=app-shells/bash-5.2_p15-r5 ~amd64 ~arm64
|
||||
|
||||
# No keyword for arm64 yet.
|
||||
=coreos-devel/fero-client-0.1.1 **
|
||||
@ -25,9 +25,6 @@
|
||||
=dev-embedded/u-boot-tools-2021.04_rc2 ~arm64
|
||||
=dev-lang/nasm-2.15.05 ~arm64
|
||||
|
||||
# Keep versions on both arches in sync.
|
||||
=dev-lang/python-3.10.12 ~amd64
|
||||
|
||||
# Accept unstable host Rust compilers
|
||||
=dev-lang/rust-1.70.0-r1 ~amd64 ~arm64
|
||||
|
||||
@ -36,7 +33,9 @@
|
||||
|
||||
# Keep versions on both arches in sync.
|
||||
=dev-libs/ding-libs-0.6.1-r1 ~arm64
|
||||
=dev-libs/elfutils-0.189-r1 ~amd64
|
||||
=dev-libs/libgcrypt-1.10.1-r3 ~arm64
|
||||
=dev-libs/nettle-3.9.1 ~arm64
|
||||
=dev-util/bpftool-6.3 ~arm64
|
||||
|
||||
# Keep versions on both arches in sync.
|
||||
@ -61,13 +60,14 @@
|
||||
=sys-apps/coreutils-9.3-r2 ~arm64
|
||||
=sys-apps/kexec-tools-2.0.24 ~arm64
|
||||
=sys-apps/policycoreutils-3.1-r4 ~arm64
|
||||
=sys-apps/sandbox-2.30-r1 ~arm64
|
||||
=sys-apps/sandbox-2.32 ~arm64
|
||||
=sys-apps/semodule-utils-3.1 ~arm64
|
||||
|
||||
# Needed to force enable ipvsadm for arm64.
|
||||
=sys-cluster/ipvsadm-1.27-r1 **
|
||||
|
||||
# Keep versions on both arches in sync.
|
||||
=sys-devel/binutils-2.40-r5 ~arm64
|
||||
=sys-firmware/edk2-aarch64-18.02 **
|
||||
|
||||
# FIPS support is still being tested.
|
||||
@ -75,10 +75,14 @@
|
||||
|
||||
# Keep versions on both arches in sync.
|
||||
=sys-fs/multipath-tools-0.9.5 ~amd64
|
||||
=sys-libs/binutils-libs-2.40-r5 ~arm64
|
||||
=sys-libs/libselinux-3.1-r3 ~arm64
|
||||
=sys-libs/libsemanage-3.1-r2 ~arm64
|
||||
=sys-libs/libsepol-3.1 ~arm64
|
||||
|
||||
# Needed to fix CVE-2023-29491.
|
||||
=sys-libs/ncurses-6.4_p20230527 ~amd64 ~arm64
|
||||
|
||||
# A dependency of app-shells/bash version that we need for security
|
||||
# fixes.
|
||||
=sys-libs/readline-8.2_p1 ~amd64 ~arm64
|
||||
|
||||
@ -1,3 +1,8 @@
|
||||
# Overwrite portage-stable mask. The regressions that this version of
|
||||
# ncurses caused are in Gentoo packages that we don't have in
|
||||
# Flatcar. And we need it for a security fix.
|
||||
=sys-libs/ncurses-6.4_p20230527
|
||||
|
||||
# Overwrite portage-stable mask. We are delaying the transition to
|
||||
# libxcrypt, because we need to figure out how to solve the dep loop
|
||||
# that results from the migration (python -> virtual/libcrypt ->
|
||||
|
||||
@ -1,56 +0,0 @@
|
||||
DIST ncurses-6.3-20211026.patch.gz 117363 BLAKE2B 74c6c80271edc3b69d17c891436e48ee0579b3d16dd1bbd42f953be5b6ef07596343abd34f4d508b0cb371c1c0febfec12d65e938739892a617c8b141f599753 SHA512 25a99bc9cb7a18eb8fd16a0f887bae90c2551e0228b077d28f7217e58190f4b19a526350c999922f7394a1b749e834643c1bf5f339248b842717c146a3ec1df4
|
||||
DIST ncurses-6.3-20211026.patch.gz.asc 729 BLAKE2B 470aa4aad00d0dfa9924ca3247d720b720563bfe5a3b5c9571acb4c74a7b3fb55adbae6b0aa854eb0e29c56d7949fa1e3b6d959c25681f1b46c23c96a3c0e054 SHA512 276e8a09ee6fddf20be38b9d8a6f93cbafcec51ed17de375b9d2f4f6c34ff546fdbd81083f54aba1a5aaea5c2c691c25754dfca47568c5b70197437420dd2581
|
||||
DIST ncurses-6.3-20211030.patch.gz 46304 BLAKE2B 6fa0f5223c97dc045117c208b92e75aad61638585506aeed0fa5cd6b215f67d212fc780e527f1281ae77063edb1ef9b3a3671b00d306fe322c3ca1b34c1d4d81 SHA512 90440af3959a17388999f07a3b40f770c5511bceda6a39d4c56f867dc5ae8494e49cfb700eb79e31422ebfd1b1990f6d7912083c688963139446f1e43e9d08c8
|
||||
DIST ncurses-6.3-20211030.patch.gz.asc 729 BLAKE2B af1715038a877ebe10660872bed82d536df410f8987508aca7ffed6d19fcdc95a2f5bd8f527b5a30580b07d7c770fade7bac2cfce3e20315faf472eaeb075d5f SHA512 526ff0ff7030cef711e92150fe0f2be7076bf8fe8c7b5fff9ee709c202e747c921479bf3efc2c3da8df2f0d7926de6b1571d03270e49bf64bc539193b0a3020d
|
||||
DIST ncurses-6.3-20211106.patch.gz 3995 BLAKE2B fbacfd6bfbf64b2935d47f648bd74c93136ea8d17b51e218b80a24695b52246ce8ec01704a0636692bae72815c8b93dec8573570dfd126b19645ec90926e818a SHA512 799819ed01967387fdca4755ab44401f0dc90306f6f771c894ce6702c929e2ff87f45d3e1c2e683cc32bb01553f3332c3a7591a00b7a4bdff93da25307379bdc
|
||||
DIST ncurses-6.3-20211106.patch.gz.asc 729 BLAKE2B a60360000338be6f19e9769d901b03917a632d2da961523ea81191b44b04430d757ba0dea30a6b02e29b324dffdc447cf1fe729428138e0e71b138d84aed26b4 SHA512 3902c88633078ccfebda4ce67dbf6e4ccf0e8be296a0193d07ccf51b56dd75c34f326f885330c90d81aa0d487aad513eb797c3916aba682a8ed6673b51483c84
|
||||
DIST ncurses-6.3-20211113.patch.gz 116573 BLAKE2B 5c0926fa97628e1e15f10f47e3c668d5867c066b03b80ec1be2cada6a48ec02aca81dbf997718fc1d9bbdd36016de62981eb19e875aac4b4c531c90c0a2f1c48 SHA512 2225859cb6770d31cd5d147f1b767c61ad28534542b64e3e22a9630977f2cabcdad11313d533c0c462f53a6e0dc17cd80985ca759d796658775676720e50998a
|
||||
DIST ncurses-6.3-20211113.patch.gz.asc 729 BLAKE2B 16e9645ea71db7afa7b3a52831b04920e9d7d960bfef074361ac77264a28b9bd95a6240e1e3e2e96373615f2915a35acf6d3c21b63a6c4130fd35bf3c65dbbe2 SHA512 7d5b8740512b31bc5b6ace1cc9ebbdf36f2092bc88aa3994f757085ac2add814648daa70c18410a4433fb6327115d9b1762eaf93f9d337de3e10a9707f411f1f
|
||||
DIST ncurses-6.3-20211115.patch.gz 2259 BLAKE2B bf3ecd64919707bdf25b1db20d99c68d47d122406bcc4884c370d9b13c3df4bd8fd5e913d3f5ac7dcfbec58f4910d2d42176c32d879095c45e2513cc4c933a22 SHA512 7571da910f51152200d2fa76659d1a253ceb7022c00bfa587188c7ad1f6896ed836eafa3e724933fe3c4bfc03aaf6ac1d51102c5db1a3e37f944f3b15d50f9db
|
||||
DIST ncurses-6.3-20211115.patch.gz.asc 729 BLAKE2B 8b853439790674b22029d4d71a65b29019bfc1d2109b44cc2d08a08cc396bd5b784ca8169e4a8edc1fc4e9a08611b89c50f9e3a18781aef0b5a56ea20b335117 SHA512 5427ac588426bba6e9b579faa6c1e1b17839fe2e3327dcd76ac187a46792693da327b279eef35c43e39b08f755cf930e7efe03a753d8b8ba326c039408131d60
|
||||
DIST ncurses-6.3-20211120.patch.gz 122226 BLAKE2B 390bb1bee13b83d282ce31a26327bf46000d74851f5d2a363e04915ef73ca5ffaf365255d6696b0c4d10fbb1fb124baa07fa0b841f378b018a37ac1a741aa579 SHA512 37eca2eb6478332e095c139eaa0ff740b8bdf82da4a1c0e990010ffaa3385b38a1c6956ff3f1dc182894384d9face8c265d35faa3ffd0a517c404890b51d177e
|
||||
DIST ncurses-6.3-20211120.patch.gz.asc 729 BLAKE2B dd03ec2ae80bfb83ebce5b55410914ce3d5015da2933984b04d2e4d6170b42cccf109bbe2312b4d77c83933f9bad9af7f19e8b1ff23f3791b99238c2d0834891 SHA512 5693a92e631718c6f2bc791e994f5e225a70cd6eab9df5b5da2c180b96480e77c0e5485f48653cffdfe267048175523b7dc42414083500310fb87554043dd19c
|
||||
DIST ncurses-6.3-20211127.patch.gz 38780 BLAKE2B b9e6e1c065c7aa97809e65a0af2bb398e7d2ed17c95c35bc4320451ad47efd1a292dfb74d2ff53ff12a68c9cabd6464fe7be40e389c35c4f99ebdc66ec7ad77f SHA512 e2971c8606173da0e044630622506fdef4b83e968b2c501c4e1db9b0b4e54cf93d76570fdacf0edeff986d9cdd728471050c9365881092817b54bd83917fdb25
|
||||
DIST ncurses-6.3-20211127.patch.gz.asc 729 BLAKE2B 11ccba2a3310a70b228d0df1b088501ba30f159878662791ce3a294b48e0819c6619dff8763590cdfd74d6e2dc24a5897705808e6da64510d49eea7889e3b1a0 SHA512 8949ab4d8e6b124769bac40becf2853bc0f370814fdd013c7b0c638b9008c1628e5b7cc372f95731549a5cb184ac6d80172f985e114d186a30cebd67268dae61
|
||||
DIST ncurses-6.3-20211204.patch.gz 29875 BLAKE2B ce2c8ada23ea01d22baa8d68bb34bfebd3913ce8dd787f1a3825eb07c7a8d83dfe4317e755fc2a16469f6936022a2c45155ea5e3aaf9d01a5caaf124cf1eede2 SHA512 30454d917631cfad474191dbb7e1318e5370e829cab4b63470f51e9c13c953975d999a41cb10a35dfabcf038fe666247d32659f597a6e8a8bac572a4fe6b3fd6
|
||||
DIST ncurses-6.3-20211204.patch.gz.asc 729 BLAKE2B b6cc88dd5ac8edc1afa60baccb8af84daf00d8806822f04284c78f0ed132f7fcd839f4d39bc62ff58d48bd3fbf504baab9bb9815a4c236f0bbdbcf23798be71e SHA512 5dbbd09311d4f5bcf1697373945db190925c0d7d1e0aa3d65f83608e34a9c407a74df8553581ec5a49d634e94261ba8f5fac26dbe9718177df173fc4e52543e2
|
||||
DIST ncurses-6.3-20211211.patch.gz 5277 BLAKE2B be82f85d49e28a25ef8c26dda4355ac111fab68917d157af05289b518a669e7e42a1f6bf65a813bb3d0747e56cd2723ee1dfa28dc02501ae8350ac74e01c1b39 SHA512 c57157bc401190867aad64f4503e438777606786814de32b38e44df6d73733b91b5c5ca4e173035dd5ccfddbdca2814fdad7a1781f6a144adae4d96d2c6e7e78
|
||||
DIST ncurses-6.3-20211211.patch.gz.asc 729 BLAKE2B 01ba5f095250a316fdf30f3f15032804db351c5995dda85820e67cacbb62a0d8a750c4bdfbe6deb9654f01ef124a78ef89b9fe41e4b494561ffa5a79f243c72e SHA512 17973f01a765d121597b3cff6fed2feffe5ff895c4589ea08a86134ba3b9913742f740deba9369d2e7aa89aa033c1925b4d49518d188cae57ba83ff5a3668225
|
||||
DIST ncurses-6.3-20211219.patch.gz 6874 BLAKE2B a5b98f1a0fc7b31340713f5aa2a0106184e270ac2312851a5a92ff6947d70d86e9af849a3830f5306c17bad58fbda4640b4cc15715b23cb6e2411b7f86ba0282 SHA512 c38b31e133d336fb50936cc176a04fa076c197c6e6fe56beb840002d6ac65c76c4a3d1f2506122b1095d680ce254a886b52c56194f2fe586edf69355d68f2a45
|
||||
DIST ncurses-6.3-20211219.patch.gz.asc 729 BLAKE2B 2ff431a67bf8ac671ec330c8ea7c61e6467cf2c7acb7760ebe035b72a05e675b1945e891d55943f1dfe0fed0c29f91731094ae5d198e11af6d9d0a21534282ed SHA512 7d6a3a0e4a51c885fa2ef37c71f089b7493daa57a59cb02188bef64597657fabb7dc20fce1d55bbd4c368987becdc1dcb89cdce14b45576ce7657522046d8b2b
|
||||
DIST ncurses-6.3-20211225.patch.gz 205972 BLAKE2B 34ea7243f7f8ecff69e60a90fc1a0a9b9d69b4e87227714d7ae8f603c3b16f82466c96987e7696fbb45005dbaa2c732f85a79b4fc39a61f8555bac661f27ba53 SHA512 1c2c1687233cfc72cf050883bbee60d88ed179e0fa865dd752985e83add68b5278e498b2e9bd2658b00ef7791e04fc456f43e82fcbb8cb4ed46365bff3c336d8
|
||||
DIST ncurses-6.3-20211225.patch.gz.asc 729 BLAKE2B efc0b1a5cf93c71912ab6a7232ddc7c50d2369a955992e6e60f8d86e56aee3cf539c82e082951d5b6215bbde835219588619ae95525b08a54486d3c75ffe3658 SHA512 f2bb524f604883858015a23fbeb698db8483afb88012b3271bfa10935fc71845088b7b5c9fcf950ea9fc2aaa0e2baa4147a8d9f4e42902d3be9f424ce01f7ad4
|
||||
DIST ncurses-6.3-20220101.patch.gz 11576 BLAKE2B 76b2ff3bb028bd6ebbcfd0f79e20aa5fd06806279c569e2640e9b6de83899913ef8755c37888a65cdce3ee701db2ef704181de6d36417abfc158fe651d5c0e68 SHA512 07dbf0def9d21a6b701f4f3d18a8f82d5115f8e4d826a57bf5914534029c79aad2b539f60ab5b1795886894f490a9f604acddce3a77cdd474d80db5428568b97
|
||||
DIST ncurses-6.3-20220101.patch.gz.asc 729 BLAKE2B c86a9999b42fb312c1452f619269bdc5c1293c19cb8adb2436b5670acf706800a951d266f2c1b78caf1ab10608933e99fc49e761eaef1a658b0ed35fc4816ea9 SHA512 1ddbcdef1e7b5a04dbf0a7b371cd775337ca3ac39247f5215e5c6d099d4758367b98c28a6d5568a08bdcdcb7ff29a7ef2936b12b431d9a0e00eaad2cc78976d4
|
||||
DIST ncurses-6.3-20220115.patch.gz 294400 BLAKE2B 97293251ae0c6322df5e4663fca4991e5a1978ad63f1d7d015027dfd6e5dc5e1a52d46683199da2efb5f7f18e7b5424ff7702d34d0dba5eb4ba83dbd85039078 SHA512 0e42e298fa22bf2a463870576ac697ae71320eacfd3ee41bc4b41a229f05603cbdf52bd4e7b724de83c41c2587469deb1e2f876a5e6eabe1df1799263f5c1a87
|
||||
DIST ncurses-6.3-20220115.patch.gz.asc 729 BLAKE2B d1288c86c4fdd9890dc8654f81e2e8c956412173a03f26f0018234d6bad6fae6043df8f65d1bf1942c8ea8de68f631d6cd6e8741c932277b85fe9735ec9414a7 SHA512 cf3aafd09105362d8c896d3de73a49ed1f19818a78bd2f2a9f1f8ece218dc01159e65793ef4010d5f5a850fa9057f4f2723d745e6fbca7530a4e8c468005bd41
|
||||
DIST ncurses-6.3-20220122.patch.gz 106624 BLAKE2B 33d12cec7df1553cd2c4c3e09152f53ef5b8e86a4cf9bb5afadcc92065f93bd0734f761be088f13f150ec9e8e4d7d8159ea22b2c2bf0bec824e25078d2ea9251 SHA512 c585ba9f3c27314cfb9097d8cf9feb1653014d676670f1644cefffb347ef70a7172ca56c20015531c7117eb23909d55815a295850738499e58c4d5306ec5d747
|
||||
DIST ncurses-6.3-20220122.patch.gz.asc 729 BLAKE2B fb8f0e236ec7582b1adfa9c7facb959fe1b88ffcee494308dec6fb4ece6e518d1aae3af5c52e0b82f59660e60c3c01dd56037e1b107e25240a12a03f4300f91a SHA512 609c55b3028a89d4ff09774279435bad58d8d0e179042dafe2c61092f32b5edcad2397cdd8a6eeb7ab61322064fd1b24d8b6b960adc6ede0b7254c3b12284fe1
|
||||
DIST ncurses-6.3-20220129.patch.gz 117854 BLAKE2B 1dce0288609407e6bc803ffc8f61b0c33f8a1dcf1c6c4303cd4c730741e4f0b68b7fb7e7b79c1a29dc1c7cde7f2e5aa7b615402b13ee3af7a7c28cae1ce804d0 SHA512 3f573b645f67279e0394352456d844d289be89e2ca70d832d24fe945ce2e6b017273eb305171e5a704492ac3d600de05e5e6c1e268a939bea4b5cfd74b292753
|
||||
DIST ncurses-6.3-20220129.patch.gz.asc 729 BLAKE2B a6b8fa01d3a5c8c3f4055757ac23a2700e5b8627214f8606f25c82f560f1637ff2db70a872f43a9aa25b64e3efb3c98bb9980b0673a35ca13073c4f9d5063fa4 SHA512 b2906c5d27312df3c6e79ab486753420ab83e9562d1b3d35971b5ed7f6d15a1ad7f8a3b18bafe3e5e8c6ef9b09d32dade373269ebfbbe9ce5d2b417e0848a5d9
|
||||
DIST ncurses-6.3-20220205.patch.gz 48085 BLAKE2B 1d1bd94138379e1947941c87c1ef6cb76e1e5dcf49e04985b59f1d111a524976629f94ece79f9ec93a2c773f8dda9bde0b90b1d34ed1ec51a573d4f1587cad86 SHA512 166f3f6687f52c18169d67e5cd7338aee7ec283898c522e964a4d9f59b20a5754d6865e0268c5297ef7c4b7fc34b8607f00129aecb5b7ab616788a0b98f674b2
|
||||
DIST ncurses-6.3-20220205.patch.gz.asc 729 BLAKE2B cace085a89847d3d19eab5049c64afb187b1419dd7ea6ac1e9cd8c037aa83897788cbddc3e97ebe15d32f09e1c5156664e5d3af5727edf6ba6b739025582f984 SHA512 c2176c35fe7044ba82869a928c614faec3a894521b3becbe37277ab95cc5615fb1b33b935d6394a4f75dad15015e5203bcb29001f68fa05420289145729638b3
|
||||
DIST ncurses-6.3-20220212.patch.gz 41501 BLAKE2B a0257b9a740a14090e46e85b67a59e754018e77d6484b30eec6f5a3fa84dddf329078b94d4425800ee45a85a31a9c47b1ccc25ed32fdc2f433465c3238e3c8e7 SHA512 1f596ad2f806411a2e89ebc8b74e9d44754fcdd3baa0c727fe610121fe64eb27e1c35871545dd7ab743930e1c49c2d96581aed0a0b37d0a33d2ee7c590c0c42e
|
||||
DIST ncurses-6.3-20220212.patch.gz.asc 729 BLAKE2B ed7466b3294baeda59fdd56df93583662a257efb3434ff2817d31994cd5218605ccd535e95ce668f741693fec9fcc5f39223dd67884668aee777bfc9eeff55ce SHA512 3394f9c37a0a1d7e19becb023542534c734f15f030ff725ba54ae010417898be2935d6820f7f7f6d76a0abc3663a9a7f4ccf98a9571c03123f4ba8321ea5c9c1
|
||||
DIST ncurses-6.3-20220219.patch.gz 6845 BLAKE2B 660191d5561af0ca763ba8377899ae5793a48e73fec27ef5d9ae00e28cb53edbe96c6ee0480bc1de321ec19cbc8c02f7330861811f3a000b603ce6bdd9921070 SHA512 41d9e29f4f673a6c930f8637dbbf7c55f427aad28088f96ddab824b560b462015dcc21a371551a087adb44dde4797abe9cde2ea07e2537e81216b17b330a14e7
|
||||
DIST ncurses-6.3-20220219.patch.gz.asc 729 BLAKE2B e216aa89dbe7d7ea0bafa6d91aca090ac316844ec6d1b1d36da8452bc623e3897722f19b3fb1cc89174ad1aa41a6e8fab4d1b761081090c2bbf338fa027a534d SHA512 555f22dfb585e7b93727f20e46fb6fa77cb633bafdfe6ca3cf3bfabd462a4761f23bb341fbb25c1518b8d9652388f23d671e15f7acecd01755c55d5fa48d3e67
|
||||
DIST ncurses-6.3-20220226.patch.gz 5429 BLAKE2B fd0b50218992daf8e5228cf77fe72db651bba494d9699d0057e0e676fc01b699ff4d8f0fb9636faac5ea3fc1936d59d27403a5a5e89f6aa3c42f7c101d9dcb35 SHA512 0d77a955c1f24b7ba58d830cf5c256bcf5946f535b29077484e4ce4ae871a0803fc0db70c66d177ad427da797f7ae30b9a08ff56cd6d0b5f37dd3f231bd67b35
|
||||
DIST ncurses-6.3-20220226.patch.gz.asc 729 BLAKE2B e1b83208bf9e9ca9558b3e93f824766765159fcf3b5b4c7a4d92415229a8ef653eb1503446cc5fc8088a354e08cf6fbefb5fcc28e995c8c1718dc77b59552267 SHA512 972f65a645490ef425a6f7314f859cbf8d1aefe5ce6b0847adad3a457d8fd5634af64becb6542e477d14bdacc72aca00fef213c3d5b51f68258ebaef876aec86
|
||||
DIST ncurses-6.3-20220305.patch.gz 3732 BLAKE2B b756ad0d8831c2f0eff78dabf1b45adec7888dedc846a91a94cef739c10057f87bbbe7984a4758aa82a8c146d7cc9eeb356b7321bf529fd54480fe334e0ec608 SHA512 4ced572ac32afc2676896e79acac9145c7b138dafa8ebe0c29b2355bf65169a68df3be8fd273b7b957931f98f39ab0f20ada6081be5e11045d32f91f055116c6
|
||||
DIST ncurses-6.3-20220305.patch.gz.asc 729 BLAKE2B ef22a7429cffe8dcfebdbd6e339684b7a96c437e3d0bc3ba3eb02c4e8a537909f14306a4d7ce2d0f0752e1a02975b11ad04aabf27a6ba0aa99f4f486b1fe4826 SHA512 68a73ba690722ecca38099521fd9396e7c46dfab9c1a090f0cb7d1a18480bf027a6b7a5e3f1b0ab92a7ad29b05df1c9f7d4c197e13b9e916b6fcb0c54a472e4e
|
||||
DIST ncurses-6.3-20220312.patch.gz 3659 BLAKE2B 8ec667f1a615b7fdaf7aeef1c14145ce4c90ad75c8acc474d160c61bf85b13a10fbb6c248a2659dba94db50a9db866c002c2ff429a3bdab8124b1d9b28031364 SHA512 1565f364fa694e2b84f73e9d6ad716b18cdde4f18aeb9bcee8d78d59ed9e995968f7ecea7d307e6738943208ed17bcd459b6b30cc85fa0f7e8ff2c64e2a7b385
|
||||
DIST ncurses-6.3-20220312.patch.gz.asc 729 BLAKE2B e5b4cd10b313c7d7f61e3251fddc2c85fbd920b2855d8b9ecb585a1d3acbd5b1bb3a1dcf5043bcb807ab9ecb03c9e711e1625a86ae6adcf6f41b37f8b71b0d21 SHA512 ca819f78d6b5b4c9bfd9e536c6e8ec4ccd9d6c3ad3f00e1e85f5e646e2e5d2b30e8c72ffe91f789a9b8f2268b89f4fbc07798b433a202b263673a187c74774c9
|
||||
DIST ncurses-6.3-20220319.patch.gz 3975 BLAKE2B eb9a9896704463e64c0b46721322190cdaaf1bf6d30f3a8b4ef2d815a5cba5dc0ca84674404ef720d0d861cf724b265988e187fec94096f6926633da62933829 SHA512 f642180bc13bc26d8befa48145a66d36f064cd5a4c5891e0eb5e9e463cd7a446280040ce04aa8d7bedacb06d060916fc32ca7f6f66010ee6fbf95c4a367e2c1f
|
||||
DIST ncurses-6.3-20220319.patch.gz.asc 729 BLAKE2B e6f763a035db48bdfb1bb7c05aa30f91c0e693efebb0f74eebc696a0f5b4acba3655112af6bf9b0d5bb502a5d67dd3416b4f26dc3be5cb775692f1c958aaa911 SHA512 e07dce52dc16d73dcddfcb982b40cb9fb4ff60097e704e9dc56604262cb30eabf2283a4b436e78a8ddf6abca69cc3fef5a2d93d9145658ad4a36022e2b053406
|
||||
DIST ncurses-6.3-20220326.patch.gz 4163 BLAKE2B 20f83d6491dfe4c6833c72582dbddc5f69f4356f78251989afc7e689a2f261f477a8db17cea7c084ab798d3ead34dd1204a595e4718255a6c4a3a9735c36b217 SHA512 62210e6bdf5577fea31e2d793d15ba55bf1c89a855e02ebfe82bc918dec3423f70c49756b08a8fbf1a7cd4311ff09a2751f76a4bb7b2924a3eacc96c2ea25634
|
||||
DIST ncurses-6.3-20220326.patch.gz.asc 729 BLAKE2B 65254b2f56dd831be92fa8e89359bd52252dc7959a16d99888c372722bf533a7c2cc3b285452af5bc33f0478bb2f143ed74b5f0b57ad9cc74626b4902f0ccdbc SHA512 a60b780f39424b3f712e5fd81fe397b1eaa476026b497c50edd5c6e460eaf320ea9412a0d0ce122bb7bb3cdfe2f473bad5a0bbf923a22cc1bcd04c621aa5c023
|
||||
DIST ncurses-6.3-20220402.patch.gz 11483 BLAKE2B 3210094fb4be4d7c2b751ce3d7b4efee71db0c420f0159db846efcd0ae6e85673069b7c39b943346a3b1a1aeda247493aba6bf832eb192fd3729a9585d0c9a66 SHA512 f8ce6ab6ef5df746ecbc6286c5b46ec53ab0f3fed831878f693c8afe49b34f3f2769f2d3078b81799952f7905bf18217069fce7dd52d3126b7e4dc2ae84f5443
|
||||
DIST ncurses-6.3-20220402.patch.gz.asc 729 BLAKE2B 0ab44b4bbf10aa0c67dc1022012b1e156c9ce9c57214c5f92e7b3714cdccead69e0a869b9247b799797680f896dd8e86b3a2ca2e9587f5cc11250711ab36006f SHA512 299b5b7c337f95b0621571261b23d3110c963ed0f584f145238049caad52ba325d6982e138545d02041e297cf78f3f1a0f8d08f9162bb7b61885870382df2e06
|
||||
DIST ncurses-6.3-20220409.patch.gz 22728 BLAKE2B 7b8514a9fc8b8ddbf5cbf1f6b0cb45895808f6226db726c206ed8490c3abccbf8a8d49e6bcfdcad806414d8aa0d4fce89faac43c60a38ecf71e613ff01f67224 SHA512 1dde730b7fa12efeb2bc7b98012f3e5529630f0aabde2d877046ef85d541dafb5d64488747ddb559f97a3f25d1ec5f716815f9e6c1ce100f4f308bfa86501d20
|
||||
DIST ncurses-6.3-20220409.patch.gz.asc 729 BLAKE2B 9d5321cd1990c68ac812691713d941d467dcd2f95c93f2488cf212d4162415b615397546bc397a2907f1b6ae38907dea6f72e3012ecdafa0054a91d59a94ca64 SHA512 8db2631d35ee1d7d07d906fa194e499ed8239acfbfd215e192a2382b1cd998a9ee3d0ad971aab43edb5e91cdbb2a772835a42cf0645b2541c5c7dab9bf4adf74
|
||||
DIST ncurses-6.3-20220416.patch.gz 67896 BLAKE2B c95a993f51beb87bb9891bd0eee08729795a583df50c66df8265cdd5c4adbef83b9fc0339c71aa5137408fe10fa15b0ba4028d5539a0ac66df06c0c1d72e8359 SHA512 2686ed16f5103d76c92cfa4943a8f82d8bc414db074c1c7fb73810b49c6d1d0103988611edf36715d5be24891d0bb2c97ceb08dc4111d0900b5dba6fac12af0a
|
||||
DIST ncurses-6.3-20220416.patch.gz.asc 729 BLAKE2B 52ab1bfcac4b5d7b3733c399509ba4c0a6b9531c02a05846d39344488ba3a9196326a8126db225845a3ff1ca3fdd609fa1d9264583e7e57e28d2f4e3b58b4389 SHA512 c5a60d2ef9996c02264e6656a966f4be910a3acbee777a4ff2a5131efd156bdf1d32418a39d6e3c07fcbb59c75554d4cc1e7e9f84f5b59f69e7e4c17fafc749f
|
||||
DIST ncurses-6.3-20220423.patch.gz 3394 BLAKE2B ac93810f1e826fc82de72a85effe5479576af14fa86e0dd08b8823b6f4652922f79242e9c867b1c864f0049c9e6d9864d6efc9282ab1e734dc316cac05655f4c SHA512 5dc87f70793d8319c5ee2f07c7f9432b1128e05f3aa2841a74deeaf294e46859f4198483dc783bb80e5e98f81f05cfef148df75a5abc5acfa69a9d6ad3abb702
|
||||
DIST ncurses-6.3-20220423.patch.gz.asc 729 BLAKE2B 7225d28f7e61ae584183e98d8c93c7d470e96984aea4e462333f115c329a8c187927196447b8368949986d4b8c96086f5839fde5b442936e76ac797685ee109b SHA512 b0eecbdad448f193fb255bec2fa458d3fea972c181891882d8dc1e09cc325ecda38e98f2d410993f768f513f3a48b9be4b36dbb2919d82a778496b8ef2051565
|
||||
DIST ncurses-6.3.tar.gz 3583550 BLAKE2B b2c174ac48d587b4d3aa054f04e4ec8bffd8a657a4aff5f090104965c741901e600712c8f8e5e98f3b8a26bc558996a1e14a746f113854832853b855e9d406c3 SHA512 5373f228cba6b7869210384a607a2d7faecfcbfef6dbfcd7c513f4e84fbd8bcad53ac7db2e7e84b95582248c1039dcfc7c4db205a618f7da22a166db482f0105
|
||||
DIST ncurses-6.3.tar.gz.sig 438 BLAKE2B d7f9852292110fe7a048a9e38611ea06564b5142cb4cbeb8d99bba752d5df8eeffa3b57e5ca315c14024520bc008b30650e99669c995dca05a798399a0c85d39 SHA512 b9a2a25e0b1854c272bf89c610c81fc0ba061f0296eca5c0079a79cfe310e44eb16c46eb5a0dd018f1ca9114d569c9d5087a2b8e60b0344f1eb97f7c5addafc6
|
||||
@ -1,11 +0,0 @@
|
||||
--- ncurses-5.7/ncurses/curses.priv.h
|
||||
+++ ncurses-5.7/ncurses/curses.priv.h
|
||||
@@ -1452,6 +1452,8 @@ extern NCURSES_EXPORT(void) _nc_expanded
|
||||
|
||||
/* charable.c */
|
||||
#if USE_WIDEC_SUPPORT
|
||||
+#include <wchar.h>
|
||||
+
|
||||
extern NCURSES_EXPORT(bool) _nc_is_charable(wchar_t);
|
||||
extern NCURSES_EXPORT(int) _nc_to_char(wint_t);
|
||||
extern NCURSES_EXPORT(wint_t) _nc_to_widechar(int);
|
||||
@ -1,14 +0,0 @@
|
||||
disable the $PATH search for the PKG_CONFIG tool. it isn't needed and just
|
||||
gets in the way when setting to a value that might not yet exist.
|
||||
|
||||
--- ncurses-6.0/configure
|
||||
+++ ncurses-6.0/configure
|
||||
@@ -3533,7 +3533,7 @@
|
||||
esac
|
||||
|
||||
test -z "$PKG_CONFIG" && PKG_CONFIG=none
|
||||
-if test "$PKG_CONFIG" != none ; then
|
||||
+if false ; then
|
||||
|
||||
if test "x$prefix" != xNONE; then
|
||||
cf_path_syntax="$prefix"
|
||||
@ -1,191 +0,0 @@
|
||||
Add rxvt-unicode terminfo, required by rxvt-unicode to function properly.
|
||||
|
||||
Providing this in ncurses makes it widely available, much better than having to
|
||||
install rxvt-unicode everywhere.
|
||||
|
||||
http://bugs.gentoo.org/show_bug.cgi?id=192083
|
||||
|
||||
This patch uses the updated rxvt-unicode-9.15 terminfo
|
||||
which includes 256 color support and fixes Gentoo bug 383871
|
||||
|
||||
http://bugs.gentoo.org/show_bug.cgi?id=383871
|
||||
|
||||
--- ncurses-6.0/misc/terminfo.src
|
||||
+++ ncurses-6.0/misc/terminfo.src
|
||||
@@ -5214,6 +5214,176 @@
|
||||
rxvt-16color|rxvt with 16 colors like aixterm,
|
||||
ncv#32, use=ibm+16color, use=rxvt,
|
||||
|
||||
+# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
|
||||
+# Updated: Özgür Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
|
||||
+# Updated: Marc Lehmann <schmorp@schmorp.de>, 17 Feb 2005
|
||||
+# Updated: Marc Lehmann <schmorp@schmorp.de>, 04 Nov 2008: change init/reset sequences
|
||||
+rxvt-unicode|rxvt-unicode terminal (X Window System),
|
||||
+ am,
|
||||
+ bce,
|
||||
+ eo,
|
||||
+ km,
|
||||
+ msgr,
|
||||
+ xenl,
|
||||
+ hs,
|
||||
+ cols#80,
|
||||
+ it#8,
|
||||
+ lines#24,
|
||||
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~-A.B+C\,D0EhFiG,
|
||||
+ bel=^G,
|
||||
+ blink=\E[5m,
|
||||
+ bold=\E[1m,
|
||||
+ civis=\E[?25l,
|
||||
+ clear=\E[H\E[2J,
|
||||
+ cnorm=\E[?25h,
|
||||
+ cr=^M,
|
||||
+ csr=\E[%i%p1%d;%p2%dr,
|
||||
+ cub=\E[%p1%dD,
|
||||
+ cub1=^H,
|
||||
+ cud=\E[%p1%dB,
|
||||
+ cud1=^J,
|
||||
+ cuf=\E[%p1%dC,
|
||||
+ cuf1=\E[C,
|
||||
+ cup=\E[%i%p1%d;%p2%dH,
|
||||
+ cuu=\E[%p1%dA,
|
||||
+ cuu1=\E[A,
|
||||
+ cvvis=\E[?25h,
|
||||
+ dch=\E[%p1%dP,
|
||||
+ dch1=\E[P,
|
||||
+ dl=\E[%p1%dM,
|
||||
+ dl1=\E[M,
|
||||
+ ed=\E[J,
|
||||
+ el=\E[K,
|
||||
+ el1=\E[1K,
|
||||
+ flash=\E[?5h$<20/>\E[?5l,
|
||||
+ home=\E[H,
|
||||
+ hpa=\E[%i%p1%dG,
|
||||
+ ht=^I,
|
||||
+ hts=\EH,
|
||||
+ ich=\E[%p1%d@,
|
||||
+ ich1=\E[@,
|
||||
+ il=\E[%p1%dL,
|
||||
+ il1=\E[L,
|
||||
+ ind=^J,
|
||||
+ is1=\E[\041p,
|
||||
+ is2=\E[r\E[m\E[2J\E[?7;25h\E[?1;3;4;5;6;9;66;1000;1001;1049l\E[4l,
|
||||
+ kDC=\E[3$,
|
||||
+ kIC=\E[2$,
|
||||
+ kEND=\E[8$,
|
||||
+ kHOM=\E[7$,
|
||||
+ kLFT=\E[d,
|
||||
+ kNXT=\E[6$,
|
||||
+ kPRV=\E[5$,
|
||||
+ kRIT=\E[c,
|
||||
+ kbs=\177,
|
||||
+ ka1=\EOw,
|
||||
+ ka3=\EOy,
|
||||
+ kb2=\EOu,
|
||||
+ kc1=\EOq,
|
||||
+ kc3=\EOs,
|
||||
+ kcbt=\E[Z,
|
||||
+ kcub1=\E[D,
|
||||
+ kcud1=\E[B,
|
||||
+ kcuf1=\E[C,
|
||||
+ kcuu1=\E[A,
|
||||
+ kdch1=\E[3~,
|
||||
+ kel=\E[8\^,
|
||||
+ kend=\E[8~,
|
||||
+ kent=\EOM,
|
||||
+ kf1=\E[11~,
|
||||
+ kf10=\E[21~,
|
||||
+ kf11=\E[23~,
|
||||
+ kf12=\E[24~,
|
||||
+ kf13=\E[25~,
|
||||
+ kf14=\E[26~,
|
||||
+ kf15=\E[28~,
|
||||
+ kf16=\E[29~,
|
||||
+ kf17=\E[31~,
|
||||
+ kf18=\E[32~,
|
||||
+ kf19=\E[33~,
|
||||
+ kf2=\E[12~,
|
||||
+ kf20=\E[34~,
|
||||
+ kf3=\E[13~,
|
||||
+ kf4=\E[14~,
|
||||
+ kf5=\E[15~,
|
||||
+ kf6=\E[17~,
|
||||
+ kf7=\E[18~,
|
||||
+ kf8=\E[19~,
|
||||
+ kf9=\E[20~,
|
||||
+ kfnd=\E[1~,
|
||||
+ khome=\E[7~,
|
||||
+ kich1=\E[2~,
|
||||
+ kmous=\E[M,
|
||||
+ knp=\E[6~,
|
||||
+ kpp=\E[5~,
|
||||
+ kslt=\E[4~,
|
||||
+ rc=\E8,
|
||||
+ rev=\E[7m,
|
||||
+ ri=\EM,
|
||||
+ rmso=\E[27m,
|
||||
+ rmul=\E[24m,
|
||||
+ rs1=\Ec,
|
||||
+ rs2=\E[r\E[m\E[?7;25h\E[?1;3;4;5;6;9;66;1000;1001;1049l\E[4l,
|
||||
+ sgr0=\E[m\E(B,
|
||||
+ enacs=,
|
||||
+ smacs=\E(0,
|
||||
+ rmacs=\E(B,
|
||||
+ smso=\E[7m,
|
||||
+ smul=\E[4m,
|
||||
+ tbc=\E[3g,
|
||||
+ vpa=\E[%i%p1%dd,
|
||||
+ colors#88,
|
||||
+ pairs#7744,
|
||||
+ btns#5,
|
||||
+ lm#0,
|
||||
+ ccc,
|
||||
+ npc,
|
||||
+ mc5i,
|
||||
+ ncv#0,
|
||||
+ mir,
|
||||
+ xon,
|
||||
+ bw,
|
||||
+ ech=\E[%p1%dX,
|
||||
+ mc0=\E[i,
|
||||
+ mc4=\E[4i,
|
||||
+ mc5=\E[5i,
|
||||
+ sitm=\E[3m,
|
||||
+ ritm=\E[23m,
|
||||
+ smam=\E[?7h,
|
||||
+ rmam=\E[?7l,
|
||||
+ smir=\E[4h,
|
||||
+ rmir=\E[4l,
|
||||
+ smcup=\E[?1049h,
|
||||
+ rmcup=\E[r\E[?1049l,
|
||||
+ smkx=\E=,
|
||||
+ rmkx=\E>,
|
||||
+ indn=\E[%p1%dS,
|
||||
+ rin=\E[%p1%dT,
|
||||
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
|
||||
+ op=\E[39;49m,
|
||||
+ setaf=\E[38;5;%p1%dm,
|
||||
+ setab=\E[48;5;%p1%dm,
|
||||
+ setf=%?%p1%{7}%>%t\E[38;5;%p1%dm%e\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m%;,
|
||||
+ setb=%?%p1%{7}%>%t\E[48;5;%p1%dm%e\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m%;,
|
||||
+ initc=\E]4;%p1%d;rgb\:%p2%{65535}%*%{1000}%/%4.4X/%p3%{65535}%*%{1000}%/%4.4X/%p4%{65535}%*%{1000}%/%4.4X\E\\,
|
||||
+ sc=\E7,
|
||||
+ s0ds=\E(B,
|
||||
+ s1ds=\E(0,
|
||||
+ s2ds=\E*B,
|
||||
+ s3ds=\E+B,
|
||||
+ u6=\E[%i%d;%dR,
|
||||
+ u7=\E[6n,
|
||||
+ u8=\E[?1;2c,
|
||||
+ u9=\E[c,
|
||||
+ tsl=\E]2;,
|
||||
+ fsl=\007,
|
||||
+ dsl=\E]2;\007,
|
||||
+
|
||||
+rxvt-unicode-256color|rxvt-unicode terminal with 256 colors (X Window System),
|
||||
+ colors#256,
|
||||
+ pairs#32767,
|
||||
+ use=rxvt-unicode,
|
||||
+
|
||||
#### MRXVT
|
||||
# mrxvt 0.5.4
|
||||
#
|
||||
@ -1,15 +0,0 @@
|
||||
always include ticlib even when progs are disabled
|
||||
|
||||
https://bugs.gentoo.org/557360
|
||||
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -21312,7 +21312,7 @@ echo "$as_me:21311: checking for library subsets" >&5
|
||||
echo $ECHO_N "checking for library subsets... $ECHO_C" >&6
|
||||
LIB_SUBSETS=
|
||||
|
||||
-if test "x$cf_with_progs" = xyes || test "$with_ticlib" != no || test "$with_termcap" != no; then
|
||||
+if true; then
|
||||
LIB_SUBSETS="${LIB_SUBSETS}ticlib"
|
||||
if test "$with_ticlib" != no ; then
|
||||
LIB_SUBSETS="${LIB_SUBSETS} "
|
||||
@ -1,35 +0,0 @@
|
||||
https://bugs.gentoo.org/601426
|
||||
https://lists.gnu.org/archive/html/bug-ncurses/2015-02/msg00012.html
|
||||
|
||||
From: John Vogel
|
||||
Subject: [PATCH] c++ binding missed when cross compiling
|
||||
Date: Mon, 16 Feb 2015 01:01:48 -0500
|
||||
|
||||
The configure script hard codes the include dir to the prefix'ed include dir,
|
||||
when checking if c++ compiler works. This breaks the compiler's built-in search
|
||||
path. I've included two patches. The first works on the configure.in file, which
|
||||
requires your autoconf stuff to test and I'm not ready to meddle with at the
|
||||
moment. The other works directly on the configure file. I've tested the second
|
||||
one; it should mirror what the first patch tries to achieve and works for me.
|
||||
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -3459,10 +3459,6 @@
|
||||
echo "$as_me:3459: checking if $CXX works" >&5
|
||||
echo $ECHO_N "checking if $CXX works... $ECHO_C" >&6
|
||||
|
||||
- save_CPPFLAGS="$CPPFLAGS"
|
||||
- eval cf_includedir=${includedir}
|
||||
- CPPFLAGS="$CPPFLAGS -I${cf_includedir}"
|
||||
-
|
||||
cat >"conftest.$ac_ext" <<_ACEOF
|
||||
#line 3467 "configure"
|
||||
#include "confdefs.h"
|
||||
@@ -3499,7 +3495,6 @@
|
||||
cf_cxx_works=no
|
||||
fi
|
||||
rm -f "conftest.$ac_objext" "conftest.$ac_ext"
|
||||
- CPPFLAGS="$save_CPPFLAGS"
|
||||
|
||||
echo "$as_me:3504: result: $cf_cxx_works" >&5
|
||||
echo "${ECHO_T}$cf_cxx_works" >&6
|
||||
@ -7,7 +7,7 @@
|
||||
EAPI=7
|
||||
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/bzip2.gpg
|
||||
inherit toolchain-funcs multilib-minimal usr-ldscript verify-sig
|
||||
inherit toolchain-funcs multilib multilib-minimal usr-ldscript verify-sig
|
||||
|
||||
DESCRIPTION="A high-quality data compressor used extensively by Gentoo Linux"
|
||||
HOMEPAGE="https://sourceware.org/bzip2/"
|
||||
@ -91,9 +91,9 @@ multilib_src_install() {
|
||||
if multilib_is_native_abi ; then
|
||||
gen_usr_ldscript -a bz2
|
||||
|
||||
dobin bzip2recover
|
||||
dobin bzip2recover$(get_exeext)
|
||||
into /
|
||||
newbin bzip2 bzip2-reference
|
||||
newbin bzip2$(get_exeext) bzip2-reference$(get_exeext)
|
||||
fi
|
||||
}
|
||||
|
||||
@ -129,7 +129,7 @@ pkg_postinst() {
|
||||
local x
|
||||
for x in bzip2 bunzip2 bzcat; do
|
||||
if [[ ! -h ${EROOT}/bin/${x} ]]; then
|
||||
ln -s bzip2-reference "${EROOT}/bin/${x}" || die
|
||||
ln -s bzip2-reference$(get_exeext) "${EROOT}/bin/${x}$(get_exeext)" || die
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
@ -1,2 +1 @@
|
||||
DIST rhash-1.3.6-src.tar.gz 328097 BLAKE2B c74993d183f0f2e479f0bd5831a9f653b9bd17bbed4d1ba896f6e33db98b7141175cd3c688dc41dfd8ec4b98acb51255ae5b795435cbc9dfb5ab77573cb25543 SHA512 54f7f238ed1fdc01c29cc1338fa86be90b69beff0df8f20d24ce9cb3c48c7f4668b84a3fe0d4d8b04b54bc8145485d493435edf3219de3a637af0f9c007c85c6
|
||||
DIST rhash-1.4.2-src.tar.gz 416853 BLAKE2B 06322825116cb00aa4987b01610d967eb57c94aa29b43348ec2c31f053fd471a900fcee776714263213e9a79eaf389b2e79d7b34a5afd3e98d68198193b5cbe7 SHA512 41df57e8b3f32c93d8e6f2ac668b32aaa23eb2eaf90a83f109e61e511404a5036ea88bcf2854e19c1ade0f61960e0d9edf01f3d82e1c645fed36579e9d7a6a25
|
||||
DIST rhash-1.4.3-src.tar.gz 429290 BLAKE2B d225aeae0b3a8fb2e093a9aef50cd07a790c7e9734e91114deef2ca8492c85261b8ed5dea45958e35e049ea888885175608962ea72297bdef48b00c52f51eaca SHA512 d87ffcde28d8f25cf775c279fed457e52d24523ed9b695629dae694b3c22372247d18f6032f8ce13a0b70fa2953be408982e46659daaa7c4ab227ae89eaed9c7
|
||||
|
||||
@ -1,23 +0,0 @@
|
||||
From 35a830d1968465e4ecb079273f032b754bac6c66 Mon Sep 17 00:00:00 2001
|
||||
From: James Le Cuirot <chewi@gentoo.org>
|
||||
Date: Sun, 25 Mar 2018 17:40:49 +0100
|
||||
Subject: [PATCH] configure: Add target OS clause for Darwin
|
||||
|
||||
These triplets can also have a version number suffix, for example,
|
||||
x86_64-apple-darwin16.
|
||||
---
|
||||
configure | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 5b6b710..2d8ac42 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -410,6 +410,7 @@ else
|
||||
amigaos) TARGET_OS=AmigaOS ;;
|
||||
mingw32*) TARGET_OS=MINGW32 ;;
|
||||
wine) TARGET_OS=Wine ;;
|
||||
+ darwin*) TARGET_OS=Darwin ;;
|
||||
esac
|
||||
}
|
||||
TARGET_OS="UNKNOWN"
|
||||
@ -1,23 +0,0 @@
|
||||
From 14db7f9ee87e05450853ba0e1d8e83cc34aef3e4 Mon Sep 17 00:00:00 2001
|
||||
From: James Le Cuirot <chewi@aura-online.co.uk>
|
||||
Date: Sat, 24 Mar 2018 13:51:56 +0000
|
||||
Subject: [PATCH] configure: Match FreeBSD triplets with versions
|
||||
|
||||
Triplets such as x86_64-unknown-freebsd11.1 are common.
|
||||
---
|
||||
configure | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 8ebb929..5b6b710 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -398,7 +398,7 @@ else
|
||||
part=$(echo $BUILD_TARGET | cut -d '-' -f $component)
|
||||
case "$(echo $part | tr '[A-Z]' '[a-z]')" in
|
||||
linux) TARGET_OS=Linux ;;
|
||||
- freebsd) TARGET_OS=FreeBSD ;;
|
||||
+ freebsd*) TARGET_OS=FreeBSD ;;
|
||||
gnu/kfreebsd) TARGET_OS=FreeBSD ;;
|
||||
netbsd) TARGET_OS=NetBSD ;;
|
||||
bsd/os) TARGET_OS=BSD/OS ;;
|
||||
@ -1,54 +0,0 @@
|
||||
From c1776248a0b34a690e99ab9a7a814c34f78088ec Mon Sep 17 00:00:00 2001
|
||||
From: Lars Wendler <polynomial-c@gentoo.org>
|
||||
Date: Mon, 19 Mar 2018 10:47:13 +0100
|
||||
Subject: [PATCH] "echo -n" cannot be expected to work with every POSIX shell
|
||||
|
||||
See "man 1p echo" section APPLICATION USAGE. This patch replaces "echo -n"
|
||||
with "printf '%s'".
|
||||
---
|
||||
configure | 15 ++-------------
|
||||
1 file changed, 2 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index f480f7b..2a7d485 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -22,17 +22,6 @@ INSTALL_LIB_STATIC=auto
|
||||
INSTALL_LIB_SHARED=auto
|
||||
INSTALL_PKGCONFIGDIR="$PKG_INSTALLDIR"
|
||||
|
||||
-case $(echo -n) in
|
||||
- -n) # SysV style
|
||||
- ECHO_N=
|
||||
- ECHO_C='\c'
|
||||
- ;;
|
||||
- *) # BSD style
|
||||
- ECHO_N='-n '
|
||||
- ECHO_C=
|
||||
- ;;
|
||||
-esac
|
||||
-
|
||||
# display error message and exit
|
||||
die () {
|
||||
echo
|
||||
@@ -235,7 +224,7 @@ trap remove_tmpdir EXIT
|
||||
|
||||
str_concat()
|
||||
{
|
||||
- echo ${ECHO_N} $@ ${ECHO_C}
|
||||
+ printf '%s ' $@
|
||||
}
|
||||
|
||||
yn_nonempty()
|
||||
@@ -246,7 +235,7 @@ yn_nonempty()
|
||||
# Use this before starting a check
|
||||
start_check() {
|
||||
echo "============ Checking for $1 ============" >> "$TMPLOG"
|
||||
- echo ${ECHO_N} "Checking for $1 ... ${ECHO_C}"
|
||||
+ printf '%s' "Checking for $1 ... "
|
||||
res_comment=""
|
||||
}
|
||||
|
||||
--
|
||||
2.16.2
|
||||
|
||||
@ -1,80 +0,0 @@
|
||||
From 4dc506066cf1727b021e6352535a8bb315c3f8dc Mon Sep 17 00:00:00 2001
|
||||
From: Aleksey <rhash.admin@gmail.com>
|
||||
Date: Sat, 17 Jul 2021 18:39:41 +0300
|
||||
Subject: [PATCH] configure: fix clang detection on macOS
|
||||
|
||||
---
|
||||
configure | 58 +++++++++++++++++++++++++++----------------------------
|
||||
1 file changed, 28 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 59d432b..111270a 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -519,38 +519,36 @@ else
|
||||
elif run_cmd "$CC --version"; then
|
||||
cc_name_tmp=$($CC --version 2>&1 | head -n 1 | cut -d ' ' -f 1)
|
||||
fi
|
||||
- if test -n "${cc_name_tmp}"; then
|
||||
- if echo "$cc_name_tmp" | grep -q "gcc"; then
|
||||
- cc_name=$cc_name_tmp
|
||||
- start_check "$CC version"
|
||||
- cc_vendor=gnu
|
||||
- cc_version=$($CC -dumpversion 2>&1)
|
||||
- if ! echo $cc_version | grep -q '^[0-9][0-9]*\.[0-9]'; then
|
||||
- cc_v2=$($CC -dumpfullversion -dumpversion 2>/dev/null)
|
||||
- if echo $cc_v2 | grep -q '^[0-9][0-9]*\.[0-9]'; then
|
||||
- cc_version=$cc_v2
|
||||
- fi
|
||||
+ if echo "$cc_name_tmp" | grep -q "gcc"; then
|
||||
+ cc_name=$cc_name_tmp
|
||||
+ start_check "$CC version"
|
||||
+ cc_vendor=gnu
|
||||
+ cc_version=$($CC -dumpversion 2>&1)
|
||||
+ if ! echo $cc_version | grep -q '^[0-9][0-9]*\.[0-9]'; then
|
||||
+ cc_v2=$($CC -dumpfullversion -dumpversion 2>/dev/null)
|
||||
+ if echo $cc_v2 | grep -q '^[0-9][0-9]*\.[0-9]'; then
|
||||
+ cc_version=$cc_v2
|
||||
fi
|
||||
- case $cc_version in
|
||||
- 2.96*)
|
||||
- cc_fail=yes
|
||||
- ;;
|
||||
- *)
|
||||
- _cc_major=$(echo $cc_version | cut -d '.' -f 1)
|
||||
- _cc_minor=$(echo $cc_version | cut -d '.' -f 2)
|
||||
- _cc_mini=$(echo $cc_version | cut -d '.' -f 3)
|
||||
- ;;
|
||||
- esac
|
||||
- finish_check "$cc_name $cc_version"
|
||||
- break
|
||||
- fi
|
||||
- if echo "$cc_name_tmp" | grep -q "clang"; then
|
||||
- start_check "$CC version"
|
||||
- cc_vendor=clang
|
||||
- cc_version=$($CC -dumpversion 2>&1)
|
||||
- finish_check "clang $cc_version"
|
||||
- break
|
||||
fi
|
||||
+ case $cc_version in
|
||||
+ 2.96*)
|
||||
+ cc_fail=yes
|
||||
+ ;;
|
||||
+ *)
|
||||
+ _cc_major=$(echo $cc_version | cut -d '.' -f 1)
|
||||
+ _cc_minor=$(echo $cc_version | cut -d '.' -f 2)
|
||||
+ _cc_mini=$(echo $cc_version | cut -d '.' -f 3)
|
||||
+ ;;
|
||||
+ esac
|
||||
+ finish_check "$cc_name $cc_version"
|
||||
+ break
|
||||
+ elif $CC --version 2>&1 | grep -q "clang"; then
|
||||
+ start_check "$CC version"
|
||||
+ cc_vendor=clang
|
||||
+ cc_version=$($CC -dumpversion 2>&1)
|
||||
+ finish_check "clang $cc_version"
|
||||
+ break
|
||||
+ else
|
||||
cc_name_tmp=$($CC -V 2>&1 | head -n 1 | cut -d ' ' -f 2,3)
|
||||
if test "$cc_name_tmp" = "Sun C"; then
|
||||
start_check "$CC version"
|
||||
@ -1,26 +0,0 @@
|
||||
From 4558d6753611ab1bf21765017e5b451aee8409f6 Mon Sep 17 00:00:00 2001
|
||||
From: James Le Cuirot <chewi@gentoo.org>
|
||||
Date: Sun, 18 Mar 2018 14:23:28 +0000
|
||||
Subject: [PATCH] configure: Don't quote $CC when calling it
|
||||
|
||||
It might have additional arguments.
|
||||
---
|
||||
configure | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index f480f7b..8ebb929 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -480,7 +480,7 @@ if test "$(basename $CC)" = "icc" || test "$(basename $CC)" = "ecc"; then
|
||||
else
|
||||
CC_TMP="$CC"
|
||||
for CC in "$CC_TMP" gcc cc ; do
|
||||
- if "$CC" -v >/dev/null 2>&1; then
|
||||
+ if $CC -v >/dev/null 2>&1; then
|
||||
cc_name_tmp=$($CC -v 2>&1 | tail -n 1 | cut -d ' ' -f 1)
|
||||
if test "$cc_name_tmp" = "gcc"; then
|
||||
cc_name=$cc_name_tmp
|
||||
--
|
||||
2.16.1
|
||||
|
||||
@ -1,77 +0,0 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=6
|
||||
|
||||
inherit toolchain-funcs multilib-minimal
|
||||
|
||||
DESCRIPTION="Console utility and library for computing and verifying file hash sums"
|
||||
HOMEPAGE="http://rhash.sourceforge.net/"
|
||||
SRC_URI="mirror://sourceforge/${PN}/${P}-src.tar.gz"
|
||||
|
||||
LICENSE="MIT"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris ~x86-solaris"
|
||||
IUSE="debug nls ssl static-libs"
|
||||
|
||||
RDEPEND="
|
||||
ssl? (
|
||||
dev-libs/openssl:0=[${MULTILIB_USEDEP}]
|
||||
)"
|
||||
|
||||
DEPEND="${RDEPEND}
|
||||
nls? ( sys-devel/gettext )"
|
||||
|
||||
S="${WORKDIR}/RHash-${PV}"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/unquote-cc.patch
|
||||
"${FILESDIR}"/${P}-no_echon.patch
|
||||
"${FILESDIR}"/{freebsd,darwin}-triplet.patch
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
multilib_copy_sources
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
set -- \
|
||||
./configure \
|
||||
--target="${CHOST}" \
|
||||
--cc="$(tc-getCC)" \
|
||||
--ar="$(tc-getAR)" \
|
||||
--extra-cflags="${CFLAGS}" \
|
||||
--extra-ldflags="${LDFLAGS}" \
|
||||
--prefix="${EPREFIX}"/usr \
|
||||
--libdir="${EPREFIX}"/usr/$(get_libdir) \
|
||||
--sysconfdir="${EPREFIX}"/etc \
|
||||
--disable-openssl-runtime \
|
||||
--disable-static \
|
||||
--enable-lib-shared \
|
||||
$(use_enable debug) \
|
||||
$(use_enable nls gettext) \
|
||||
$(use_enable ssl openssl) \
|
||||
$(use_enable static-libs lib-static)
|
||||
|
||||
echo "${@}"
|
||||
"${@}" || die "configure failed"
|
||||
}
|
||||
|
||||
# We would add compile-gmo to the build targets but install-gmo always
|
||||
# recompiles unconditionally. :(
|
||||
|
||||
multilib_src_install() {
|
||||
# -j1 needed due to race condition.
|
||||
emake DESTDIR="${D}" -j1 \
|
||||
install{,-pkg-config} \
|
||||
$(use nls && echo install-gmo) \
|
||||
$(use kernel_Winnt || echo install-lib-so-link)
|
||||
|
||||
emake DESTDIR="${D}" -j1 \
|
||||
-C lib${PN} install-headers
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
emake test
|
||||
}
|
||||
@ -1,9 +1,9 @@
|
||||
# Copyright 1999-2022 Gentoo Authors
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
EAPI=8
|
||||
|
||||
inherit toolchain-funcs multilib-minimal
|
||||
inherit flag-o-matic toolchain-funcs multilib-minimal
|
||||
|
||||
DESCRIPTION="Console utility and library for computing and verifying file hash sums"
|
||||
HOMEPAGE="http://rhash.sourceforge.net/"
|
||||
@ -11,7 +11,7 @@ SRC_URI="mirror://sourceforge/${PN}/${P}-src.tar.gz"
|
||||
|
||||
LICENSE="MIT"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
IUSE="debug nls ssl static-libs"
|
||||
|
||||
RDEPEND="
|
||||
@ -29,10 +29,6 @@ BDEPEND="
|
||||
|
||||
S="${WORKDIR}/RHash-${PV}"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${P}-clang.patch
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
@ -46,6 +42,13 @@ src_prepare() {
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
# ideally we want !tc-ld-is-bfd for best future-proofing, but it needs
|
||||
# https://github.com/gentoo/gentoo/pull/28355
|
||||
# mold needs this too but right now tc-ld-is-mold is also not available
|
||||
if tc-ld-is-lld; then
|
||||
append-ldflags -Wl,--undefined-version
|
||||
fi
|
||||
|
||||
set -- \
|
||||
./configure \
|
||||
--target="${CHOST}" \
|
||||
@ -68,17 +71,17 @@ multilib_src_configure() {
|
||||
"${@}" || die "configure failed"
|
||||
}
|
||||
|
||||
# We would add compile-gmo to the build targets but install-gmo always
|
||||
# recompiles unconditionally. :(
|
||||
# (note from sam: this might be fixed in >1.4.2?
|
||||
# https://github.com/rhash/RHash/commit/9e4eeb1268149b24b7fbe0fc0fe91e3a266e6261)
|
||||
multilib_src_compile() {
|
||||
emake all \
|
||||
$(multilib_is_native_abi && use nls && echo compile-gmo)
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
# -j1 needed due to race condition.
|
||||
emake DESTDIR="${D}" -j1 \
|
||||
install{,-lib-headers,-pkg-config} \
|
||||
$(use nls && echo install-gmo) \
|
||||
$(use kernel_Winnt || echo install-lib-so-link)
|
||||
$(multilib_is_native_abi && use nls && echo install-gmo) \
|
||||
install-lib-so-link
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
@ -1,3 +1,4 @@
|
||||
DIST vim-9.0.1403.tar.gz 16976705 BLAKE2B 9664d52de488086308fcbcda0b0a1167161afbf0efbb40dd9ce9e2393f0ada35e0a44d7f0c3f789d26ae1427604a281f689e87885fbb1557dce12a69898ec46d SHA512 bd83feba38a4aa9b3cf910a0b5a2c153abc4c6eaf9abf0ebee389879ff9ddee51c6f9dba5151aab5df3f73594cf8921d0a0e34121c50e65366cdcdd6482fd00f
|
||||
DIST vim-9.0.1503.tar.gz 17010118 BLAKE2B 4f74d52a3fcf7875031378f86fc3411c64c92e4b82bee371148b19042478d3f974793477c3fc2d9ddff9233fa1ec3c864962880840867544e92464f1a0876f51 SHA512 2f3242ec0f79cf6affc2f7fdaf689c35d8597706ac1689dbbdc01352676199605bb37f22bd901f1e8d59f312237d3fce4bee8b979b28a744ea9e40558621980e
|
||||
DIST vim-9.0.1627.tar.gz 17048824 BLAKE2B 3fa583cf676c2388641b1240ed4b90c2e42cd9f50ea44a943cce86bba4bf278adf54837bb5c4530471fd57cfcd08cd39be78b17a5e907435a02dc5874ff7f571 SHA512 d2fb863e03d4ad773fcba8917f3cd1e373f661aa8b8a20bd3e416a73788997d31c6dd106a1bf59d72475bb577bbe6d52eb079fff9c7152d96bb6e5c9aa6e2f3b
|
||||
DIST vim-patches-vim-9.0.1000-patches.tar.bz2 3245 BLAKE2B 3bf3d0e314cc3f96d5d9675de196a62c4c8a72645d56ef94b80768571c99cba5cc556442e3bd2dfa8818460fd851fe7bd1ae15999af7225fb271b81c43105843 SHA512 2883441a2001bf7ce89a7f0862f780b71cc0164c8fcb8dbdf7040e1bcbcf408d138d3d77f308aa54c762e9975fa5ec89cfceeabbf721344dfc938870a363667a
|
||||
|
||||
231
sdk_container/src/third_party/portage-stable/app-editors/vim-core/vim-core-9.0.1627.ebuild
vendored
Normal file
231
sdk_container/src/third_party/portage-stable/app-editors/vim-core/vim-core-9.0.1627.ebuild
vendored
Normal file
@ -0,0 +1,231 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
# Please bump with app-editors/vim and app-editors/gvim
|
||||
|
||||
VIM_VERSION="9.0"
|
||||
VIM_PATCHES_VERSION="9.0.1000"
|
||||
inherit bash-completion-r1 desktop flag-o-matic prefix toolchain-funcs vim-doc xdg-utils
|
||||
|
||||
if [[ ${PV} == 9999* ]] ; then
|
||||
inherit git-r3
|
||||
EGIT_REPO_URI="https://github.com/vim/vim.git"
|
||||
EGIT_CHECKOUT_DIR=${WORKDIR}/vim-${PV}
|
||||
else
|
||||
SRC_URI="https://github.com/vim/vim/archive/v${PV}.tar.gz -> vim-${PV}.tar.gz
|
||||
https://gitweb.gentoo.org/proj/vim-patches.git/snapshot/vim-patches-vim-${VIM_PATCHES_VERSION}-patches.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
fi
|
||||
S="${WORKDIR}/vim-${PV}"
|
||||
|
||||
DESCRIPTION="vim and gvim shared files"
|
||||
HOMEPAGE="https://www.vim.org https://github.com/vim/vim"
|
||||
|
||||
LICENSE="vim"
|
||||
SLOT="0"
|
||||
IUSE="nls acl minimal"
|
||||
|
||||
# ncurses is only needed by ./configure, so no subslot operator required
|
||||
DEPEND=">=sys-libs/ncurses-5.2-r2:0"
|
||||
BDEPEND="sys-devel/autoconf"
|
||||
|
||||
if [[ ${PV} != 9999* ]]; then
|
||||
# Gentoo patches to fix runtime issues, cross-compile errors, etc
|
||||
PATCHES=(
|
||||
"${WORKDIR}/vim-patches-vim-${VIM_PATCHES_VERSION}-patches"
|
||||
)
|
||||
fi
|
||||
|
||||
# platform-specific checks (bug #898406):
|
||||
# - acl() -- Solaris
|
||||
# - statacl() -- AIX
|
||||
QA_CONFIG_IMPL_DECL_SKIP=(
|
||||
'acl'
|
||||
'statacl'
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
# people with broken alphabets run into trouble. bug #82186.
|
||||
unset LANG LC_ALL
|
||||
export LC_COLLATE="C"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
# Fixup a script to use awk instead of nawk
|
||||
sed -i \
|
||||
-e '1s|.*|#!'"${EPREFIX}"'/usr/bin/awk -f|' \
|
||||
"${S}"/runtime/tools/mve.awk || die "sed failed"
|
||||
|
||||
# See bug #77841. We remove this file after the tarball extraction.
|
||||
rm -v "${S}"/runtime/tools/vimspell.sh || die "rm failed"
|
||||
|
||||
# Read vimrc and gvimrc from /etc/vim
|
||||
echo '#define SYS_VIMRC_FILE "'${EPREFIX}'/etc/vim/vimrc"' >> "${S}"/src/feature.h || die
|
||||
echo '#define SYS_GVIMRC_FILE "'${EPREFIX}'/etc/vim/gvimrc"' >> "${S}"/src/feature.h || die
|
||||
|
||||
# Use exuberant ctags which installs as /usr/bin/exuberant-ctags.
|
||||
# Hopefully this pattern won't break for a while at least.
|
||||
# This fixes bug #29398 (27 Sep 2003 agriffis)
|
||||
sed -i 's/\<ctags\("\| [-*.]\)/exuberant-&/g' \
|
||||
"${S}"/runtime/doc/syntax.txt \
|
||||
"${S}"/runtime/doc/tagsrch.txt \
|
||||
"${S}"/runtime/doc/usr_29.txt \
|
||||
"${S}"/runtime/menu.vim \
|
||||
"${S}"/src/configure.ac || die 'sed failed'
|
||||
|
||||
# gcc on sparc32 has this, uhm, interesting problem with detecting EOF
|
||||
# correctly. To avoid some really entertaining error messages about stuff
|
||||
# which isn't even in the source file being invalid, we'll do some trickery
|
||||
# to make the error never occur. bug 66162 (02 October 2004 ciaranm)
|
||||
find "${S}" -name '*.c' | while read c; do
|
||||
echo >> "$c" || die "echo failed"
|
||||
done
|
||||
|
||||
# Try to avoid sandbox problems. Bug #114475.
|
||||
if [[ -d "${S}"/src/po ]]; then
|
||||
sed -i -e \
|
||||
'/-S check.vim/s,..VIM.,ln -s $(VIM) testvim \; ./testvim -X,' \
|
||||
"${S}"/src/po/Makefile || die "sed failed"
|
||||
fi
|
||||
|
||||
cp -v "${S}"/src/config.mk.dist "${S}"/src/auto/config.mk || die "cp failed"
|
||||
|
||||
# Fix bug #76331: -O3 causes problems, use -O2 instead. We'll do this for
|
||||
# everyone since previous flag filtering bugs have turned out to affect
|
||||
# multiple archs...
|
||||
replace-flags -O3 -O2
|
||||
|
||||
# Fix bug #18245: Prevent "make" from the following chain:
|
||||
# (1) Notice configure.ac is newer than auto/configure
|
||||
# (2) Rebuild auto/configure
|
||||
# (3) Notice auto/configure is newer than auto/config.mk
|
||||
# (4) Run ./configure (with wrong args) to remake auto/config.mk
|
||||
sed -i 's# auto/config\.mk:#:#' src/Makefile || die "Makefile sed failed"
|
||||
|
||||
# Remove src/auto/configure file.
|
||||
rm -v src/auto/configure || die "rm configure failed"
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Fix bug #37354: Disallow -funroll-all-loops on amd64
|
||||
# Bug 57859 suggests that we want to do this for all archs
|
||||
filter-flags -funroll-all-loops
|
||||
|
||||
emake -j1 -C src autoconf
|
||||
|
||||
# This should fix a sandbox violation (see bug 24447). The hvc
|
||||
# things are for ppc64, see bug 86433.
|
||||
for file in /dev/pty/s* /dev/console /dev/hvc/* /dev/hvc*; do
|
||||
if [[ -e "${file}" ]]; then
|
||||
addwrite ${file}
|
||||
fi
|
||||
done
|
||||
|
||||
# Let Portage do the stripping. Some people like that.
|
||||
export ac_cv_prog_STRIP="$(type -P true ) faking strip"
|
||||
|
||||
local myconf=(
|
||||
--with-modified-by=Gentoo-${PVR}
|
||||
--enable-gui=no
|
||||
--without-x
|
||||
--disable-darwin
|
||||
--disable-perlinterp
|
||||
--disable-pythoninterp
|
||||
--disable-rubyinterp
|
||||
--disable-gpm
|
||||
--disable-selinux
|
||||
$(use_enable nls)
|
||||
$(use_enable acl)
|
||||
)
|
||||
|
||||
# Keep Gentoo Prefix env contained within the EPREFIX
|
||||
use prefix && myconf+=( --without-local-dir )
|
||||
|
||||
if tc-is-cross-compiler ; then
|
||||
export vim_cv_getcwd_broken=no \
|
||||
vim_cv_memmove_handles_overlap=yes \
|
||||
vim_cv_stat_ignores_slash=yes \
|
||||
vim_cv_terminfo=yes \
|
||||
vim_cv_toupper_broken=no
|
||||
fi
|
||||
|
||||
econf "${myconf[@]}"
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
emake -j1 -C src auto/osdef.h objects
|
||||
emake tools
|
||||
}
|
||||
|
||||
src_test() { :; }
|
||||
|
||||
src_install() {
|
||||
local vimfiles=/usr/share/vim/vim${VIM_VERSION/.}
|
||||
|
||||
dodir /usr/{bin,share/{man/man1,vim}}
|
||||
emake -C src \
|
||||
installruntime \
|
||||
installmanlinks \
|
||||
installmacros \
|
||||
installtutor \
|
||||
installtutorbin \
|
||||
installtools \
|
||||
install-languages \
|
||||
DESTDIR="${D}" \
|
||||
BINDIR="${EPREFIX}"/usr/bin \
|
||||
MANDIR="${EPREFIX}"/usr/share/man \
|
||||
DATADIR="${EPREFIX}"/usr/share
|
||||
|
||||
keepdir ${vimfiles}/keymap
|
||||
|
||||
# default vimrc is installed by vim-core since it applies to
|
||||
# both vim and gvim
|
||||
insinto /etc/vim/
|
||||
newins "${FILESDIR}"/vimrc-r6 vimrc
|
||||
eprefixify "${ED}"/etc/vim/vimrc
|
||||
|
||||
if use minimal; then
|
||||
# To save space, install only a subset of the files.
|
||||
# Helps minimalize the livecd, bug 65144.
|
||||
rm -rv "${ED}${vimfiles}"/{compiler,doc,ftplugin,indent} || die
|
||||
rm -rv "${ED}${vimfiles}"/{macros,print,tools,tutor} || die
|
||||
rm -v "${ED}"/usr/bin/vimtutor || die
|
||||
|
||||
for f in "${ED}${vimfiles}"/colors/*.vim; do
|
||||
if [[ ${f} != */@(default).vim ]] ; then
|
||||
printf '%s\0' "${f}"
|
||||
fi
|
||||
done | xargs -0 rm -f || die
|
||||
|
||||
for f in "${ED}${vimfiles}"/syntax/*.vim; do
|
||||
if [[ ${f} != */@(conf|crontab|fstab|inittab|resolv|sshdconfig|syntax|nosyntax|synload).vim ]] ; then
|
||||
printf '%s\0' "${f}"
|
||||
fi
|
||||
done | xargs -0 rm -f || die
|
||||
fi
|
||||
|
||||
newbashcomp "${FILESDIR}"/xxd-completion xxd
|
||||
|
||||
# install gvim icon since both vim/gvim desktop files reference it
|
||||
doicon -s scalable "${FILESDIR}"/gvim.svg
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
# update documentation tags (from vim-doc.eclass)
|
||||
update_vim_helptags
|
||||
|
||||
# update icon cache
|
||||
xdg_icon_cache_update
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
# Update documentation tags (from vim-doc.eclass)
|
||||
update_vim_helptags
|
||||
|
||||
# update icon cache
|
||||
xdg_icon_cache_update
|
||||
}
|
||||
@ -1,3 +1,4 @@
|
||||
DIST vim-9.0.1403.tar.gz 16976705 BLAKE2B 9664d52de488086308fcbcda0b0a1167161afbf0efbb40dd9ce9e2393f0ada35e0a44d7f0c3f789d26ae1427604a281f689e87885fbb1557dce12a69898ec46d SHA512 bd83feba38a4aa9b3cf910a0b5a2c153abc4c6eaf9abf0ebee389879ff9ddee51c6f9dba5151aab5df3f73594cf8921d0a0e34121c50e65366cdcdd6482fd00f
|
||||
DIST vim-9.0.1503.tar.gz 17010118 BLAKE2B 4f74d52a3fcf7875031378f86fc3411c64c92e4b82bee371148b19042478d3f974793477c3fc2d9ddff9233fa1ec3c864962880840867544e92464f1a0876f51 SHA512 2f3242ec0f79cf6affc2f7fdaf689c35d8597706ac1689dbbdc01352676199605bb37f22bd901f1e8d59f312237d3fce4bee8b979b28a744ea9e40558621980e
|
||||
DIST vim-9.0.1627.tar.gz 17048824 BLAKE2B 3fa583cf676c2388641b1240ed4b90c2e42cd9f50ea44a943cce86bba4bf278adf54837bb5c4530471fd57cfcd08cd39be78b17a5e907435a02dc5874ff7f571 SHA512 d2fb863e03d4ad773fcba8917f3cd1e373f661aa8b8a20bd3e416a73788997d31c6dd106a1bf59d72475bb577bbe6d52eb079fff9c7152d96bb6e5c9aa6e2f3b
|
||||
DIST vim-patches-vim-9.0.1000-patches.tar.bz2 3245 BLAKE2B 3bf3d0e314cc3f96d5d9675de196a62c4c8a72645d56ef94b80768571c99cba5cc556442e3bd2dfa8818460fd851fe7bd1ae15999af7225fb271b81c43105843 SHA512 2883441a2001bf7ce89a7f0862f780b71cc0164c8fcb8dbdf7040e1bcbcf408d138d3d77f308aa54c762e9975fa5ec89cfceeabbf721344dfc938870a363667a
|
||||
|
||||
370
sdk_container/src/third_party/portage-stable/app-editors/vim/vim-9.0.1627.ebuild
vendored
Normal file
370
sdk_container/src/third_party/portage-stable/app-editors/vim/vim-9.0.1627.ebuild
vendored
Normal file
@ -0,0 +1,370 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
# Please bump with app-editors/vim-core and app-editors/gvim
|
||||
|
||||
VIM_VERSION="9.0"
|
||||
VIM_PATCHES_VERSION="9.0.1000"
|
||||
|
||||
LUA_COMPAT=( lua5-{1..4} luajit )
|
||||
PYTHON_COMPAT=( python3_{9..11} )
|
||||
PYTHON_REQ_USE="threads(+)"
|
||||
USE_RUBY="ruby27 ruby30 ruby31"
|
||||
|
||||
inherit vim-doc flag-o-matic bash-completion-r1 lua-single python-single-r1 ruby-single toolchain-funcs desktop xdg-utils
|
||||
|
||||
if [[ ${PV} == 9999* ]] ; then
|
||||
inherit git-r3
|
||||
EGIT_REPO_URI="https://github.com/vim/vim.git"
|
||||
else
|
||||
SRC_URI="https://github.com/vim/vim/archive/v${PV}.tar.gz -> ${P}.tar.gz
|
||||
https://gitweb.gentoo.org/proj/vim-patches.git/snapshot/vim-patches-vim-${VIM_PATCHES_VERSION}-patches.tar.bz2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
fi
|
||||
|
||||
DESCRIPTION="Vim, an improved vi-style text editor"
|
||||
HOMEPAGE="https://www.vim.org https://github.com/vim/vim"
|
||||
|
||||
LICENSE="vim"
|
||||
SLOT="0"
|
||||
IUSE="X acl crypt cscope debug gpm lua minimal nls perl python racket ruby selinux sound tcl terminal vim-pager"
|
||||
REQUIRED_USE="
|
||||
lua? ( ${LUA_REQUIRED_USE} )
|
||||
python? ( ${PYTHON_REQUIRED_USE} )
|
||||
vim-pager? ( !minimal )
|
||||
"
|
||||
|
||||
RDEPEND="
|
||||
>=app-eselect/eselect-vi-1.1
|
||||
>=sys-libs/ncurses-5.2-r2:0=
|
||||
nls? ( virtual/libintl )
|
||||
acl? ( kernel_linux? ( sys-apps/acl ) )
|
||||
crypt? ( dev-libs/libsodium:= )
|
||||
cscope? ( dev-util/cscope )
|
||||
gpm? ( >=sys-libs/gpm-1.19.3 )
|
||||
lua? ( ${LUA_DEPS}
|
||||
$(lua_gen_impl_dep 'deprecated' lua5-1)
|
||||
)
|
||||
~app-editors/vim-core-${PV}
|
||||
vim-pager? ( app-editors/vim-core[-minimal] )
|
||||
perl? ( dev-lang/perl:= )
|
||||
python? ( ${PYTHON_DEPS} )
|
||||
racket? ( dev-scheme/racket )
|
||||
ruby? ( ${RUBY_DEPS} )
|
||||
selinux? ( sys-libs/libselinux )
|
||||
sound? ( media-libs/libcanberra )
|
||||
tcl? ( dev-lang/tcl:0= )
|
||||
X? ( x11-libs/libXt )
|
||||
"
|
||||
DEPEND="${RDEPEND}"
|
||||
# configure runs the Lua interpreter
|
||||
BDEPEND="
|
||||
sys-devel/autoconf
|
||||
lua? ( ${LUA_DEPS} )
|
||||
nls? ( sys-devel/gettext )
|
||||
"
|
||||
PDEPEND="!minimal? ( app-vim/gentoo-syntax )"
|
||||
|
||||
if [[ ${PV} != 9999* ]]; then
|
||||
# Gentoo patches to fix runtime issues, cross-compile errors, etc
|
||||
PATCHES=(
|
||||
"${WORKDIR}/vim-patches-vim-${VIM_PATCHES_VERSION}-patches"
|
||||
)
|
||||
fi
|
||||
|
||||
# platform-specific checks (bug #898452):
|
||||
# - acl() -- Solaris
|
||||
# - statacl() -- AIX
|
||||
QA_CONFIG_IMPL_DECL_SKIP=(
|
||||
'acl'
|
||||
'statacl'
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
# people with broken alphabets run into trouble. bug #82186.
|
||||
unset LANG LC_ALL
|
||||
export LC_COLLATE="C"
|
||||
|
||||
use lua && lua-single_pkg_setup
|
||||
use python && python-single-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
# Fixup a script to use awk instead of nawk
|
||||
sed -i -e \
|
||||
'1s|.*|#!'"${EPREFIX}"'/usr/bin/awk -f|' \
|
||||
"${S}"/runtime/tools/mve.awk || die "mve.awk sed failed"
|
||||
|
||||
# Read vimrc and gvimrc from /etc/vim
|
||||
echo '#define SYS_VIMRC_FILE "'${EPREFIX}'/etc/vim/vimrc"' \
|
||||
>> "${S}"/src/feature.h || die "echo failed"
|
||||
echo '#define SYS_GVIMRC_FILE "'${EPREFIX}'/etc/vim/gvimrc"' \
|
||||
>> "${S}"/src/feature.h || die "echo failed"
|
||||
|
||||
# Use exuberant ctags which installs as /usr/bin/exuberant-ctags.
|
||||
# Hopefully this pattern won't break for a while at least.
|
||||
# This fixes bug #29398 (27 Sep 2003 agriffis)
|
||||
sed -i -e \
|
||||
's/\<ctags\("\| [-*.]\)/exuberant-&/g' \
|
||||
"${S}"/runtime/doc/syntax.txt \
|
||||
"${S}"/runtime/doc/tagsrch.txt \
|
||||
"${S}"/runtime/doc/usr_29.txt \
|
||||
"${S}"/runtime/menu.vim \
|
||||
"${S}"/src/configure.ac || die 'sed failed'
|
||||
|
||||
# gcc on sparc32 has this, uhm, interesting problem with detecting EOF
|
||||
# correctly. To avoid some really entertaining error messages about stuff
|
||||
# which isn't even in the source file being invalid, we'll do some trickery
|
||||
# to make the error never occur. bug 66162 (02 October 2004 ciaranm)
|
||||
find "${S}" -name '*.c' | while read c; do
|
||||
echo >> "$c" || die "echo failed"
|
||||
done
|
||||
|
||||
# conditionally make the manpager.sh script
|
||||
if use vim-pager; then
|
||||
cat > "${S}"/runtime/macros/manpager.sh <<-_EOF_ || die "cat EOF failed"
|
||||
#!/bin/sh
|
||||
sed -e 's/\x1B\[[[:digit:]]\+m//g' | col -b | \\
|
||||
vim \\
|
||||
-c 'let no_plugin_maps = 1' \\
|
||||
-c 'set nolist nomod ft=man ts=8' \\
|
||||
-c 'let g:showmarks_enable=0' \\
|
||||
-c 'runtime! macros/less.vim' -
|
||||
_EOF_
|
||||
fi
|
||||
|
||||
# Try to avoid sandbox problems. Bug #114475.
|
||||
if [[ -d "${S}"/src/po ]]; then
|
||||
sed -i -e \
|
||||
'/-S check.vim/s,..VIM.,ln -s $(VIM) testvim \; ./testvim -X,' \
|
||||
"${S}"/src/po/Makefile || die "sed failed"
|
||||
fi
|
||||
|
||||
cp -v "${S}"/src/config.mk.dist "${S}"/src/auto/config.mk || die "cp failed"
|
||||
|
||||
# Fix bug 18245: Prevent "make" from the following chain:
|
||||
# (1) Notice configure.ac is newer than auto/configure
|
||||
# (2) Rebuild auto/configure
|
||||
# (3) Notice auto/configure is newer than auto/config.mk
|
||||
# (4) Run ./configure (with wrong args) to remake auto/config.mk
|
||||
sed -i 's# auto/config\.mk:#:#' src/Makefile || die "Makefile sed failed"
|
||||
rm src/auto/configure || die "rm failed"
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
|
||||
# Fix bug #37354: Disallow -funroll-all-loops on amd64
|
||||
# Bug #57859 suggests that we want to do this for all archs
|
||||
filter-flags -funroll-all-loops
|
||||
|
||||
# Fix bug 76331: -O3 causes problems, use -O2 instead. We'll do this for
|
||||
# everyone since previous flag filtering bugs have turned out to affect
|
||||
# multiple archs...
|
||||
replace-flags -O3 -O2
|
||||
|
||||
emake -j1 -C src autoconf
|
||||
|
||||
# This should fix a sandbox violation (see bug #24447). The hvc
|
||||
# things are for ppc64, see bug #86433.
|
||||
for file in /dev/pty/s* /dev/console /dev/hvc/* /dev/hvc*; do
|
||||
if [[ -e "${file}" ]]; then
|
||||
addwrite ${file}
|
||||
fi
|
||||
done
|
||||
|
||||
local myconf=()
|
||||
if use minimal; then
|
||||
myconf=(
|
||||
--with-features=tiny
|
||||
--disable-nls
|
||||
--disable-canberra
|
||||
--disable-acl
|
||||
--enable-gui=no
|
||||
--without-x
|
||||
--disable-darwin
|
||||
--disable-luainterp
|
||||
--disable-perlinterp
|
||||
--disable-pythoninterp
|
||||
--disable-mzschemeinterp
|
||||
--disable-rubyinterp
|
||||
--disable-selinux
|
||||
--disable-tclinterp
|
||||
--disable-gpm
|
||||
)
|
||||
else
|
||||
use debug && append-flags "-DDEBUG"
|
||||
|
||||
myconf=(
|
||||
--with-features=huge
|
||||
$(use_enable sound canberra)
|
||||
$(use_enable acl)
|
||||
$(use_enable crypt libsodium)
|
||||
$(use_enable cscope)
|
||||
$(use_enable gpm)
|
||||
$(use_enable nls)
|
||||
$(use_enable perl perlinterp)
|
||||
$(use_enable python python3interp)
|
||||
$(use_with python python3-command "${PYTHON}")
|
||||
$(use_enable racket mzschemeinterp)
|
||||
$(use_enable ruby rubyinterp)
|
||||
$(use_enable selinux)
|
||||
$(use_enable tcl tclinterp)
|
||||
$(use_enable terminal)
|
||||
)
|
||||
|
||||
# --with-features=huge forces on cscope even if we --disable it. We need
|
||||
# to sed this out to avoid screwiness. (1 Sep 2004 ciaranm)
|
||||
if ! use cscope; then
|
||||
sed -i -e \
|
||||
'/# define FEAT_CSCOPE/d' src/feature.h || die "sed failed"
|
||||
fi
|
||||
|
||||
if use lua; then
|
||||
# -DLUA_COMPAT_OPENLIB=1 is required to enable the
|
||||
# deprecated (in 5.1) luaL_openlib API (#874690)
|
||||
use lua_single_target_lua5-1 && append-cppflags -DLUA_COMPAT_OPENLIB=1
|
||||
|
||||
myconf+=(
|
||||
--enable-luainterp
|
||||
$(use_with lua_single_target_luajit luajit)
|
||||
--with-lua-prefix="${EPREFIX}/usr"
|
||||
)
|
||||
fi
|
||||
|
||||
# don't test USE=X here ... see bug #19115
|
||||
# but need to provide a way to link against X ... see bug #20093
|
||||
myconf+=(
|
||||
--enable-gui=no
|
||||
--disable-darwin
|
||||
$(use_with X x)
|
||||
)
|
||||
fi
|
||||
|
||||
# let package manager strip binaries
|
||||
export ac_cv_prog_STRIP="$(type -P true ) faking strip"
|
||||
|
||||
# keep prefix env contained within the EPREFIX
|
||||
use prefix && myconf+=( --without-local-dir )
|
||||
|
||||
if tc-is-cross-compiler ; then
|
||||
export vim_cv_getcwd_broken=no \
|
||||
vim_cv_memmove_handles_overlap=yes \
|
||||
vim_cv_stat_ignores_slash=yes \
|
||||
vim_cv_terminfo=yes \
|
||||
vim_cv_toupper_broken=no
|
||||
fi
|
||||
|
||||
econf \
|
||||
--with-modified-by=Gentoo-${PVR} \
|
||||
"${myconf[@]}"
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
# The following allows emake to be used
|
||||
emake -j1 -C src auto/osdef.h objects
|
||||
|
||||
emake
|
||||
}
|
||||
|
||||
src_test() {
|
||||
einfo
|
||||
einfo "Starting vim tests. Several error messages will be shown"
|
||||
einfo "while the tests run. This is normal behaviour and does not"
|
||||
einfo "indicate a fault."
|
||||
einfo
|
||||
ewarn "If the tests fail, your terminal may be left in a strange"
|
||||
ewarn "state. Usually, running 'reset' will fix this."
|
||||
einfo
|
||||
|
||||
# Don't let vim talk to X
|
||||
unset DISPLAY
|
||||
|
||||
# Arch and opensuse seem to do this and at this point, I'm willing
|
||||
# to try anything to avoid random test hangs!
|
||||
export TERM=xterm
|
||||
|
||||
# See https://github.com/vim/vim/blob/f08b0eb8691ff09f98bc4beef986ece1c521655f/src/testdir/runtest.vim#L5
|
||||
# for more information on test variables we can use.
|
||||
# Note that certain variables need vim-compatible regex (not PCRE), see e.g.
|
||||
# http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtml.
|
||||
#
|
||||
# Skipped tests:
|
||||
# - Test_expand_star_star
|
||||
# Hangs because of a recursive symlink in /usr/include/nodejs (bug #616680)
|
||||
# - Test_exrc
|
||||
# Looks in wrong location? (bug #742710)
|
||||
# - Test_job_tty_in_out
|
||||
# Fragile and depends on TERM(?)
|
||||
# - Test_spelldump_bang
|
||||
# Hangs.
|
||||
# - Test_fuzzy_completion_env
|
||||
# Too sensitive to leaked environment variables.
|
||||
# - Test_term_mouse_multiple_clicks_to_select_mode
|
||||
# Hangs.
|
||||
# - Test_spelldump
|
||||
# Hangs.
|
||||
export TEST_SKIP_PAT='\(Test_expand_star_star\|Test_exrc\|Test_job_tty_in_out\|Test_spelldump_bang\|Test_fuzzy_completion_env\|Test_term_mouse_multiple_clicks_to_select_mode\|Test_spelldump\)'
|
||||
|
||||
emake -j1 -C src/testdir nongui
|
||||
}
|
||||
|
||||
# Call eselect vi update with --if-unset
|
||||
# to respect user's choice (bug #187449)
|
||||
eselect_vi_update() {
|
||||
ebegin "Calling eselect vi update"
|
||||
eselect vi update --if-unset
|
||||
eend $?
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local vimfiles=/usr/share/vim/vim${VIM_VERSION/.}
|
||||
|
||||
# Note: Do not install symlinks for 'vi', 'ex', or 'view', as these are
|
||||
# managed by eselect-vi
|
||||
dobin src/vim
|
||||
if ! use minimal ; then
|
||||
dosym vim /usr/bin/vimdiff
|
||||
fi
|
||||
dosym vim /usr/bin/rvim
|
||||
dosym vim /usr/bin/rview
|
||||
if use vim-pager ; then
|
||||
dosym ${vimfiles}/macros/less.sh /usr/bin/vimpager
|
||||
dosym ${vimfiles}/macros/manpager.sh /usr/bin/vimmanpager
|
||||
insinto ${vimfiles}/macros
|
||||
doins runtime/macros/manpager.sh
|
||||
fperms a+x ${vimfiles}/macros/manpager.sh
|
||||
fi
|
||||
|
||||
domenu runtime/vim.desktop
|
||||
|
||||
newbashcomp "${FILESDIR}"/${PN}-completion ${PN}
|
||||
|
||||
# keep in sync with 'complete ... -F' list
|
||||
bashcomp_alias vim ex vi view rvim rview vimdiff
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
# Update documentation tags (from vim-doc.eclass)
|
||||
update_vim_helptags
|
||||
|
||||
# Call eselect vi update
|
||||
eselect_vi_update
|
||||
|
||||
# update desktop file mime cache
|
||||
xdg_desktop_database_update
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
# Update documentation tags (from vim-doc.eclass)
|
||||
update_vim_helptags
|
||||
|
||||
# Call eselect vi update
|
||||
eselect_vi_update
|
||||
|
||||
# update desktop file mime cache
|
||||
xdg_desktop_database_update
|
||||
}
|
||||
@ -48,7 +48,6 @@ RDEPEND="
|
||||
$(lua_gen_impl_dep 'deprecated' lua5-1)
|
||||
)
|
||||
~app-editors/vim-core-${PV}
|
||||
!<app-editors/vim-core-8.2.4328-r1
|
||||
vim-pager? ( app-editors/vim-core[-minimal] )
|
||||
perl? ( dev-lang/perl:= )
|
||||
python? ( ${PYTHON_DEPS} )
|
||||
|
||||
162
sdk_container/src/third_party/portage-stable/app-emulation/qemu/files/qemu-7.2.3-CVE-2023-2861.patch
vendored
Normal file
162
sdk_container/src/third_party/portage-stable/app-emulation/qemu/files/qemu-7.2.3-CVE-2023-2861.patch
vendored
Normal file
@ -0,0 +1,162 @@
|
||||
https://bugs.gentoo.org/909542
|
||||
https://gitlab.com/qemu-project/qemu/-/commit/10fad73a2bf1c76c8aa9d6322755e5f877d83ce5
|
||||
|
||||
From 10fad73a2bf1c76c8aa9d6322755e5f877d83ce5 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Schoenebeck <qemu_oss@crudebyte.com>
|
||||
Date: Wed, 7 Jun 2023 18:29:33 +0200
|
||||
Subject: [PATCH] 9pfs: prevent opening special files (CVE-2023-2861)
|
||||
|
||||
The 9p protocol does not specifically define how server shall behave when
|
||||
client tries to open a special file, however from security POV it does
|
||||
make sense for 9p server to prohibit opening any special file on host side
|
||||
in general. A sane Linux 9p client for instance would never attempt to
|
||||
open a special file on host side, it would always handle those exclusively
|
||||
on its guest side. A malicious client however could potentially escape
|
||||
from the exported 9p tree by creating and opening a device file on host
|
||||
side.
|
||||
|
||||
With QEMU this could only be exploited in the following unsafe setups:
|
||||
|
||||
- Running QEMU binary as root AND 9p 'local' fs driver AND 'passthrough'
|
||||
security model.
|
||||
|
||||
or
|
||||
|
||||
- Using 9p 'proxy' fs driver (which is running its helper daemon as
|
||||
root).
|
||||
|
||||
These setups were already discouraged for safety reasons before,
|
||||
however for obvious reasons we are now tightening behaviour on this.
|
||||
|
||||
Fixes: CVE-2023-2861
|
||||
Reported-by: Yanwu Shen <ywsPlz@gmail.com>
|
||||
Reported-by: Jietao Xiao <shawtao1125@gmail.com>
|
||||
Reported-by: Jinku Li <jkli@xidian.edu.cn>
|
||||
Reported-by: Wenbo Shen <shenwenbo@zju.edu.cn>
|
||||
Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
|
||||
Reviewed-by: Greg Kurz <groug@kaod.org>
|
||||
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
|
||||
Message-Id: <E1q6w7r-0000Q0-NM@lizzy.crudebyte.com>
|
||||
(cherry picked from commit f6b0de53fb87ddefed348a39284c8e2f28dc4eda)
|
||||
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
|
||||
(Mjt: drop adding qemu_fstat wrapper for 7.2 where wrappers aren't used)
|
||||
--- a/fsdev/virtfs-proxy-helper.c
|
||||
+++ b/fsdev/virtfs-proxy-helper.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "qemu/xattr.h"
|
||||
#include "9p-iov-marshal.h"
|
||||
#include "hw/9pfs/9p-proxy.h"
|
||||
+#include "hw/9pfs/9p-util.h"
|
||||
#include "fsdev/9p-iov-marshal.h"
|
||||
|
||||
#define PROGNAME "virtfs-proxy-helper"
|
||||
@@ -338,6 +339,28 @@ static void resetugid(int suid, int sgid)
|
||||
}
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Open regular file or directory. Attempts to open any special file are
|
||||
+ * rejected.
|
||||
+ *
|
||||
+ * returns file descriptor or -1 on error
|
||||
+ */
|
||||
+static int open_regular(const char *pathname, int flags, mode_t mode)
|
||||
+{
|
||||
+ int fd;
|
||||
+
|
||||
+ fd = open(pathname, flags, mode);
|
||||
+ if (fd < 0) {
|
||||
+ return fd;
|
||||
+ }
|
||||
+
|
||||
+ if (close_if_special_file(fd) < 0) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ return fd;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* send response in two parts
|
||||
* 1) ProxyHeader
|
||||
@@ -682,7 +705,7 @@ static int do_create(struct iovec *iovec)
|
||||
if (ret < 0) {
|
||||
goto unmarshal_err_out;
|
||||
}
|
||||
- ret = open(path.data, flags, mode);
|
||||
+ ret = open_regular(path.data, flags, mode);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
}
|
||||
@@ -707,7 +730,7 @@ static int do_open(struct iovec *iovec)
|
||||
if (ret < 0) {
|
||||
goto err_out;
|
||||
}
|
||||
- ret = open(path.data, flags);
|
||||
+ ret = open_regular(path.data, flags, 0);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
}
|
||||
--- a/hw/9pfs/9p-util.h
|
||||
+++ b/hw/9pfs/9p-util.h
|
||||
@@ -13,6 +13,8 @@
|
||||
#ifndef QEMU_9P_UTIL_H
|
||||
#define QEMU_9P_UTIL_H
|
||||
|
||||
+#include "qemu/error-report.h"
|
||||
+
|
||||
#ifdef O_PATH
|
||||
#define O_PATH_9P_UTIL O_PATH
|
||||
#else
|
||||
@@ -112,6 +114,38 @@ static inline void close_preserve_errno(int fd)
|
||||
errno = serrno;
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * close_if_special_file() - Close @fd if neither regular file nor directory.
|
||||
+ *
|
||||
+ * @fd: file descriptor of open file
|
||||
+ * Return: 0 on regular file or directory, -1 otherwise
|
||||
+ *
|
||||
+ * CVE-2023-2861: Prohibit opening any special file directly on host
|
||||
+ * (especially device files), as a compromised client could potentially gain
|
||||
+ * access outside exported tree under certain, unsafe setups. We expect
|
||||
+ * client to handle I/O on special files exclusively on guest side.
|
||||
+ */
|
||||
+static inline int close_if_special_file(int fd)
|
||||
+{
|
||||
+ struct stat stbuf;
|
||||
+
|
||||
+ if (fstat(fd, &stbuf) < 0) {
|
||||
+ close_preserve_errno(fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (!S_ISREG(stbuf.st_mode) && !S_ISDIR(stbuf.st_mode)) {
|
||||
+ error_report_once(
|
||||
+ "9p: broken or compromised client detected; attempt to open "
|
||||
+ "special file (i.e. neither regular file, nor directory)"
|
||||
+ );
|
||||
+ close(fd);
|
||||
+ errno = ENXIO;
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static inline int openat_dir(int dirfd, const char *name)
|
||||
{
|
||||
return openat(dirfd, name,
|
||||
@@ -146,6 +180,10 @@ again:
|
||||
return -1;
|
||||
}
|
||||
|
||||
+ if (close_if_special_file(fd) < 0) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
serrno = errno;
|
||||
/* O_NONBLOCK was only needed to open the file. Let's drop it. We don't
|
||||
* do that with O_PATH since fcntl(F_SETFL) isn't supported, and openat()
|
||||
--
|
||||
GitLab
|
||||
167
sdk_container/src/third_party/portage-stable/app-emulation/qemu/files/qemu-8.0.2-CVE-2023-2861.patch
vendored
Normal file
167
sdk_container/src/third_party/portage-stable/app-emulation/qemu/files/qemu-8.0.2-CVE-2023-2861.patch
vendored
Normal file
@ -0,0 +1,167 @@
|
||||
https://bugs.gentoo.org/909542
|
||||
https://gitlab.com/qemu-project/qemu/-/commit/b9d2887be4e616cdaeedd0b7456bfaa71ee798af
|
||||
|
||||
From b9d2887be4e616cdaeedd0b7456bfaa71ee798af Mon Sep 17 00:00:00 2001
|
||||
From: Christian Schoenebeck <qemu_oss@crudebyte.com>
|
||||
Date: Wed, 7 Jun 2023 18:29:33 +0200
|
||||
Subject: [PATCH] 9pfs: prevent opening special files (CVE-2023-2861)
|
||||
|
||||
The 9p protocol does not specifically define how server shall behave when
|
||||
client tries to open a special file, however from security POV it does
|
||||
make sense for 9p server to prohibit opening any special file on host side
|
||||
in general. A sane Linux 9p client for instance would never attempt to
|
||||
open a special file on host side, it would always handle those exclusively
|
||||
on its guest side. A malicious client however could potentially escape
|
||||
from the exported 9p tree by creating and opening a device file on host
|
||||
side.
|
||||
|
||||
With QEMU this could only be exploited in the following unsafe setups:
|
||||
|
||||
- Running QEMU binary as root AND 9p 'local' fs driver AND 'passthrough'
|
||||
security model.
|
||||
|
||||
or
|
||||
|
||||
- Using 9p 'proxy' fs driver (which is running its helper daemon as
|
||||
root).
|
||||
|
||||
These setups were already discouraged for safety reasons before,
|
||||
however for obvious reasons we are now tightening behaviour on this.
|
||||
|
||||
Fixes: CVE-2023-2861
|
||||
Reported-by: Yanwu Shen <ywsPlz@gmail.com>
|
||||
Reported-by: Jietao Xiao <shawtao1125@gmail.com>
|
||||
Reported-by: Jinku Li <jkli@xidian.edu.cn>
|
||||
Reported-by: Wenbo Shen <shenwenbo@zju.edu.cn>
|
||||
Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
|
||||
Reviewed-by: Greg Kurz <groug@kaod.org>
|
||||
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
|
||||
Message-Id: <E1q6w7r-0000Q0-NM@lizzy.crudebyte.com>
|
||||
(cherry picked from commit f6b0de53fb87ddefed348a39284c8e2f28dc4eda)
|
||||
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
|
||||
--- a/fsdev/virtfs-proxy-helper.c
|
||||
+++ b/fsdev/virtfs-proxy-helper.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "qemu/xattr.h"
|
||||
#include "9p-iov-marshal.h"
|
||||
#include "hw/9pfs/9p-proxy.h"
|
||||
+#include "hw/9pfs/9p-util.h"
|
||||
#include "fsdev/9p-iov-marshal.h"
|
||||
|
||||
#define PROGNAME "virtfs-proxy-helper"
|
||||
@@ -338,6 +339,28 @@ static void resetugid(int suid, int sgid)
|
||||
}
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Open regular file or directory. Attempts to open any special file are
|
||||
+ * rejected.
|
||||
+ *
|
||||
+ * returns file descriptor or -1 on error
|
||||
+ */
|
||||
+static int open_regular(const char *pathname, int flags, mode_t mode)
|
||||
+{
|
||||
+ int fd;
|
||||
+
|
||||
+ fd = open(pathname, flags, mode);
|
||||
+ if (fd < 0) {
|
||||
+ return fd;
|
||||
+ }
|
||||
+
|
||||
+ if (close_if_special_file(fd) < 0) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ return fd;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* send response in two parts
|
||||
* 1) ProxyHeader
|
||||
@@ -682,7 +705,7 @@ static int do_create(struct iovec *iovec)
|
||||
if (ret < 0) {
|
||||
goto unmarshal_err_out;
|
||||
}
|
||||
- ret = open(path.data, flags, mode);
|
||||
+ ret = open_regular(path.data, flags, mode);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
}
|
||||
@@ -707,7 +730,7 @@ static int do_open(struct iovec *iovec)
|
||||
if (ret < 0) {
|
||||
goto err_out;
|
||||
}
|
||||
- ret = open(path.data, flags);
|
||||
+ ret = open_regular(path.data, flags, 0);
|
||||
if (ret < 0) {
|
||||
ret = -errno;
|
||||
}
|
||||
--- a/hw/9pfs/9p-util.h
|
||||
+++ b/hw/9pfs/9p-util.h
|
||||
@@ -13,6 +13,8 @@
|
||||
#ifndef QEMU_9P_UTIL_H
|
||||
#define QEMU_9P_UTIL_H
|
||||
|
||||
+#include "qemu/error-report.h"
|
||||
+
|
||||
#ifdef O_PATH
|
||||
#define O_PATH_9P_UTIL O_PATH
|
||||
#else
|
||||
@@ -95,6 +97,7 @@ static inline int errno_to_dotl(int err) {
|
||||
#endif
|
||||
|
||||
#define qemu_openat openat
|
||||
+#define qemu_fstat fstat
|
||||
#define qemu_fstatat fstatat
|
||||
#define qemu_mkdirat mkdirat
|
||||
#define qemu_renameat renameat
|
||||
@@ -108,6 +111,38 @@ static inline void close_preserve_errno(int fd)
|
||||
errno = serrno;
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * close_if_special_file() - Close @fd if neither regular file nor directory.
|
||||
+ *
|
||||
+ * @fd: file descriptor of open file
|
||||
+ * Return: 0 on regular file or directory, -1 otherwise
|
||||
+ *
|
||||
+ * CVE-2023-2861: Prohibit opening any special file directly on host
|
||||
+ * (especially device files), as a compromised client could potentially gain
|
||||
+ * access outside exported tree under certain, unsafe setups. We expect
|
||||
+ * client to handle I/O on special files exclusively on guest side.
|
||||
+ */
|
||||
+static inline int close_if_special_file(int fd)
|
||||
+{
|
||||
+ struct stat stbuf;
|
||||
+
|
||||
+ if (qemu_fstat(fd, &stbuf) < 0) {
|
||||
+ close_preserve_errno(fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (!S_ISREG(stbuf.st_mode) && !S_ISDIR(stbuf.st_mode)) {
|
||||
+ error_report_once(
|
||||
+ "9p: broken or compromised client detected; attempt to open "
|
||||
+ "special file (i.e. neither regular file, nor directory)"
|
||||
+ );
|
||||
+ close(fd);
|
||||
+ errno = ENXIO;
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static inline int openat_dir(int dirfd, const char *name)
|
||||
{
|
||||
return qemu_openat(dirfd, name,
|
||||
@@ -142,6 +177,10 @@ again:
|
||||
return -1;
|
||||
}
|
||||
|
||||
+ if (close_if_special_file(fd) < 0) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
serrno = errno;
|
||||
/* O_NONBLOCK was only needed to open the file. Let's drop it. We don't
|
||||
* do that with O_PATH since fcntl(F_SETFL) isn't supported, and openat()
|
||||
973
sdk_container/src/third_party/portage-stable/app-emulation/qemu/qemu-7.2.3-r1.ebuild
vendored
Normal file
973
sdk_container/src/third_party/portage-stable/app-emulation/qemu/qemu-7.2.3-r1.ebuild
vendored
Normal file
@ -0,0 +1,973 @@
|
||||
# Copyright 1999-2023 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-qemu-docs
|
||||
# Set to 1 if prebuilt, 0 if not
|
||||
# (the construct below is to allow overriding from env for script)
|
||||
QEMU_DOCS_PREBUILT=${QEMU_DOCS_PREBUILT:-1}
|
||||
QEMU_DOCS_PREBUILT_DEV=ajak
|
||||
QEMU_DOCS_VERSION="7.2.0"
|
||||
# Default to generating docs (inc. man pages) if no prebuilt; overridden later
|
||||
# bug #830088
|
||||
QEMU_DOC_USEFLAG="+doc"
|
||||
|
||||
PYTHON_COMPAT=( python3_{9,10,11} )
|
||||
PYTHON_REQ_USE="ncurses,readline"
|
||||
|
||||
FIRMWARE_ABI_VERSION="7.2.0"
|
||||
|
||||
inherit linux-info toolchain-funcs python-r1 udev fcaps readme.gentoo-r1 \
|
||||
pax-utils xdg-utils
|
||||
|
||||
if [[ ${PV} == *9999* ]]; then
|
||||
QEMU_DOCS_PREBUILT=0
|
||||
|
||||
EGIT_REPO_URI="https://gitlab.com/qemu-project/qemu.git/"
|
||||
EGIT_SUBMODULES=(
|
||||
tests/fp/berkeley-softfloat-3
|
||||
tests/fp/berkeley-testfloat-3
|
||||
ui/keycodemapdb
|
||||
)
|
||||
inherit git-r3
|
||||
SRC_URI=""
|
||||
else
|
||||
MY_P="${PN}-${PV/_rc/-rc}"
|
||||
SRC_URI="https://download.qemu.org/${MY_P}.tar.xz"
|
||||
|
||||
if [[ ${QEMU_DOCS_PREBUILT} == 1 ]] ; then
|
||||
SRC_URI+=" !doc? ( https://dev.gentoo.org/~${QEMU_DOCS_PREBUILT_DEV}/distfiles/${CATEGORY}/${PN}/${PN}-${QEMU_DOCS_VERSION}-docs.tar.xz )"
|
||||
fi
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
[[ "${PV}" != *_rc* ]] && KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
|
||||
fi
|
||||
|
||||
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
|
||||
HOMEPAGE="https://www.qemu.org https://www.linux-kvm.org"
|
||||
|
||||
LICENSE="GPL-2 LGPL-2 BSD-2"
|
||||
SLOT="0"
|
||||
|
||||
[[ ${QEMU_DOCS_PREBUILT} == 1 ]] && QEMU_DOC_USEFLAG="doc"
|
||||
|
||||
IUSE="accessibility +aio alsa bpf bzip2 capstone +curl debug ${QEMU_DOC_USEFLAG}
|
||||
+fdt fuse glusterfs +gnutls gtk infiniband iscsi io-uring
|
||||
jack jemalloc +jpeg
|
||||
lzo multipath
|
||||
ncurses nfs nls numa opengl +oss pam +pin-upstream-blobs
|
||||
plugins +png pulseaudio python rbd sasl +seccomp sdl sdl-image selinux
|
||||
+slirp
|
||||
smartcard snappy spice ssh static static-user systemtap test udev usb
|
||||
usbredir vde +vhost-net virgl virtfs +vnc vte xattr xen
|
||||
zstd"
|
||||
|
||||
COMMON_TARGETS="
|
||||
aarch64
|
||||
alpha
|
||||
arm
|
||||
cris
|
||||
hppa
|
||||
i386
|
||||
loongarch64
|
||||
m68k
|
||||
microblaze
|
||||
microblazeel
|
||||
mips
|
||||
mips64
|
||||
mips64el
|
||||
mipsel
|
||||
nios2
|
||||
or1k
|
||||
ppc
|
||||
ppc64
|
||||
riscv32
|
||||
riscv64
|
||||
s390x
|
||||
sh4
|
||||
sh4eb
|
||||
sparc
|
||||
sparc64
|
||||
x86_64
|
||||
xtensa
|
||||
xtensaeb
|
||||
"
|
||||
IUSE_SOFTMMU_TARGETS="
|
||||
${COMMON_TARGETS}
|
||||
avr
|
||||
rx
|
||||
tricore
|
||||
"
|
||||
IUSE_USER_TARGETS="
|
||||
${COMMON_TARGETS}
|
||||
aarch64_be
|
||||
armeb
|
||||
hexagon
|
||||
mipsn32
|
||||
mipsn32el
|
||||
ppc64le
|
||||
sparc32plus
|
||||
"
|
||||
|
||||
use_softmmu_targets=$(printf ' qemu_softmmu_targets_%s' ${IUSE_SOFTMMU_TARGETS})
|
||||
use_user_targets=$(printf ' qemu_user_targets_%s' ${IUSE_USER_TARGETS})
|
||||
IUSE+=" ${use_softmmu_targets} ${use_user_targets}"
|
||||
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
# Allow no targets to be built so that people can get a tools-only build.
|
||||
# Block USE flag configurations known to not work.
|
||||
REQUIRED_USE="
|
||||
${PYTHON_REQUIRED_USE}
|
||||
qemu_softmmu_targets_arm? ( fdt )
|
||||
qemu_softmmu_targets_microblaze? ( fdt )
|
||||
qemu_softmmu_targets_mips64el? ( fdt )
|
||||
qemu_softmmu_targets_ppc64? ( fdt )
|
||||
qemu_softmmu_targets_ppc? ( fdt )
|
||||
qemu_softmmu_targets_riscv32? ( fdt )
|
||||
qemu_softmmu_targets_riscv64? ( fdt )
|
||||
qemu_softmmu_targets_x86_64? ( fdt )
|
||||
sdl-image? ( sdl )
|
||||
static? ( static-user !alsa !gtk !jack !opengl !pam !pulseaudio !plugins !rbd !snappy !udev )
|
||||
static-user? ( !plugins )
|
||||
virgl? ( opengl )
|
||||
virtfs? ( xattr )
|
||||
vnc? ( gnutls )
|
||||
vte? ( gtk )
|
||||
multipath? ( udev )
|
||||
plugins? ( !static !static-user )
|
||||
"
|
||||
for smname in ${IUSE_SOFTMMU_TARGETS} ; do
|
||||
REQUIRED_USE+=" qemu_softmmu_targets_${smname}? ( seccomp ) "
|
||||
done
|
||||
|
||||
# Dependencies required for qemu tools (qemu-nbd, qemu-img, qemu-io, ...)
|
||||
# and user/softmmu targets (qemu-*, qemu-system-*).
|
||||
#
|
||||
# Yep, you need both libcap and libcap-ng since virtfs only uses libcap.
|
||||
#
|
||||
# The attr lib isn't always linked in (although the USE flag is always
|
||||
# respected). This is because qemu supports using the C library's API
|
||||
# when available rather than always using the external library.
|
||||
ALL_DEPEND="
|
||||
dev-libs/glib:2[static-libs(+)]
|
||||
sys-libs/zlib[static-libs(+)]
|
||||
python? ( ${PYTHON_DEPS} )
|
||||
systemtap? ( dev-util/systemtap )
|
||||
xattr? ( sys-apps/attr[static-libs(+)] )"
|
||||
|
||||
# Dependencies required for qemu tools (qemu-nbd, qemu-img, qemu-io, ...)
|
||||
# softmmu targets (qemu-system-*).
|
||||
SOFTMMU_TOOLS_DEPEND="
|
||||
sys-libs/libcap-ng[static-libs(+)]
|
||||
>=x11-libs/pixman-0.28.0[static-libs(+)]
|
||||
accessibility? (
|
||||
app-accessibility/brltty[api]
|
||||
app-accessibility/brltty[static-libs(+)]
|
||||
)
|
||||
aio? ( dev-libs/libaio[static-libs(+)] )
|
||||
alsa? ( >=media-libs/alsa-lib-1.0.13 )
|
||||
bpf? ( dev-libs/libbpf:= )
|
||||
bzip2? ( app-arch/bzip2[static-libs(+)] )
|
||||
capstone? ( dev-libs/capstone:=[static-libs(+)] )
|
||||
curl? ( >=net-misc/curl-7.15.4[static-libs(+)] )
|
||||
fdt? ( >=sys-apps/dtc-1.5.1[static-libs(+)] )
|
||||
fuse? ( >=sys-fs/fuse-3.1:3[static-libs(+)] )
|
||||
glusterfs? ( >=sys-cluster/glusterfs-3.4.0[static-libs(+)] )
|
||||
gnutls? (
|
||||
>=net-libs/gnutls-3.0:=[static-libs(+)]
|
||||
dev-libs/nettle:=[static-libs(+)]
|
||||
)
|
||||
gtk? (
|
||||
x11-libs/cairo
|
||||
x11-libs/gdk-pixbuf:2
|
||||
x11-libs/gtk+:3
|
||||
x11-libs/libX11
|
||||
vte? ( x11-libs/vte:2.91 )
|
||||
)
|
||||
infiniband? ( sys-cluster/rdma-core[static-libs(+)] )
|
||||
iscsi? ( net-libs/libiscsi )
|
||||
io-uring? ( sys-libs/liburing:=[static-libs(+)] )
|
||||
jack? ( virtual/jack )
|
||||
jemalloc? ( dev-libs/jemalloc )
|
||||
jpeg? ( media-libs/libjpeg-turbo:=[static-libs(+)] )
|
||||
lzo? ( dev-libs/lzo:2[static-libs(+)] )
|
||||
multipath? ( sys-fs/multipath-tools )
|
||||
ncurses? (
|
||||
sys-libs/ncurses:=[unicode(+)]
|
||||
sys-libs/ncurses:=[static-libs(+)]
|
||||
)
|
||||
nfs? ( >=net-fs/libnfs-1.9.3:=[static-libs(+)] )
|
||||
numa? ( sys-process/numactl[static-libs(+)] )
|
||||
opengl? (
|
||||
virtual/opengl
|
||||
media-libs/libepoxy[static-libs(+)]
|
||||
media-libs/mesa[static-libs(+)]
|
||||
media-libs/mesa[egl(+),gbm(+)]
|
||||
)
|
||||
pam? ( sys-libs/pam )
|
||||
png? ( media-libs/libpng:0=[static-libs(+)] )
|
||||
pulseaudio? ( media-libs/libpulse )
|
||||
rbd? ( sys-cluster/ceph )
|
||||
sasl? ( dev-libs/cyrus-sasl[static-libs(+)] )
|
||||
sdl? (
|
||||
media-libs/libsdl2[video]
|
||||
media-libs/libsdl2[static-libs(+)]
|
||||
)
|
||||
sdl-image? ( media-libs/sdl2-image[static-libs(+)] )
|
||||
seccomp? ( >=sys-libs/libseccomp-2.1.0[static-libs(+)] )
|
||||
slirp? ( net-libs/libslirp[static-libs(+)] )
|
||||
smartcard? ( >=app-emulation/libcacard-2.5.0[static-libs(+)] )
|
||||
snappy? ( app-arch/snappy:= )
|
||||
spice? (
|
||||
>=app-emulation/spice-protocol-0.12.3
|
||||
>=app-emulation/spice-0.12.0[static-libs(+)]
|
||||
)
|
||||
ssh? ( >=net-libs/libssh-0.8.6[static-libs(+)] )
|
||||
udev? ( virtual/libudev:= )
|
||||
usb? ( >=virtual/libusb-1-r2:1[static-libs(+)] )
|
||||
usbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] )
|
||||
vde? ( net-misc/vde[static-libs(+)] )
|
||||
virgl? ( media-libs/virglrenderer[static-libs(+)] )
|
||||
virtfs? ( sys-libs/libcap )
|
||||
xen? ( app-emulation/xen-tools:= )
|
||||
zstd? ( >=app-arch/zstd-1.4.0[static-libs(+)] )
|
||||
"
|
||||
|
||||
EDK2_OVMF_VERSION="202202"
|
||||
SEABIOS_VERSION="1.16.0"
|
||||
|
||||
X86_FIRMWARE_DEPEND="
|
||||
pin-upstream-blobs? (
|
||||
~sys-firmware/edk2-ovmf-bin-${EDK2_OVMF_VERSION}
|
||||
~sys-firmware/ipxe-1.21.1[binary,qemu]
|
||||
~sys-firmware/seabios-bin-${SEABIOS_VERSION}
|
||||
~sys-firmware/sgabios-0.1_pre10[binary]
|
||||
)
|
||||
!pin-upstream-blobs? (
|
||||
|| (
|
||||
>=sys-firmware/edk2-ovmf-${EDK2_OVMF_VERSION}
|
||||
>=sys-firmware/edk2-ovmf-bin-${EDK2_OVMF_VERSION}
|
||||
)
|
||||
sys-firmware/ipxe[qemu]
|
||||
|| (
|
||||
>=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios]
|
||||
>=sys-firmware/seabios-bin-${SEABIOS_VERSION}
|
||||
)
|
||||
sys-firmware/sgabios
|
||||
)"
|
||||
PPC_FIRMWARE_DEPEND="
|
||||
pin-upstream-blobs? (
|
||||
~sys-firmware/seabios-bin-${SEABIOS_VERSION}
|
||||
)
|
||||
!pin-upstream-blobs? (
|
||||
|| (
|
||||
>=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios]
|
||||
>=sys-firmware/seabios-bin-${SEABIOS_VERSION}
|
||||
)
|
||||
)
|
||||
"
|
||||
|
||||
BDEPEND="
|
||||
$(python_gen_impl_dep)
|
||||
dev-lang/perl
|
||||
dev-util/meson
|
||||
sys-apps/texinfo
|
||||
virtual/pkgconfig
|
||||
doc? (
|
||||
dev-python/sphinx[${PYTHON_USEDEP}]
|
||||
dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]
|
||||
)
|
||||
gtk? ( nls? ( sys-devel/gettext ) )
|
||||
test? (
|
||||
dev-libs/glib[utils]
|
||||
sys-devel/bc
|
||||
)
|
||||
"
|
||||
CDEPEND="
|
||||
!static? (
|
||||
${ALL_DEPEND//\[static-libs(+)]}
|
||||
${SOFTMMU_TOOLS_DEPEND//\[static-libs(+)]}
|
||||
)
|
||||
qemu_softmmu_targets_i386? ( ${X86_FIRMWARE_DEPEND} )
|
||||
qemu_softmmu_targets_x86_64? ( ${X86_FIRMWARE_DEPEND} )
|
||||
qemu_softmmu_targets_ppc? ( ${PPC_FIRMWARE_DEPEND} )
|
||||
qemu_softmmu_targets_ppc64? ( ${PPC_FIRMWARE_DEPEND} )
|
||||
"
|
||||
DEPEND="${CDEPEND}
|
||||
kernel_linux? ( >=sys-kernel/linux-headers-2.6.35 )
|
||||
static? (
|
||||
${ALL_DEPEND}
|
||||
${SOFTMMU_TOOLS_DEPEND}
|
||||
)
|
||||
static-user? ( ${ALL_DEPEND} )"
|
||||
RDEPEND="${CDEPEND}
|
||||
acct-group/kvm
|
||||
selinux? (
|
||||
sec-policy/selinux-qemu
|
||||
sys-libs/libselinux
|
||||
)"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${PN}-5.2.0-disable-keymap.patch
|
||||
"${FILESDIR}"/${PN}-6.0.0-make.patch
|
||||
"${FILESDIR}"/${PN}-7.1.0-also-build-virtfs-proxy-helper.patch
|
||||
"${FILESDIR}"/${PN}-7.1.0-capstone-include-path.patch
|
||||
"${FILESDIR}"/${PN}-7.2.0-disable-gmp.patch
|
||||
"${FILESDIR}"/${PN}-7.2.0-linux-headers-6.2-glibc-2.36.patch
|
||||
"${FILESDIR}"/${P}-CVE-2023-2861.patch
|
||||
)
|
||||
|
||||
QA_PREBUILT="
|
||||
usr/share/qemu/hppa-firmware.img
|
||||
usr/share/qemu/openbios-ppc
|
||||
usr/share/qemu/openbios-sparc64
|
||||
usr/share/qemu/openbios-sparc32
|
||||
usr/share/qemu/opensbi-riscv64-generic-fw_dynamic.elf
|
||||
usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.elf
|
||||
usr/share/qemu/palcode-clipper
|
||||
usr/share/qemu/s390-ccw.img
|
||||
usr/share/qemu/s390-netboot.img
|
||||
usr/share/qemu/u-boot.e500
|
||||
"
|
||||
|
||||
QA_WX_LOAD="usr/bin/qemu-i386
|
||||
usr/bin/qemu-x86_64
|
||||
usr/bin/qemu-alpha
|
||||
usr/bin/qemu-arm
|
||||
usr/bin/qemu-cris
|
||||
usr/bin/qemu-m68k
|
||||
usr/bin/qemu-microblaze
|
||||
usr/bin/qemu-microblazeel
|
||||
usr/bin/qemu-mips
|
||||
usr/bin/qemu-mipsel
|
||||
usr/bin/qemu-or1k
|
||||
usr/bin/qemu-ppc
|
||||
usr/bin/qemu-ppc64
|
||||
usr/bin/qemu-sh4
|
||||
usr/bin/qemu-sh4eb
|
||||
usr/bin/qemu-sparc
|
||||
usr/bin/qemu-sparc64
|
||||
usr/bin/qemu-armeb
|
||||
usr/bin/qemu-sparc32plus
|
||||
usr/bin/qemu-s390x
|
||||
usr/bin/qemu-unicore32
|
||||
"
|
||||
|
||||
DOC_CONTENTS="If you don't have kvm compiled into the kernel, make sure you have the
|
||||
kernel module loaded before running kvm. The easiest way to ensure that the
|
||||
kernel module is loaded is to load it on boot.
|
||||
For AMD CPUs the module is called 'kvm-amd'.
|
||||
For Intel CPUs the module is called 'kvm-intel'.
|
||||
Please review /etc/conf.d/modules for how to load these.
|
||||
|
||||
Make sure your user is in the 'kvm' group. Just run
|
||||
$ gpasswd -a <USER> kvm
|
||||
then have <USER> re-login.
|
||||
|
||||
For brand new installs, the default permissions on /dev/kvm might not let
|
||||
you access it. You can tell udev to reset ownership/perms:
|
||||
$ udevadm trigger -c add /dev/kvm
|
||||
|
||||
If you want to register binfmt handlers for qemu user targets:
|
||||
For openrc:
|
||||
# rc-update add qemu-binfmt
|
||||
For systemd:
|
||||
# ln -s /usr/share/qemu/binfmt.d/qemu.conf /etc/binfmt.d/qemu.conf"
|
||||
|
||||
pkg_pretend() {
|
||||
if use kernel_linux && kernel_is lt 2 6 25; then
|
||||
eerror "This version of KVM requires a host kernel of 2.6.25 or higher."
|
||||
elif use kernel_linux; then
|
||||
if ! linux_config_exists; then
|
||||
eerror "Unable to check your kernel for KVM support"
|
||||
else
|
||||
CONFIG_CHECK="~KVM ~TUN ~BRIDGE"
|
||||
ERROR_KVM="You must enable KVM in your kernel to continue"
|
||||
ERROR_KVM_AMD="If you have an AMD CPU, you must enable KVM_AMD in"
|
||||
ERROR_KVM_AMD+=" your kernel configuration."
|
||||
ERROR_KVM_INTEL="If you have an Intel CPU, you must enable"
|
||||
ERROR_KVM_INTEL+=" KVM_INTEL in your kernel configuration."
|
||||
ERROR_TUN="You will need the Universal TUN/TAP driver compiled"
|
||||
ERROR_TUN+=" into your kernel or loaded as a module to use the"
|
||||
ERROR_TUN+=" virtual network device if using -net tap."
|
||||
ERROR_BRIDGE="You will also need support for 802.1d"
|
||||
ERROR_BRIDGE+=" Ethernet Bridging for some network configurations."
|
||||
use vhost-net && CONFIG_CHECK+=" ~VHOST_NET"
|
||||
ERROR_VHOST_NET="You must enable VHOST_NET to have vhost-net"
|
||||
ERROR_VHOST_NET+=" support"
|
||||
|
||||
if use amd64 || use x86 || use amd64-linux || use x86-linux; then
|
||||
if grep -q AuthenticAMD /proc/cpuinfo; then
|
||||
CONFIG_CHECK+=" ~KVM_AMD"
|
||||
elif grep -q GenuineIntel /proc/cpuinfo; then
|
||||
CONFIG_CHECK+=" ~KVM_INTEL"
|
||||
fi
|
||||
fi
|
||||
|
||||
use python && CONFIG_CHECK+=" ~DEBUG_FS"
|
||||
ERROR_DEBUG_FS="debugFS support required for kvm_stat"
|
||||
|
||||
# Now do the actual checks setup above
|
||||
check_extra_config
|
||||
fi
|
||||
fi
|
||||
|
||||
if grep -qs '/usr/bin/qemu-kvm' "${EROOT}"/etc/libvirt/qemu/*.xml; then
|
||||
eerror "The kvm/qemu-kvm wrappers no longer exist, but your libvirt"
|
||||
eerror "instances are still pointing to it. Please update your"
|
||||
eerror "configs in /etc/libvirt/qemu/ to use the -enable-kvm flag"
|
||||
eerror "and the right system binary (e.g. qemu-system-x86_64)."
|
||||
die "update your virt configs to not use qemu-kvm"
|
||||
fi
|
||||
}
|
||||
|
||||
# Sanity check to make sure target lists are kept up-to-date.
|
||||
check_targets() {
|
||||
local var=$1 mak=$2
|
||||
local detected sorted
|
||||
|
||||
pushd "${S}"/configs/targets/ >/dev/null || die
|
||||
|
||||
# Force C locale until glibc is updated. #564936
|
||||
detected=$(echo $(printf '%s\n' *-${mak}.mak | sed "s:-${mak}.mak::" | LC_COLLATE=C sort -u))
|
||||
sorted=$(echo $(printf '%s\n' ${!var} | LC_COLLATE=C sort -u))
|
||||
if [[ ${sorted} != "${detected}" ]] ; then
|
||||
eerror "The ebuild needs to be kept in sync."
|
||||
eerror "${var}: ${sorted}"
|
||||
eerror "$(printf '%-*s' ${#var} configure): ${detected}"
|
||||
die "sync ${var} to the list of targets"
|
||||
fi
|
||||
|
||||
popd >/dev/null
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
check_targets IUSE_SOFTMMU_TARGETS softmmu
|
||||
check_targets IUSE_USER_TARGETS linux-user
|
||||
|
||||
default
|
||||
|
||||
# Use correct toolchain to fix cross-compiling
|
||||
tc-export AR AS LD NM OBJCOPY PKG_CONFIG RANLIB STRINGS
|
||||
export WINDRES=${CHOST}-windres
|
||||
|
||||
# Verbose builds
|
||||
MAKEOPTS+=" V=1"
|
||||
|
||||
# We already force -D_FORTIFY_SOURCE=2 (or 3) in our toolchain, but
|
||||
# this setting (-U then -D..=2) will prevent us from trying out 3, so
|
||||
# drop it. No change to level of protection b/c we patch our toolchain.
|
||||
sed -i -e 's/-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2//' configure || die
|
||||
|
||||
# Remove bundled modules
|
||||
rm -r dtc meson roms/*/ || die
|
||||
}
|
||||
|
||||
##
|
||||
# configures qemu based on the build directory and the build type
|
||||
# we are using.
|
||||
#
|
||||
qemu_src_configure() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
local buildtype=$1
|
||||
local builddir="${S}/${buildtype}-build"
|
||||
|
||||
mkdir "${builddir}" || die
|
||||
|
||||
local conf_opts=(
|
||||
--prefix=/usr
|
||||
--sysconfdir=/etc
|
||||
--bindir=/usr/bin
|
||||
--libdir=/usr/$(get_libdir)
|
||||
--datadir=/usr/share
|
||||
--docdir=/usr/share/doc/${PF}/html
|
||||
--mandir=/usr/share/man
|
||||
--localstatedir=/var
|
||||
--disable-bsd-user
|
||||
--disable-containers # bug #732972
|
||||
--disable-guest-agent
|
||||
--disable-strip
|
||||
--with-git-submodules=ignore
|
||||
|
||||
# bug #746752: TCG interpreter has a few limitations:
|
||||
# - it does not support FPU
|
||||
# - it's generally slower on non-self-modifying code
|
||||
# It's advantage is support for host architectures
|
||||
# where native codegeneration is not implemented.
|
||||
# Gentoo has qemu keyworded only on targets with
|
||||
# native code generation available. Avoid the interpreter.
|
||||
--disable-tcg-interpreter
|
||||
|
||||
--disable-werror
|
||||
# We support gnutls/nettle for crypto operations. It is possible
|
||||
# to use gcrypt when gnutls/nettle are disabled (but not when they
|
||||
# are enabled), but it's not really worth the hassle. Disable it
|
||||
# all the time to avoid automatically detecting it. #568856
|
||||
--disable-gcrypt
|
||||
--cc="$(tc-getCC)"
|
||||
--cxx="$(tc-getCXX)"
|
||||
--host-cc="$(tc-getBUILD_CC)"
|
||||
|
||||
$(use_enable alsa)
|
||||
$(use_enable debug debug-info)
|
||||
$(use_enable debug debug-tcg)
|
||||
$(use_enable jack)
|
||||
$(use_enable nls gettext)
|
||||
$(use_enable oss)
|
||||
$(use_enable plugins)
|
||||
$(use_enable pulseaudio pa)
|
||||
$(use_enable selinux)
|
||||
$(use_enable xattr attr)
|
||||
)
|
||||
|
||||
# Disable options not used by user targets. This simplifies building
|
||||
# static user targets (USE=static-user) considerably.
|
||||
conf_notuser() {
|
||||
if [[ ${buildtype} == "user" ]] ; then
|
||||
echo "--disable-${2:-$1}"
|
||||
else
|
||||
use_enable "$@"
|
||||
fi
|
||||
}
|
||||
# Enable option only for softmmu build, but not 'user' or 'tools'
|
||||
conf_softmmu() {
|
||||
if [[ ${buildtype} == "softmmu" ]] ; then
|
||||
use_enable "$@"
|
||||
else
|
||||
echo "--disable-${2:-$1}"
|
||||
fi
|
||||
}
|
||||
# Enable option only for tools build, but not 'user' or 'softmmu'
|
||||
conf_tools() {
|
||||
if [[ ${buildtype} == "tools" ]] ; then
|
||||
use_enable "$@"
|
||||
else
|
||||
echo "--disable-${2:-$1}"
|
||||
fi
|
||||
}
|
||||
# Special case for the malloc flag, because the --disable flag does
|
||||
# not exist and trying like above will break configuring.
|
||||
conf_malloc() {
|
||||
if [[ ! ${buildtype} == "user" ]] ; then
|
||||
usex "${1}" "--enable-malloc=${1}" ""
|
||||
fi
|
||||
}
|
||||
conf_opts+=(
|
||||
$(conf_notuser accessibility brlapi)
|
||||
$(conf_notuser aio linux-aio)
|
||||
$(conf_softmmu bpf)
|
||||
$(conf_notuser bzip2)
|
||||
$(conf_notuser capstone)
|
||||
$(conf_notuser curl)
|
||||
$(conf_tools doc docs)
|
||||
$(conf_notuser fdt)
|
||||
$(conf_notuser fuse)
|
||||
$(conf_notuser glusterfs)
|
||||
$(conf_notuser gnutls)
|
||||
$(conf_notuser gnutls nettle)
|
||||
$(conf_notuser gtk)
|
||||
$(conf_notuser infiniband rdma)
|
||||
$(conf_notuser iscsi libiscsi)
|
||||
$(conf_notuser io-uring linux-io-uring)
|
||||
$(conf_malloc jemalloc)
|
||||
$(conf_notuser jpeg vnc-jpeg)
|
||||
$(conf_notuser kernel_linux kvm)
|
||||
$(conf_notuser lzo)
|
||||
$(conf_notuser multipath mpath)
|
||||
$(conf_notuser ncurses curses)
|
||||
$(conf_notuser nfs libnfs)
|
||||
$(conf_notuser numa)
|
||||
$(conf_notuser opengl)
|
||||
$(conf_notuser pam auth-pam)
|
||||
$(conf_notuser png)
|
||||
$(conf_notuser rbd)
|
||||
$(conf_notuser sasl vnc-sasl)
|
||||
$(conf_notuser sdl)
|
||||
$(conf_softmmu sdl-image)
|
||||
$(conf_notuser seccomp)
|
||||
$(conf_notuser slirp)
|
||||
$(conf_notuser smartcard)
|
||||
$(conf_notuser snappy)
|
||||
$(conf_notuser spice)
|
||||
$(conf_notuser ssh libssh)
|
||||
$(conf_notuser udev libudev)
|
||||
$(conf_notuser usb libusb)
|
||||
$(conf_notuser usbredir usb-redir)
|
||||
$(conf_notuser vde)
|
||||
$(conf_notuser vhost-net)
|
||||
$(conf_notuser virgl virglrenderer)
|
||||
$(conf_softmmu virtfs)
|
||||
$(conf_notuser vnc)
|
||||
$(conf_notuser vte)
|
||||
$(conf_notuser xen)
|
||||
$(conf_notuser xen xen-pci-passthrough)
|
||||
# use prebuilt keymaps, bug #759604
|
||||
--disable-xkbcommon
|
||||
$(conf_notuser zstd)
|
||||
)
|
||||
|
||||
if [[ ! ${buildtype} == "user" ]] ; then
|
||||
# audio options
|
||||
local audio_opts=(
|
||||
# Note: backend order matters here: #716202
|
||||
# We iterate from higher-level to lower level.
|
||||
$(usex pulseaudio pa "")
|
||||
$(usev jack)
|
||||
$(usev sdl)
|
||||
$(usev alsa)
|
||||
$(usev oss)
|
||||
)
|
||||
conf_opts+=(
|
||||
--audio-drv-list=$(IFS=,; echo "${audio_opts[*]}")
|
||||
)
|
||||
fi
|
||||
|
||||
case ${buildtype} in
|
||||
user)
|
||||
conf_opts+=(
|
||||
--enable-linux-user
|
||||
--disable-system
|
||||
--disable-blobs
|
||||
--disable-tools
|
||||
--disable-cap-ng
|
||||
--disable-seccomp
|
||||
)
|
||||
local static_flag="static-user"
|
||||
;;
|
||||
softmmu)
|
||||
conf_opts+=(
|
||||
--disable-linux-user
|
||||
--enable-system
|
||||
--disable-tools
|
||||
--enable-cap-ng
|
||||
--enable-seccomp
|
||||
)
|
||||
local static_flag="static"
|
||||
;;
|
||||
tools)
|
||||
conf_opts+=(
|
||||
--disable-linux-user
|
||||
--disable-system
|
||||
--disable-blobs
|
||||
--enable-tools
|
||||
--enable-cap-ng
|
||||
)
|
||||
local static_flag="static"
|
||||
;;
|
||||
esac
|
||||
|
||||
local targets="${buildtype}_targets"
|
||||
[[ -n ${targets} ]] && conf_opts+=( --target-list="${!targets}" )
|
||||
|
||||
# Add support for SystemTAP
|
||||
use systemtap && conf_opts+=( --enable-trace-backend=dtrace )
|
||||
|
||||
# We always want to attempt to build with PIE support as it results
|
||||
# in a more secure binary. But it doesn't work with static or if
|
||||
# the current GCC doesn't have PIE support.
|
||||
if use ${static_flag}; then
|
||||
conf_opts+=( --static --disable-pie )
|
||||
else
|
||||
tc-enables-pie && conf_opts+=( --enable-pie )
|
||||
fi
|
||||
|
||||
# Meson will not use a cross-file unless cross_prefix is set.
|
||||
tc-is-cross-compiler && conf_opts+=( --cross-prefix="${CHOST}-" )
|
||||
|
||||
# Plumb through equivalent of EXTRA_ECONF to allow experiments
|
||||
# like bug #747928.
|
||||
conf_opts+=( ${EXTRA_CONF_QEMU} )
|
||||
|
||||
echo "../configure ${conf_opts[*]}"
|
||||
cd "${builddir}"
|
||||
../configure "${conf_opts[@]}" || die "configure failed"
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local target
|
||||
|
||||
python_setup
|
||||
|
||||
softmmu_targets= softmmu_bins=()
|
||||
user_targets= user_bins=()
|
||||
|
||||
for target in ${IUSE_SOFTMMU_TARGETS} ; do
|
||||
if use "qemu_softmmu_targets_${target}"; then
|
||||
softmmu_targets+=",${target}-softmmu"
|
||||
softmmu_bins+=( "qemu-system-${target}" )
|
||||
fi
|
||||
done
|
||||
|
||||
for target in ${IUSE_USER_TARGETS} ; do
|
||||
if use "qemu_user_targets_${target}"; then
|
||||
user_targets+=",${target}-linux-user"
|
||||
user_bins+=( "qemu-${target}" )
|
||||
fi
|
||||
done
|
||||
|
||||
softmmu_targets=${softmmu_targets#,}
|
||||
user_targets=${user_targets#,}
|
||||
|
||||
[[ -n ${softmmu_targets} ]] && qemu_src_configure "softmmu"
|
||||
[[ -n ${user_targets} ]] && qemu_src_configure "user"
|
||||
qemu_src_configure "tools"
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
if [[ -n ${user_targets} ]]; then
|
||||
cd "${S}/user-build" || die
|
||||
default
|
||||
fi
|
||||
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
cd "${S}/softmmu-build" || die
|
||||
default
|
||||
fi
|
||||
|
||||
cd "${S}/tools-build" || die
|
||||
default
|
||||
}
|
||||
|
||||
src_test() {
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
cd "${S}/softmmu-build" || die
|
||||
pax-mark m */qemu-system-* #515550
|
||||
emake check
|
||||
fi
|
||||
}
|
||||
|
||||
qemu_python_install() {
|
||||
python_domodule "${S}/python/qemu"
|
||||
|
||||
python_doscript "${S}/scripts/kvm/vmxcap"
|
||||
python_doscript "${S}/scripts/qmp/qmp-shell"
|
||||
python_doscript "${S}/scripts/qmp/qemu-ga-client"
|
||||
}
|
||||
|
||||
# Generate binfmt support files.
|
||||
# - /etc/init.d/qemu-binfmt script which registers the user handlers (openrc)
|
||||
# - /usr/share/qemu/binfmt.d/qemu.conf (for use with systemd-binfmt)
|
||||
generate_initd() {
|
||||
local out="${T}/qemu-binfmt"
|
||||
local out_systemd="${T}/qemu.conf"
|
||||
local d="${T}/binfmt.d"
|
||||
|
||||
einfo "Generating qemu binfmt scripts and configuration files"
|
||||
|
||||
# Generate the debian fragments first.
|
||||
mkdir -p "${d}"
|
||||
"${S}"/scripts/qemu-binfmt-conf.sh \
|
||||
--debian \
|
||||
--exportdir "${d}" \
|
||||
--qemu-path "${EPREFIX}/usr/bin" \
|
||||
|| die
|
||||
# Then turn the fragments into a shell script we can source.
|
||||
sed -E -i \
|
||||
-e 's:^([^ ]+) (.*)$:\1="\2":' \
|
||||
"${d}"/* || die
|
||||
|
||||
# Generate the init.d script by assembling the fragments from above.
|
||||
local f qcpu package interpreter magic mask
|
||||
cat "${FILESDIR}"/qemu-binfmt.initd.head >"${out}" || die
|
||||
for f in "${d}"/qemu-* ; do
|
||||
source "${f}"
|
||||
|
||||
# Normalize the cpu logic like we do in the init.d for the native cpu.
|
||||
qcpu=${package#qemu-}
|
||||
case ${qcpu} in
|
||||
arm*) qcpu="arm";;
|
||||
mips*) qcpu="mips";;
|
||||
ppc*) qcpu="ppc";;
|
||||
s390*) qcpu="s390";;
|
||||
sh*) qcpu="sh";;
|
||||
sparc*) qcpu="sparc";;
|
||||
esac
|
||||
|
||||
# we use 'printf' here to be portable across 'sh'
|
||||
# implementations: #679168
|
||||
cat <<EOF >>"${out}"
|
||||
if [ "\${cpu}" != "${qcpu}" -a -x "${interpreter}" ] ; then
|
||||
printf '%s\n' ':${package}:M::${magic}:${mask}:${interpreter}:'"\${QEMU_BINFMT_FLAGS}" >/proc/sys/fs/binfmt_misc/register
|
||||
fi
|
||||
EOF
|
||||
|
||||
echo ":${package}:M::${magic}:${mask}:${interpreter}:OC" >>"${out_systemd}"
|
||||
|
||||
done
|
||||
cat "${FILESDIR}"/qemu-binfmt.initd.tail >>"${out}" || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
if [[ -n ${user_targets} ]]; then
|
||||
cd "${S}/user-build"
|
||||
emake DESTDIR="${ED}" install
|
||||
|
||||
# Install binfmt handler init script for user targets.
|
||||
generate_initd
|
||||
doinitd "${T}/qemu-binfmt"
|
||||
|
||||
# Install binfmt/qemu.conf.
|
||||
insinto "/usr/share/qemu/binfmt.d"
|
||||
doins "${T}/qemu.conf"
|
||||
fi
|
||||
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
cd "${S}/softmmu-build"
|
||||
emake DESTDIR="${ED}" install
|
||||
|
||||
# This might not exist if the test failed. #512010
|
||||
[[ -e check-report.html ]] && dodoc check-report.html
|
||||
|
||||
if use kernel_linux; then
|
||||
udev_newrules "${FILESDIR}"/65-kvm.rules-r2 65-kvm.rules
|
||||
fi
|
||||
|
||||
if use python; then
|
||||
python_foreach_impl qemu_python_install
|
||||
fi
|
||||
fi
|
||||
|
||||
cd "${S}/tools-build" || die
|
||||
emake DESTDIR="${ED}" install
|
||||
|
||||
# If USE=doc, there'll be newly generated docs which we install instead.
|
||||
if ! use doc && [[ ${QEMU_DOCS_PREBUILT} == 1 ]] ; then
|
||||
doman "${WORKDIR}"/${PN}-${QEMU_DOCS_VERSION}-docs/docs/*.[0-8]
|
||||
fi
|
||||
|
||||
# Disable mprotect on the qemu binaries as they use JITs to be fast #459348
|
||||
pushd "${ED}"/usr/bin >/dev/null || die
|
||||
pax-mark mr "${softmmu_bins[@]}" "${user_bins[@]}" # bug 575594
|
||||
popd >/dev/null || die
|
||||
|
||||
# Install config file example for qemu-bridge-helper
|
||||
insinto "/etc/qemu"
|
||||
doins "${FILESDIR}/bridge.conf"
|
||||
|
||||
cd "${S}" || die
|
||||
dodoc MAINTAINERS docs/specs/pci-ids.txt
|
||||
newdoc pc-bios/README README.pc-bios
|
||||
|
||||
# Disallow stripping of prebuilt firmware files.
|
||||
dostrip -x ${QA_PREBUILT}
|
||||
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
# Remove SeaBIOS since we're using the SeaBIOS packaged one
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
||||
dosym ../seabios/bios-256k.bin /usr/share/qemu/bios-256k.bin
|
||||
fi
|
||||
|
||||
# Remove vgabios since we're using the seavgabios packaged one
|
||||
rm "${ED}/usr/share/qemu/vgabios.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-cirrus.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-qxl.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-stdvga.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-virtio.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-vmware.bin"
|
||||
|
||||
# PPC/PPC64 loads vgabios-stdvga
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 || use qemu_softmmu_targets_ppc || use qemu_softmmu_targets_ppc64; then
|
||||
dosym ../seavgabios/vgabios-isavga.bin /usr/share/qemu/vgabios.bin
|
||||
dosym ../seavgabios/vgabios-cirrus.bin /usr/share/qemu/vgabios-cirrus.bin
|
||||
dosym ../seavgabios/vgabios-qxl.bin /usr/share/qemu/vgabios-qxl.bin
|
||||
dosym ../seavgabios/vgabios-stdvga.bin /usr/share/qemu/vgabios-stdvga.bin
|
||||
dosym ../seavgabios/vgabios-virtio.bin /usr/share/qemu/vgabios-virtio.bin
|
||||
dosym ../seavgabios/vgabios-vmware.bin /usr/share/qemu/vgabios-vmware.bin
|
||||
fi
|
||||
|
||||
# Remove sgabios since we're using the sgabios packaged one
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
||||
dosym ../sgabios/sgabios.bin /usr/share/qemu/sgabios.bin
|
||||
fi
|
||||
|
||||
# Remove iPXE since we're using the iPXE packaged one
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
||||
dosym ../ipxe/8086100e.rom /usr/share/qemu/pxe-e1000.rom
|
||||
dosym ../ipxe/80861209.rom /usr/share/qemu/pxe-eepro100.rom
|
||||
dosym ../ipxe/10500940.rom /usr/share/qemu/pxe-ne2k_pci.rom
|
||||
dosym ../ipxe/10222000.rom /usr/share/qemu/pxe-pcnet.rom
|
||||
dosym ../ipxe/10ec8139.rom /usr/share/qemu/pxe-rtl8139.rom
|
||||
dosym ../ipxe/1af41000.rom /usr/share/qemu/pxe-virtio.rom
|
||||
fi
|
||||
fi
|
||||
|
||||
DISABLE_AUTOFORMATTING=true
|
||||
readme.gentoo_create_doc
|
||||
}
|
||||
|
||||
firmware_abi_change() {
|
||||
local pv
|
||||
for pv in ${REPLACING_VERSIONS}; do
|
||||
if ver_test ${pv} -lt ${FIRMWARE_ABI_VERSION}; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
if [[ -n ${softmmu_targets} ]] && use kernel_linux; then
|
||||
udev_reload
|
||||
fi
|
||||
|
||||
xdg_icon_cache_update
|
||||
|
||||
[[ -z ${EPREFIX} ]] && [[ -f ${EROOT}/usr/libexec/qemu-bridge-helper ]] && \
|
||||
fcaps cap_net_admin "${EROOT}"/usr/libexec/qemu-bridge-helper
|
||||
|
||||
DISABLE_AUTOFORMATTING=true
|
||||
readme.gentoo_print_elog
|
||||
|
||||
if use pin-upstream-blobs && firmware_abi_change; then
|
||||
ewarn "This version of qemu pins new versions of firmware blobs:"
|
||||
|
||||
if has_version 'sys-firmware/edk2-ovmf-bin'; then
|
||||
ewarn " $(best_version sys-firmware/edk2-ovmf-bin)"
|
||||
else
|
||||
ewarn " $(best_version sys-firmware/edk2-ovmf)"
|
||||
fi
|
||||
|
||||
if has_version 'sys-firmware/seabios-bin'; then
|
||||
ewarn " $(best_version sys-firmware/seabios-bin)"
|
||||
else
|
||||
ewarn " $(best_version sys-firmware/seabios)"
|
||||
fi
|
||||
|
||||
ewarn " $(best_version sys-firmware/ipxe)"
|
||||
ewarn " $(best_version sys-firmware/sgabios)"
|
||||
ewarn "This might break resume of hibernated guests (started with a different"
|
||||
ewarn "firmware version) and live migration to/from qemu versions with different"
|
||||
ewarn "firmware. Please (cold) restart all running guests. For functional"
|
||||
ewarn "guest migration ensure that all"
|
||||
ewarn "hosts run at least"
|
||||
ewarn " app-emulation/qemu-${FIRMWARE_ABI_VERSION}."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_info() {
|
||||
echo "Using:"
|
||||
echo " $(best_version app-emulation/spice-protocol)"
|
||||
|
||||
if has_version 'sys-firmware/edk2-ovmf-bin'; then
|
||||
echo " $(best_version sys-firmware/edk2-ovmf-bin)"
|
||||
else
|
||||
echo " $(best_version sys-firmware/edk2-ovmf)"
|
||||
fi
|
||||
|
||||
if has_version 'sys-firmware/seabios-bin'; then
|
||||
echo " $(best_version sys-firmware/seabios-bin)"
|
||||
else
|
||||
echo " $(best_version sys-firmware/seabios)"
|
||||
fi
|
||||
|
||||
echo " $(best_version sys-firmware/ipxe)"
|
||||
echo " $(best_version sys-firmware/sgabios)"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
xdg_icon_cache_update
|
||||
udev_reload
|
||||
}
|
||||
@ -41,7 +41,7 @@ else
|
||||
fi
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
[[ "${PV}" != *_rc* ]] && KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
|
||||
[[ "${PV}" != *_rc* ]] && KEYWORDS="amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
|
||||
fi
|
||||
|
||||
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
|
||||
|
||||
964
sdk_container/src/third_party/portage-stable/app-emulation/qemu/qemu-8.0.2-r2.ebuild
vendored
Normal file
964
sdk_container/src/third_party/portage-stable/app-emulation/qemu/qemu-8.0.2-r2.ebuild
vendored
Normal file
@ -0,0 +1,964 @@
|
||||
# Copyright 1999-2023 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-qemu-docs
|
||||
# Set to 1 if prebuilt, 0 if not
|
||||
# (the construct below is to allow overriding from env for script)
|
||||
QEMU_DOCS_PREBUILT=${QEMU_DOCS_PREBUILT:-1}
|
||||
QEMU_DOCS_PREBUILT_DEV=sam
|
||||
QEMU_DOCS_VERSION="8.0.0"
|
||||
# Default to generating docs (inc. man pages) if no prebuilt; overridden later
|
||||
# bug #830088
|
||||
QEMU_DOC_USEFLAG="+doc"
|
||||
|
||||
PYTHON_COMPAT=( python3_{9,10,11} )
|
||||
PYTHON_REQ_USE="ncurses,readline"
|
||||
|
||||
FIRMWARE_ABI_VERSION="7.2.0"
|
||||
|
||||
inherit linux-info toolchain-funcs python-r1 udev fcaps readme.gentoo-r1 \
|
||||
pax-utils xdg-utils
|
||||
|
||||
if [[ ${PV} == *9999* ]]; then
|
||||
QEMU_DOCS_PREBUILT=0
|
||||
|
||||
EGIT_REPO_URI="https://gitlab.com/qemu-project/qemu.git/"
|
||||
EGIT_SUBMODULES=(
|
||||
tests/fp/berkeley-softfloat-3
|
||||
tests/fp/berkeley-testfloat-3
|
||||
ui/keycodemapdb
|
||||
)
|
||||
inherit git-r3
|
||||
SRC_URI=""
|
||||
else
|
||||
MY_P="${PN}-${PV/_rc/-rc}"
|
||||
SRC_URI="https://download.qemu.org/${MY_P}.tar.xz"
|
||||
|
||||
if [[ ${QEMU_DOCS_PREBUILT} == 1 ]] ; then
|
||||
SRC_URI+=" !doc? ( https://dev.gentoo.org/~${QEMU_DOCS_PREBUILT_DEV}/distfiles/${CATEGORY}/${PN}/${PN}-${QEMU_DOCS_VERSION}-docs.tar.xz )"
|
||||
fi
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
[[ "${PV}" != *_rc* ]] && KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
|
||||
fi
|
||||
|
||||
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
|
||||
HOMEPAGE="https://www.qemu.org https://www.linux-kvm.org"
|
||||
|
||||
LICENSE="GPL-2 LGPL-2 BSD-2"
|
||||
SLOT="0"
|
||||
|
||||
[[ ${QEMU_DOCS_PREBUILT} == 1 ]] && QEMU_DOC_USEFLAG="doc"
|
||||
|
||||
IUSE="accessibility +aio alsa bpf bzip2 capstone +curl debug ${QEMU_DOC_USEFLAG}
|
||||
+fdt fuse glusterfs +gnutls gtk infiniband iscsi io-uring
|
||||
jack jemalloc +jpeg
|
||||
lzo multipath
|
||||
ncurses nfs nls numa opengl +oss pam +pin-upstream-blobs
|
||||
plugins +png pulseaudio python rbd sasl +seccomp sdl sdl-image selinux
|
||||
+slirp
|
||||
smartcard snappy spice ssh static-user systemtap test udev usb
|
||||
usbredir vde +vhost-net virgl virtfs +vnc vte xattr xen
|
||||
zstd"
|
||||
|
||||
COMMON_TARGETS="
|
||||
aarch64
|
||||
alpha
|
||||
arm
|
||||
cris
|
||||
hppa
|
||||
i386
|
||||
loongarch64
|
||||
m68k
|
||||
microblaze
|
||||
microblazeel
|
||||
mips
|
||||
mips64
|
||||
mips64el
|
||||
mipsel
|
||||
nios2
|
||||
or1k
|
||||
ppc
|
||||
ppc64
|
||||
riscv32
|
||||
riscv64
|
||||
s390x
|
||||
sh4
|
||||
sh4eb
|
||||
sparc
|
||||
sparc64
|
||||
x86_64
|
||||
xtensa
|
||||
xtensaeb
|
||||
"
|
||||
IUSE_SOFTMMU_TARGETS="
|
||||
${COMMON_TARGETS}
|
||||
avr
|
||||
rx
|
||||
tricore
|
||||
"
|
||||
IUSE_USER_TARGETS="
|
||||
${COMMON_TARGETS}
|
||||
aarch64_be
|
||||
armeb
|
||||
hexagon
|
||||
mipsn32
|
||||
mipsn32el
|
||||
ppc64le
|
||||
sparc32plus
|
||||
"
|
||||
|
||||
use_softmmu_targets=$(printf ' qemu_softmmu_targets_%s' ${IUSE_SOFTMMU_TARGETS})
|
||||
use_user_targets=$(printf ' qemu_user_targets_%s' ${IUSE_USER_TARGETS})
|
||||
IUSE+=" ${use_softmmu_targets} ${use_user_targets}"
|
||||
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
# Allow no targets to be built so that people can get a tools-only build.
|
||||
# Block USE flag configurations known to not work.
|
||||
REQUIRED_USE="
|
||||
${PYTHON_REQUIRED_USE}
|
||||
qemu_softmmu_targets_arm? ( fdt )
|
||||
qemu_softmmu_targets_microblaze? ( fdt )
|
||||
qemu_softmmu_targets_mips64el? ( fdt )
|
||||
qemu_softmmu_targets_ppc64? ( fdt )
|
||||
qemu_softmmu_targets_ppc? ( fdt )
|
||||
qemu_softmmu_targets_riscv32? ( fdt )
|
||||
qemu_softmmu_targets_riscv64? ( fdt )
|
||||
qemu_softmmu_targets_x86_64? ( fdt )
|
||||
sdl-image? ( sdl )
|
||||
static-user? ( !plugins )
|
||||
virgl? ( opengl )
|
||||
virtfs? ( xattr )
|
||||
vnc? ( gnutls )
|
||||
vte? ( gtk )
|
||||
multipath? ( udev )
|
||||
plugins? ( !static-user )
|
||||
"
|
||||
for smname in ${IUSE_SOFTMMU_TARGETS} ; do
|
||||
REQUIRED_USE+=" qemu_softmmu_targets_${smname}? ( kernel_linux? ( seccomp ) )"
|
||||
done
|
||||
|
||||
# Dependencies required for qemu tools (qemu-nbd, qemu-img, qemu-io, ...)
|
||||
# and user/softmmu targets (qemu-*, qemu-system-*).
|
||||
#
|
||||
# Yep, you need both libcap and libcap-ng since virtfs only uses libcap.
|
||||
#
|
||||
# The attr lib isn't always linked in (although the USE flag is always
|
||||
# respected). This is because qemu supports using the C library's API
|
||||
# when available rather than always using the external library.
|
||||
ALL_DEPEND="
|
||||
dev-libs/glib:2[static-libs(+)]
|
||||
sys-libs/zlib[static-libs(+)]
|
||||
python? ( ${PYTHON_DEPS} )
|
||||
systemtap? ( dev-util/systemtap )
|
||||
xattr? ( sys-apps/attr[static-libs(+)] )"
|
||||
|
||||
# Dependencies required for qemu tools (qemu-nbd, qemu-img, qemu-io, ...)
|
||||
# softmmu targets (qemu-system-*).
|
||||
SOFTMMU_TOOLS_DEPEND="
|
||||
>=x11-libs/pixman-0.28.0[static-libs(+)]
|
||||
accessibility? (
|
||||
app-accessibility/brltty[api]
|
||||
app-accessibility/brltty[static-libs(+)]
|
||||
)
|
||||
aio? ( dev-libs/libaio[static-libs(+)] )
|
||||
alsa? ( >=media-libs/alsa-lib-1.0.13 )
|
||||
bpf? ( dev-libs/libbpf:= )
|
||||
bzip2? ( app-arch/bzip2[static-libs(+)] )
|
||||
capstone? ( dev-libs/capstone:=[static-libs(+)] )
|
||||
curl? ( >=net-misc/curl-7.15.4[static-libs(+)] )
|
||||
fdt? ( >=sys-apps/dtc-1.5.1[static-libs(+)] )
|
||||
fuse? ( >=sys-fs/fuse-3.1:3[static-libs(+)] )
|
||||
glusterfs? ( >=sys-cluster/glusterfs-3.4.0[static-libs(+)] )
|
||||
gnutls? (
|
||||
>=net-libs/gnutls-3.0:=[static-libs(+)]
|
||||
dev-libs/nettle:=[static-libs(+)]
|
||||
)
|
||||
gtk? (
|
||||
x11-libs/cairo
|
||||
x11-libs/gdk-pixbuf:2
|
||||
x11-libs/gtk+:3
|
||||
x11-libs/libX11
|
||||
vte? ( x11-libs/vte:2.91 )
|
||||
)
|
||||
infiniband? ( sys-cluster/rdma-core[static-libs(+)] )
|
||||
iscsi? ( net-libs/libiscsi )
|
||||
io-uring? ( sys-libs/liburing:=[static-libs(+)] )
|
||||
jack? ( virtual/jack )
|
||||
jemalloc? ( dev-libs/jemalloc )
|
||||
jpeg? ( media-libs/libjpeg-turbo:=[static-libs(+)] )
|
||||
kernel_linux? ( sys-libs/libcap-ng[static-libs(+)] )
|
||||
lzo? ( dev-libs/lzo:2[static-libs(+)] )
|
||||
multipath? ( sys-fs/multipath-tools )
|
||||
ncurses? (
|
||||
sys-libs/ncurses:=[unicode(+)]
|
||||
sys-libs/ncurses:=[static-libs(+)]
|
||||
)
|
||||
nfs? ( >=net-fs/libnfs-1.9.3:=[static-libs(+)] )
|
||||
numa? ( sys-process/numactl[static-libs(+)] )
|
||||
opengl? (
|
||||
virtual/opengl
|
||||
media-libs/libepoxy[static-libs(+)]
|
||||
media-libs/mesa[static-libs(+)]
|
||||
media-libs/mesa[egl(+),gbm(+)]
|
||||
)
|
||||
pam? ( sys-libs/pam )
|
||||
png? ( >=media-libs/libpng-1.6.34:=[static-libs(+)] )
|
||||
pulseaudio? ( media-libs/libpulse )
|
||||
rbd? ( sys-cluster/ceph )
|
||||
sasl? ( dev-libs/cyrus-sasl[static-libs(+)] )
|
||||
sdl? (
|
||||
media-libs/libsdl2[video]
|
||||
media-libs/libsdl2[static-libs(+)]
|
||||
)
|
||||
sdl-image? ( media-libs/sdl2-image[static-libs(+)] )
|
||||
seccomp? ( >=sys-libs/libseccomp-2.1.0[static-libs(+)] )
|
||||
slirp? ( net-libs/libslirp[static-libs(+)] )
|
||||
smartcard? ( >=app-emulation/libcacard-2.5.0[static-libs(+)] )
|
||||
snappy? ( app-arch/snappy:= )
|
||||
spice? (
|
||||
>=app-emulation/spice-protocol-0.14.0
|
||||
>=app-emulation/spice-0.14.0[static-libs(+)]
|
||||
)
|
||||
ssh? ( >=net-libs/libssh-0.8.6[static-libs(+)] )
|
||||
udev? ( virtual/libudev:= )
|
||||
usb? ( >=virtual/libusb-1-r2:1[static-libs(+)] )
|
||||
usbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] )
|
||||
vde? ( net-misc/vde[static-libs(+)] )
|
||||
virgl? ( media-libs/virglrenderer[static-libs(+)] )
|
||||
virtfs? ( sys-libs/libcap )
|
||||
xen? ( app-emulation/xen-tools:= )
|
||||
zstd? ( >=app-arch/zstd-1.4.0[static-libs(+)] )
|
||||
"
|
||||
|
||||
EDK2_OVMF_VERSION="202202"
|
||||
SEABIOS_VERSION="1.16.0"
|
||||
|
||||
X86_FIRMWARE_DEPEND="
|
||||
pin-upstream-blobs? (
|
||||
~sys-firmware/edk2-ovmf-bin-${EDK2_OVMF_VERSION}
|
||||
~sys-firmware/ipxe-1.21.1[binary,qemu]
|
||||
~sys-firmware/seabios-bin-${SEABIOS_VERSION}
|
||||
~sys-firmware/sgabios-0.1_pre10[binary]
|
||||
)
|
||||
!pin-upstream-blobs? (
|
||||
|| (
|
||||
>=sys-firmware/edk2-ovmf-${EDK2_OVMF_VERSION}
|
||||
>=sys-firmware/edk2-ovmf-bin-${EDK2_OVMF_VERSION}
|
||||
)
|
||||
sys-firmware/ipxe[qemu]
|
||||
|| (
|
||||
>=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios]
|
||||
>=sys-firmware/seabios-bin-${SEABIOS_VERSION}
|
||||
)
|
||||
sys-firmware/sgabios
|
||||
)"
|
||||
PPC_FIRMWARE_DEPEND="
|
||||
pin-upstream-blobs? (
|
||||
~sys-firmware/seabios-bin-${SEABIOS_VERSION}
|
||||
)
|
||||
!pin-upstream-blobs? (
|
||||
|| (
|
||||
>=sys-firmware/seabios-${SEABIOS_VERSION}[seavgabios]
|
||||
>=sys-firmware/seabios-bin-${SEABIOS_VERSION}
|
||||
)
|
||||
)
|
||||
"
|
||||
|
||||
BDEPEND="
|
||||
$(python_gen_impl_dep)
|
||||
dev-lang/perl
|
||||
dev-util/meson
|
||||
sys-apps/texinfo
|
||||
virtual/pkgconfig
|
||||
doc? (
|
||||
dev-python/sphinx[${PYTHON_USEDEP}]
|
||||
dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]
|
||||
)
|
||||
gtk? ( nls? ( sys-devel/gettext ) )
|
||||
test? (
|
||||
dev-libs/glib[utils]
|
||||
sys-devel/bc
|
||||
)
|
||||
"
|
||||
CDEPEND="
|
||||
${ALL_DEPEND//\[static-libs(+)]}
|
||||
${SOFTMMU_TOOLS_DEPEND//\[static-libs(+)]}
|
||||
qemu_softmmu_targets_i386? ( ${X86_FIRMWARE_DEPEND} )
|
||||
qemu_softmmu_targets_x86_64? ( ${X86_FIRMWARE_DEPEND} )
|
||||
qemu_softmmu_targets_ppc? ( ${PPC_FIRMWARE_DEPEND} )
|
||||
qemu_softmmu_targets_ppc64? ( ${PPC_FIRMWARE_DEPEND} )
|
||||
"
|
||||
DEPEND="${CDEPEND}
|
||||
kernel_linux? ( >=sys-kernel/linux-headers-2.6.35 )
|
||||
static-user? ( ${ALL_DEPEND} )"
|
||||
RDEPEND="${CDEPEND}
|
||||
acct-group/kvm
|
||||
selinux? (
|
||||
sec-policy/selinux-qemu
|
||||
sys-libs/libselinux
|
||||
)"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${PN}-8.0.0-disable-keymap.patch
|
||||
"${FILESDIR}"/${PN}-8.0.0-make.patch
|
||||
"${FILESDIR}"/${PN}-7.1.0-also-build-virtfs-proxy-helper.patch
|
||||
"${FILESDIR}"/${PN}-7.1.0-capstone-include-path.patch
|
||||
"${FILESDIR}"/${PN}-7.2.0-disable-gmp.patch
|
||||
"${FILESDIR}"/${PN}-8.0.0-remove-python-meson-check.patch
|
||||
"${FILESDIR}"/${P}-CVE-2023-2861.patch
|
||||
)
|
||||
|
||||
QA_PREBUILT="
|
||||
usr/share/qemu/hppa-firmware.img
|
||||
usr/share/qemu/openbios-ppc
|
||||
usr/share/qemu/openbios-sparc64
|
||||
usr/share/qemu/openbios-sparc32
|
||||
usr/share/qemu/opensbi-riscv64-generic-fw_dynamic.elf
|
||||
usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.elf
|
||||
usr/share/qemu/palcode-clipper
|
||||
usr/share/qemu/s390-ccw.img
|
||||
usr/share/qemu/s390-netboot.img
|
||||
usr/share/qemu/u-boot.e500
|
||||
"
|
||||
|
||||
QA_WX_LOAD="usr/bin/qemu-i386
|
||||
usr/bin/qemu-x86_64
|
||||
usr/bin/qemu-alpha
|
||||
usr/bin/qemu-arm
|
||||
usr/bin/qemu-cris
|
||||
usr/bin/qemu-m68k
|
||||
usr/bin/qemu-microblaze
|
||||
usr/bin/qemu-microblazeel
|
||||
usr/bin/qemu-mips
|
||||
usr/bin/qemu-mipsel
|
||||
usr/bin/qemu-or1k
|
||||
usr/bin/qemu-ppc
|
||||
usr/bin/qemu-ppc64
|
||||
usr/bin/qemu-sh4
|
||||
usr/bin/qemu-sh4eb
|
||||
usr/bin/qemu-sparc
|
||||
usr/bin/qemu-sparc64
|
||||
usr/bin/qemu-armeb
|
||||
usr/bin/qemu-sparc32plus
|
||||
usr/bin/qemu-s390x
|
||||
usr/bin/qemu-unicore32
|
||||
"
|
||||
|
||||
DOC_CONTENTS="If you don't have kvm compiled into the kernel, make sure you have the
|
||||
kernel module loaded before running kvm. The easiest way to ensure that the
|
||||
kernel module is loaded is to load it on boot.
|
||||
For AMD CPUs the module is called 'kvm-amd'.
|
||||
For Intel CPUs the module is called 'kvm-intel'.
|
||||
Please review /etc/conf.d/modules for how to load these.
|
||||
|
||||
Make sure your user is in the 'kvm' group. Just run
|
||||
$ gpasswd -a <USER> kvm
|
||||
then have <USER> re-login.
|
||||
|
||||
For brand new installs, the default permissions on /dev/kvm might not let
|
||||
you access it. You can tell udev to reset ownership/perms:
|
||||
$ udevadm trigger -c add /dev/kvm
|
||||
|
||||
If you want to register binfmt handlers for qemu user targets:
|
||||
For openrc:
|
||||
# rc-update add qemu-binfmt
|
||||
For systemd:
|
||||
# ln -s /usr/share/qemu/binfmt.d/qemu.conf /etc/binfmt.d/qemu.conf"
|
||||
|
||||
pkg_pretend() {
|
||||
if use kernel_linux && kernel_is lt 2 6 25; then
|
||||
eerror "This version of KVM requires a host kernel of 2.6.25 or higher."
|
||||
elif use kernel_linux; then
|
||||
if ! linux_config_exists; then
|
||||
eerror "Unable to check your kernel for KVM support"
|
||||
else
|
||||
CONFIG_CHECK="~KVM ~TUN ~BRIDGE"
|
||||
ERROR_KVM="You must enable KVM in your kernel to continue"
|
||||
ERROR_KVM_AMD="If you have an AMD CPU, you must enable KVM_AMD in"
|
||||
ERROR_KVM_AMD+=" your kernel configuration."
|
||||
ERROR_KVM_INTEL="If you have an Intel CPU, you must enable"
|
||||
ERROR_KVM_INTEL+=" KVM_INTEL in your kernel configuration."
|
||||
ERROR_TUN="You will need the Universal TUN/TAP driver compiled"
|
||||
ERROR_TUN+=" into your kernel or loaded as a module to use the"
|
||||
ERROR_TUN+=" virtual network device if using -net tap."
|
||||
ERROR_BRIDGE="You will also need support for 802.1d"
|
||||
ERROR_BRIDGE+=" Ethernet Bridging for some network configurations."
|
||||
use vhost-net && CONFIG_CHECK+=" ~VHOST_NET"
|
||||
ERROR_VHOST_NET="You must enable VHOST_NET to have vhost-net"
|
||||
ERROR_VHOST_NET+=" support"
|
||||
|
||||
if use amd64 || use x86 || use amd64-linux || use x86-linux; then
|
||||
if grep -q AuthenticAMD /proc/cpuinfo; then
|
||||
CONFIG_CHECK+=" ~KVM_AMD"
|
||||
elif grep -q GenuineIntel /proc/cpuinfo; then
|
||||
CONFIG_CHECK+=" ~KVM_INTEL"
|
||||
fi
|
||||
fi
|
||||
|
||||
use python && CONFIG_CHECK+=" ~DEBUG_FS"
|
||||
ERROR_DEBUG_FS="debugFS support required for kvm_stat"
|
||||
|
||||
# Now do the actual checks setup above
|
||||
check_extra_config
|
||||
fi
|
||||
fi
|
||||
|
||||
if grep -qs '/usr/bin/qemu-kvm' "${EROOT}"/etc/libvirt/qemu/*.xml; then
|
||||
eerror "The kvm/qemu-kvm wrappers no longer exist, but your libvirt"
|
||||
eerror "instances are still pointing to it. Please update your"
|
||||
eerror "configs in /etc/libvirt/qemu/ to use the -enable-kvm flag"
|
||||
eerror "and the right system binary (e.g. qemu-system-x86_64)."
|
||||
die "update your virt configs to not use qemu-kvm"
|
||||
fi
|
||||
}
|
||||
|
||||
# Sanity check to make sure target lists are kept up-to-date.
|
||||
check_targets() {
|
||||
local var=$1 mak=$2
|
||||
local detected sorted
|
||||
|
||||
pushd "${S}"/configs/targets/ >/dev/null || die
|
||||
|
||||
# Force C locale until glibc is updated. #564936
|
||||
detected=$(echo $(printf '%s\n' *-${mak}.mak | sed "s:-${mak}.mak::" | LC_COLLATE=C sort -u))
|
||||
sorted=$(echo $(printf '%s\n' ${!var} | LC_COLLATE=C sort -u))
|
||||
if [[ ${sorted} != "${detected}" ]] ; then
|
||||
eerror "The ebuild needs to be kept in sync."
|
||||
eerror "${var}: ${sorted}"
|
||||
eerror "$(printf '%-*s' ${#var} configure): ${detected}"
|
||||
die "sync ${var} to the list of targets"
|
||||
fi
|
||||
|
||||
popd >/dev/null
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
check_targets IUSE_SOFTMMU_TARGETS softmmu
|
||||
check_targets IUSE_USER_TARGETS linux-user
|
||||
|
||||
default
|
||||
|
||||
# Use correct toolchain to fix cross-compiling
|
||||
tc-export AR AS LD NM OBJCOPY PKG_CONFIG RANLIB STRINGS
|
||||
export WINDRES=${CHOST}-windres
|
||||
|
||||
# Verbose builds
|
||||
MAKEOPTS+=" V=1"
|
||||
|
||||
# We already force -D_FORTIFY_SOURCE=2 (or 3) in our toolchain, but
|
||||
# this setting (-U then -D..=2) will prevent us from trying out 3, so
|
||||
# drop it. No change to level of protection b/c we patch our toolchain.
|
||||
sed -i -e 's/-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2//' configure || die
|
||||
|
||||
# Remove bundled modules
|
||||
rm -r dtc meson roms/*/ || die
|
||||
}
|
||||
|
||||
##
|
||||
# configures qemu based on the build directory and the build type
|
||||
# we are using.
|
||||
#
|
||||
qemu_src_configure() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
local buildtype=$1
|
||||
local builddir="${S}/${buildtype}-build"
|
||||
|
||||
mkdir "${builddir}" || die
|
||||
|
||||
local conf_opts=(
|
||||
--prefix=/usr
|
||||
--sysconfdir=/etc
|
||||
--bindir=/usr/bin
|
||||
--libdir=/usr/$(get_libdir)
|
||||
--datadir=/usr/share
|
||||
--docdir=/usr/share/doc/${PF}/html
|
||||
--mandir=/usr/share/man
|
||||
--localstatedir=/var
|
||||
--disable-bsd-user
|
||||
--disable-containers # bug #732972
|
||||
--disable-guest-agent
|
||||
--disable-strip
|
||||
--with-git-submodules=ignore
|
||||
|
||||
# bug #746752: TCG interpreter has a few limitations:
|
||||
# - it does not support FPU
|
||||
# - it's generally slower on non-self-modifying code
|
||||
# It's advantage is support for host architectures
|
||||
# where native codegeneration is not implemented.
|
||||
# Gentoo has qemu keyworded only on targets with
|
||||
# native code generation available. Avoid the interpreter.
|
||||
--disable-tcg-interpreter
|
||||
|
||||
--disable-werror
|
||||
# We support gnutls/nettle for crypto operations. It is possible
|
||||
# to use gcrypt when gnutls/nettle are disabled (but not when they
|
||||
# are enabled), but it's not really worth the hassle. Disable it
|
||||
# all the time to avoid automatically detecting it. #568856
|
||||
--disable-gcrypt
|
||||
--cc="$(tc-getCC)"
|
||||
--cxx="$(tc-getCXX)"
|
||||
--host-cc="$(tc-getBUILD_CC)"
|
||||
|
||||
$(use_enable alsa)
|
||||
$(use_enable debug debug-info)
|
||||
$(use_enable debug debug-tcg)
|
||||
$(use_enable jack)
|
||||
$(use_enable nls gettext)
|
||||
$(use_enable oss)
|
||||
$(use_enable plugins)
|
||||
$(use_enable pulseaudio pa)
|
||||
$(use_enable selinux)
|
||||
$(use_enable xattr attr)
|
||||
)
|
||||
|
||||
# Disable options not used by user targets. This simplifies building
|
||||
# static user targets (USE=static-user) considerably.
|
||||
conf_notuser() {
|
||||
if [[ ${buildtype} == "user" ]] ; then
|
||||
echo "--disable-${2:-$1}"
|
||||
else
|
||||
use_enable "$@"
|
||||
fi
|
||||
}
|
||||
# Enable option only for softmmu build, but not 'user' or 'tools'
|
||||
conf_softmmu() {
|
||||
if [[ ${buildtype} == "softmmu" ]] ; then
|
||||
use_enable "$@"
|
||||
else
|
||||
echo "--disable-${2:-$1}"
|
||||
fi
|
||||
}
|
||||
# Enable option only for tools build, but not 'user' or 'softmmu'
|
||||
conf_tools() {
|
||||
if [[ ${buildtype} == "tools" ]] ; then
|
||||
use_enable "$@"
|
||||
else
|
||||
echo "--disable-${2:-$1}"
|
||||
fi
|
||||
}
|
||||
# Special case for the malloc flag, because the --disable flag does
|
||||
# not exist and trying like above will break configuring.
|
||||
conf_malloc() {
|
||||
if [[ ! ${buildtype} == "user" ]] ; then
|
||||
usex "${1}" "--enable-malloc=${1}" ""
|
||||
fi
|
||||
}
|
||||
conf_opts+=(
|
||||
$(conf_notuser accessibility brlapi)
|
||||
$(conf_notuser aio linux-aio)
|
||||
$(conf_softmmu bpf)
|
||||
$(conf_notuser bzip2)
|
||||
$(conf_notuser capstone)
|
||||
$(conf_notuser curl)
|
||||
$(conf_tools doc docs)
|
||||
$(conf_notuser fdt)
|
||||
$(conf_notuser fuse)
|
||||
$(conf_notuser glusterfs)
|
||||
$(conf_notuser gnutls)
|
||||
$(conf_notuser gnutls nettle)
|
||||
$(conf_notuser gtk)
|
||||
$(conf_notuser infiniband rdma)
|
||||
$(conf_notuser iscsi libiscsi)
|
||||
$(conf_notuser io-uring linux-io-uring)
|
||||
$(conf_malloc jemalloc)
|
||||
$(conf_notuser jpeg vnc-jpeg)
|
||||
$(conf_notuser kernel_linux kvm)
|
||||
$(conf_notuser lzo)
|
||||
$(conf_notuser multipath mpath)
|
||||
$(conf_notuser ncurses curses)
|
||||
$(conf_notuser nfs libnfs)
|
||||
$(conf_notuser numa)
|
||||
$(conf_notuser opengl)
|
||||
$(conf_notuser pam auth-pam)
|
||||
$(conf_notuser png)
|
||||
$(conf_notuser rbd)
|
||||
$(conf_notuser sasl vnc-sasl)
|
||||
$(conf_notuser sdl)
|
||||
$(conf_softmmu sdl-image)
|
||||
$(conf_notuser seccomp)
|
||||
$(conf_notuser slirp)
|
||||
$(conf_notuser smartcard)
|
||||
$(conf_notuser snappy)
|
||||
$(conf_notuser spice)
|
||||
$(conf_notuser ssh libssh)
|
||||
$(conf_notuser udev libudev)
|
||||
$(conf_notuser usb libusb)
|
||||
$(conf_notuser usbredir usb-redir)
|
||||
$(conf_notuser vde)
|
||||
$(conf_notuser vhost-net)
|
||||
$(conf_notuser virgl virglrenderer)
|
||||
$(conf_softmmu virtfs)
|
||||
$(conf_notuser vnc)
|
||||
$(conf_notuser vte)
|
||||
$(conf_notuser xen)
|
||||
$(conf_notuser xen xen-pci-passthrough)
|
||||
# use prebuilt keymaps, bug #759604
|
||||
--disable-xkbcommon
|
||||
$(conf_notuser zstd)
|
||||
)
|
||||
|
||||
if [[ ! ${buildtype} == "user" ]] ; then
|
||||
# audio options
|
||||
local audio_opts=(
|
||||
# Note: backend order matters here: #716202
|
||||
# We iterate from higher-level to lower level.
|
||||
$(usex pulseaudio pa "")
|
||||
$(usev jack)
|
||||
$(usev sdl)
|
||||
$(usev alsa)
|
||||
$(usev oss)
|
||||
)
|
||||
conf_opts+=(
|
||||
--audio-drv-list=$(IFS=,; echo "${audio_opts[*]}")
|
||||
)
|
||||
fi
|
||||
|
||||
case ${buildtype} in
|
||||
user)
|
||||
conf_opts+=(
|
||||
--enable-linux-user
|
||||
--disable-system
|
||||
--disable-tools
|
||||
--disable-cap-ng
|
||||
--disable-seccomp
|
||||
)
|
||||
local static_flag="static-user"
|
||||
;;
|
||||
softmmu)
|
||||
conf_opts+=(
|
||||
--disable-linux-user
|
||||
--enable-system
|
||||
--disable-tools
|
||||
--enable-cap-ng
|
||||
--enable-seccomp
|
||||
)
|
||||
local static_flag="none"
|
||||
;;
|
||||
tools)
|
||||
conf_opts+=(
|
||||
--disable-linux-user
|
||||
--disable-system
|
||||
--enable-tools
|
||||
--enable-cap-ng
|
||||
)
|
||||
local static_flag="none"
|
||||
;;
|
||||
esac
|
||||
|
||||
local targets="${buildtype}_targets"
|
||||
[[ -n ${targets} ]] && conf_opts+=( --target-list="${!targets}" )
|
||||
|
||||
# Add support for SystemTAP
|
||||
use systemtap && conf_opts+=( --enable-trace-backends="dtrace" )
|
||||
|
||||
# We always want to attempt to build with PIE support as it results
|
||||
# in a more secure binary. But it doesn't work with static or if
|
||||
# the current GCC doesn't have PIE support.
|
||||
if [[ ${static_flag} != "none" ]] && use ${static_flag}; then
|
||||
conf_opts+=( --static --disable-pie )
|
||||
else
|
||||
tc-enables-pie && conf_opts+=( --enable-pie )
|
||||
fi
|
||||
|
||||
# Meson will not use a cross-file unless cross_prefix is set.
|
||||
tc-is-cross-compiler && conf_opts+=( --cross-prefix="${CHOST}-" )
|
||||
|
||||
# Plumb through equivalent of EXTRA_ECONF to allow experiments
|
||||
# like bug #747928.
|
||||
conf_opts+=( ${EXTRA_CONF_QEMU} )
|
||||
|
||||
echo "../configure ${conf_opts[*]}"
|
||||
cd "${builddir}"
|
||||
../configure "${conf_opts[@]}" || die "configure failed"
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local target
|
||||
|
||||
python_setup
|
||||
|
||||
softmmu_targets= softmmu_bins=()
|
||||
user_targets= user_bins=()
|
||||
|
||||
for target in ${IUSE_SOFTMMU_TARGETS} ; do
|
||||
if use "qemu_softmmu_targets_${target}"; then
|
||||
softmmu_targets+=",${target}-softmmu"
|
||||
softmmu_bins+=( "qemu-system-${target}" )
|
||||
fi
|
||||
done
|
||||
|
||||
for target in ${IUSE_USER_TARGETS} ; do
|
||||
if use "qemu_user_targets_${target}"; then
|
||||
user_targets+=",${target}-linux-user"
|
||||
user_bins+=( "qemu-${target}" )
|
||||
fi
|
||||
done
|
||||
|
||||
softmmu_targets=${softmmu_targets#,}
|
||||
user_targets=${user_targets#,}
|
||||
|
||||
[[ -n ${softmmu_targets} ]] && qemu_src_configure "softmmu"
|
||||
[[ -n ${user_targets} ]] && qemu_src_configure "user"
|
||||
qemu_src_configure "tools"
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
if [[ -n ${user_targets} ]]; then
|
||||
cd "${S}/user-build" || die
|
||||
default
|
||||
fi
|
||||
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
cd "${S}/softmmu-build" || die
|
||||
default
|
||||
fi
|
||||
|
||||
cd "${S}/tools-build" || die
|
||||
default
|
||||
}
|
||||
|
||||
src_test() {
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
cd "${S}/softmmu-build" || die
|
||||
pax-mark m */qemu-system-* #515550
|
||||
emake check
|
||||
fi
|
||||
}
|
||||
|
||||
qemu_python_install() {
|
||||
python_domodule "${S}/python/qemu"
|
||||
|
||||
python_doscript "${S}/scripts/kvm/vmxcap"
|
||||
python_doscript "${S}/scripts/qmp/qmp-shell"
|
||||
python_doscript "${S}/scripts/qmp/qemu-ga-client"
|
||||
}
|
||||
|
||||
# Generate binfmt support files.
|
||||
# - /etc/init.d/qemu-binfmt script which registers the user handlers (openrc)
|
||||
# - /usr/share/qemu/binfmt.d/qemu.conf (for use with systemd-binfmt)
|
||||
generate_initd() {
|
||||
local out="${T}/qemu-binfmt"
|
||||
local out_systemd="${T}/qemu.conf"
|
||||
local d="${T}/binfmt.d"
|
||||
|
||||
einfo "Generating qemu binfmt scripts and configuration files"
|
||||
|
||||
# Generate the debian fragments first.
|
||||
mkdir -p "${d}"
|
||||
"${S}"/scripts/qemu-binfmt-conf.sh \
|
||||
--debian \
|
||||
--exportdir "${d}" \
|
||||
--qemu-path "${EPREFIX}/usr/bin" \
|
||||
|| die
|
||||
# Then turn the fragments into a shell script we can source.
|
||||
sed -E -i \
|
||||
-e 's:^([^ ]+) (.*)$:\1="\2":' \
|
||||
"${d}"/* || die
|
||||
|
||||
# Generate the init.d script by assembling the fragments from above.
|
||||
local f qcpu package interpreter magic mask
|
||||
cat "${FILESDIR}"/qemu-binfmt.initd.head >"${out}" || die
|
||||
for f in "${d}"/qemu-* ; do
|
||||
source "${f}"
|
||||
|
||||
# Normalize the cpu logic like we do in the init.d for the native cpu.
|
||||
qcpu=${package#qemu-}
|
||||
case ${qcpu} in
|
||||
arm*) qcpu="arm";;
|
||||
mips*) qcpu="mips";;
|
||||
ppc*) qcpu="ppc";;
|
||||
s390*) qcpu="s390";;
|
||||
sh*) qcpu="sh";;
|
||||
sparc*) qcpu="sparc";;
|
||||
esac
|
||||
|
||||
# we use 'printf' here to be portable across 'sh'
|
||||
# implementations: #679168
|
||||
cat <<EOF >>"${out}"
|
||||
if [ "\${cpu}" != "${qcpu}" -a -x "${interpreter}" ] ; then
|
||||
printf '%s\n' ':${package}:M::${magic}:${mask}:${interpreter}:'"\${QEMU_BINFMT_FLAGS}" >/proc/sys/fs/binfmt_misc/register
|
||||
fi
|
||||
EOF
|
||||
|
||||
echo ":${package}:M::${magic}:${mask}:${interpreter}:OC" >>"${out_systemd}"
|
||||
|
||||
done
|
||||
cat "${FILESDIR}"/qemu-binfmt.initd.tail >>"${out}" || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
if [[ -n ${user_targets} ]]; then
|
||||
cd "${S}/user-build"
|
||||
emake DESTDIR="${ED}" install
|
||||
|
||||
# Install binfmt handler init script for user targets.
|
||||
generate_initd
|
||||
doinitd "${T}/qemu-binfmt"
|
||||
|
||||
# Install binfmt/qemu.conf.
|
||||
insinto "/usr/share/qemu/binfmt.d"
|
||||
doins "${T}/qemu.conf"
|
||||
fi
|
||||
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
cd "${S}/softmmu-build"
|
||||
emake DESTDIR="${ED}" install
|
||||
|
||||
# This might not exist if the test failed. #512010
|
||||
[[ -e check-report.html ]] && dodoc check-report.html
|
||||
|
||||
if use kernel_linux; then
|
||||
udev_newrules "${FILESDIR}"/65-kvm.rules-r2 65-kvm.rules
|
||||
fi
|
||||
|
||||
if use python; then
|
||||
python_foreach_impl qemu_python_install
|
||||
fi
|
||||
fi
|
||||
|
||||
cd "${S}/tools-build" || die
|
||||
emake DESTDIR="${ED}" install
|
||||
|
||||
# If USE=doc, there'll be newly generated docs which we install instead.
|
||||
if ! use doc && [[ ${QEMU_DOCS_PREBUILT} == 1 ]] ; then
|
||||
doman "${WORKDIR}"/${PN}-${QEMU_DOCS_VERSION}-docs/docs/*.[0-8]
|
||||
fi
|
||||
|
||||
# Disable mprotect on the qemu binaries as they use JITs to be fast #459348
|
||||
pushd "${ED}"/usr/bin >/dev/null || die
|
||||
pax-mark mr "${softmmu_bins[@]}" "${user_bins[@]}" # bug 575594
|
||||
popd >/dev/null || die
|
||||
|
||||
# Install config file example for qemu-bridge-helper
|
||||
insinto "/etc/qemu"
|
||||
doins "${FILESDIR}/bridge.conf"
|
||||
|
||||
cd "${S}" || die
|
||||
dodoc MAINTAINERS docs/specs/pci-ids.txt
|
||||
newdoc pc-bios/README README.pc-bios
|
||||
|
||||
# Disallow stripping of prebuilt firmware files.
|
||||
dostrip -x ${QA_PREBUILT}
|
||||
|
||||
if [[ -n ${softmmu_targets} ]]; then
|
||||
# Remove SeaBIOS since we're using the SeaBIOS packaged one
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
||||
dosym ../seabios/bios-256k.bin /usr/share/qemu/bios-256k.bin
|
||||
fi
|
||||
|
||||
# Remove vgabios since we're using the seavgabios packaged one
|
||||
rm "${ED}/usr/share/qemu/vgabios.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-cirrus.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-qxl.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-stdvga.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-virtio.bin"
|
||||
rm "${ED}/usr/share/qemu/vgabios-vmware.bin"
|
||||
|
||||
# PPC/PPC64 loads vgabios-stdvga
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 || use qemu_softmmu_targets_ppc || use qemu_softmmu_targets_ppc64; then
|
||||
dosym ../seavgabios/vgabios-isavga.bin /usr/share/qemu/vgabios.bin
|
||||
dosym ../seavgabios/vgabios-cirrus.bin /usr/share/qemu/vgabios-cirrus.bin
|
||||
dosym ../seavgabios/vgabios-qxl.bin /usr/share/qemu/vgabios-qxl.bin
|
||||
dosym ../seavgabios/vgabios-stdvga.bin /usr/share/qemu/vgabios-stdvga.bin
|
||||
dosym ../seavgabios/vgabios-virtio.bin /usr/share/qemu/vgabios-virtio.bin
|
||||
dosym ../seavgabios/vgabios-vmware.bin /usr/share/qemu/vgabios-vmware.bin
|
||||
fi
|
||||
|
||||
# Remove sgabios since we're using the sgabios packaged one
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
||||
dosym ../sgabios/sgabios.bin /usr/share/qemu/sgabios.bin
|
||||
fi
|
||||
|
||||
# Remove iPXE since we're using the iPXE packaged one
|
||||
if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then
|
||||
dosym ../ipxe/8086100e.rom /usr/share/qemu/pxe-e1000.rom
|
||||
dosym ../ipxe/80861209.rom /usr/share/qemu/pxe-eepro100.rom
|
||||
dosym ../ipxe/10500940.rom /usr/share/qemu/pxe-ne2k_pci.rom
|
||||
dosym ../ipxe/10222000.rom /usr/share/qemu/pxe-pcnet.rom
|
||||
dosym ../ipxe/10ec8139.rom /usr/share/qemu/pxe-rtl8139.rom
|
||||
dosym ../ipxe/1af41000.rom /usr/share/qemu/pxe-virtio.rom
|
||||
fi
|
||||
fi
|
||||
|
||||
DISABLE_AUTOFORMATTING=true
|
||||
readme.gentoo_create_doc
|
||||
}
|
||||
|
||||
firmware_abi_change() {
|
||||
local pv
|
||||
for pv in ${REPLACING_VERSIONS}; do
|
||||
if ver_test ${pv} -lt ${FIRMWARE_ABI_VERSION}; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
if [[ -n ${softmmu_targets} ]] && use kernel_linux; then
|
||||
udev_reload
|
||||
fi
|
||||
|
||||
xdg_icon_cache_update
|
||||
|
||||
[[ -z ${EPREFIX} ]] && [[ -f ${EROOT}/usr/libexec/qemu-bridge-helper ]] && \
|
||||
fcaps cap_net_admin "${EROOT}"/usr/libexec/qemu-bridge-helper
|
||||
|
||||
DISABLE_AUTOFORMATTING=true
|
||||
readme.gentoo_print_elog
|
||||
|
||||
if use pin-upstream-blobs && firmware_abi_change; then
|
||||
ewarn "This version of qemu pins new versions of firmware blobs:"
|
||||
|
||||
if has_version 'sys-firmware/edk2-ovmf-bin'; then
|
||||
ewarn " $(best_version sys-firmware/edk2-ovmf-bin)"
|
||||
else
|
||||
ewarn " $(best_version sys-firmware/edk2-ovmf)"
|
||||
fi
|
||||
|
||||
if has_version 'sys-firmware/seabios-bin'; then
|
||||
ewarn " $(best_version sys-firmware/seabios-bin)"
|
||||
else
|
||||
ewarn " $(best_version sys-firmware/seabios)"
|
||||
fi
|
||||
|
||||
ewarn " $(best_version sys-firmware/ipxe)"
|
||||
ewarn " $(best_version sys-firmware/sgabios)"
|
||||
ewarn "This might break resume of hibernated guests (started with a different"
|
||||
ewarn "firmware version) and live migration to/from qemu versions with different"
|
||||
ewarn "firmware. Please (cold) restart all running guests. For functional"
|
||||
ewarn "guest migration ensure that all"
|
||||
ewarn "hosts run at least"
|
||||
ewarn " app-emulation/qemu-${FIRMWARE_ABI_VERSION}."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_info() {
|
||||
echo "Using:"
|
||||
echo " $(best_version app-emulation/spice-protocol)"
|
||||
|
||||
if has_version 'sys-firmware/edk2-ovmf-bin'; then
|
||||
echo " $(best_version sys-firmware/edk2-ovmf-bin)"
|
||||
else
|
||||
echo " $(best_version sys-firmware/edk2-ovmf)"
|
||||
fi
|
||||
|
||||
if has_version 'sys-firmware/seabios-bin'; then
|
||||
echo " $(best_version sys-firmware/seabios-bin)"
|
||||
else
|
||||
echo " $(best_version sys-firmware/seabios)"
|
||||
fi
|
||||
|
||||
echo " $(best_version sys-firmware/ipxe)"
|
||||
echo " $(best_version sys-firmware/sgabios)"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
xdg_icon_cache_update
|
||||
udev_reload
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit flag-o-matic toolchain-funcs
|
||||
|
||||
DESCRIPTION="Small and fast Portage helper tools written in C"
|
||||
HOMEPAGE="https://wiki.gentoo.org/wiki/Portage-utils"
|
||||
|
||||
if [[ ${PV} == *9999 ]]; then
|
||||
inherit git-r3 autotools
|
||||
EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/portage-utils.git"
|
||||
else
|
||||
SRC_URI="https://dev.gentoo.org/~grobian/distfiles/${P}.tar.xz"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
fi
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
IUSE="openmp +qmanifest +qtegrity static"
|
||||
|
||||
RDEPEND="
|
||||
openmp? ( || (
|
||||
sys-devel/gcc:*[openmp]
|
||||
sys-libs/libomp
|
||||
) )
|
||||
qmanifest? (
|
||||
!static? (
|
||||
app-crypt/gpgme:=
|
||||
app-crypt/libb2:=
|
||||
dev-libs/openssl:=
|
||||
sys-libs/zlib:=
|
||||
)
|
||||
)
|
||||
qtegrity? (
|
||||
!static? (
|
||||
dev-libs/openssl:=
|
||||
)
|
||||
)"
|
||||
DEPEND="${RDEPEND}
|
||||
qmanifest? (
|
||||
static? (
|
||||
app-crypt/gpgme[static-libs]
|
||||
app-crypt/libb2[static-libs]
|
||||
dev-libs/openssl[static-libs]
|
||||
sys-libs/zlib[static-libs]
|
||||
)
|
||||
)
|
||||
qtegrity? (
|
||||
static? (
|
||||
dev-libs/openssl[static-libs]
|
||||
)
|
||||
)"
|
||||
BDEPEND="virtual/pkgconfig"
|
||||
|
||||
pkg_setup() {
|
||||
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
[[ ${PV} == *9999 ]] && eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
use static && append-ldflags -static
|
||||
|
||||
econf \
|
||||
--disable-maintainer-mode \
|
||||
--with-eprefix="${EPREFIX}" \
|
||||
$(use_enable qmanifest) \
|
||||
$(use_enable qtegrity) \
|
||||
$(use_enable openmp)
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit flag-o-matic toolchain-funcs
|
||||
|
||||
DESCRIPTION="Small and fast Portage helper tools written in C"
|
||||
HOMEPAGE="https://wiki.gentoo.org/wiki/Portage-utils"
|
||||
|
||||
if [[ ${PV} == *9999 ]]; then
|
||||
inherit git-r3 autotools
|
||||
EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/portage-utils.git"
|
||||
else
|
||||
SRC_URI="https://dev.gentoo.org/~grobian/distfiles/${P}.tar.xz"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
fi
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
IUSE="openmp +qmanifest +qtegrity static"
|
||||
|
||||
RDEPEND="
|
||||
openmp? ( || (
|
||||
sys-devel/gcc:*[openmp]
|
||||
sys-libs/libomp
|
||||
) )
|
||||
qmanifest? (
|
||||
!static? (
|
||||
app-crypt/gpgme:=
|
||||
app-crypt/libb2:=
|
||||
dev-libs/openssl:=
|
||||
sys-libs/zlib:=
|
||||
)
|
||||
)
|
||||
qtegrity? (
|
||||
!static? (
|
||||
dev-libs/openssl:=
|
||||
)
|
||||
)"
|
||||
DEPEND="${RDEPEND}
|
||||
qmanifest? (
|
||||
static? (
|
||||
app-crypt/gpgme[static-libs]
|
||||
app-crypt/libb2[static-libs]
|
||||
dev-libs/openssl[static-libs]
|
||||
sys-libs/zlib[static-libs]
|
||||
)
|
||||
)
|
||||
qtegrity? (
|
||||
static? (
|
||||
dev-libs/openssl[static-libs]
|
||||
)
|
||||
)"
|
||||
BDEPEND="virtual/pkgconfig"
|
||||
|
||||
pkg_setup() {
|
||||
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
[[ ${PV} == *9999 ]] && eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
use static && append-ldflags -static
|
||||
|
||||
econf \
|
||||
--disable-maintainer-mode \
|
||||
--with-eprefix="${EPREFIX}" \
|
||||
$(use_enable qmanifest) \
|
||||
$(use_enable qtegrity) \
|
||||
$(use_enable openmp)
|
||||
}
|
||||
@ -13,7 +13,7 @@ if [[ ${PV} == *9999 ]]; then
|
||||
EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/portage-utils.git"
|
||||
else
|
||||
SRC_URI="https://dev.gentoo.org/~grobian/distfiles/${P}.tar.xz"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~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 ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
fi
|
||||
|
||||
LICENSE="GPL-2"
|
||||
|
||||
@ -21,6 +21,10 @@ SLOT="0"
|
||||
IUSE="openmp +qmanifest +qtegrity static"
|
||||
|
||||
RDEPEND="
|
||||
openmp? ( || (
|
||||
sys-devel/gcc:*[openmp]
|
||||
sys-libs/libomp
|
||||
) )
|
||||
qmanifest? (
|
||||
!static? (
|
||||
app-crypt/gpgme:=
|
||||
@ -50,10 +54,6 @@ DEPEND="${RDEPEND}
|
||||
)"
|
||||
BDEPEND="virtual/pkgconfig"
|
||||
|
||||
pkg_pretend() {
|
||||
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# Copyright 1999-2022 Gentoo Authors
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
@ -50,8 +50,8 @@ LIB_DEPEND=">=sys-libs/ncurses-5.2-r2[static-libs(+)]
|
||||
RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs(+)]} )"
|
||||
DEPEND="${RDEPEND}
|
||||
static? ( ${LIB_DEPEND} )"
|
||||
# We only need yacc when the .y files get patched (bash42-005)
|
||||
BDEPEND="app-alternatives/yacc"
|
||||
# We only need bison (yacc) when the .y files get patched (bash42-005)
|
||||
BDEPEND="sys-devel/bison"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
@ -97,6 +97,13 @@ src_prepare() {
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# 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 YACC
|
||||
|
||||
local myconf=(
|
||||
--with-installed-readline=.
|
||||
|
||||
|
||||
@ -53,8 +53,8 @@ DEPEND=">=sys-libs/ncurses-5.2-r2:0=
|
||||
nls? ( virtual/libintl )"
|
||||
RDEPEND="${DEPEND}
|
||||
!<sys-apps/portage-2.1.6.7_p1"
|
||||
# We only need yacc when the .y files get patched (bash42-005)
|
||||
BDEPEND="app-alternatives/yacc"
|
||||
# We only need bison (yacc) when the .y files get patched (bash42-005)
|
||||
BDEPEND="sys-devel/bison"
|
||||
|
||||
PATCHES=(
|
||||
"${WORKDIR}"/${P}-r2-patches/${PN}-4.3-mapfile-improper-array-name-validation.patch
|
||||
@ -106,6 +106,13 @@ src_prepare() {
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# 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 YACC
|
||||
|
||||
local myconf=(
|
||||
--docdir='$(datarootdir)'/doc/${PF}
|
||||
--htmldir='$(docdir)/html'
|
||||
|
||||
@ -65,8 +65,8 @@ DEPEND="
|
||||
RDEPEND="
|
||||
${DEPEND}
|
||||
"
|
||||
# We only need yacc when the .y files get patched (bash42-005)
|
||||
#BDEPEND="app-alternatives/yacc"
|
||||
# We only need bison (yacc) when the .y files get patched (bash42-005)
|
||||
#BDEPEND="sys-devel/bison"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
@ -117,6 +117,13 @@ src_prepare() {
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# 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 YACC
|
||||
|
||||
local myconf=(
|
||||
--disable-profiling
|
||||
|
||||
|
||||
@ -65,8 +65,8 @@ DEPEND="
|
||||
RDEPEND="
|
||||
${DEPEND}
|
||||
"
|
||||
# We only need yacc when the .y files get patched (bash42-005)
|
||||
#BDEPEND="app-alternatives/yacc"
|
||||
# We only need bison (yacc) when the .y files get patched (bash42-005)
|
||||
BDEPEND="sys-devel/bison"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
@ -121,6 +121,13 @@ src_prepare() {
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# 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 YACC
|
||||
|
||||
local myconf=(
|
||||
--disable-profiling
|
||||
|
||||
@ -90,8 +90,8 @@ DEPEND="
|
||||
RDEPEND="
|
||||
${DEPEND}
|
||||
"
|
||||
# We only need yacc when the .y files get patched (bash42-005, bash51-011)
|
||||
BDEPEND="app-alternatives/yacc
|
||||
# We only need bison (yacc) when the .y files get patched (bash42-005, bash51-011)
|
||||
BDEPEND="sys-devel/bison
|
||||
verify-sig? ( sec-keys/openpgp-keys-chetramey )"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
@ -159,6 +159,13 @@ src_prepare() {
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# 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 YACC
|
||||
|
||||
local myconf=(
|
||||
--disable-profiling
|
||||
|
||||
@ -90,8 +90,8 @@ DEPEND="
|
||||
RDEPEND="
|
||||
${DEPEND}
|
||||
"
|
||||
# We only need yacc when the .y files get patched (bash42-005, bash51-011)
|
||||
BDEPEND="app-alternatives/yacc
|
||||
# We only need bison (yacc) when the .y files get patched (bash42-005, bash51-011)
|
||||
BDEPEND="sys-devel/bison
|
||||
verify-sig? ( sec-keys/openpgp-keys-chetramey )"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
@ -161,6 +161,13 @@ src_prepare() {
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# 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 YACC
|
||||
|
||||
local myconf=(
|
||||
--disable-profiling
|
||||
|
||||
@ -98,9 +98,9 @@ fi
|
||||
RDEPEND="
|
||||
${DEPEND}
|
||||
"
|
||||
# We only need yacc when the .y files get patched (bash42-005, bash51-011)
|
||||
# We only need bison (yacc) when the .y files get patched (bash42-005, bash51-011)
|
||||
BDEPEND="
|
||||
app-alternatives/yacc
|
||||
sys-devel/bison
|
||||
pgo? ( dev-util/gperf )
|
||||
verify-sig? ( sec-keys/openpgp-keys-chetramey )
|
||||
"
|
||||
@ -180,6 +180,13 @@ src_prepare() {
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# 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 YACC
|
||||
|
||||
local myconf=(
|
||||
--disable-profiling
|
||||
|
||||
373
sdk_container/src/third_party/portage-stable/app-shells/bash/bash-5.2_p15-r6.ebuild
vendored
Normal file
373
sdk_container/src/third_party/portage-stable/app-shells/bash/bash-5.2_p15-r6.ebuild
vendored
Normal file
@ -0,0 +1,373 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/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}"
|
||||
|
||||
# Official patchlevel
|
||||
# See ftp://ftp.cwru.edu/pub/bash/bash-5.1-patches/
|
||||
PLEVEL="${PV##*_p}"
|
||||
MY_PV="${PV/_p*}"
|
||||
MY_PV="${MY_PV/_/-}"
|
||||
MY_P="${PN}-${MY_PV}"
|
||||
MY_PATCHES=()
|
||||
|
||||
is_release() {
|
||||
case ${PV} in
|
||||
9999|*_alpha*|*_beta*|*_rc*)
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
[[ ${PV} != *_p* ]] && PLEVEL=0
|
||||
|
||||
# The version of readline this bash normally ships with.
|
||||
# Note: right now, we don't use the system copy of readline for bash for non-releases.
|
||||
READLINE_VER="8.2_p1"
|
||||
|
||||
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 is_release ; then
|
||||
SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz"
|
||||
SRC_URI+=" verify-sig? ( mirror://gnu/bash/${MY_P}.tar.gz.sig )"
|
||||
|
||||
if [[ ${PLEVEL} -gt 0 ]] ; then
|
||||
# bash-5.1 -> bash51
|
||||
my_p=${PN}$(ver_rs 1-2 '' $(ver_cut 1-2))
|
||||
|
||||
patch_url=
|
||||
my_patch_index=
|
||||
|
||||
upstream_url_base="mirror://gnu/bash"
|
||||
mirror_url_base="ftp://ftp.cwru.edu/pub/bash"
|
||||
|
||||
for ((my_patch_index=1; my_patch_index <= ${PLEVEL} ; my_patch_index++)) ; do
|
||||
printf -v mangled_patch_ver ${my_p}-%03d ${my_patch_index}
|
||||
patch_url="${upstream_url_base}/${MY_P}-patches/${mangled_patch_ver}"
|
||||
|
||||
SRC_URI+=" ${patch_url}"
|
||||
SRC_URI+=" verify-sig? ( ${patch_url}.sig )"
|
||||
|
||||
# Add in the mirror URL too.
|
||||
SRC_URI+=" ${patch_url/${upstream_url_base}/${mirror_url_base}}"
|
||||
SRC_URI+=" verify-sig? ( ${patch_url/${upstream_url_base}/${mirror_url_base}} )"
|
||||
|
||||
MY_PATCHES+=( "${DISTDIR}"/${mangled_patch_ver} )
|
||||
done
|
||||
|
||||
unset my_p patch_url my_patch_index upstream_url_base mirror_url_base
|
||||
fi
|
||||
else
|
||||
SRC_URI="mirror://gnu/${PN}/${MY_P}.tar.gz ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz"
|
||||
SRC_URI+=" verify-sig? ( mirror://gnu/${PN}/${MY_P}.tar.gz.sig ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz.sig )"
|
||||
fi
|
||||
|
||||
if [[ -n ${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 is_release ; then
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~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 is_release ; 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="
|
||||
sys-devel/bison
|
||||
pgo? ( dev-util/gperf )
|
||||
verify-sig? ( sec-keys/openpgp-keys-chetramey )
|
||||
"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
# EAPI 8 tries to append it but it doesn't exist here
|
||||
QA_CONFIGURE_OPTIONS="--disable-static"
|
||||
|
||||
PATCHES=(
|
||||
#"${WORKDIR}"/${PN}-${GENTOO_PATCH_VER}/
|
||||
|
||||
# Patches from Chet sent to bash-bug ml
|
||||
"${FILESDIR}"/${PN}-5.0-syslog-history-extern.patch
|
||||
"${FILESDIR}"/${PN}-5.2_p15-random-ub.patch
|
||||
"${FILESDIR}"/${PN}-5.2_p15-configure-clang16.patch
|
||||
"${FILESDIR}"/${PN}-5.2_p15-shell-parser-reset-issue.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() {
|
||||
if [[ ${PV} == 9999 ]] ; then
|
||||
git-r3_src_unpack
|
||||
else
|
||||
if use verify-sig ; then
|
||||
verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.gz{,.sig}
|
||||
|
||||
local patch
|
||||
for patch in "${MY_PATCHES[@]}" ; do
|
||||
verify-sig_verify_detached ${patch}{,.sig}
|
||||
done
|
||||
fi
|
||||
|
||||
unpack ${MY_P}.tar.gz
|
||||
|
||||
if [[ -n ${GENTOO_PATCH_VER} ]] ; then
|
||||
unpack ${PN}-${GENTOO_PATCH_VER}-patches.tar.xz
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Include official patches
|
||||
[[ ${PLEVEL} -gt 0 ]] && eapply -p0 "${MY_PATCHES[@]}"
|
||||
|
||||
# Clean out local libs so we know we use system ones w/releases.
|
||||
if is_release ; then
|
||||
rm -rf lib/{readline,termcap}/* || die
|
||||
touch lib/{readline,termcap}/Makefile.in || die # for config.status
|
||||
sed -ri -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 -r '/^(HS|RL)USER/s:=.*:=:' doc/Makefile.in || die
|
||||
touch -r . doc/* || die
|
||||
|
||||
# Sometimes hangs (more noticeable w/ pgo), bug #907403.
|
||||
rm tests/run-jobs || die
|
||||
|
||||
eapply -p0 "${PATCHES[@]}"
|
||||
eapply_user
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# 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 YACC
|
||||
|
||||
local 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)
|
||||
|
||||
# Don't even think about building this statically without
|
||||
# reading bug #7714 first. If you still build it statically,
|
||||
# don't come crying to us with bugs ;).
|
||||
#use static && export LDFLAGS="${LDFLAGS} -static"
|
||||
use nls || myconf+=( --disable-nls )
|
||||
|
||||
if is_release ; 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() {
|
||||
if use pgo ; then
|
||||
# Build Bash and run its tests to generate profiles.
|
||||
emake CFLAGS="${CFLAGS} -fprofile-generate=${T}/pgo -fprofile-dir=${T}/pgo"
|
||||
|
||||
# Used in test suite.
|
||||
unset A
|
||||
|
||||
emake CFLAGS="${CFLAGS} -fprofile-generate=${T}/pgo -fprofile-dir=${T}/pgo" -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} -fprofile-use=${T}/pgo -fprofile-dir=${T}/pgo"
|
||||
|
||||
use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} -fprofile-use=${T}/pgo -fprofile-dir=${T}/pgo" all others
|
||||
else
|
||||
emake
|
||||
|
||||
use plugins && emake -C examples/loadables all others
|
||||
fi
|
||||
}
|
||||
|
||||
src_test() {
|
||||
# Used in test suite.
|
||||
unset A
|
||||
|
||||
default
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local d f
|
||||
|
||||
default
|
||||
|
||||
dodir /bin
|
||||
mv "${ED}"/usr/bin/bash "${ED}"/bin/ || die
|
||||
dosym bash /bin/rbash
|
||||
|
||||
insinto /etc/bash
|
||||
doins "${FILESDIR}"/bash_logout
|
||||
doins "$(prefixify_ro "${FILESDIR}"/bashrc)"
|
||||
|
||||
keepdir /etc/bash/bashrc.d
|
||||
|
||||
insinto /etc/skel
|
||||
for f in bash{_logout,_profile,rc} ; do
|
||||
newins "${FILESDIR}"/dot-${f} .${f}
|
||||
done
|
||||
|
||||
local sed_args=(
|
||||
-e 's:#GNU#@::'
|
||||
-e '/#@/d'
|
||||
)
|
||||
|
||||
if ! use readline ; then
|
||||
# bug #432338
|
||||
sed_args+=(
|
||||
-e '/^shopt -s histappend/s:^:#:'
|
||||
-e 's:use_color=true:use_color=false:'
|
||||
)
|
||||
fi
|
||||
|
||||
sed -i \
|
||||
"${sed_args[@]}" \
|
||||
"${ED}"/etc/skel/.bashrc \
|
||||
"${ED}"/etc/bash/bashrc || die
|
||||
|
||||
if use plugins ; then
|
||||
exeinto /usr/$(get_libdir)/bash
|
||||
doexe $(echo examples/loadables/*.o | sed 's:\.o::g')
|
||||
|
||||
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 ]] && [[ ${f##*/} != *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/
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
# If /bin/sh does not exist, provide it
|
||||
if [[ ! -e ${EROOT}/bin/sh ]] ; then
|
||||
ln -sf bash "${EROOT}"/bin/sh
|
||||
fi
|
||||
}
|
||||
@ -98,9 +98,9 @@ fi
|
||||
RDEPEND="
|
||||
${DEPEND}
|
||||
"
|
||||
# We only need yacc when the .y files get patched (bash42-005, bash51-011)
|
||||
# We only need bison (yacc) when the .y files get patched (bash42-005, bash51-011)
|
||||
BDEPEND="
|
||||
app-alternatives/yacc
|
||||
sys-devel/bison
|
||||
pgo? ( dev-util/gperf )
|
||||
verify-sig? ( sec-keys/openpgp-keys-chetramey )
|
||||
"
|
||||
@ -178,6 +178,13 @@ src_prepare() {
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# 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 YACC
|
||||
|
||||
local myconf=(
|
||||
--disable-profiling
|
||||
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
https://savannah.gnu.org/support/?110745
|
||||
https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00103.html
|
||||
|
||||
Note that both documents make the claim that only interactive shells are
|
||||
affected. This is false, as is demonstrated below.
|
||||
|
||||
$ bash -c '[[ ]]; echo fin'; echo $?
|
||||
0
|
||||
|
||||
diff --git a/parse.y b/parse.y
|
||||
index 11b71d4..02b2af1 100644
|
||||
--- parse.y
|
||||
+++ parse.y
|
||||
@@ -2899,7 +2899,7 @@ yylex ()
|
||||
#if defined (YYERRCODE) && !defined (YYUNDEF)
|
||||
current_token = YYERRCODE;
|
||||
#else
|
||||
- current_token = YYerror;
|
||||
+ current_token = YYUNDEF;
|
||||
#endif
|
||||
|
||||
return (current_token);
|
||||
@@ -4156,7 +4156,9 @@ parse_comsub (qc, open, close, lenp, flags)
|
||||
shell_eof_token = ps.eof_token;
|
||||
expand_aliases = ps.expand_aliases;
|
||||
|
||||
- /* yyparse() has already called yyerror() and reset_parser() */
|
||||
+ /* yyparse() has already called yyerror() and reset_parser(), so we set
|
||||
+ PST_NOERROR to avoid a redundant error message. */
|
||||
+ parser_state |= PST_NOERROR;
|
||||
return (&matched_pair_error);
|
||||
}
|
||||
else if (r != 0)
|
||||
@ -1,4 +1,2 @@
|
||||
DIST sqlite-doc-3410200.zip 10633275 BLAKE2B 1323179d04b9fa21df4ed93ad1aa89ff943a9d930ef02699aade779f18f28aa45dac8362d6427d7eb896c0c0b20e12f8446050f1fc08c3deef24e395123319c1 SHA512 77099fd3bfdb0c19baedb1248c5ff028a14cbc98d18956dfb13e55289a7dddbe82d25e4522f0cbbe9c2798e0531c354df5a207f89c62dfe0f84877db47bb4f9e
|
||||
DIST sqlite-doc-3420000.zip 10665938 BLAKE2B 62aef59e6976101ecca60d1ee194e9e558009dd8bdb7cd911f9938f1256e50bc946f8ca554666b6c101f7024baac7857b83adf6e897164afb9b5c4d4917593d1 SHA512 d675ee2897323d468816bc713594c4e94cb5c15270b4f991758e2c82e2891ad724c5790f29b76bc9e5d6b3be04e95aee371c57ceb2d855c1057b4af62a5af162
|
||||
DIST sqlite-src-3410200.zip 13836230 BLAKE2B 4edcd65728143b1ea27abe65db8c8353dfa309858e6f40d70f3c376ef9e5613d92c41ed5a3c3282cacef8a29a434e3881f6e47ba5642820331170ceb69321d86 SHA512 28cfa72f2b39d851c38fb757a0c6d0696c22548792ce2fa1be5e2f6084e4bf0a5fb216902b59ccba5b6ebaf140aab954ed7676d84841b58ad063404a119a0c17
|
||||
DIST sqlite-src-3420000.zip 13910252 BLAKE2B defe14bf0b5588775b2a2b17b3adbbaf39f1e95eac049cbd4868e2e59fbf50fb92b11c74ecf12fe0138521e7d4d3cc2a4bf45e7c83fd774abd7aa9ed7ee0f925 SHA512 509b7aa292870c927ef137469028e5e07ca74907414c5b295360cb10b377a42de7469d3afe79f8d9947d486ef74d676679c7f2d3b1caaeb8c949f27201180def
|
||||
|
||||
@ -1,101 +0,0 @@
|
||||
https://sqlite.org/forum/forumpost/3a180ba0d4 and https://sqlite.org/forum/forumpost/f9346b11a6
|
||||
https://sqlite.org/src/info/aa6bd6dff751223e
|
||||
(-> https://sqlite.org/src/vpatch?from=71215599cd8ebb97&to=aa6bd6dff751223e)
|
||||
|
||||
--- a/src/select.c
|
||||
+++ b/src/select.c
|
||||
@@ -4236,12 +4236,11 @@
|
||||
** (17f) the subquery must not be the RHS of a LEFT JOIN.
|
||||
** (17g) either the subquery is the first element of the outer
|
||||
** query or there are no RIGHT or FULL JOINs in any arm
|
||||
** of the subquery. (This is a duplicate of condition (27b).)
|
||||
** (17h) The corresponding result set expressions in all arms of the
|
||||
-** compound must have the same affinity. (See restriction (9)
|
||||
-** on the push-down optimization.)
|
||||
+** compound must have the same affinity.
|
||||
**
|
||||
** The parent and sub-query may contain WHERE clauses. Subject to
|
||||
** rules (11), (13) and (14), they may also contain ORDER BY,
|
||||
** LIMIT and OFFSET clauses. The subquery cannot use any compound
|
||||
** operator other than UNION ALL because all the other compound
|
||||
@@ -5105,14 +5104,10 @@
|
||||
**
|
||||
** (8) If the subquery is a compound that uses UNION, INTERSECT,
|
||||
** or EXCEPT, then all of the result set columns for all arms of
|
||||
** the compound must use the BINARY collating sequence.
|
||||
**
|
||||
-** (9) If the subquery is a compound, then all arms of the compound must
|
||||
-** have the same affinity. (This is the same as restriction (17h)
|
||||
-** for query flattening.)
|
||||
-**
|
||||
**
|
||||
** Return 0 if no changes are made and non-zero if one or more WHERE clause
|
||||
** terms are duplicated into the subquery.
|
||||
*/
|
||||
static int pushDownWhereTerms(
|
||||
@@ -5139,13 +5134,10 @@
|
||||
}
|
||||
#ifndef SQLITE_OMIT_WINDOWFUNC
|
||||
if( pSel->pWin ) return 0; /* restriction (6b) */
|
||||
#endif
|
||||
}
|
||||
- if( compoundHasDifferentAffinities(pSubq) ){
|
||||
- return 0; /* restriction (9) */
|
||||
- }
|
||||
if( notUnionAll ){
|
||||
/* If any of the compound arms are connected using UNION, INTERSECT,
|
||||
** or EXCEPT, then we must ensure that none of the columns use a
|
||||
** non-BINARY collating sequence. */
|
||||
for(pSel=pSubq; pSel; pSel=pSel->pPrior){
|
||||
|
||||
--- a/test/pushdown.test
|
||||
+++ b/test/pushdown.test
|
||||
@@ -120,7 +120,47 @@
|
||||
SELECT v1.a, v1.b, t0.c0 AS cd FROM t0 LEFT JOIN v0 ON v0.c0!=0, v1
|
||||
) WHERE a=2 AND b=0 AND cd=0;
|
||||
} {
|
||||
2 0 0
|
||||
}
|
||||
-
|
||||
+
|
||||
+# 2023-02-22 https://sqlite.org/forum/forumpost/bcc4375032
|
||||
+# Performance regression caused by check-in [1ad41840c5e0fa70] from 2022-11-25.
|
||||
+# That check-in added a new restriction on push-down. The new restriction is
|
||||
+# no longer necessary after check-in [27655c9353620aa5] from 2022-12-14.
|
||||
+#
|
||||
+do_execsql_test 3.5 {
|
||||
+ DROP TABLE IF EXISTS t1;
|
||||
+ CREATE TABLE t1(a INT, b INT, c TEXT, PRIMARY KEY(a,b)) WITHOUT ROWID;
|
||||
+ INSERT INTO t1(a,b,c) VALUES
|
||||
+ (1,100,'abc'),
|
||||
+ (2,200,'def'),
|
||||
+ (3,300,'abc');
|
||||
+ DROP TABLE IF EXISTS t2;
|
||||
+ CREATE TABLE t2(a INT, b INT, c TEXT, PRIMARY KEY(a,b)) WITHOUT ROWID;
|
||||
+ INSERT INTO t2(a,b,c) VALUES
|
||||
+ (1,110,'efg'),
|
||||
+ (2,200,'hij'),
|
||||
+ (3,330,'klm');
|
||||
+ CREATE VIEW v3 AS
|
||||
+ SELECT a, b, c FROM t1
|
||||
+ UNION ALL
|
||||
+ SELECT a, b, 'xyz' FROM t2;
|
||||
+ SELECT * FROM v3 WHERE a=2 AND b=200;
|
||||
+} {2 200 def 2 200 xyz}
|
||||
+do_eqp_test 3.6 {
|
||||
+ SELECT * FROM v3 WHERE a=2 AND b=200;
|
||||
+} {
|
||||
+ QUERY PLAN
|
||||
+ |--CO-ROUTINE v3
|
||||
+ | `--COMPOUND QUERY
|
||||
+ | |--LEFT-MOST SUBQUERY
|
||||
+ | | `--SEARCH t1 USING PRIMARY KEY (a=? AND b=?)
|
||||
+ | `--UNION ALL
|
||||
+ | `--SEARCH t2 USING PRIMARY KEY (a=? AND b=?)
|
||||
+ `--SCAN v3
|
||||
+}
|
||||
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
+# We want both arms of the compound subquery to use the
|
||||
+# primary key.
|
||||
+
|
||||
finish_test
|
||||
@ -1,433 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit autotools flag-o-matic multilib-minimal toolchain-funcs
|
||||
|
||||
DESCRIPTION="SQL database engine"
|
||||
HOMEPAGE="https://sqlite.org/"
|
||||
|
||||
# On version updates, make sure to read the forum (https://sqlite.org/forum/forum)
|
||||
# for hints regarding test failures, backports, etc.
|
||||
if [[ ${PV} == 9999 ]]; then
|
||||
S="${WORKDIR}"/${PN}
|
||||
PROPERTIES="live"
|
||||
else
|
||||
printf -v SRC_PV "%u%02u%02u%02u" $(ver_rs 1- " ")
|
||||
DOC_PV="${SRC_PV}"
|
||||
#printf -v DOC_PV "%u%02u%02u00" $(ver_rs 1-3 " ")
|
||||
|
||||
SRC_URI="
|
||||
https://sqlite.org/2023/${PN}-src-${SRC_PV}.zip
|
||||
doc? ( https://sqlite.org/2023/${PN}-doc-${DOC_PV}.zip )
|
||||
"
|
||||
S="${WORKDIR}/${PN}-src-${SRC_PV}"
|
||||
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
fi
|
||||
|
||||
LICENSE="public-domain"
|
||||
SLOT="3"
|
||||
IUSE="debug doc icu +readline secure-delete static-libs tcl test tools"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
RDEPEND="
|
||||
sys-libs/zlib:=[${MULTILIB_USEDEP}]
|
||||
icu? ( dev-libs/icu:=[${MULTILIB_USEDEP}] )
|
||||
readline? ( sys-libs/readline:=[${MULTILIB_USEDEP}] )
|
||||
tcl? ( dev-lang/tcl:=[${MULTILIB_USEDEP}] )
|
||||
tools? ( dev-lang/tcl:= )
|
||||
"
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] )
|
||||
"
|
||||
BDEPEND=">=dev-lang/tcl-8.6:0"
|
||||
if [[ ${PV} == 9999 ]]; then
|
||||
BDEPEND+=" dev-vcs/fossil"
|
||||
else
|
||||
BDEPEND+=" app-arch/unzip"
|
||||
fi
|
||||
|
||||
PATCHES=(
|
||||
# Will be fixed in 3.42
|
||||
"${FILESDIR}"/${PN}-3.41.2-perf-regression.patch
|
||||
)
|
||||
|
||||
_fossil_fetch() {
|
||||
local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}"
|
||||
local repo_id="${1}"
|
||||
local repo_uri="${2}"
|
||||
|
||||
local -x FOSSIL_HOME="${HOME}"
|
||||
|
||||
mkdir -p "${T}/fossil/${repo_id}" || die
|
||||
pushd "${T}/fossil/${repo_id}" > /dev/null || die
|
||||
|
||||
if [[ -n "${EVCS_OFFLINE}" ]]; then
|
||||
if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then
|
||||
die "Network activity disabled using EVCS_OFFLINE and clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\""
|
||||
fi
|
||||
else
|
||||
if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then
|
||||
einfo fossil clone --verbose "${repo_uri}" "${repo_id}.fossil"
|
||||
fossil clone --verbose "${repo_uri}" "${repo_id}.fossil" || die
|
||||
echo
|
||||
else
|
||||
cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" . || die
|
||||
einfo fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}"
|
||||
fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}" || die
|
||||
echo
|
||||
fi
|
||||
|
||||
(
|
||||
addwrite "${distdir}"
|
||||
mkdir -p "${distdir}/fossil-src/${repo_id}" || die
|
||||
cp -p "${repo_id}.fossil" "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" || die
|
||||
)
|
||||
fi
|
||||
|
||||
popd > /dev/null || die
|
||||
}
|
||||
|
||||
_fossil_checkout() {
|
||||
local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}"
|
||||
local repo_id="${1}"
|
||||
local branch_or_commit="${2}"
|
||||
local target_directory="${3}"
|
||||
|
||||
local -x FOSSIL_HOME="${HOME}"
|
||||
|
||||
if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then
|
||||
die "Clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\""
|
||||
fi
|
||||
|
||||
if [[ ! -f "${T}/fossil/${repo_id}/${repo_id}.fossil" ]]; then
|
||||
mkdir -p "${T}/fossil/${repo_id}" || die
|
||||
cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" "${T}/fossil/${repo_id}" || die
|
||||
fi
|
||||
|
||||
mkdir "${target_directory}" || die
|
||||
pushd "${target_directory}" > /dev/null || die
|
||||
|
||||
einfo fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}"
|
||||
fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}" || die
|
||||
echo
|
||||
|
||||
popd > /dev/null || die
|
||||
}
|
||||
|
||||
fossil_fetch() {
|
||||
local repo_id="${1}"
|
||||
local repo_uri="${2}"
|
||||
local target_directory="${3}"
|
||||
|
||||
local branch_or_commit="${EFOSSIL_COMMIT:-${EFOSSIL_BRANCH:-trunk}}"
|
||||
|
||||
_fossil_fetch "${repo_id}" "${repo_uri}"
|
||||
_fossil_checkout "${repo_id}" "${branch_or_commit}" "${target_directory}"
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == 9999 ]]; then
|
||||
fossil_fetch sqlite https://sqlite.org/src "${WORKDIR}/${PN}"
|
||||
if use doc; then
|
||||
fossil_fetch sqlite-doc https://sqlite.org/docsrc "${WORKDIR}/${PN}-doc"
|
||||
fi
|
||||
else
|
||||
default
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
eautoreconf
|
||||
multilib_copy_sources
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local -x CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}"
|
||||
local options=()
|
||||
|
||||
options+=(
|
||||
--enable-load-extension
|
||||
--enable-threadsafe
|
||||
)
|
||||
|
||||
# Support detection of misuse of SQLite API.
|
||||
# https://sqlite.org/compile.html#enable_api_armor
|
||||
append-cppflags -DSQLITE_ENABLE_API_ARMOR
|
||||
|
||||
# Support bytecode and tables_used virtual tables.
|
||||
# https://sqlite.org/compile.html#enable_bytecode_vtab
|
||||
# https://sqlite.org/bytecodevtab.html
|
||||
append-cppflags -DSQLITE_ENABLE_BYTECODE_VTAB
|
||||
|
||||
# Support column metadata functions.
|
||||
# https://sqlite.org/compile.html#enable_column_metadata
|
||||
# https://sqlite.org/c3ref/column_database_name.html
|
||||
append-cppflags -DSQLITE_ENABLE_COLUMN_METADATA
|
||||
|
||||
# Support sqlite_dbpage virtual table.
|
||||
# https://sqlite.org/compile.html#enable_dbpage_vtab
|
||||
# https://sqlite.org/dbpage.html
|
||||
append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB
|
||||
|
||||
# Support dbstat virtual table.
|
||||
# https://sqlite.org/compile.html#enable_dbstat_vtab
|
||||
# https://sqlite.org/dbstat.html
|
||||
append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB
|
||||
|
||||
# Support sqlite3_serialize() and sqlite3_deserialize() functions.
|
||||
# https://sqlite.org/compile.html#enable_deserialize
|
||||
# https://sqlite.org/c3ref/serialize.html
|
||||
# https://sqlite.org/c3ref/deserialize.html
|
||||
append-cppflags -DSQLITE_ENABLE_DESERIALIZE
|
||||
|
||||
# Support comments in output of EXPLAIN.
|
||||
# https://sqlite.org/compile.html#enable_explain_comments
|
||||
append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS
|
||||
|
||||
# Support Full-Text Search versions 3, 4 and 5.
|
||||
# https://sqlite.org/compile.html#enable_fts3
|
||||
# https://sqlite.org/compile.html#enable_fts3_parenthesis
|
||||
# https://sqlite.org/compile.html#enable_fts4
|
||||
# https://sqlite.org/compile.html#enable_fts5
|
||||
# https://sqlite.org/fts3.html
|
||||
# https://sqlite.org/fts5.html
|
||||
append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4
|
||||
options+=( --enable-fts5 )
|
||||
|
||||
# Support hidden columns.
|
||||
append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS
|
||||
|
||||
# Support memsys5 memory allocator.
|
||||
# https://sqlite.org/compile.html#enable_memsys5
|
||||
# https://sqlite.org/malloc.html#memsys5
|
||||
append-cppflags -DSQLITE_ENABLE_MEMSYS5
|
||||
|
||||
# Support sqlite3_normalized_sql() function.
|
||||
# https://sqlite.org/c3ref/expanded_sql.html
|
||||
append-cppflags -DSQLITE_ENABLE_NORMALIZE
|
||||
|
||||
# Support sqlite_offset() function.
|
||||
# https://sqlite.org/compile.html#enable_offset_sql_func
|
||||
# https://sqlite.org/lang_corefunc.html#sqlite_offset
|
||||
append-cppflags -DSQLITE_ENABLE_OFFSET_SQL_FUNC
|
||||
|
||||
# Support pre-update hook functions.
|
||||
# https://sqlite.org/compile.html#enable_preupdate_hook
|
||||
# https://sqlite.org/c3ref/preupdate_count.html
|
||||
append-cppflags -DSQLITE_ENABLE_PREUPDATE_HOOK
|
||||
|
||||
# Support Resumable Bulk Update extension.
|
||||
# https://sqlite.org/compile.html#enable_rbu
|
||||
# https://sqlite.org/rbu.html
|
||||
append-cppflags -DSQLITE_ENABLE_RBU
|
||||
|
||||
# Support R*Trees.
|
||||
# https://sqlite.org/compile.html#enable_rtree
|
||||
# https://sqlite.org/compile.html#enable_geopoly
|
||||
# https://sqlite.org/rtree.html
|
||||
# https://sqlite.org/geopoly.html
|
||||
append-cppflags -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY
|
||||
|
||||
# Support Session extension.
|
||||
# https://sqlite.org/compile.html#enable_session
|
||||
# https://sqlite.org/sessionintro.html
|
||||
append-cppflags -DSQLITE_ENABLE_SESSION
|
||||
|
||||
# Support scan status functions.
|
||||
# https://sqlite.org/compile.html#enable_stmt_scanstatus
|
||||
# https://sqlite.org/c3ref/stmt_scanstatus.html
|
||||
# https://sqlite.org/c3ref/stmt_scanstatus_reset.html
|
||||
append-cppflags -DSQLITE_ENABLE_STMT_SCANSTATUS
|
||||
|
||||
# Support sqlite_stmt virtual table.
|
||||
# https://sqlite.org/compile.html#enable_stmtvtab
|
||||
# https://sqlite.org/stmt.html
|
||||
append-cppflags -DSQLITE_ENABLE_STMTVTAB
|
||||
|
||||
# Support unknown() function.
|
||||
# https://sqlite.org/compile.html#enable_unknown_sql_function
|
||||
append-cppflags -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
|
||||
|
||||
# Support unlock notification.
|
||||
# https://sqlite.org/compile.html#enable_unlock_notify
|
||||
# https://sqlite.org/c3ref/unlock_notify.html
|
||||
# https://sqlite.org/unlock_notify.html
|
||||
append-cppflags -DSQLITE_ENABLE_UNLOCK_NOTIFY
|
||||
|
||||
# Support LIMIT and ORDER BY clauses on DELETE and UPDATE statements.
|
||||
# https://sqlite.org/compile.html#enable_update_delete_limit
|
||||
# https://sqlite.org/lang_delete.html#optional_limit_and_order_by_clauses
|
||||
# https://sqlite.org/lang_update.html#optional_limit_and_order_by_clauses
|
||||
append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT
|
||||
|
||||
# Support soundex() function.
|
||||
# https://sqlite.org/compile.html#soundex
|
||||
# https://sqlite.org/lang_corefunc.html#soundex
|
||||
append-cppflags -DSQLITE_SOUNDEX
|
||||
|
||||
# Support URI filenames.
|
||||
# https://sqlite.org/compile.html#use_uri
|
||||
# https://sqlite.org/uri.html
|
||||
append-cppflags -DSQLITE_USE_URI
|
||||
|
||||
options+=( $(use_enable debug) )
|
||||
|
||||
if use icu; then
|
||||
# Support ICU extension.
|
||||
# https://sqlite.org/compile.html#enable_icu
|
||||
append-cppflags -DSQLITE_ENABLE_ICU
|
||||
sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
|
||||
fi
|
||||
|
||||
options+=(
|
||||
--disable-editline
|
||||
$(use_enable readline)
|
||||
)
|
||||
|
||||
if use readline; then
|
||||
options+=( --with-readline-inc="-I${ESYSROOT}/usr/include/readline" )
|
||||
fi
|
||||
|
||||
if use secure-delete; then
|
||||
# Enable secure_delete pragma by default.
|
||||
# https://sqlite.org/compile.html#secure_delete
|
||||
# https://sqlite.org/pragma.html#pragma_secure_delete
|
||||
append-cppflags -DSQLITE_SECURE_DELETE
|
||||
fi
|
||||
|
||||
options+=( $(use_enable static-libs static) )
|
||||
|
||||
# tcl, test, tools USE flags.
|
||||
if use tcl || use test || { use tools && multilib_is_native_abi; }; then
|
||||
options+=(
|
||||
--enable-tcl
|
||||
--with-tcl="${ESYSROOT}/usr/$(get_libdir)"
|
||||
)
|
||||
else
|
||||
options+=( --disable-tcl )
|
||||
fi
|
||||
|
||||
if [[ "${ABI}" == "x86" ]]; then
|
||||
if $(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P -dM - < /dev/null 2> /dev/null | grep -q "^#define __SSE__ 1$"; then
|
||||
append-cflags -mfpmath=sse
|
||||
else
|
||||
append-cflags -ffloat-store
|
||||
fi
|
||||
|
||||
# Skip known-broken test for now
|
||||
# https://sqlite.org/forum/forumpost/d97caf168f
|
||||
# https://sqlite.org/forum/forumpost/50f136d91d
|
||||
if use test ; then
|
||||
rm test/atof1.test || die
|
||||
fi
|
||||
fi
|
||||
|
||||
econf "${options[@]}"
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
emake HAVE_TCL="$(usev tcl 1)" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}"
|
||||
|
||||
if use tools && multilib_is_native_abi; then
|
||||
emake changeset dbdump dbhash dbtotxt index_usage rbu scrub showdb showjournal showshm showstat4 showwal sqldiff sqlite3_analyzer sqlite3_checker sqlite3_expert sqltclsh
|
||||
fi
|
||||
|
||||
if [[ ${PV} == 9999 ]] && use doc && multilib_is_native_abi; then
|
||||
emake tclsqlite3.c
|
||||
|
||||
local build_directory="$(pwd)"
|
||||
build_directory="${build_directory##*/}"
|
||||
|
||||
mkdir "${WORKDIR}/${PN}-doc-build" || die
|
||||
pushd "${WORKDIR}/${PN}-doc-build" > /dev/null || die
|
||||
|
||||
emake -f "../${PN}-doc/Makefile" -j1 SRC="../${PN}" BLD="../${build_directory}" DOC="../${PN}-doc" CC="$(tc-getBUILD_CC)" TCLINC="" TCLFLAGS="$($(tc-getBUILD_PKG_CONFIG) --libs tcl) -ldl -lm" base doc
|
||||
rmdir doc/matrix{/*,} || die
|
||||
|
||||
popd > /dev/null || die
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
if [[ "${EUID}" -eq 0 ]]; then
|
||||
ewarn "Skipping tests due to root permissions"
|
||||
return
|
||||
fi
|
||||
|
||||
local -x SQLITE_HISTORY="${T}/sqlite_history_${ABI}"
|
||||
|
||||
# e_uri.test tries to open files in /.
|
||||
# bug #839798
|
||||
local SANDBOX_PREDICT=${SANDBOX_PREDICT}
|
||||
addpredict "/test.db:/ÿ.db"
|
||||
|
||||
emake HAVE_TCL="$(usex tcl 1 "")" $(usex debug 'fulltest' 'test')
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install
|
||||
|
||||
if use tools && multilib_is_native_abi; then
|
||||
install_tool() {
|
||||
if [[ -f ".libs/${1}" ]]; then
|
||||
newbin ".libs/${1}" "${2}"
|
||||
else
|
||||
newbin "${1}" "${2}"
|
||||
fi
|
||||
}
|
||||
|
||||
install_tool changeset sqlite3-changeset
|
||||
install_tool dbdump sqlite3-db-dump
|
||||
install_tool dbhash sqlite3-db-hash
|
||||
install_tool dbtotxt sqlite3-db-to-txt
|
||||
install_tool index_usage sqlite3-index-usage
|
||||
install_tool rbu sqlite3-rbu
|
||||
install_tool scrub sqlite3-scrub
|
||||
install_tool showdb sqlite3-show-db
|
||||
install_tool showjournal sqlite3-show-journal
|
||||
install_tool showshm sqlite3-show-shm
|
||||
install_tool showstat4 sqlite3-show-stat4
|
||||
install_tool showwal sqlite3-show-wal
|
||||
install_tool sqldiff sqlite3-diff
|
||||
install_tool sqlite3_analyzer sqlite3-analyzer
|
||||
install_tool sqlite3_checker sqlite3-checker
|
||||
install_tool sqlite3_expert sqlite3-expert
|
||||
install_tool sqltclsh sqlite3-tclsh
|
||||
|
||||
unset -f install_tool
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
find "${ED}" -name "*.la" -delete || die
|
||||
|
||||
doman sqlite3.1
|
||||
|
||||
if use doc; then
|
||||
if [[ ${PV} == 9999 ]]; then
|
||||
pushd "${WORKDIR}/${PN}-doc-build/doc" > /dev/null || die
|
||||
else
|
||||
pushd "${WORKDIR}/${PN}-doc-${DOC_PV}" > /dev/null || die
|
||||
fi
|
||||
|
||||
find "(" -name "*.db" -o -name "*.txt" ")" -delete || die
|
||||
if [[ ${PV} != 9999 ]]; then
|
||||
rm search search.d/admin || die
|
||||
rmdir search.d || die
|
||||
find -name "*~" -delete || die
|
||||
fi
|
||||
|
||||
(
|
||||
docinto html
|
||||
dodoc -r *
|
||||
)
|
||||
|
||||
popd > /dev/null || die
|
||||
fi
|
||||
}
|
||||
@ -5,8 +5,8 @@ DIST perl-5.34.1.tar.xz 12760168 BLAKE2B 3768e55f66551c83295153e91d25d568b7b8638
|
||||
DIST perl-5.36.0-patches-1.tar.xz 20352 BLAKE2B f5413c75c5bbced230ad7fa692998caef8e4041f3394ae5212dc2aaee465de619b56cf07551be1bb36f2e06b9ed7d0ddda31ad4a7ec81d5c0c64b698ddd80379 SHA512 ab24577b6d71a13d9ccf272efa0881b29933b6a39532ca0d71d4c9a134f451bbe5f3d87c6c851f26114702ac3f92af5c5a72129a458ebee31e372106955eb157
|
||||
DIST perl-5.36.0.tar.xz 13051500 BLAKE2B e4864a4c21e5242df4164c73db8af10f7b9c36b075e0c05777abec79716db7778ccbf2c0c9e7e749518ad310019d2a6b32bd8b5ab2af5a8b16b5d920f83d034f SHA512 6dd6ac2a77566c173c5ab9c238cf555f2c3e592e89abb5600bc23ce1cbd0c349e0233f6417cbbf1f6d0aefc6a734ba491285af0d3dc68a605b658b65c89f1dab
|
||||
DIST perl-5.36.1.tar.xz 13053604 BLAKE2B baab610d16e444338ad7d529bad6a88e12010786bd25f2ab117ab4dd636859ff862cb925700095434f05a802bea5b89a9d41769f26bdbae439443020950882bd SHA512 8d1ec654c59d078bfc477f11c9526233199a85e4d4f6f5a55bf9eb7802cd355189c669cc6785d2d5e741c1de4d740b7a0cfd3c0198122586a07ac7f527fb14af
|
||||
DIST perl-5.38.0-RC1.tar.xz 13570400 BLAKE2B a08f5ab6d1d8cf4572929b6e47834cf3e17dec33e8e41916f5a9f3524281493f369b75054ef7232b777b9b162635e4ee7864d8fd4f97de542b3d9704ba526af2 SHA512 1bd17db43e5b25fdcd8f0addd53820371f78173fe2bf6ca12de06589ecb296314e996cfa37357f656a694cf56504b85e7d7aef4f8cd367edb64653951b7a2efd
|
||||
DIST perl-5.38.0-patches-1.tar.gz 26047 BLAKE2B 809dd5242f9868e54525ae8056598d3252c889afc72ed6f122174f828947223399a5ba4dbc16dd43501f7138205991f8c102cbe0ed94175ae3353040c53a0162 SHA512 c66160e20095555aa21d3be70050dce934d62e55e01dcf0f716129b2faa390923958a48bc448b4fab6f55e5b097eb378f7a6409a92c024fe68c8b34fddcfc5e4
|
||||
DIST perl-5.38.0.tar.xz 13565448 BLAKE2B 22fd334d911e8ebe16ad2a96522110ad2c14d09dcd04d5e64391c7ffffbb8ec92dd80d3a0f8eb105fb45aef8a2f78457174133503f7aeac4d90f762a44631478 SHA512 71beff7f6daa22a967972f5805daf2d4ff837a17e5ab808780f815d5914a67acf4f2e92acac0f2d8b24bdde4ceec0c2f7cb3029b5eadeeb30191f757e1bf0f9d
|
||||
DIST perl-cross-1.3.7.tar.gz 118291 BLAKE2B dc9c060857d6905c817e91c3f5b1f546b76e02c6de02dc260185e0de8628a5ead3a557501da75549e2585cd30879190558740e697b1c78a69fa08ccb5649efcd SHA512 1111274f34f8b46e9f418883e9b1652ba4a5a9b4a5880a9a5b38bc8aeb5d75a9f4943233870f5ebf5fbcdc0c30b2983ace11ad051b55d3283327d8f2c15e172c
|
||||
DIST perl-cross-1.4.1.tar.gz 117688 BLAKE2B e01103fb92764213dafb1ab92954fdc4bdcf1bd71a0064279ee75fed55a1c71850eaabdf667d6ab1c15eadccf7497668e5bb5ab13de33fef707fba14bfd52912 SHA512 5f403d3a52f724383d25c23b08e8001954300fa8f07a5b49df440ef4d06ef756404a6e448093c4f4d4f9a470b1c3f2b1b8b27d3d227ac1823552f6a377edd06a
|
||||
DIST perl-cross-1.4.tar.gz 113861 BLAKE2B 7c7783afccc6a04ab122a7c60b1cff7f0a2725655b2b63325ca25d7b8acb0cf993b496e2a590db943054336337ad215550b6b2a565f1d91a5aa9cfe3a4c36db4 SHA512 bde73cac13c0b42c4c6783d7e30dea491d70b65131e1c8434ef75db1f39a8e15ef5857568b706e8456faa3822402676dd247a1f20f4bed983597fdd5a6b4faad
|
||||
|
||||
@ -53,7 +53,7 @@ LICENSE="|| ( Artistic GPL-1+ )"
|
||||
SLOT="0/${SUBSLOT}"
|
||||
|
||||
if [[ "${PV##*.}" != "9999" ]] && [[ "${PV/rc//}" == "${PV}" ]] ; then
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~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 ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
fi
|
||||
|
||||
IUSE="berkdb debug doc gdbm ithreads minimal quadmath"
|
||||
|
||||
@ -92,7 +92,7 @@ dual_scripts() {
|
||||
src_remove_dual perl-core/ExtUtils-ParseXS 3.510.0 xsubpp
|
||||
src_remove_dual perl-core/IO-Compress 2.204.0 zipdetails
|
||||
src_remove_dual perl-core/JSON-PP 4.160.0 json_pp
|
||||
src_remove_dual perl-core/Module-CoreList 5.202.305.200 corelist
|
||||
src_remove_dual perl-core/Module-CoreList 5.202.306.230 corelist
|
||||
src_remove_dual perl-core/Pod-Checker 1.750.0 podchecker
|
||||
src_remove_dual perl-core/Pod-Perldoc 3.280.100 perldoc
|
||||
src_remove_dual perl-core/Pod-Usage 2.30.0 pod2usage
|
||||
@ -1,36 +1,18 @@
|
||||
DIST Python-2.7.18.tar.xz 12854736 BLAKE2B 060a621c91dd8e3d321aec99d44c17aa67381998256a1a002d316b38288349884d5960de35c49352d03129ed0bae599e641ec2225898158ebce50a7a2fd74d2c SHA512 a7bb62b51f48ff0b6df0b18f5b0312a523e3110f49c3237936bfe56ed0e26838c0274ff5401bda6fc21bf24337477ccac49e8026c5d651e4b4cafb5eb5086f6c
|
||||
DIST Python-2.7.18.tar.xz.asc 833 BLAKE2B 1d98770e46171971fb99994508d238c01d2755281d2f94353314014d9e83e0ec5f0b3e3950ea1fdf5fce9ba6b8f55312355845c2a3fc4291c27ee56fe6215448 SHA512 c2a5f5a52f47dec52460ad3275758d4e5de6e7075c3def4353c988d74d563a39b42cae2d5eb24e2a23a6247cef69100f91620b11a49c2359fbf99b203c9cbda8
|
||||
DIST Python-3.10.11.tar.xz 19640792 BLAKE2B ce281549cb8fdcb74e068cc76c5412af749a6394644c2aacabdcbf5e10210fb5c0f4e7cb2eb3b728837eb89e382873074e938f609d94001dd5b4bf823084a994 SHA512 fa113b4b635d271a1412999587ec64654d337db263851a6a9d88b3cab4ed66dba76fe03e65c4d341f0a83fd8182d35e245bfd9827465d7aebcb4deb71af4d047
|
||||
DIST Python-3.10.11.tar.xz.asc 833 BLAKE2B ba107904c1658374481636bc950187a7bd1a2fb33aa3fb2fd1343e5aec6e84afdadab0b2edc6f0768856ae7b847a592fc79a7476247f4ff67c38c1ff18f831e9 SHA512 edddacc81d4671851cd2a52853cabc53314fa226dac77c2248ee61cf7d58dd2f59301b7729b2ff9f5717b84268140c3bef30e358b80718c6c84b308bd560bcd8
|
||||
DIST Python-3.10.12.tar.xz 19654836 BLAKE2B f7a3e27b437003915e4ebeeba82d1cc0c9de169f6e4bfe8d957e910141767668f3f1dd19374c212dba09325465f859244b955f3ffd3d0e6e879cc31bb4229ed6 SHA512 5ea018e71bfe7872e02eaf8aef56d5583c0880e4ce5fbbdf8ea76da20c2e94ac6a3ba8badb4b7d1bc21853402a3b63541b04181737417b1626e786b696595cf5
|
||||
DIST Python-3.10.12.tar.xz.asc 833 BLAKE2B a0278118ce8e1806a68838e77f2448570e41791d968e23f27940e48ba996a21dbe3766e670180ec0f78d32d89aa7574a95e5232aa9173f2c58886069a76a4cca SHA512 d5f1c98d8509e078bf7d7205f9fe25d028178fb7940cff406761c14a2689a82425f6bfe9b58b2aa6e9d4fee53626fb56658e56bd54028245de827dc5ebc1d7d8
|
||||
DIST Python-3.11.3.tar.xz 19906156 BLAKE2B c23815e09a0012b2af03f3e18471389382978ef0991cb081c4c6410e98613589d47d3ad782c0a06a48ddd86fc5df7f1d59e93dbab5871b89559e225084544248 SHA512 a3bba4b69322a47bfeefe42ba0fd7331b5b67fd2ab41441e2219d16ef8c6f307f1a48977afd073c18cfd24ec6cb1bfe0c4bb4b273031eb524dc7e9fb5fbcc3b6
|
||||
DIST Python-3.11.3.tar.xz.asc 833 BLAKE2B 1846858480428293047bfaf87a74f5a6cf28227f63dbc36e658ab68444a5b91c2178fca42f35a413591103a0ceeea3cd5f8b757fb2f42cbcad023c62970ab950 SHA512 34bfb6e74e2bbec15bf3f653e32a3d705961b5f724e3f4713cf9b6b530f9c9e7e94f5cf855798bdf9763235b97a60ec9ad554d24cdc793e21a0c39540b5818d8
|
||||
DIST Python-3.11.4.tar.xz 19954828 BLAKE2B b423aa1838702f555160b41cd90d752180250381af9222d714f0545281e8577e14d7771dc2e1217d877ba31e85590da8adcc50b5019faaecdd775cd09b313d47 SHA512 7eb14fecbf60824d10c22a9057584c3a142c2866f4af6caa2525c10c8bcb24e6e7afb32a44a0e118df0a2b2543d578c3b422ffd4a5fa317dfe6ea371cc7ee1ee
|
||||
DIST Python-3.11.4.tar.xz.asc 833 BLAKE2B 0384dfbda5f897e749d8fca21773c599d1910ce1188f3c2dbf9632c9a79347644e1354e0ec6fc182c387b9cd6c66b8c224e5bfd8237877786918414f8d49f5f7 SHA512 8ee82bf116b2cc7407e260eccf53e7fee4d7497165d0b9c3e59931c73f3b419bc0299b459eee9544a6e51e323ff0a6aa07827efd89f9c320b54556feeea04a78
|
||||
DIST Python-3.12.0b1.tar.xz 20053428 BLAKE2B b5b0df040de6cff181689f7c53e09407ef3a92806a688faa8547b2c6a0adc1622ea15cc5efb0d1b96a711cbf16f73a1d5f8fa748983bc423e4bbe89bd6ff84a6 SHA512 7d6d009f765ba48ef48e6b25cb1f043ba66979d66cb9141452862e84ae954611361d24178cce628d1892b75d306370a56fcb30a7c1715b0eedcfef5610f3e1ae
|
||||
DIST Python-3.12.0b1.tar.xz.asc 963 BLAKE2B e80cbc9cf93756b6efbce3037dfcd4fec310ce17a3db36f33ac617dae63a8c2abc8efb3cfd5ec42299b9e4c2bdd06a3405c50b5550869564ae5f6a6d79d596c9 SHA512 cea449f05ae66c28aeb4ffd99b5748ba4c09bfb2a6889a771744ea81ca2afc2420648d4ca92592d32ddb26660804e73912e6fb8d906674e9e1895ba613904b26
|
||||
DIST Python-3.12.0b2.tar.xz 20215500 BLAKE2B e38c9b77fd80510cccfad7b141164c9cae142f89ca112acd3e7c46256c5539688455c66ba60bb52cd57186766a8f2d61cf92f67944a5b9ffb0991ab88f3fd38b SHA512 9bfac70f2ccc1f6798bc63a55d92f0b162e3a9077624a2e37448002ea310cb7b1da64ad2aceda795b45de91f60eb4d95dde85984900e54906d814625b42143b5
|
||||
DIST Python-3.12.0b2.tar.xz.asc 963 BLAKE2B d491a8ff123f35c6dfc77f466b67fbba13ec3496ea2dd95f0cb8375b755778e10ba4802618787b71006f8433175144ae1dc640171068c583bbd23831b2d78cca SHA512 22a1f2c3335bc428cfee0ce2e081aeed24474d3cd877fac1cc4cf92b4a2bee70f85aed0068a71600cddef9c8b46bbde257a92c57bd494ad820c0686ab7c8c0f0
|
||||
DIST Python-3.8.16.tar.xz 19046724 BLAKE2B cbdeec7961d39cb9ab4960760b5d4c7ae71675c174156aa9f6fca55ee92a93a937ef39defe86e423237a25e0e24703233ce4b91dc97005b6ffc1f342ddd9e22c SHA512 d206e80806409410c00ef8acd8c3d90e3cc9553f996d0a57faa63802f2415e9d7591542b2e84b5e8e79245f40f6478790b5ba2acf1da98ebbc9495999183f7fd
|
||||
DIST Python-3.8.16.tar.xz.asc 833 BLAKE2B 678dabc558d013b104bf9e65d4319076c4730a67093a66fefc073b429c640d4facb31a0d6b7238deb08b265586a0cfb2c345051fe4df7bf5001d7317e6c06c9b SHA512 e93c394c0c5afcaaab625a3bd540dcc8e0ab946803d212343b8d1d6d5e6b89b09b6a20607bab0d858b30389a03305d57e14548605a65277d053c7817f32f4546
|
||||
DIST Python-3.12.0b3.tar.xz 20220780 BLAKE2B 78deb1efe3642bd11265fdb810d8e40d6d816ebadd55872bfa7de313956865d4370631449a7f0db7ca95f38643598753aaf94c9a02d44f9a2707f45bba41f77f SHA512 2d83285ea09445da25204285937366b20793b12223f5a0979276633213773d14de6dbb6a311629b755962804d8521b30cf9fe032f447608b6df7af721a18ba0c
|
||||
DIST Python-3.12.0b3.tar.xz.asc 963 BLAKE2B fad39386d4f8a6a1103e0cef431ba171fd5e6af75b097684717f68046683bf967981d1aee0e17f7dc7f97578e686565f817e39de11b309c4e8d64949fff396aa SHA512 ab0d91f3c2fc001fe924f71182526d543a3c9e65238954bb954c58d03171a6cb3640a15570d2d7b889c6251fd876790121cd36bcc29a901f53d17f5f4f8f6f4e
|
||||
DIST Python-3.8.17.tar.xz 20696584 BLAKE2B 07be197f7d753775b039ca200864e6d40cbb0115538604d0b214a5404beecd38e3ef416c1941f7871e2e92913d09faba48745bb9df141cf8e5ca77c7de6f0a24 SHA512 bc7e02acfebba86e4394f02195993500fac9347a52c7b49727eb0cdda38786ae917234272872d75effaddb042810d9682ef5627b0cc199f8aa0d5d3e315ddc0e
|
||||
DIST Python-3.8.17.tar.xz.asc 833 BLAKE2B c1eb893e8005c59c918528d676f06679182cf45ae256f9929d2daf56577dd2dcb3aff264e9ca47b605ecba2a1c00fabf282c59a231e67cec2324c33c6b3ca7f6 SHA512 bb017e2b17a3ca8ed568d2589285a87365bcca6a677e06fab5184d03e251ace6276117a160f59201e6a1c597e32d79ee109ffc7083266e6e2105b7afaaac3876
|
||||
DIST Python-3.9.16.tar.xz 19738796 BLAKE2B 70dedeb70d9d8f27e4f6db5106623e087c61d451c7a04639cf8d3503ad02d4d43f1b36d0cdf1131aefc9bf6e677e561227dd4baef2c2c3d2dbf6d3e7dc36bd94 SHA512 b5fd0afe131c82bbce6ddf887c59eef6945910d6a9a2bc87c0927f4e4a096bf9ca4d25bcb729c40f6ebb8a65fbe8bf7b0b97a7c4a8c9e551240eb4f34b878653
|
||||
DIST Python-3.9.16.tar.xz.asc 833 BLAKE2B 416b4a4be06e101c5971c12a6f21229c425bcabaea58487e0d1b24d6dea318c58806ee43892fc704df8252670451bd6a4a2610c25672d3983ddb081fed34b92d SHA512 468959c36a3ec6136f57a39475fff4745a25be0cb5d3d58cf3e5faf0b9ce2d2a8b89f1f9fea1479c4c6ad12ac49e97c1cfd4291c978bb3d30df5a582ec315210
|
||||
DIST Python-3.9.17.tar.xz 19647312 BLAKE2B eae9d1c0b9a6cd9ce84af75e58899bcd127163c90434d2bc879047706adb087721aa5ac9425e6906e6238296b2695ea0304a2b93288627cee3560ee85f450062 SHA512 994d92346e563a4635411808744eac8207c68e6fc9c1db1c2eb4103dad8553aaad4a8116e38c61f28cb17905a12cc46dccdde985e1c45882bf1815081b88b6be
|
||||
DIST Python-3.9.17.tar.xz.asc 833 BLAKE2B ff3dc342e89149b89b060d0bd8d2a147cc901bc64c1e97d3c21ca8ff2165cd4959ca76ae1df9dbc76039b43d75e8108382ad2d8954e4ae892d174f6eb3aaeb44 SHA512 948196f104539b2e05b17fb5ef2387be392c515222213def7ab6f5b0f490d60e472e8df2dc6ec1df1d293a34d8c26a761412c93aabbdefd3390ee8bdef95a5d8
|
||||
DIST python-gentoo-patches-2.7.18_p16.tar.xz 35448 BLAKE2B 0139c0944f62f9cdd236f6a8557e0ed19704c7d72869af1cb7d8bd3e646a746cd4a0201e1b44232a5e78ef49f254db20b0d0271bf744fbfd4fe0f1e99b8f3e6c SHA512 810be590d0e06fab4b2165e6852ca49662f09dcd7e20b47a29f613ad7653252c8dfac3f0eb228d77c8a914efa7c08788b2fbd552a4b47504f5fd0ec17450c48f
|
||||
DIST python-gentoo-patches-3.10.11.tar.xz 13984 BLAKE2B 00c682609876756f61d41f637d0354538823dd713c81f8a3a168d217c515d4559d24e1988c1796b2b920f3962f56e023758b292175d29d5348a87bd8b422f6e7 SHA512 f819113908bc689bb522d2cbe749c658a6b29e7f627718954b12797461a13781352b01f798e2f42b3741a0a0489049bf03405ead4ac8103a025dac11e72b0888
|
||||
DIST python-gentoo-patches-3.10.12.tar.xz 13980 BLAKE2B 8ca0e652b73634d9fa52fbdd5f224a68ca7f0d6798079e4e5dfa41a3619e9b387166c49551ec77fb2ee035680e1681c129d6db4f82531fe94f56aa46bc1c78e3 SHA512 e41f81afcbf0948a66bc3550225f69a48797eca7461e516ed5259584e4651fe81973c8e76ca4f4a32ef78247306ad33c7a85faea69797f3e090010a1dceff13f
|
||||
DIST python-gentoo-patches-3.11.3.tar.xz 7776 BLAKE2B 78bf26f554c608c68826b9ea3c63a1df2b45bff755860f39f14306ebb63f17f5111b117519c4a9cb30452a62a14a3a7393798b8920c3d108ec8b6a30db88641e SHA512 64b79c90055fd940590b72ffd3744fe02ab9e46caf7b46f4aa1d074bf3e62d355e128bb2ac68c42f228f2e1bcdee2b0b114d9e2b9bf8427512083c1c5f8680e8
|
||||
DIST python-gentoo-patches-3.11.4.tar.xz 7108 BLAKE2B 185bc558a24bead21719d543319a47b36fcd6bdd22a5dcb11ad794a381b2bc51c28f5ea03ca1ad3359e3f96c081c10b08285e4354daf85a0535bfd2123d40d16 SHA512 19ca9fa9071cab3938008af515a65def75ed5cff7152dcab5895b29fc1ba87044a1027540a1cc63231c4e77a8b67fe931bf39adf3d642a648e7da970a0cecd3c
|
||||
DIST python-gentoo-patches-3.12.0b1.tar.xz 4652 BLAKE2B fcc0b2a8dddb4857e3bd381eb04ddbb593c18e4a3c7e565bc9d386e010f4ddfbb83ed479bd054e51055f30294f7065b045efabb6d45d0be41142dd450f1cada3 SHA512 ce39f99e54c44099a4fbd6da868af3c600320c39e2723b7958a40dfb2ff838e425ef0a87907cb084d96d059054f6222c211ebd258aec255f5fa97579cf9014c7
|
||||
DIST python-gentoo-patches-3.12.0b1_p1.tar.xz 73068 BLAKE2B 6728a4dcc102cc73e0e3a7e835e25df21075727e3096769f21df1e5411ebe1ad2d9909119bb6a12f96c932cf43de69fda122dffa3c88608c3b4acd76147153b3 SHA512 a459e341418d1882067d0d228401b9ce1365cdaeb75825ca0115add3c5499103986692d0a4fbdf20001632c03eba21171390326ccada6ab3f3c804448bdb79f0
|
||||
DIST python-gentoo-patches-3.12.0b1_p3.tar.xz 127756 BLAKE2B b2e0d60cedaf2cfd798387a06e0ea16285b880526639f5050ce285482008bd034c4ee3463f396c96d7b7d6834d4e5f79a4bf441e92b0fe257369c9519d904bf5 SHA512 8e5da370301104f6520c364696b41ce9d1d2561abca096dfb626118d87ac14f8a15fb7a195903aa4aaf6a91189f3dbb9e3833c389fcabb1c9b19720c68228874
|
||||
DIST python-gentoo-patches-3.12.0b1_p4.tar.xz 127836 BLAKE2B 188fac1b90925b6f80666fd102832909490d82452bb1655c91657d6bf716fca6b4185c34e774387559234a68713ac14d0b5de21a4110ffb3fef200ba8b5379e0 SHA512 07d9dff9e8f53a8b6e79603f2a6b61f5448cf3eb83cdcd184b3131611a7f8bcb975a0ad41bd194256617696df138cff79fbf7626b29f2407435fb0f55175cc72
|
||||
DIST python-gentoo-patches-3.12.0b2.tar.xz 4652 BLAKE2B 401c9406c9f2f9acf403c73fe75dec65ceb61b4c36b2be0c8c2f3b0b8f02ef727e7f7a913a758931d582e8f10d0003df2adecfef883971157ab60193b00f8305 SHA512 1370b7399eccf6580f0b80303ab2b75bd3c37a4a6503348f3f7ac90dedcb95d00bb0a8b728d59d38e61b4aca237bbbe027eac478edf6ae983810e8c537281b74
|
||||
DIST python-gentoo-patches-3.8.16_p4.tar.xz 32436 BLAKE2B 76984bbc04e5cf32d70853891967a33366dd28ca2cd47f3538ed1e9f4d39008d04c90f616d92112f5ec3468c42119089d195ee4d936536f8da4a772164aae221 SHA512 ad6d653fec3cce1f73db4b192f7e95b35ae2cf70aa8782d7b69f9d48eee240ef1cc32257a42bbb57f3952720df68b9976164a0b2748e36600332fba488383016
|
||||
DIST python-gentoo-patches-3.12.0b3.tar.xz 4656 BLAKE2B b7ae4023c1aea6f3fe9f98bc1a974cfd79769dae104fb1dd88cf778f89b6a7d30f68093abc5211e746548e46ed06044beb7458b2ed3b0d67b5a48f00bc960683 SHA512 8d7fbb6ecf65770c6900dccff34c668a79efa3a86d55be50edaa3f583b50be9b4a7e628a41fa9efc92ad61ed9be8e04f1b324e68240fcfdaaad67b7a077ef928
|
||||
DIST python-gentoo-patches-3.8.17.tar.xz 32424 BLAKE2B d992f6b1c971583000086175d07198d367e4504dea8829b35742a3daf2279ba1fbade8c37f00018bda97fa9080d1d40087c236486bbcd369c2d1c850de47a976 SHA512 d309da6805a72742cf8d1bb170a777edd7b7aa936d6e9967e96bed4427285180cd9935f202f899f3aa54632a31a5a94c5b7c20a343b1a714d8aa5fc6f8e9f371
|
||||
DIST python-gentoo-patches-3.9.16_p3.tar.xz 27160 BLAKE2B 5a41a6ff135c3aca02b19cf9a61f554ca224173854274b872ce85e8c71f25c678604e50b87bae40d4b5ac082731c143338fcc6ef47acebad2b59ce0b1d600f5d SHA512 1ace0a9e929769c29082fdec6845a476c07c13fbbff8726a7a592fda09da8b50c996638b4e4e40acccb15630a796074329adbcc9a004c4305952fa5b0dc4146c
|
||||
DIST python-gentoo-patches-3.9.17.tar.xz 25048 BLAKE2B da19105dfa2fda7b422ac368f85c97d7541be74a6f9b9170a19ceac901e026ab39baef83c610172ecba1f70cce6e2832e956c2e4c87387b0e21c79c2c633b116 SHA512 ce9d3c62c675bceccaac21fd467c54322a55a1c8af9be3a6dcfd7a892c03b39b38dc35ba570e3dd9fc984a5f3eeabb3cc564ba2d7f935dbf6df829264cb32b2f
|
||||
|
||||
@ -29,7 +29,7 @@ LICENSE="PSF-2"
|
||||
SLOT="${PYVER}"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
|
||||
IUSE="
|
||||
berkdb bluetooth build examples gdbm hardened +ncurses +readline
|
||||
berkdb bluetooth build examples gdbm +ncurses +readline
|
||||
+sqlite +ssl tk valgrind wininst +xml
|
||||
"
|
||||
RESTRICT="test"
|
||||
|
||||
@ -1,499 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
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 ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened libedit lto
|
||||
+ncurses pgo +readline +sqlite +ssl test tk valgrind +xml
|
||||
"
|
||||
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-lang/python-exec[python_targets_python3_10(-)]
|
||||
dev-libs/libffi:=
|
||||
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
|
||||
)
|
||||
xml? ( >=dev-libs/expat-2.1:= )
|
||||
!!<sys-apps/sandbox-2.21
|
||||
"
|
||||
# bluetooth requires headers from bluez
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
bluetooth? ( net-wireless/bluez )
|
||||
valgrind? ( dev-util/valgrind )
|
||||
test? ( app-arch/xz-utils[extra-filters(+)] )
|
||||
"
|
||||
# autoconf-archive needed to eautoreconf
|
||||
BDEPEND="
|
||||
sys-devel/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=${BROOT}/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"
|
||||
use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
|
||||
export PYTHON_DISABLE_MODULES="${disable}"
|
||||
|
||||
if ! use xml; then
|
||||
ewarn "You have configured Python without XML support."
|
||||
ewarn "This is NOT a recommended configuration as you"
|
||||
ewarn "may face problems parsing any XML documents."
|
||||
fi
|
||||
|
||||
if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
|
||||
einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
|
||||
fi
|
||||
|
||||
append-flags -fwrapv
|
||||
filter-flags -malign-double
|
||||
|
||||
# https://bugs.gentoo.org/700012
|
||||
if is-flagq -flto || is-flagq '-flto=*'; then
|
||||
append-cflags $(test-flags-CC -ffat-lto-objects)
|
||||
fi
|
||||
|
||||
# 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
|
||||
|
||||
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
|
||||
|
||||
-x test_gdb
|
||||
-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
|
||||
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
|
||||
--with-system-expat
|
||||
--with-system-ffi
|
||||
--with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip
|
||||
|
||||
$(use_with debug assertions)
|
||||
$(use_with lto)
|
||||
$(use_enable pgo optimizations)
|
||||
$(use_with readline readline "$(usex libedit editline readline)")
|
||||
$(use_with valgrind)
|
||||
)
|
||||
|
||||
# disable implicit optimization/debugging flags
|
||||
local -x OPT=
|
||||
|
||||
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
|
||||
local -x CFLAGS_NODIST=${CFLAGS_FOR_BUILD}
|
||||
local -x LDFLAGS_NODIST=${LDFLAGS_FOR_BUILD}
|
||||
local -x CFLAGS= LDFLAGS=
|
||||
|
||||
# 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}
|
||||
|
||||
if use pgo ; then
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
|
||||
addpredict "/usr/lib/python${PYVER}/site-packages"
|
||||
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=(
|
||||
-u-network
|
||||
-j "$(makeopts_jobs)"
|
||||
|
||||
# fails
|
||||
-x test_gdb
|
||||
)
|
||||
|
||||
if use sparc ; then
|
||||
# bug #788022
|
||||
test_opts+=(
|
||||
-x test_multiprocessing_fork
|
||||
-x test_multiprocessing_forkserver
|
||||
)
|
||||
fi
|
||||
|
||||
# workaround docutils breaking tests
|
||||
cat > Lib/docutils.py <<-EOF || die
|
||||
raise ImportError("Thou shalt not import!")
|
||||
EOF
|
||||
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
# workaround https://bugs.gentoo.org/775416
|
||||
addwrite "/usr/lib/python${PYVER}/site-packages"
|
||||
|
||||
nonfatal emake test EXTRATESTOPTS="${test_opts[*]}" \
|
||||
CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
|
||||
local ret=${?}
|
||||
|
||||
rm Lib/docutils.py || die
|
||||
|
||||
[[ ${ret} -eq 0 ]] || die "emake test failed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local libdir=${ED}/usr/lib/python${PYVER}
|
||||
|
||||
emake DESTDIR="${D}" 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,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
|
||||
}
|
||||
@ -28,9 +28,9 @@ S="${WORKDIR}/${MY_P}"
|
||||
|
||||
LICENSE="PSF-2"
|
||||
SLOT="${PYVER}"
|
||||
KEYWORDS="~alpha ~amd64 ~arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc ~x86"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened libedit lto
|
||||
bluetooth build debug +ensurepip examples gdbm libedit lto
|
||||
+ncurses pgo +readline +sqlite +ssl test tk valgrind +xml
|
||||
"
|
||||
RESTRICT="!test? ( test )"
|
||||
@ -66,7 +66,6 @@ RDEPEND="
|
||||
dev-tcltk/tix
|
||||
)
|
||||
xml? ( >=dev-libs/expat-2.1:= )
|
||||
!!<sys-apps/sandbox-2.21
|
||||
"
|
||||
# bluetooth requires headers from bluez
|
||||
DEPEND="
|
||||
|
||||
@ -1,528 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
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 ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened libedit lto
|
||||
+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-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
|
||||
)
|
||||
!!<sys-apps/sandbox-2.21
|
||||
"
|
||||
# bluetooth requires headers from bluez
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
bluetooth? ( net-wireless/bluez )
|
||||
test? ( app-arch/xz-utils[extra-filters(+)] )
|
||||
valgrind? ( dev-util/valgrind )
|
||||
"
|
||||
# autoconf-archive needed to eautoreconf
|
||||
BDEPEND="
|
||||
sys-devel/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=${BROOT}/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() {
|
||||
local disable
|
||||
# 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
|
||||
|
||||
# https://bugs.gentoo.org/700012
|
||||
if is-flagq -flto || is-flagq '-flto=*'; then
|
||||
append-cflags $(test-flags-CC -ffat-lto-objects)
|
||||
fi
|
||||
|
||||
# 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
|
||||
|
||||
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
|
||||
|
||||
-x test_gdb
|
||||
-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
|
||||
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
|
||||
--with-system-expat
|
||||
--with-system-ffi
|
||||
--with-platlibdir=lib
|
||||
--with-pkg-config=yes
|
||||
--with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip
|
||||
|
||||
$(use_with debug assertions)
|
||||
$(use_with lto)
|
||||
$(use_enable pgo optimizations)
|
||||
$(use_with readline readline "$(usex libedit editline readline)")
|
||||
$(use_with valgrind)
|
||||
)
|
||||
|
||||
# disable implicit optimization/debugging flags
|
||||
local -x OPT=
|
||||
|
||||
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
|
||||
local -x CFLAGS_NODIST=${CFLAGS_FOR_BUILD}
|
||||
local -x LDFLAGS_NODIST=${LDFLAGS_FOR_BUILD}
|
||||
local -x CFLAGS= LDFLAGS=
|
||||
|
||||
# We need to build our own Python on CBUILD first, and feed it in.
|
||||
# bug #847910
|
||||
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 to satisfy --with-build-python.
|
||||
--without-lto
|
||||
--without-readline
|
||||
--disable-optimizations
|
||||
)
|
||||
|
||||
myeconfargs+=(
|
||||
# Point the imminent CHOST build to the Python we just
|
||||
# built for CBUILD.
|
||||
--with-build-python="${WORKDIR}"/${P}-${CBUILD}/python
|
||||
)
|
||||
|
||||
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_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="${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
|
||||
|
||||
# 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}
|
||||
|
||||
if use pgo ; then
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
|
||||
addpredict "/usr/lib/python${PYVER}/site-packages"
|
||||
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=(
|
||||
-u-network
|
||||
-j "$(makeopts_jobs)"
|
||||
|
||||
# fails
|
||||
-x test_gdb
|
||||
)
|
||||
|
||||
if use sparc ; then
|
||||
# bug #788022
|
||||
test_opts+=(
|
||||
-x test_multiprocessing_fork
|
||||
-x test_multiprocessing_forkserver
|
||||
)
|
||||
fi
|
||||
|
||||
# workaround docutils breaking tests
|
||||
cat > Lib/docutils.py <<-EOF || die
|
||||
raise ImportError("Thou shalt not import!")
|
||||
EOF
|
||||
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
# workaround https://bugs.gentoo.org/775416
|
||||
addwrite "/usr/lib/python${PYVER}/site-packages"
|
||||
|
||||
nonfatal emake test EXTRATESTOPTS="${test_opts[*]}" \
|
||||
CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
|
||||
local ret=${?}
|
||||
|
||||
rm Lib/docutils.py || die
|
||||
|
||||
[[ ${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}" 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,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
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local v
|
||||
for v in ${REPLACING_VERSIONS}; do
|
||||
if ver_test "${v}" -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
|
||||
done
|
||||
}
|
||||
@ -28,9 +28,9 @@ S="${WORKDIR}/${MY_P}"
|
||||
|
||||
LICENSE="PSF-2"
|
||||
SLOT="${PYVER}"
|
||||
KEYWORDS="~alpha ~amd64 ~arm arm64 hppa ~ia64 ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened libedit lto
|
||||
bluetooth build debug +ensurepip examples gdbm libedit lto
|
||||
+ncurses pgo +readline +sqlite +ssl test tk valgrind
|
||||
"
|
||||
RESTRICT="!test? ( test )"
|
||||
@ -66,7 +66,6 @@ RDEPEND="
|
||||
dev-tcltk/blt:=
|
||||
dev-tcltk/tix
|
||||
)
|
||||
!!<sys-apps/sandbox-2.21
|
||||
"
|
||||
# bluetooth requires headers from bluez
|
||||
DEPEND="
|
||||
|
||||
@ -1,522 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
WANT_LIBTOOL="none"
|
||||
|
||||
inherit autotools check-reqs flag-o-matic multiprocessing pax-utils
|
||||
inherit python-utils-r1 toolchain-funcs verify-sig
|
||||
|
||||
MY_PV=${PV/_beta/b}
|
||||
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 ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened libedit lto
|
||||
+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-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
|
||||
)
|
||||
!!<sys-apps/sandbox-2.21
|
||||
"
|
||||
# bluetooth requires headers from bluez
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
bluetooth? ( net-wireless/bluez )
|
||||
test? ( app-arch/xz-utils[extra-filters(+)] )
|
||||
valgrind? ( dev-util/valgrind )
|
||||
"
|
||||
# autoconf-archive needed to eautoreconf
|
||||
BDEPEND="
|
||||
sys-devel/autoconf-archive
|
||||
app-alternatives/awk
|
||||
virtual/pkgconfig
|
||||
verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
|
||||
"
|
||||
RDEPEND+="
|
||||
!build? ( app-misc/mime-types )
|
||||
"
|
||||
if [[ ${PV} != *_alpha* ]]; then
|
||||
RDEPEND+="
|
||||
dev-lang/python-exec[python_targets_python${PYVER/./_}(-)]
|
||||
"
|
||||
fi
|
||||
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/python.org.asc
|
||||
|
||||
# large file tests involve a 2.5G file being copied (duplicated)
|
||||
CHECKREQS_DISK_BUILD=5500M
|
||||
|
||||
QA_PKGCONFIG_VERSION=${PYVER}
|
||||
# false positives -- functions specific to *BSD
|
||||
QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags )
|
||||
|
||||
pkg_pretend() {
|
||||
use test && check-reqs_pkg_pretend
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
use test && check-reqs_pkg_setup
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if use verify-sig; then
|
||||
verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
|
||||
fi
|
||||
default
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Ensure that internal copies of expat and libffi are not used.
|
||||
# TODO: Makefile has annoying deps on expat headers
|
||||
#rm -r Modules/expat || die
|
||||
|
||||
local PATCHES=(
|
||||
"${WORKDIR}/${PATCHSET}"
|
||||
)
|
||||
|
||||
default
|
||||
|
||||
# force the correct number of jobs
|
||||
# https://bugs.gentoo.org/737660
|
||||
sed -i -e "s:-j0:-j$(makeopts_jobs):" Makefile.pre.in || die
|
||||
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local disable
|
||||
# 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
|
||||
|
||||
# https://bugs.gentoo.org/700012
|
||||
if is-flagq -flto || is-flagq '-flto=*'; then
|
||||
append-cflags $(test-flags-CC -ffat-lto-objects)
|
||||
fi
|
||||
|
||||
# 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
|
||||
|
||||
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
|
||||
|
||||
-x test_gdb
|
||||
-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
|
||||
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
|
||||
--with-system-expat
|
||||
--with-platlibdir=lib
|
||||
--with-pkg-config=yes
|
||||
--with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip
|
||||
|
||||
$(use_with debug assertions)
|
||||
$(use_with lto)
|
||||
$(use_enable pgo optimizations)
|
||||
$(use_with readline readline "$(usex libedit editline readline)")
|
||||
$(use_with valgrind)
|
||||
)
|
||||
|
||||
# disable implicit optimization/debugging flags
|
||||
local -x OPT=
|
||||
|
||||
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
|
||||
local -x CFLAGS_NODIST=${CFLAGS_FOR_BUILD}
|
||||
local -x LDFLAGS_NODIST=${LDFLAGS_FOR_BUILD}
|
||||
local -x CFLAGS= LDFLAGS=
|
||||
|
||||
# We need to build our own Python on CBUILD first, and feed it in.
|
||||
# bug #847910
|
||||
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 to satisfy --with-build-python.
|
||||
--without-lto
|
||||
--without-readline
|
||||
--disable-optimizations
|
||||
)
|
||||
|
||||
myeconfargs+=(
|
||||
# Point the imminent CHOST build to the Python we just
|
||||
# built for CBUILD.
|
||||
--with-build-python="${WORKDIR}"/${P}-${CBUILD}/python
|
||||
)
|
||||
|
||||
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_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="${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
|
||||
|
||||
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
|
||||
export PYTHONSTRICTEXTENSIONBUILD=1
|
||||
|
||||
# Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't
|
||||
# end up writing bytecode & violating sandbox.
|
||||
# bug #831897
|
||||
local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE}
|
||||
|
||||
if use pgo ; then
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
|
||||
addpredict "/usr/lib/python${PYVER}/site-packages"
|
||||
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=(
|
||||
-u-network
|
||||
-j "$(makeopts_jobs)"
|
||||
|
||||
# fails
|
||||
-x test_gdb
|
||||
)
|
||||
|
||||
if use sparc ; then
|
||||
# bug #788022
|
||||
test_opts+=(
|
||||
-x test_multiprocessing_fork
|
||||
-x test_multiprocessing_forkserver
|
||||
)
|
||||
fi
|
||||
|
||||
# workaround docutils breaking tests
|
||||
cat > Lib/docutils.py <<-EOF || die
|
||||
raise ImportError("Thou shalt not import!")
|
||||
EOF
|
||||
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
# workaround https://bugs.gentoo.org/775416
|
||||
addwrite "/usr/lib/python${PYVER}/site-packages"
|
||||
|
||||
nonfatal emake test EXTRATESTOPTS="${test_opts[*]}" \
|
||||
CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
|
||||
local ret=${?}
|
||||
|
||||
rm Lib/docutils.py || die
|
||||
|
||||
[[ ${ret} -eq 0 ]] || die "emake test failed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local libdir=${ED}/usr/lib/python${PYVER}
|
||||
|
||||
# the Makefile rules are broken
|
||||
# https://github.com/python/cpython/issues/100221
|
||||
mkdir -p "${libdir}"/lib-dynload || die
|
||||
|
||||
# -j1 hack for now for bug #843458
|
||||
emake -j1 DESTDIR="${D}" 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,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
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local v
|
||||
for v in ${REPLACING_VERSIONS}; do
|
||||
if ver_test "${v}" -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
|
||||
done
|
||||
}
|
||||
@ -1,522 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
WANT_LIBTOOL="none"
|
||||
|
||||
inherit autotools check-reqs flag-o-matic multiprocessing pax-utils
|
||||
inherit python-utils-r1 toolchain-funcs verify-sig
|
||||
|
||||
MY_PV=${PV/_beta/b}
|
||||
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 ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened libedit lto
|
||||
+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-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
|
||||
)
|
||||
!!<sys-apps/sandbox-2.21
|
||||
"
|
||||
# bluetooth requires headers from bluez
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
bluetooth? ( net-wireless/bluez )
|
||||
test? ( app-arch/xz-utils[extra-filters(+)] )
|
||||
valgrind? ( dev-util/valgrind )
|
||||
"
|
||||
# autoconf-archive needed to eautoreconf
|
||||
BDEPEND="
|
||||
sys-devel/autoconf-archive
|
||||
app-alternatives/awk
|
||||
virtual/pkgconfig
|
||||
verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
|
||||
"
|
||||
RDEPEND+="
|
||||
!build? ( app-misc/mime-types )
|
||||
"
|
||||
if [[ ${PV} != *_alpha* ]]; then
|
||||
RDEPEND+="
|
||||
dev-lang/python-exec[python_targets_python${PYVER/./_}(-)]
|
||||
"
|
||||
fi
|
||||
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/python.org.asc
|
||||
|
||||
# large file tests involve a 2.5G file being copied (duplicated)
|
||||
CHECKREQS_DISK_BUILD=5500M
|
||||
|
||||
QA_PKGCONFIG_VERSION=${PYVER}
|
||||
# false positives -- functions specific to *BSD
|
||||
QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags )
|
||||
|
||||
pkg_pretend() {
|
||||
use test && check-reqs_pkg_pretend
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
use test && check-reqs_pkg_setup
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if use verify-sig; then
|
||||
verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
|
||||
fi
|
||||
default
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Ensure that internal copies of expat and libffi are not used.
|
||||
# TODO: Makefile has annoying deps on expat headers
|
||||
#rm -r Modules/expat || die
|
||||
|
||||
local PATCHES=(
|
||||
"${WORKDIR}/${PATCHSET}"
|
||||
)
|
||||
|
||||
default
|
||||
|
||||
# force the correct number of jobs
|
||||
# https://bugs.gentoo.org/737660
|
||||
sed -i -e "s:-j0:-j$(makeopts_jobs):" Makefile.pre.in || die
|
||||
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local disable
|
||||
# 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
|
||||
|
||||
# https://bugs.gentoo.org/700012
|
||||
if is-flagq -flto || is-flagq '-flto=*'; then
|
||||
append-cflags $(test-flags-CC -ffat-lto-objects)
|
||||
fi
|
||||
|
||||
# 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
|
||||
|
||||
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
|
||||
|
||||
-x test_gdb
|
||||
-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
|
||||
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
|
||||
--with-system-expat
|
||||
--with-platlibdir=lib
|
||||
--with-pkg-config=yes
|
||||
--with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip
|
||||
|
||||
$(use_with debug assertions)
|
||||
$(use_with lto)
|
||||
$(use_enable pgo optimizations)
|
||||
$(use_with readline readline "$(usex libedit editline readline)")
|
||||
$(use_with valgrind)
|
||||
)
|
||||
|
||||
# disable implicit optimization/debugging flags
|
||||
local -x OPT=
|
||||
|
||||
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
|
||||
local -x CFLAGS_NODIST=${CFLAGS_FOR_BUILD}
|
||||
local -x LDFLAGS_NODIST=${LDFLAGS_FOR_BUILD}
|
||||
local -x CFLAGS= LDFLAGS=
|
||||
|
||||
# We need to build our own Python on CBUILD first, and feed it in.
|
||||
# bug #847910
|
||||
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 to satisfy --with-build-python.
|
||||
--without-lto
|
||||
--without-readline
|
||||
--disable-optimizations
|
||||
)
|
||||
|
||||
myeconfargs+=(
|
||||
# Point the imminent CHOST build to the Python we just
|
||||
# built for CBUILD.
|
||||
--with-build-python="${WORKDIR}"/${P}-${CBUILD}/python
|
||||
)
|
||||
|
||||
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_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="${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
|
||||
|
||||
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
|
||||
export PYTHONSTRICTEXTENSIONBUILD=1
|
||||
|
||||
# Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't
|
||||
# end up writing bytecode & violating sandbox.
|
||||
# bug #831897
|
||||
local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE}
|
||||
|
||||
if use pgo ; then
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
|
||||
addpredict "/usr/lib/python${PYVER}/site-packages"
|
||||
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=(
|
||||
-u-network
|
||||
-j "$(makeopts_jobs)"
|
||||
|
||||
# fails
|
||||
-x test_gdb
|
||||
)
|
||||
|
||||
if use sparc ; then
|
||||
# bug #788022
|
||||
test_opts+=(
|
||||
-x test_multiprocessing_fork
|
||||
-x test_multiprocessing_forkserver
|
||||
)
|
||||
fi
|
||||
|
||||
# workaround docutils breaking tests
|
||||
cat > Lib/docutils.py <<-EOF || die
|
||||
raise ImportError("Thou shalt not import!")
|
||||
EOF
|
||||
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
# workaround https://bugs.gentoo.org/775416
|
||||
addwrite "/usr/lib/python${PYVER}/site-packages"
|
||||
|
||||
nonfatal emake test EXTRATESTOPTS="${test_opts[*]}" \
|
||||
CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
|
||||
local ret=${?}
|
||||
|
||||
rm Lib/docutils.py || die
|
||||
|
||||
[[ ${ret} -eq 0 ]] || die "emake test failed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local libdir=${ED}/usr/lib/python${PYVER}
|
||||
|
||||
# the Makefile rules are broken
|
||||
# https://github.com/python/cpython/issues/100221
|
||||
mkdir -p "${libdir}"/lib-dynload || die
|
||||
|
||||
# -j1 hack for now for bug #843458
|
||||
emake -j1 DESTDIR="${D}" 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,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
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local v
|
||||
for v in ${REPLACING_VERSIONS}; do
|
||||
if ver_test "${v}" -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
|
||||
done
|
||||
}
|
||||
@ -1,522 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
WANT_LIBTOOL="none"
|
||||
|
||||
inherit autotools check-reqs flag-o-matic multiprocessing pax-utils
|
||||
inherit python-utils-r1 toolchain-funcs verify-sig
|
||||
|
||||
MY_PV=${PV/_beta/b}
|
||||
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 ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened libedit lto
|
||||
+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-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
|
||||
)
|
||||
!!<sys-apps/sandbox-2.21
|
||||
"
|
||||
# bluetooth requires headers from bluez
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
bluetooth? ( net-wireless/bluez )
|
||||
test? ( app-arch/xz-utils[extra-filters(+)] )
|
||||
valgrind? ( dev-util/valgrind )
|
||||
"
|
||||
# autoconf-archive needed to eautoreconf
|
||||
BDEPEND="
|
||||
sys-devel/autoconf-archive
|
||||
app-alternatives/awk
|
||||
virtual/pkgconfig
|
||||
verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
|
||||
"
|
||||
RDEPEND+="
|
||||
!build? ( app-misc/mime-types )
|
||||
"
|
||||
if [[ ${PV} != *_alpha* ]]; then
|
||||
RDEPEND+="
|
||||
dev-lang/python-exec[python_targets_python${PYVER/./_}(-)]
|
||||
"
|
||||
fi
|
||||
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/python.org.asc
|
||||
|
||||
# large file tests involve a 2.5G file being copied (duplicated)
|
||||
CHECKREQS_DISK_BUILD=5500M
|
||||
|
||||
QA_PKGCONFIG_VERSION=${PYVER}
|
||||
# false positives -- functions specific to *BSD
|
||||
QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags )
|
||||
|
||||
pkg_pretend() {
|
||||
use test && check-reqs_pkg_pretend
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
use test && check-reqs_pkg_setup
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if use verify-sig; then
|
||||
verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
|
||||
fi
|
||||
default
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Ensure that internal copies of expat and libffi are not used.
|
||||
# TODO: Makefile has annoying deps on expat headers
|
||||
#rm -r Modules/expat || die
|
||||
|
||||
local PATCHES=(
|
||||
"${WORKDIR}/${PATCHSET}"
|
||||
)
|
||||
|
||||
default
|
||||
|
||||
# force the correct number of jobs
|
||||
# https://bugs.gentoo.org/737660
|
||||
sed -i -e "s:-j0:-j$(makeopts_jobs):" Makefile.pre.in || die
|
||||
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local disable
|
||||
# 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
|
||||
|
||||
# https://bugs.gentoo.org/700012
|
||||
if is-flagq -flto || is-flagq '-flto=*'; then
|
||||
append-cflags $(test-flags-CC -ffat-lto-objects)
|
||||
fi
|
||||
|
||||
# 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
|
||||
|
||||
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
|
||||
|
||||
-x test_gdb
|
||||
-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
|
||||
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
|
||||
--with-system-expat
|
||||
--with-platlibdir=lib
|
||||
--with-pkg-config=yes
|
||||
--with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip
|
||||
|
||||
$(use_with debug assertions)
|
||||
$(use_with lto)
|
||||
$(use_enable pgo optimizations)
|
||||
$(use_with readline readline "$(usex libedit editline readline)")
|
||||
$(use_with valgrind)
|
||||
)
|
||||
|
||||
# disable implicit optimization/debugging flags
|
||||
local -x OPT=
|
||||
|
||||
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
|
||||
local -x CFLAGS_NODIST=${CFLAGS_FOR_BUILD}
|
||||
local -x LDFLAGS_NODIST=${LDFLAGS_FOR_BUILD}
|
||||
local -x CFLAGS= LDFLAGS=
|
||||
|
||||
# We need to build our own Python on CBUILD first, and feed it in.
|
||||
# bug #847910
|
||||
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 to satisfy --with-build-python.
|
||||
--without-lto
|
||||
--without-readline
|
||||
--disable-optimizations
|
||||
)
|
||||
|
||||
myeconfargs+=(
|
||||
# Point the imminent CHOST build to the Python we just
|
||||
# built for CBUILD.
|
||||
--with-build-python="${WORKDIR}"/${P}-${CBUILD}/python
|
||||
)
|
||||
|
||||
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_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="${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
|
||||
|
||||
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
|
||||
export PYTHONSTRICTEXTENSIONBUILD=1
|
||||
|
||||
# Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't
|
||||
# end up writing bytecode & violating sandbox.
|
||||
# bug #831897
|
||||
local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE}
|
||||
|
||||
if use pgo ; then
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
|
||||
addpredict "/usr/lib/python${PYVER}/site-packages"
|
||||
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=(
|
||||
-u-network
|
||||
-j "$(makeopts_jobs)"
|
||||
|
||||
# fails
|
||||
-x test_gdb
|
||||
)
|
||||
|
||||
if use sparc ; then
|
||||
# bug #788022
|
||||
test_opts+=(
|
||||
-x test_multiprocessing_fork
|
||||
-x test_multiprocessing_forkserver
|
||||
)
|
||||
fi
|
||||
|
||||
# workaround docutils breaking tests
|
||||
cat > Lib/docutils.py <<-EOF || die
|
||||
raise ImportError("Thou shalt not import!")
|
||||
EOF
|
||||
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
# workaround https://bugs.gentoo.org/775416
|
||||
addwrite "/usr/lib/python${PYVER}/site-packages"
|
||||
|
||||
nonfatal emake test EXTRATESTOPTS="${test_opts[*]}" \
|
||||
CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
|
||||
local ret=${?}
|
||||
|
||||
rm Lib/docutils.py || die
|
||||
|
||||
[[ ${ret} -eq 0 ]] || die "emake test failed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local libdir=${ED}/usr/lib/python${PYVER}
|
||||
|
||||
# the Makefile rules are broken
|
||||
# https://github.com/python/cpython/issues/100221
|
||||
mkdir -p "${libdir}"/lib-dynload || die
|
||||
|
||||
# -j1 hack for now for bug #843458
|
||||
emake -j1 DESTDIR="${D}" 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,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
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local v
|
||||
for v in ${REPLACING_VERSIONS}; do
|
||||
if ver_test "${v}" -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
|
||||
done
|
||||
}
|
||||
@ -1,522 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
WANT_LIBTOOL="none"
|
||||
|
||||
inherit autotools check-reqs flag-o-matic multiprocessing pax-utils
|
||||
inherit python-utils-r1 toolchain-funcs verify-sig
|
||||
|
||||
MY_PV=${PV/_beta/b}
|
||||
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 ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened libedit lto
|
||||
+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-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
|
||||
)
|
||||
!!<sys-apps/sandbox-2.21
|
||||
"
|
||||
# bluetooth requires headers from bluez
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
bluetooth? ( net-wireless/bluez )
|
||||
test? ( app-arch/xz-utils[extra-filters(+)] )
|
||||
valgrind? ( dev-util/valgrind )
|
||||
"
|
||||
# autoconf-archive needed to eautoreconf
|
||||
BDEPEND="
|
||||
sys-devel/autoconf-archive
|
||||
app-alternatives/awk
|
||||
virtual/pkgconfig
|
||||
verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
|
||||
"
|
||||
RDEPEND+="
|
||||
!build? ( app-misc/mime-types )
|
||||
"
|
||||
if [[ ${PV} != *_alpha* ]]; then
|
||||
RDEPEND+="
|
||||
dev-lang/python-exec[python_targets_python${PYVER/./_}(-)]
|
||||
"
|
||||
fi
|
||||
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/python.org.asc
|
||||
|
||||
# large file tests involve a 2.5G file being copied (duplicated)
|
||||
CHECKREQS_DISK_BUILD=5500M
|
||||
|
||||
QA_PKGCONFIG_VERSION=${PYVER}
|
||||
# false positives -- functions specific to *BSD
|
||||
QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags )
|
||||
|
||||
pkg_pretend() {
|
||||
use test && check-reqs_pkg_pretend
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
use test && check-reqs_pkg_setup
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if use verify-sig; then
|
||||
verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
|
||||
fi
|
||||
default
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Ensure that internal copies of expat and libffi are not used.
|
||||
# TODO: Makefile has annoying deps on expat headers
|
||||
#rm -r Modules/expat || die
|
||||
|
||||
local PATCHES=(
|
||||
"${WORKDIR}/${PATCHSET}"
|
||||
)
|
||||
|
||||
default
|
||||
|
||||
# force the correct number of jobs
|
||||
# https://bugs.gentoo.org/737660
|
||||
sed -i -e "s:-j0:-j$(makeopts_jobs):" Makefile.pre.in || die
|
||||
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local disable
|
||||
# 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
|
||||
|
||||
# https://bugs.gentoo.org/700012
|
||||
if is-flagq -flto || is-flagq '-flto=*'; then
|
||||
append-cflags $(test-flags-CC -ffat-lto-objects)
|
||||
fi
|
||||
|
||||
# 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
|
||||
|
||||
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
|
||||
|
||||
-x test_gdb
|
||||
-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
|
||||
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
|
||||
--with-system-expat
|
||||
--with-platlibdir=lib
|
||||
--with-pkg-config=yes
|
||||
--with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip
|
||||
|
||||
$(use_with debug assertions)
|
||||
$(use_with lto)
|
||||
$(use_enable pgo optimizations)
|
||||
$(use_with readline readline "$(usex libedit editline readline)")
|
||||
$(use_with valgrind)
|
||||
)
|
||||
|
||||
# disable implicit optimization/debugging flags
|
||||
local -x OPT=
|
||||
|
||||
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
|
||||
local -x CFLAGS_NODIST=${CFLAGS_FOR_BUILD}
|
||||
local -x LDFLAGS_NODIST=${LDFLAGS_FOR_BUILD}
|
||||
local -x CFLAGS= LDFLAGS=
|
||||
|
||||
# We need to build our own Python on CBUILD first, and feed it in.
|
||||
# bug #847910
|
||||
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 to satisfy --with-build-python.
|
||||
--without-lto
|
||||
--without-readline
|
||||
--disable-optimizations
|
||||
)
|
||||
|
||||
myeconfargs+=(
|
||||
# Point the imminent CHOST build to the Python we just
|
||||
# built for CBUILD.
|
||||
--with-build-python="${WORKDIR}"/${P}-${CBUILD}/python
|
||||
)
|
||||
|
||||
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_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="${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
|
||||
|
||||
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
|
||||
export PYTHONSTRICTEXTENSIONBUILD=1
|
||||
|
||||
# Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't
|
||||
# end up writing bytecode & violating sandbox.
|
||||
# bug #831897
|
||||
local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE}
|
||||
|
||||
if use pgo ; then
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
|
||||
addpredict "/usr/lib/python${PYVER}/site-packages"
|
||||
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=(
|
||||
-u-network
|
||||
-j "$(makeopts_jobs)"
|
||||
|
||||
# fails
|
||||
-x test_gdb
|
||||
)
|
||||
|
||||
if use sparc ; then
|
||||
# bug #788022
|
||||
test_opts+=(
|
||||
-x test_multiprocessing_fork
|
||||
-x test_multiprocessing_forkserver
|
||||
)
|
||||
fi
|
||||
|
||||
# workaround docutils breaking tests
|
||||
cat > Lib/docutils.py <<-EOF || die
|
||||
raise ImportError("Thou shalt not import!")
|
||||
EOF
|
||||
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
# workaround https://bugs.gentoo.org/775416
|
||||
addwrite "/usr/lib/python${PYVER}/site-packages"
|
||||
|
||||
nonfatal emake test EXTRATESTOPTS="${test_opts[*]}" \
|
||||
CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
|
||||
local ret=${?}
|
||||
|
||||
rm Lib/docutils.py || die
|
||||
|
||||
[[ ${ret} -eq 0 ]] || die "emake test failed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local libdir=${ED}/usr/lib/python${PYVER}
|
||||
|
||||
# the Makefile rules are broken
|
||||
# https://github.com/python/cpython/issues/100221
|
||||
mkdir -p "${libdir}"/lib-dynload || die
|
||||
|
||||
# -j1 hack for now for bug #843458
|
||||
emake -j1 DESTDIR="${D}" 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,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
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
local v
|
||||
for v in ${REPLACING_VERSIONS}; do
|
||||
if ver_test "${v}" -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
|
||||
done
|
||||
}
|
||||
@ -30,7 +30,7 @@ LICENSE="PSF-2"
|
||||
SLOT="${PYVER}"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened libedit lto
|
||||
bluetooth build debug +ensurepip examples gdbm libedit lto
|
||||
+ncurses pgo +readline +sqlite +ssl test tk valgrind
|
||||
"
|
||||
RESTRICT="!test? ( test )"
|
||||
@ -66,13 +66,15 @@ RDEPEND="
|
||||
dev-tcltk/blt:=
|
||||
dev-tcltk/tix
|
||||
)
|
||||
!!<sys-apps/sandbox-2.21
|
||||
"
|
||||
# bluetooth requires headers from bluez
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
bluetooth? ( net-wireless/bluez )
|
||||
test? ( app-arch/xz-utils[extra-filters(+)] )
|
||||
test? (
|
||||
app-arch/xz-utils[extra-filters(+)]
|
||||
dev-python/ensurepip-wheels
|
||||
)
|
||||
valgrind? ( dev-util/valgrind )
|
||||
"
|
||||
# autoconf-archive needed to eautoreconf
|
||||
@ -1,428 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
WANT_LIBTOOL="none"
|
||||
|
||||
inherit autotools 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 ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened lto +ncurses pgo
|
||||
+readline +sqlite +ssl test tk valgrind wininst +xml
|
||||
"
|
||||
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/libffi:=
|
||||
>=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
|
||||
)
|
||||
xml? ( >=dev-libs/expat-2.1:= )
|
||||
"
|
||||
# bluetooth requires headers from bluez
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
bluetooth? ( net-wireless/bluez )
|
||||
test? ( app-arch/xz-utils[extra-filters(+)] )
|
||||
valgrind? ( dev-util/valgrind )
|
||||
"
|
||||
# autoconf-archive needed to eautoreconf
|
||||
BDEPEND="
|
||||
sys-devel/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=${BROOT}/usr/share/openpgp-keys/python.org.asc
|
||||
|
||||
QA_PKGCONFIG_VERSION=${PYVER}
|
||||
# false positives -- functions specific to *BSD
|
||||
QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags )
|
||||
|
||||
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
|
||||
|
||||
if ! use wininst; then
|
||||
rm Lib/distutils/command/wininst*.exe || die
|
||||
fi
|
||||
|
||||
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"
|
||||
use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
|
||||
export PYTHON_DISABLE_MODULES="${disable}"
|
||||
|
||||
if ! use xml; then
|
||||
ewarn "You have configured Python without XML support."
|
||||
ewarn "This is NOT a recommended configuration as you"
|
||||
ewarn "may face problems parsing any XML documents."
|
||||
fi
|
||||
|
||||
if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
|
||||
einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
|
||||
fi
|
||||
|
||||
append-flags -fwrapv
|
||||
|
||||
filter-flags -malign-double
|
||||
|
||||
# https://bugs.gentoo.org/700012
|
||||
if is-flagq -flto || is-flagq '-flto=*'; then
|
||||
append-cflags $(test-flags-CC -ffat-lto-objects)
|
||||
fi
|
||||
|
||||
# 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
|
||||
|
||||
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
|
||||
--with-system-expat
|
||||
--with-system-ffi
|
||||
--with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip
|
||||
|
||||
$(use_with debug assertions)
|
||||
$(use_with valgrind)
|
||||
)
|
||||
|
||||
# disable implicit optimization/debugging flags
|
||||
local -x OPT=
|
||||
|
||||
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
|
||||
local -x CFLAGS_NODIST=${CFLAGS_FOR_BUILD}
|
||||
local -x LDFLAGS_NODIST=${LDFLAGS_FOR_BUILD}
|
||||
local -x CFLAGS= LDFLAGS=
|
||||
|
||||
# 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
|
||||
|
||||
# also need to clear the flags explicitly here or they end up
|
||||
# in _sysconfigdata*
|
||||
emake CPPFLAGS= CFLAGS= LDFLAGS=
|
||||
|
||||
# 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=(
|
||||
-u-network
|
||||
-j "$(makeopts_jobs)"
|
||||
|
||||
# fails
|
||||
-x test_gdb
|
||||
)
|
||||
|
||||
if use sparc ; then
|
||||
# bug #788022
|
||||
test_opts+=(
|
||||
-x test_multiprocessing_fork
|
||||
-x test_multiprocessing_forkserver
|
||||
)
|
||||
fi
|
||||
|
||||
# workaround docutils breaking tests
|
||||
cat > Lib/docutils.py <<-EOF || die
|
||||
raise ImportError("Thou shalt not import!")
|
||||
EOF
|
||||
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
|
||||
nonfatal emake test EXTRATESTOPTS="${test_opts[*]}" \
|
||||
CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
|
||||
local ret=${?}
|
||||
|
||||
rm Lib/docutils.py || die
|
||||
|
||||
[[ ${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
|
||||
|
||||
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
|
||||
}
|
||||
@ -28,9 +28,9 @@ S="${WORKDIR}/${MY_P}"
|
||||
|
||||
LICENSE="PSF-2"
|
||||
SLOT="${PYVER}"
|
||||
KEYWORDS="~alpha ~amd64 ~arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened lto +ncurses pgo
|
||||
bluetooth build debug +ensurepip examples gdbm lto +ncurses pgo
|
||||
+readline +sqlite +ssl test tk valgrind wininst +xml
|
||||
"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
@ -1,488 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
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 ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened lto +ncurses pgo
|
||||
+readline +sqlite +ssl test tk valgrind +xml
|
||||
"
|
||||
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/libffi:=
|
||||
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
|
||||
)
|
||||
xml? ( >=dev-libs/expat-2.1:= )
|
||||
"
|
||||
# bluetooth requires headers from bluez
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
bluetooth? ( net-wireless/bluez )
|
||||
test? ( app-arch/xz-utils[extra-filters(+)] )
|
||||
valgrind? ( dev-util/valgrind )
|
||||
"
|
||||
# autoconf-archive needed to eautoreconf
|
||||
BDEPEND="
|
||||
sys-devel/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=${BROOT}/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"
|
||||
use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
|
||||
export PYTHON_DISABLE_MODULES="${disable}"
|
||||
|
||||
if ! use xml; then
|
||||
ewarn "You have configured Python without XML support."
|
||||
ewarn "This is NOT a recommended configuration as you"
|
||||
ewarn "may face problems parsing any XML documents."
|
||||
fi
|
||||
|
||||
if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
|
||||
einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
|
||||
fi
|
||||
|
||||
append-flags -fwrapv
|
||||
filter-flags -malign-double
|
||||
|
||||
# https://bugs.gentoo.org/700012
|
||||
if is-flagq -flto || is-flagq '-flto=*'; then
|
||||
append-cflags $(test-flags-CC -ffat-lto-objects)
|
||||
fi
|
||||
|
||||
# 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
|
||||
|
||||
if use pgo; then
|
||||
local profile_task_flags=(
|
||||
-m test
|
||||
"-j$(makeopts_jobs)"
|
||||
--pgo-extended
|
||||
-x test_gdb
|
||||
-x test_dtrace
|
||||
-u-network
|
||||
|
||||
# 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
|
||||
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
|
||||
--with-system-expat
|
||||
--with-system-ffi
|
||||
--with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip
|
||||
|
||||
$(use_with debug assertions)
|
||||
$(use_with lto)
|
||||
$(use_enable pgo optimizations)
|
||||
$(use_with valgrind)
|
||||
)
|
||||
|
||||
# disable implicit optimization/debugging flags
|
||||
local -x OPT=
|
||||
|
||||
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
|
||||
local -x CFLAGS_NODIST=${CFLAGS_FOR_BUILD}
|
||||
local -x LDFLAGS_NODIST=${LDFLAGS_FOR_BUILD}
|
||||
local -x CFLAGS= LDFLAGS=
|
||||
|
||||
# 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}
|
||||
|
||||
if use pgo ; then
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
|
||||
addpredict "/usr/lib/python${PYVER}/site-packages"
|
||||
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=(
|
||||
-u-network
|
||||
-j "$(makeopts_jobs)"
|
||||
|
||||
# fails
|
||||
-x test_gdb
|
||||
)
|
||||
|
||||
if use sparc ; then
|
||||
# bug #788022
|
||||
test_opts+=(
|
||||
-x test_multiprocessing_fork
|
||||
-x test_multiprocessing_forkserver
|
||||
)
|
||||
fi
|
||||
|
||||
# workaround docutils breaking tests
|
||||
cat > Lib/docutils.py <<-EOF || die
|
||||
raise ImportError("Thou shalt not import!")
|
||||
EOF
|
||||
|
||||
# bug 660358
|
||||
local -x COLUMNS=80
|
||||
local -x PYTHONDONTWRITEBYTECODE=
|
||||
|
||||
nonfatal emake test EXTRATESTOPTS="${test_opts[*]}" \
|
||||
CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
|
||||
local ret=${?}
|
||||
|
||||
rm Lib/docutils.py || die
|
||||
|
||||
[[ ${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
|
||||
}
|
||||
@ -28,9 +28,9 @@ S="${WORKDIR}/${MY_P}"
|
||||
|
||||
LICENSE="PSF-2"
|
||||
SLOT="${PYVER}"
|
||||
KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
|
||||
IUSE="
|
||||
bluetooth build debug +ensurepip examples gdbm hardened lto +ncurses pgo
|
||||
bluetooth build debug +ensurepip examples gdbm lto +ncurses pgo
|
||||
+readline +sqlite +ssl test tk valgrind +xml
|
||||
"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
@ -75,7 +75,7 @@ src_configure() {
|
||||
|
||||
# Symbol aliases are implemented as asm statements.
|
||||
# Will require porting: https://gcc.gnu.org/PR48200
|
||||
filter-flags '-flto*'
|
||||
filter-lto
|
||||
|
||||
multilib-minimal_src_configure
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@ SRC_URI+=" verify-sig? ( https://sourceware.org/elfutils/ftp/${PV}/${P}.tar.bz2.
|
||||
|
||||
LICENSE="|| ( GPL-2+ LGPL-3+ ) utils? ( GPL-3+ )"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
|
||||
KEYWORDS="~alpha ~amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc ~x86 ~amd64-linux ~x86-linux"
|
||||
IUSE="bzip2 lzma nls static-libs test +utils zstd"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
@ -80,7 +80,7 @@ src_configure() {
|
||||
|
||||
# Symbol aliases are implemented as asm statements.
|
||||
# Will require porting: https://gcc.gnu.org/PR48200
|
||||
filter-flags '-flto*'
|
||||
filter-lto
|
||||
|
||||
multilib-minimal_src_configure
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ IUSE="dbus debug +elf gtk-doc +mime selinux static-libs sysprof systemtap test u
|
||||
RESTRICT="!test? ( test )"
|
||||
REQUIRED_USE="gtk-doc? ( test )" # Bug #777636
|
||||
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~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 ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
|
||||
# * elfutils (via libelf) does not build on Windows. gresources are not embedded
|
||||
# within ELF binaries on that platform anyway and inspecting ELF binaries from
|
||||
|
||||
@ -1 +1,3 @@
|
||||
DIST libassuan-2.5.5.tar.bz2 572263 BLAKE2B 24952e97c757b97c387ab4c2c4bf7b040f2874e9326c129805c7f5326fa14d80e083b0842e336a635531a2c8d4a66d428c816bae6b175f1c4518add1ffa3554d SHA512 70117f77aa43bbbe0ed28da5ef23834c026780a74076a92ec775e30f851badb423e9a2cb9e8d142c94e4f6f8a794988c1b788fd4bd2271e562071adf0ab16403
|
||||
DIST libassuan-2.5.6.tar.bz2 577012 BLAKE2B 462af1eab69e157f65f8134a492cde01dd1e0ee00609f2c2585e742fb9c5532b3fd96054b4fb7449e305690f70aa7a120085db42e2de2e3b0ef8b1603e7e5846 SHA512 dcca942d222a2c226a7e34ba7988ee0c3c55bd6032166eb472caf2053db89aeeea7a40e93d8c2887c7ee73c5f838e8b0725e8cfb595accc1606646559362f7ee
|
||||
DIST libassuan-2.5.6.tar.bz2.sig 119 BLAKE2B 379c6566b2369550bfc4b4616fb71ebdbd9947c183488e2af2261db79be3fc34c5691918f3c560b46c20e02e1aa46c44ee31c1fa3727d191f5801831d34e6721 SHA512 c7765530618128a12f1118278d35d8c33d32b560073dbd691cb92c0d94b75fd5fde65cd3f5db717ddfb907b266fdddc1e7a1e2b15b1b89b7470941dbde8162e3
|
||||
|
||||
56
sdk_container/src/third_party/portage-stable/dev-libs/libassuan/libassuan-2.5.6.ebuild
vendored
Normal file
56
sdk_container/src/third_party/portage-stable/dev-libs/libassuan/libassuan-2.5.6.ebuild
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
# Maintainers should:
|
||||
# 1. Join the "Gentoo" project at https://dev.gnupg.org/project/view/27/
|
||||
# 2. Subscribe to release tasks like https://dev.gnupg.org/T6159
|
||||
# (find the one for the current release then subscribe to it +
|
||||
# any subsequent ones linked within so you're covered for a while.)
|
||||
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/gnupg.asc
|
||||
inherit libtool verify-sig
|
||||
|
||||
DESCRIPTION="IPC library used by GnuPG and GPGME"
|
||||
HOMEPAGE="https://www.gnupg.org/related_software/libassuan/index.en.html"
|
||||
SRC_URI="mirror://gnupg/${PN}/${P}.tar.bz2"
|
||||
SRC_URI+=" verify-sig? ( mirror://gnupg/${PN}/${P}.tar.bz2.sig )"
|
||||
|
||||
LICENSE="GPL-3 LGPL-2.1"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
|
||||
# Note: On each bump, update dep bounds on each version from configure.ac!
|
||||
RDEPEND=">=dev-libs/libgpg-error-1.33"
|
||||
DEPEND="${RDEPEND}"
|
||||
BDEPEND="verify-sig? ( sec-keys/openpgp-keys-gnupg )"
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
if [[ ${CHOST} == *-solaris* ]] ; then
|
||||
elibtoolize
|
||||
|
||||
# fix standards conflict
|
||||
sed -i \
|
||||
-e '/_XOPEN_SOURCE/s/500/600/' \
|
||||
-e 's/_XOPEN_SOURCE_EXTENDED/_NO&/' \
|
||||
-e 's/__EXTENSIONS__/_NO&/' \
|
||||
configure || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local myeconfargs=(
|
||||
GPG_ERROR_CONFIG="${ESYSROOT}/usr/bin/${CHOST}-gpg-error-config"
|
||||
$("${S}/configure" --help | grep -o -- '--without-.*-prefix')
|
||||
)
|
||||
econf "${myeconfargs[@]}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
default
|
||||
# ppl need to use libassuan-config for --cflags and --libs
|
||||
find "${ED}" -type f -name '*.la' -delete || die
|
||||
}
|
||||
@ -1,4 +1,2 @@
|
||||
DIST libgpg-error-1.46.tar.bz2 1014291 BLAKE2B 6748c463256b7d0a05fe89a63c5f3abda1975d861c35821248664f2f09cd2273ef619d12408b6107a99519939ca7214f492e705c29f52f7bbdc422237281c1ca SHA512 b06223bb2b0f67d3db5d0d9ab116361a0eda175d4667352b5c0941408d37f2b0ba8e507297e480ccebb88cbba9d0a133820b896914b07d264fb3edaac7b8c99d
|
||||
DIST libgpg-error-1.46.tar.bz2.sig 238 BLAKE2B c9f48969dc5b51c4d6c0c643a510e442b883af319f4bd9db3d1f9d9b56e4003f020131ace28d5e6d3db1d3f62c63ac083f159d545e601e7c47391bd16e4411d6 SHA512 c71be3ab3b2fe6c0932faad3df42c67a861a789a09e0b084da06fbf723c37e3bf28047ff4475a9b26bf622434517235c2677a832eebb611a47330ccc7887a7cf
|
||||
DIST libgpg-error-1.47.tar.bz2 1020862 BLAKE2B bc04efa0686b1b7d7cdce045fc080c090c1abec60349b673c2e1ce27900483aea090eb6ebcb3fb49a4eed36f18156a12413d5446f739475632f4ed2a2481ff27 SHA512 bbb4b15dae75856ee5b1253568674b56ad155524ae29a075cb5b0a7e74c4af685131775c3ea2226fff2f84ef80855e77aa661645d002b490a795c7ae57b66a30
|
||||
DIST libgpg-error-1.47.tar.bz2.sig 119 BLAKE2B d23ea6c38621407c8f9f0c6bde71abd0e50c136d2e5de9a6cef64627f5d398c344a3438995a2405c4ef148ad8638ef7125f34670819957acd7d597370f1630e5 SHA512 09343016eaf7fcc455f8ce533847153a8a9b7c36f375a8ebe71ef5fc2923edf7b70842f834f52c51874e427869487b74a2286ea0112cffad0d72f79cb6d4eceb
|
||||
|
||||
@ -1,86 +0,0 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
# Maintainers should:
|
||||
# 1. Join the "Gentoo" project at https://dev.gnupg.org/project/view/27/
|
||||
# 2. Subscribe to release tasks like https://dev.gnupg.org/T6159
|
||||
# (find the one for the current release then subscribe to it +
|
||||
# any subsequent ones linked within so you're covered for a while.)
|
||||
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/gnupg.asc
|
||||
inherit autotools multilib-minimal toolchain-funcs prefix verify-sig
|
||||
|
||||
DESCRIPTION="Contains error handling functions used by GnuPG software"
|
||||
HOMEPAGE="https://www.gnupg.org/related_software/libgpg-error"
|
||||
SRC_URI="mirror://gnupg/${PN}/${P}.tar.bz2"
|
||||
SRC_URI+=" verify-sig? ( mirror://gnupg/${PN}/${P}.tar.bz2.sig )"
|
||||
|
||||
LICENSE="GPL-2 LGPL-2.1"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
IUSE="common-lisp nls static-libs test"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
RDEPEND="nls? ( >=virtual/libintl-0-r1[${MULTILIB_USEDEP}] )"
|
||||
DEPEND="${RDEPEND}"
|
||||
BDEPEND="
|
||||
nls? ( sys-devel/gettext )
|
||||
verify-sig? ( sec-keys/openpgp-keys-gnupg )
|
||||
"
|
||||
|
||||
MULTILIB_WRAPPED_HEADERS=(
|
||||
/usr/include/gpg-error.h
|
||||
/usr/include/gpgrt.h
|
||||
)
|
||||
|
||||
MULTILIB_CHOST_TOOLS=(
|
||||
/usr/bin/gpg-error-config
|
||||
/usr/bin/gpgrt-config
|
||||
)
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-1.44-remove_broken_check.patch"
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
if use prefix ; then
|
||||
# don't hardcode /usr/xpg4/bin/sh as shell on Solaris
|
||||
sed -i -e 's/solaris\*/disabled/' configure.ac || die
|
||||
fi
|
||||
|
||||
# only necessary for as long as we run eautoreconf, configure.ac
|
||||
# uses ./autogen.sh to generate PACKAGE_VERSION, but autogen.sh is
|
||||
# not a pure /bin/sh script, so it fails on some hosts
|
||||
hprefixify -w 1 autogen.sh
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local myeconfargs=(
|
||||
$(multilib_is_native_abi || echo --disable-languages)
|
||||
$(use_enable common-lisp languages)
|
||||
$(use_enable nls)
|
||||
# required for sys-power/suspend[crypt], bug 751568
|
||||
$(use_enable static-libs static)
|
||||
$(use_enable test tests)
|
||||
|
||||
# See bug #699206 and its duplicates wrt gpgme-config
|
||||
# Upstream no longer install this by default and we should
|
||||
# seek to disable it at some point.
|
||||
--enable-install-gpg-error-config
|
||||
|
||||
--enable-threads
|
||||
CC_FOR_BUILD="$(tc-getBUILD_CC)"
|
||||
$("${S}/configure" --help | grep -o -- '--without-.*-prefix')
|
||||
)
|
||||
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
einstalldocs
|
||||
find "${ED}" -type f -name '*.la' -delete || die
|
||||
}
|
||||
@ -1,2 +1,4 @@
|
||||
DIST libksba-1.6.3.tar.bz2 668287 BLAKE2B a2b474aa5ea8eb387a2d9a459ec1e3daf36bbe7fd9d41a6f4c663ab443f46b98f12064cd6b2f039f5b30e1e2c9cbc4d01b43f8e125d13494c87f5b2d0f973d3b SHA512 188f6d27b4904c10cd54ba949c1132dd6c167f53dd1b77eae39c5b8e3ac8b15e87b2a54cdfddac95ac4ed41ee83c3d4e1b17d95126f245b6c204fade6739a2ce
|
||||
DIST libksba-1.6.3.tar.bz2.sig 119 BLAKE2B c6ab01889e7d7efa6117b388c8bf8e1916a3d5c174659b01a34a60bcf8e04181aaf60c79ebd8ab423300f19de084a7968db9b9afd8aa5980246d9ce3f91d66d2 SHA512 57081497e32af41abbe84678dfb2379318ae75fdde1f871f3960b7dce7270b952a832b64accbb2a1f19fbef8db9f4d35ac59890ac6cbe45215a65f6971ba43f1
|
||||
DIST libksba-1.6.4.tar.bz2 668445 BLAKE2B 639be954727e2c3a74e075c52090bc2d9998a149f168ede376520d83a7dfd776212ba2948270096b303803e9f41381747f73c8ec97117a4d743b8df49defef9a SHA512 07bc26584d1901b2975a02012d90084e3c247a7aeab56d7bcc7197ef0210ece0c4ffd5cb468b998ef696deadfcfdc5fa5dc367077863926503e8f7a8d06856a5
|
||||
DIST libksba-1.6.4.tar.bz2.sig 119 BLAKE2B 5b9edcf65eb7b46182144a8d17a1656ada93a8a7ce3106ea5f525ab3e892b078f9c723544c13702d6d3b40fefd2bff78dc0cfbc3b1a3c156ba18740ecfc42ce6 SHA512 fbf75e03b9e0e771027acfef8cc702744a0d1fe37ef285fcf6475d4a58f7936d3bc890ee3ffe923195152bbcede807ba721ac3fdfdd6d05a1a523416f64ff8c1
|
||||
|
||||
61
sdk_container/src/third_party/portage-stable/dev-libs/libksba/libksba-1.6.4.ebuild
vendored
Normal file
61
sdk_container/src/third_party/portage-stable/dev-libs/libksba/libksba-1.6.4.ebuild
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
# Maintainers should:
|
||||
# 1. Join the "Gentoo" project at https://dev.gnupg.org/project/view/27/
|
||||
# 2. Subscribe to release tasks like https://dev.gnupg.org/T6159
|
||||
# (find the one for the current release then subscribe to it +
|
||||
# any subsequent ones linked within so you're covered for a while.)
|
||||
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/gnupg.asc
|
||||
inherit toolchain-funcs verify-sig libtool
|
||||
|
||||
DESCRIPTION="X.509 and CMS (PKCS#7) library"
|
||||
HOMEPAGE="https://www.gnupg.org/related_software/libksba"
|
||||
SRC_URI="mirror://gnupg/${PN}/${P}.tar.bz2"
|
||||
SRC_URI+=" verify-sig? ( mirror://gnupg/${PN}/${P}.tar.bz2.sig )"
|
||||
|
||||
LICENSE="LGPL-3+ GPL-2+ GPL-3"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
IUSE="static-libs"
|
||||
|
||||
RDEPEND=">=dev-libs/libgpg-error-1.33"
|
||||
DEPEND="${RDEPEND}"
|
||||
BDEPEND="
|
||||
sys-devel/bison
|
||||
verify-sig? ( sec-keys/openpgp-keys-gnupg )
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${PN}-1.6.0-no-fgrep-ksba-config.patch
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
elibtoolize # necessary on Solaris for shared lib support
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
export CC_FOR_BUILD="$(tc-getBUILD_CC)"
|
||||
|
||||
local myeconfargs=(
|
||||
--disable-valgrind-tests
|
||||
$(use_enable static-libs static)
|
||||
|
||||
GPG_ERROR_CONFIG="${ESYSROOT}/usr/bin/${CHOST}-gpg-error-config"
|
||||
LIBGCRYPT_CONFIG="${ESYSROOT}/usr/bin/${CHOST}-libgcrypt-config"
|
||||
)
|
||||
|
||||
econf "${myeconfargs[@]}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
default
|
||||
|
||||
# People need to use ksba-config for --cflags and --libs
|
||||
find "${ED}" -type f -name '*.la' -delete || die
|
||||
}
|
||||
@ -1,5 +1,2 @@
|
||||
DIST libpcre2-10.36-patchset-01.tar.xz 1364 BLAKE2B bfef3c876a092e06972107b44794c23b758a030181f3040c8b722db166789eac794783169b468fc71334fd660bc2f1c31422a8cb8e5bdc18a69b72654b1b59b2 SHA512 04324d1efa6d155fa3ffbc328638e4674bea305fef7f57d4369ab4a6399a0f489b4c0ecfb49643feff310d91872e1673e965c48a5c60f1bf54a319f0d275c306
|
||||
DIST pcre2-10.40.tar.bz2 1765440 BLAKE2B 627a204585b92238eda81b4befc88757a81d75b0d9fa26ea6d51afcdd93f7e2d102a2245bf3c8e1f5f9ddf69a316c419c948b741a64442bb567480015543e49b SHA512 00e7b48a6554b9127cb6fe24c5cacf72783416a9754ec88f62f73c52f46ed72c86c1869e62c91a31b2ff2cbafbbedabca44b3f1eb7670bc92f49d8401c7374e8
|
||||
DIST pcre2-10.40.tar.bz2.sig 310 BLAKE2B 9609111a64b66893b12e36d1cbc77b64d6a0cc30b9288e52753785ddcab37cc3e169d0f117d94e4ad7d7ff897a6ba0a574c9a2e529c3c7e171f5a1bc6f64fe23 SHA512 faa4b47fdac1543cd323651f251b8abb94b31b5966b42d445b8cbb38c441df4742e3c3517c2bc6c0a4464e9fb5feab5d5beda1250a03d56bec2d8383be2f63ab
|
||||
DIST pcre2-10.42.tar.bz2 1799866 BLAKE2B 40aa096745548c489a00ead87a191a4d24ecd924a5b8f00401c1273176de15ccb23510882467c8e2b5c1256b97db46fba5fcdfbd9f0d61d86a29d74bb4bca7a0 SHA512 72fbde87fecec3aa4b47225dd919ea1d55e97f2cbcf02aba26e5a0d3b1ffb58c25a80a9ef069eb99f9cf4e41ba9604ad06a7ec159870e1e875d86820e12256d3
|
||||
DIST pcre2-10.42.tar.bz2.sig 310 BLAKE2B 2125d7e23f7e75847573e3caeb8d55da5d8e0df3d166bf8b638b998aebacaefb4e88df7e813d6977af2dc7d82c93b7179ad0043c4f46fc4e06d99d214b0b7fcf SHA512 22ce3c7903835b1cf835ac6cfa725badecc982f1504382e62525c88307b2e3bd8951f2221fdd3d73920843e69f714b6df99fe741069e610f1f809087512a31f7
|
||||
|
||||
@ -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="${BROOT}"/usr/share/openpgp-keys/philiphazel.asc
|
||||
inherit flag-o-matic libtool multilib-minimal usr-ldscript verify-sig
|
||||
|
||||
PATCH_SET="${PN}-10.36-patchset-01.tar.xz"
|
||||
MY_P="pcre2-${PV/_rc/-RC}"
|
||||
|
||||
DESCRIPTION="Perl-compatible regular expression library"
|
||||
HOMEPAGE="https://www.pcre.org/"
|
||||
if [[ ${PV} != *_rc* ]] ; then
|
||||
# Only the final releases are available here.
|
||||
SRC_URI="https://github.com/PhilipHazel/pcre2/releases/download/${MY_P}/${MY_P}.tar.bz2
|
||||
https://ftp.pcre.org/pub/pcre/${MY_P}.tar.bz2
|
||||
verify-sig? ( https://github.com/PhilipHazel/pcre2/releases/download/${MY_P}/${MY_P}.tar.bz2.sig )"
|
||||
else
|
||||
SRC_URI="https://ftp.pcre.org/pub/pcre/Testing/${MY_P}.tar.bz2"
|
||||
fi
|
||||
|
||||
if [[ -n "${PATCH_SET}" ]] ; then
|
||||
SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${PATCH_SET}"
|
||||
fi
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0/3" # libpcre2-posix.so version
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
IUSE="bzip2 +jit libedit +pcre16 pcre32 +readline static-libs unicode zlib"
|
||||
REQUIRED_USE="?? ( libedit readline )"
|
||||
|
||||
RDEPEND="bzip2? ( app-arch/bzip2 )
|
||||
libedit? ( dev-libs/libedit )
|
||||
readline? ( sys-libs/readline:= )
|
||||
zlib? ( sys-libs/zlib )"
|
||||
DEPEND="${RDEPEND}"
|
||||
BDEPEND="virtual/pkgconfig
|
||||
verify-sig? ( sec-keys/openpgp-keys-philiphazel )"
|
||||
|
||||
MULTILIB_CHOST_TOOLS=(
|
||||
/usr/bin/pcre2-config
|
||||
)
|
||||
|
||||
src_unpack() {
|
||||
if use verify-sig ; then
|
||||
# Needed for downloaded patch (which is unsigned, which is fine)
|
||||
verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.bz2{,.sig}
|
||||
fi
|
||||
|
||||
default
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
if [[ -d "${WORKDIR}/patches" ]] ; then
|
||||
rm "${WORKDIR}"/patches/pcre2-10.36-001-issue2698.patch || die
|
||||
eapply "${WORKDIR}"/patches
|
||||
fi
|
||||
|
||||
default
|
||||
|
||||
elibtoolize
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
append-lfs-flags
|
||||
|
||||
local myeconfargs=(
|
||||
--enable-pcre2-8
|
||||
--enable-shared
|
||||
$(multilib_native_use_enable bzip2 pcre2grep-libbz2)
|
||||
$(multilib_native_use_enable libedit pcre2test-libedit)
|
||||
$(multilib_native_use_enable readline pcre2test-libreadline)
|
||||
$(multilib_native_use_enable zlib pcre2grep-libz)
|
||||
$(use_enable jit)
|
||||
$(use_enable jit pcre2grep-jit)
|
||||
$(use_enable pcre16 pcre2-16)
|
||||
$(use_enable pcre32 pcre2-32)
|
||||
$(use_enable static-libs static)
|
||||
$(use_enable unicode)
|
||||
)
|
||||
|
||||
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
emake V=1 $(multilib_is_native_abi || echo "bin_PROGRAMS=")
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
emake check VERBOSE=yes
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
emake \
|
||||
DESTDIR="${D}" \
|
||||
$(multilib_is_native_abi || echo "bin_PROGRAMS= dist_html_DATA=") \
|
||||
install
|
||||
multilib_is_native_abi && gen_usr_ldscript -a pcre2-posix
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
find "${ED}" -type f -name "*.la" -delete || die
|
||||
}
|
||||
@ -14,7 +14,7 @@ SRC_URI+=" verify-sig? ( mirror://gnu/${PN}/${P}.tar.gz.sig )"
|
||||
LICENSE="|| ( LGPL-3 LGPL-2.1 )"
|
||||
# Subslot = libnettle - libhogweed soname version
|
||||
SLOT="0/8-6"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~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 ~ia64 ~loong ~m68k ~mips ppc ~ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
IUSE="+asm doc +gmp static-libs cpu_flags_arm_neon cpu_flags_arm_aes cpu_flags_arm_sha1 cpu_flags_arm_sha2 cpu_flags_ppc_altivec cpu_flags_ppc_vsx2 cpu_flags_ppc_vsx3 cpu_flags_x86_aes cpu_flags_x86_sha cpu_flags_x86_pclmul"
|
||||
# The arm64 crypto option controls AES, SHA1, and SHA2 usage.
|
||||
REQUIRED_USE="
|
||||
|
||||
@ -21,7 +21,7 @@ fi
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0/5"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
IUSE="crnl-as-line-terminator static-libs"
|
||||
|
||||
BDEPEND=""
|
||||
|
||||
@ -25,7 +25,7 @@ SRC_URI="
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~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 ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
IUSE="emacs test"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ HOMEPAGE="
|
||||
|
||||
LICENSE="BSD-2 GPL-3 public-domain"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~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 ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
|
||||
RDEPEND="
|
||||
dev-python/pygments[${PYTHON_USEDEP}]
|
||||
|
||||
@ -1 +1,2 @@
|
||||
DIST inflect-6.0.4.tar.gz 71131 BLAKE2B 24ec6f25462594fde4558f7a4269c68d31989ead54c982f3a4382b5f0c192fd5fcac7544413fecef0abaf7c3fe2f9b4a8049fc7dc7d324e4397fb6a81763ef8e SHA512 96aaa74b3e8c5dcc91d81af336af73535826f3cedaa556d6baf540ca54db1a7c1f17a372c240446c0d81697520eab154bad4f0aad6195c6ab8e131ae443d3811
|
||||
DIST inflect-6.1.0.tar.gz 71080 BLAKE2B a4f86fa3d64f979ad184d3744dd40c5a220ea904bef3cc87af3f675febdd1346b918797a879ebee368f4d9381e698476229b538fe15f14921c41351450132a04 SHA512 2457ed594081a3f26390e88b5d5826867cd3d54ffd73c4cfe52c20cac873157ec64e30ff3e01efebb0b1edf8b0e412930bae434e1cd8c7920a273667d5e6eb68
|
||||
|
||||
29
sdk_container/src/third_party/portage-stable/dev-python/inflect/inflect-6.1.0.ebuild
vendored
Normal file
29
sdk_container/src/third_party/portage-stable/dev-python/inflect/inflect-6.1.0.ebuild
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
# Copyright 1999-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
DISTUTILS_USE_PEP517=setuptools
|
||||
PYTHON_COMPAT=( pypy3 python3_{10..12} )
|
||||
|
||||
inherit distutils-r1 pypi
|
||||
|
||||
DESCRIPTION="Correctly inflect words and numbers"
|
||||
HOMEPAGE="
|
||||
https://pypi.org/project/inflect/
|
||||
https://github.com/jaraco/inflect/
|
||||
"
|
||||
|
||||
LICENSE="MIT"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
|
||||
RDEPEND="
|
||||
<dev-python/pydantic-2[${PYTHON_USEDEP}]
|
||||
>=dev-python/pydantic-1.9.1[${PYTHON_USEDEP}]
|
||||
"
|
||||
BDEPEND="
|
||||
>=dev-python/setuptools-scm-3.4.1[${PYTHON_USEDEP}]
|
||||
"
|
||||
|
||||
distutils_enable_tests pytest
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user