diff options
398 files changed, 36188 insertions, 2199 deletions
@@ -1,9 +1,15 @@ # LibreSSL ebuilds testing repo -LibreSSL is already in Gentoo, but still requires [a lot of ebuilds](https://github.com/gentoo/libressl/wiki/Transition-plan#packages-not-converted-yet) +LibreSSL requires [a lot of ebuilds](https://github.com/gentoo/libressl/wiki/Transition-plan#packages-not-converted-yet) to be fixed. This overlay serves as a testing ground and makes testing easier by providing an openssl dummy ebuild, so you can compile packages against -LibreSSL which don't have the 'libressl' USE flag yet. +LibreSSL. + +The `libressl` USE flag is no longer used on main portage tree. +The dummy `dev-libs/openssl` package on this overlay only depends +on `dev-libs/libressl` to fix dependency. +This overlay goal is to provide ebuilds that require patches for build +to succeed where dummy package dependency isn’t enough. ## How to install the overlay @@ -14,6 +20,17 @@ Use [`eselect-repository`](https://wiki.gentoo.org/wiki/Eselect/Repository): Now you can use `emerge --sync` or `emaint sync -r libressl` to sync this repository. +The `dev-libs/libressl` package in this overlay causes file collisions with the +`dev-libs/openssl::gentoo` package. When switching to this overlay first fetch +the LibreSSL package and then remove the OpenSSL package before installing +`dev-libs/libressl` and the `dev-libs/openssl::libressl` fake package: +``` +# emerge -f dev-libs/libressl +# emerge -C dev-libs/openssl +# emerge -av1 dev-libs/libressl +# emerge @preserved-rebuild +``` + ## links [Gentoo bug report](https://bugs.gentoo.org/show_bug.cgi?id=508750) @@ -31,3 +48,5 @@ repository. ## Contact [![Gitter chat](https://badges.gitter.im/gentoo/libressl.png)](https://gitter.im/gentoo/libressl) + +[IRC on Libera.Chat #gentoo-libressl](irc://irc.libera.chat/gentoo-libressl) diff --git a/app-crypt/qca/Manifest b/app-crypt/qca/Manifest index df985ae..6b18c45 100644 --- a/app-crypt/qca/Manifest +++ b/app-crypt/qca/Manifest @@ -1,2 +1 @@ -DIST qca-2.3.0.tar.xz 729504 BLAKE2B 71cf9dfae00066c14e1055da1fa1a8e1210f538b1addfde1b99a9b26b1e8f7dd61e289d0f505b5ec04d5f4745216d4fd0f8be8f8de9e9cbf74123907ba703d0e SHA512 ca9251868e073834562fa62ffc64b3e7817c9ddadc6bc3fb99cf8b5c8d859969562170a98874be9590c617b2dd8e5590d2c83792554f54bb880c677902db22fe -DIST qca-2.3.1.tar.xz 725984 BLAKE2B a99121dd95822ef5e1057dc9ad9250bb14486f42b0571936453644bc7c5649f16cbc918fa04d4a5af2c62bc35cc672159a84e27a86e685cfe320518a42076052 SHA512 092704a8d7c5973f05c82584ea55b4f8f874965aea943277e50fde873913a9bdad6a51ea74fc0036bbb632a13141cb4c030504229c06779890286205929f6021 +DIST qca-2.3.8.tar.xz 761340 BLAKE2B 04ec8d2fb9c2c00b04407828c549a4bb7d8bf6cda2f1071078dd446b8fc90c89872b2a4dc838bcb4eb34132545365be210c0043bde95c084901661a874600b34 SHA512 ddb410214e8264955c2bb8c68d018e3826cb8ec48f8cc7207c2aec1c36051dc0501455b5049eff927dcf354603c0646f86ca10f2cebebe87789b3fd07a993b68 diff --git a/app-crypt/qca/files/qca-2.2.0-libressl.patch b/app-crypt/qca/files/qca-2.2.0-libressl.patch deleted file mode 100644 index 537dd11..0000000 --- a/app-crypt/qca/files/qca-2.2.0-libressl.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 3cfe5c3a7cfbf0b7351dedb64785b837667fc0b1 Mon Sep 17 00:00:00 2001 -From: Stefan Strogin <steils@gentoo.org> -Date: Wed, 2 Oct 2019 17:28:44 +0300 -Subject: [PATCH] Fix build with LibreSSL - -Provide RSA_meth_set_{sign,verify} for LibreSSL. -Do not redefine M_ASN1_IA5STRING_new and RSA_F_RSA_EAY_PRIVATE_DECRYPT. -Disable HKDF. - -Upstream-Status: Submitted [https://phabricator.kde.org/D20259] -Signed-off-by: Stefan Strogin <steils@gentoo.org> ---- - plugins/qca-ossl/ossl110-compat.h | 35 +++++++++++++++++-------------- - plugins/qca-ossl/qca-ossl.cpp | 10 ++++----- - 2 files changed, 24 insertions(+), 21 deletions(-) - -diff --git a/plugins/qca-ossl/ossl110-compat.h b/plugins/qca-ossl/ossl110-compat.h -index b320707..0a8b49b 100644 ---- a/plugins/qca-ossl/ossl110-compat.h -+++ b/plugins/qca-ossl/ossl110-compat.h -@@ -205,22 +205,6 @@ static int RSA_meth_set_priv_dec(RSA_METHOD *rsa, int (*priv_dec) (int flen, con - return 1; - } - --static int RSA_meth_set_sign(RSA_METHOD *meth, int (*sign) (int type, const unsigned char *m, -- unsigned int m_length, unsigned char *sigret, unsigned int *siglen, const RSA *rsa)) --{ -- if (!meth) return 0; -- meth->rsa_sign = sign; -- return 1; --} -- --static int RSA_meth_set_verify(RSA_METHOD *meth, int (*verify) (int dtype, const unsigned char *m, -- unsigned int m_length, const unsigned char *sigbuf, unsigned int siglen, const RSA *rsa)) --{ -- if (!meth) return 0; -- meth->rsa_verify = verify; -- return 1; --} -- - static int RSA_meth_set_finish(RSA_METHOD *meth, int (*finish) (RSA *rsa)) - { - if (!meth) return 0; -@@ -272,4 +256,23 @@ static void HMAC_CTX_free(HMAC_CTX *ctx) - - #endif // OPENSSL_VERSION_NUMBER < 0x10100000L - -+#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || \ -+ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x3000000fL) -+static int RSA_meth_set_sign(RSA_METHOD *meth, int (*sign) (int type, const unsigned char *m, -+ unsigned int m_length, unsigned char *sigret, unsigned int *siglen, const RSA *rsa)) -+{ -+ if (!meth) return 0; -+ meth->rsa_sign = sign; -+ return 1; -+} -+ -+static int RSA_meth_set_verify(RSA_METHOD *meth, int (*verify) (int dtype, const unsigned char *m, -+ unsigned int m_length, const unsigned char *sigbuf, unsigned int siglen, const RSA *rsa)) -+{ -+ if (!meth) return 0; -+ meth->rsa_verify = verify; -+ return 1; -+} -+#endif // (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER) -+ - #endif // OSSL110COMPAT_H -diff --git a/plugins/qca-ossl/qca-ossl.cpp b/plugins/qca-ossl/qca-ossl.cpp -index 11ecdc9..75c48fc 100644 ---- a/plugins/qca-ossl/qca-ossl.cpp -+++ b/plugins/qca-ossl/qca-ossl.cpp -@@ -62,12 +62,12 @@ - #endif - - // OpenSSL 1.1.0 compatibility macros --#ifdef OSSL_110 -+#if defined(OSSL_110) && !defined(LIBRESSL_VERSION_NUMBER) - #define M_ASN1_IA5STRING_new() ASN1_IA5STRING_new() - #define RSA_F_RSA_EAY_PRIVATE_DECRYPT RSA_F_RSA_OSSL_PRIVATE_DECRYPT - #endif - --#ifdef OSSL_110 -+#if defined(OSSL_110) && !defined(LIBRESSL_VERSION_NUMBER) - #include <openssl/kdf.h> - #endif - -@@ -1280,7 +1280,7 @@ public: - protected: - }; - --#ifdef OSSL_110 -+#if defined(OSSL_110) && !defined(LIBRESSL_VERSION_NUMBER) - class opensslHkdfContext : public HKDFContext - { - public: -@@ -7416,7 +7416,7 @@ public: - #endif - list += "pbkdf1(sha1)"; - list += "pbkdf2(sha1)"; --#ifdef OSSL_110 -+#if defined(OSSL_110) && !defined(LIBRESSL_VERSION_NUMBER) - list += "hkdf(sha256)"; - #endif - list += "pkey"; -@@ -7489,7 +7489,7 @@ public: - #endif - else if ( type == "pbkdf2(sha1)" ) - return new opensslPbkdf2Context( this, type ); --#ifdef OSSL_110 -+#if defined(OSSL_110) && !defined(LIBRESSL_VERSION_NUMBER) - else if ( type == "hkdf(sha256)" ) - return new opensslHkdfContext( this, type ); - #endif --- -2.23.0 - diff --git a/app-crypt/qca/files/qca-2.3.0-libressl.patch b/app-crypt/qca/files/qca-2.3.0-libressl.patch deleted file mode 100644 index c06ba60..0000000 --- a/app-crypt/qca/files/qca-2.3.0-libressl.patch +++ /dev/null @@ -1,68 +0,0 @@ -From c3001c187f91a6eccfcb75828876f03f5310d283 Mon Sep 17 00:00:00 2001 -From: Stefan Strogin <steils@gentoo.org> -Date: Wed, 26 Feb 2020 04:41:28 +0200 -Subject: [PATCH] Fix build with LibreSSL - -Signed-off-by: Stefan Strogin <steils@gentoo.org> ---- - plugins/qca-ossl/qca-ossl.cpp | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/plugins/qca-ossl/qca-ossl.cpp b/plugins/qca-ossl/qca-ossl.cpp -index 559dc3f6..5ba9f1e7 100644 ---- a/plugins/qca-ossl/qca-ossl.cpp -+++ b/plugins/qca-ossl/qca-ossl.cpp -@@ -41,7 +41,13 @@ - #include <openssl/pkcs12.h> - #include <openssl/ssl.h> - -+#ifndef RSA_F_RSA_OSSL_PRIVATE_DECRYPT -+#define RSA_F_RSA_OSSL_PRIVATE_DECRYPT RSA_F_RSA_EAY_PRIVATE_DECRYPT -+#endif -+ -+#ifndef LIBRESSL_VERSION_NUMBER - #include <openssl/kdf.h> -+#endif - - using namespace QCA; - -@@ -1255,6 +1261,7 @@ public: - protected: - }; - -+#ifndef LIBRESSL_VERSION_NUMBER - class opensslHkdfContext : public HKDFContext - { - Q_OBJECT -@@ -1284,6 +1291,7 @@ public: - return out; - } - }; -+#endif // LIBRESSL_VERSION_NUMBER - - class opensslHMACContext : public MACContext - { -@@ -7268,7 +7276,9 @@ public: - #endif - list += QStringLiteral("pbkdf1(sha1)"); - list += QStringLiteral("pbkdf2(sha1)"); -+#ifndef LIBRESSL_VERSION_NUMBER - list += QStringLiteral("hkdf(sha256)"); -+#endif - list += QStringLiteral("pkey"); - list += QStringLiteral("dlgroup"); - list += QStringLiteral("rsa"); -@@ -7337,8 +7347,10 @@ public: - #endif - else if ( type == QLatin1String("pbkdf2(sha1)") ) - return new opensslPbkdf2Context( this, type ); -+#ifndef LIBRESSL_VERSION_NUMBER - else if ( type == QLatin1String("hkdf(sha256)") ) - return new opensslHkdfContext( this, type ); -+#endif - else if ( type == QLatin1String("hmac(md5)") ) - return new opensslHMACContext( EVP_md5(), this, type ); - else if ( type == QLatin1String("hmac(sha1)") ) --- -2.25.1 - diff --git a/app-crypt/qca/files/qca-2.3.1-libressl.patch b/app-crypt/qca/files/qca-2.3.1-libressl.patch deleted file mode 100644 index 0424378..0000000 --- a/app-crypt/qca/files/qca-2.3.1-libressl.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 56f60bc221d88e0753494c3e7ee320dc0f9de030 Mon Sep 17 00:00:00 2001 -From: Stefan Strogin <steils@gentoo.org> -Date: Wed, 26 Feb 2020 04:41:28 +0200 -Subject: [PATCH] Fix build with LibreSSL - -Signed-off-by: Stefan Strogin <steils@gentoo.org> ---- - plugins/qca-ossl/qca-ossl.cpp | 24 ++++++++++++++++++++++++ - 1 file changed, 24 insertions(+) - -diff --git a/plugins/qca-ossl/qca-ossl.cpp b/plugins/qca-ossl/qca-ossl.cpp -index ee872d72..4ee5d7c8 100644 ---- a/plugins/qca-ossl/qca-ossl.cpp -+++ b/plugins/qca-ossl/qca-ossl.cpp -@@ -41,7 +41,13 @@ - #include <openssl/pkcs12.h> - #include <openssl/ssl.h> - -+#ifndef RSA_F_RSA_OSSL_PRIVATE_DECRYPT -+#define RSA_F_RSA_OSSL_PRIVATE_DECRYPT RSA_F_RSA_EAY_PRIVATE_DECRYPT -+#endif -+ -+#ifndef LIBRESSL_VERSION_NUMBER - #include <openssl/kdf.h> -+#endif - - using namespace QCA; - -@@ -1262,6 +1268,7 @@ public: - protected: - }; - -+#ifndef LIBRESSL_VERSION_NUMBER - class opensslHkdfContext : public HKDFContext - { - Q_OBJECT -@@ -1291,6 +1298,7 @@ public: - return out; - } - }; -+#endif // LIBRESSL_VERSION_NUMBER - - class opensslHMACContext : public MACContext - { -@@ -4990,7 +4998,11 @@ public: - case TLS::TLS_v1: - ctx = SSL_CTX_new(TLS_client_method()); - SSL_CTX_set_min_proto_version(ctx, TLS1_VERSION); -+#ifdef TLS1_3_VERSION - SSL_CTX_set_max_proto_version(ctx, TLS1_3_VERSION); -+#else -+ SSL_CTX_set_max_proto_version(ctx, TLS1_2_VERSION); -+#endif - break; - case TLS::DTLS_v1: - default: -@@ -5011,7 +5023,11 @@ public: - QStringList cipherList; - for(int i = 0; i < sk_SSL_CIPHER_num(sk); ++i) { - const SSL_CIPHER *thisCipher = sk_SSL_CIPHER_value(sk, i); -+#ifndef LIBRESSL_VERSION_NUMBER - cipherList += QString::fromLatin1(SSL_CIPHER_standard_name(thisCipher)); -+#else -+ cipherList += QString::fromLatin1(SSL_CIPHER_get_name(thisCipher)); -+#endif - } - sk_SSL_CIPHER_free(sk); - -@@ -5404,7 +5420,11 @@ public: - sessInfo.version = TLS::TLS_v1; - } - -+#ifndef LIBRESSL_VERSION_NUMBER - sessInfo.cipherSuite = QString::fromLatin1(SSL_CIPHER_standard_name(SSL_get_current_cipher(ssl))); -+#else -+ sessInfo.cipherSuite = QString::fromLatin1(SSL_CIPHER_get_name(SSL_get_current_cipher(ssl))); -+#endif - - sessInfo.cipherMaxBits = SSL_get_cipher_bits(ssl, &(sessInfo.cipherBits)); - -@@ -6751,7 +6771,9 @@ public: - #endif - list += QStringLiteral("pbkdf1(sha1)"); - list += QStringLiteral("pbkdf2(sha1)"); -+#ifndef LIBRESSL_VERSION_NUMBER - list += QStringLiteral("hkdf(sha256)"); -+#endif - list += QStringLiteral("pkey"); - list += QStringLiteral("dlgroup"); - list += QStringLiteral("rsa"); -@@ -6820,8 +6842,10 @@ public: - #endif - else if ( type == QLatin1String("pbkdf2(sha1)") ) - return new opensslPbkdf2Context( this, type ); -+#ifndef LIBRESSL_VERSION_NUMBER - else if ( type == QLatin1String("hkdf(sha256)") ) - return new opensslHkdfContext( this, type ); -+#endif - else if ( type == QLatin1String("hmac(md5)") ) - return new opensslHMACContext( EVP_md5(), this, type ); - else if ( type == QLatin1String("hmac(sha1)") ) --- -2.27.0 - diff --git a/app-crypt/qca/files/qca-2.3.4-libressl.patch b/app-crypt/qca/files/qca-2.3.4-libressl.patch new file mode 100644 index 0000000..8bee8ad --- /dev/null +++ b/app-crypt/qca/files/qca-2.3.4-libressl.patch @@ -0,0 +1,103 @@ +From aa07e1eacdbfeefa5ff21c5d7e45ce9e02e91dbb Mon Sep 17 00:00:00 2001 +From: Stefan Strogin <steils@gentoo.org> +Date: Fri, 3 Jun 2022 21:11:45 -0700 +Subject: [PATCH] LibreSSL 3.0.x support + +--- + plugins/qca-ossl/qca-ossl.cpp | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +diff --git a/plugins/qca-ossl/qca-ossl.cpp b/plugins/qca-ossl/qca-ossl.cpp +index b2c5d3d..79775cd 100644 +--- a/plugins/qca-ossl/qca-ossl.cpp ++++ b/plugins/qca-ossl/qca-ossl.cpp +@@ -44,7 +44,13 @@ + #include <openssl/provider.h> + #endif + ++#ifndef RSA_F_RSA_OSSL_PRIVATE_DECRYPT ++#define RSA_F_RSA_OSSL_PRIVATE_DECRYPT RSA_F_RSA_EAY_PRIVATE_DECRYPT ++#endif ++ ++#ifndef LIBRESSL_VERSION_NUMBER + #include <openssl/kdf.h> ++#endif + + using namespace QCA; + +@@ -1254,6 +1260,7 @@ public: + protected: + }; + ++#ifndef LIBRESSL_VERSION_NUMBER + class opensslHkdfContext : public HKDFContext + { + Q_OBJECT +@@ -1286,6 +1293,7 @@ public: + return out; + } + }; ++#endif // LIBRESSL_VERSION_NUMBER + + class opensslHMACContext : public MACContext + { +@@ -4993,7 +5001,11 @@ public: + case TLS::TLS_v1: + ctx = SSL_CTX_new(TLS_client_method()); + SSL_CTX_set_min_proto_version(ctx, TLS1_VERSION); ++#ifdef TLS1_3_VERSION + SSL_CTX_set_max_proto_version(ctx, TLS1_3_VERSION); ++#else ++ SSL_CTX_set_max_proto_version(ctx, TLS1_2_VERSION); ++#endif + break; + case TLS::DTLS_v1: + default: +@@ -5014,7 +5026,11 @@ public: + QStringList cipherList; + for (int i = 0; i < sk_SSL_CIPHER_num(sk); ++i) { + const SSL_CIPHER *thisCipher = sk_SSL_CIPHER_value(sk, i); ++#ifndef LIBRESSL_VERSION_NUMBER + cipherList += QString::fromLatin1(SSL_CIPHER_standard_name(thisCipher)); ++#else ++ cipherList += QString::fromLatin1(SSL_CIPHER_get_name(thisCipher)); ++#endif + } + sk_SSL_CIPHER_free(sk); + +@@ -5386,8 +5402,11 @@ public: + qDebug("unexpected version response"); + sessInfo.version = TLS::TLS_v1; + } +- ++#ifndef LIBRESSL_VERSION_NUMBER + sessInfo.cipherSuite = QString::fromLatin1(SSL_CIPHER_standard_name(SSL_get_current_cipher(ssl))); ++#else ++ sessInfo.cipherSuite = QString::fromLatin1(SSL_CIPHER_get_name(SSL_get_current_cipher(ssl))); ++#endif + + sessInfo.cipherMaxBits = SSL_get_cipher_bits(ssl, &(sessInfo.cipherBits)); + +@@ -6687,7 +6706,9 @@ public: + #endif + list += QStringLiteral("pbkdf1(sha1)"); + list += QStringLiteral("pbkdf2(sha1)"); ++#ifndef LIBRESSL_VERSION_NUMBER + list += QStringLiteral("hkdf(sha256)"); ++#endif // LIBRESSL_VERSION_NUMBER + list += QStringLiteral("pkey"); + list += QStringLiteral("dlgroup"); + list += QStringLiteral("rsa"); +@@ -6756,8 +6777,10 @@ public: + #endif + else if (type == QLatin1String("pbkdf2(sha1)")) + return new opensslPbkdf2Context(this, type); ++#ifndef LIBRESSL_VERSION_NUMBER + else if (type == QLatin1String("hkdf(sha256)")) + return new opensslHkdfContext(this, type); ++#endif // LIBRESSL_VERSION_NUMBER + else if (type == QLatin1String("hmac(md5)")) + return new opensslHMACContext(EVP_md5(), this, type); + else if (type == QLatin1String("hmac(sha1)")) +-- +2.35.1 diff --git a/app-crypt/qca/files/qca-2.3.7-use-sha256-not-sha1.patch b/app-crypt/qca/files/qca-2.3.7-use-sha256-not-sha1.patch new file mode 100644 index 0000000..e16fa76 --- /dev/null +++ b/app-crypt/qca/files/qca-2.3.7-use-sha256-not-sha1.patch @@ -0,0 +1,29 @@ +From 123123453bd4f3ac87ca6dd641a9028e6e7a29f0 Mon Sep 17 00:00:00 2001 +From: Albert Vaca Cintora <albertvaka@gmail.com> +Date: Mon, 24 Jul 2023 13:32:30 +0000 +Subject: [PATCH] Sign self-signed certs with SHA256 + +--- + plugins/qca-ossl/qca-ossl.cpp | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/plugins/qca-ossl/qca-ossl.cpp b/plugins/qca-ossl/qca-ossl.cpp +index 893631c9..f340ee2f 100644 +--- a/plugins/qca-ossl/qca-ossl.cpp ++++ b/plugins/qca-ossl/qca-ossl.cpp +@@ -3470,10 +3470,8 @@ public: + X509_EXTENSION *ex; + + const EVP_MD *md; +- if (priv.key()->type() == PKey::RSA) +- md = EVP_sha1(); +- else if (priv.key()->type() == PKey::DSA) +- md = EVP_sha1(); ++ if (priv.key()->type() == PKey::RSA || priv.key()->type() == PKey::DSA) ++ md = EVP_sha256(); + else + return false; + +-- +GitLab + diff --git a/app-crypt/qca/metadata.xml b/app-crypt/qca/metadata.xml index dff1320..10256dd 100644 --- a/app-crypt/qca/metadata.xml +++ b/app-crypt/qca/metadata.xml @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> -<maintainer type="project"> - <email>crypto@gentoo.org</email> - <name>Crypto</name> -</maintainer> -<maintainer type="project"> - <email>qt@gentoo.org</email> - <name>Gentoo Qt Project</name> -</maintainer> -<maintainer type="project"> - <email>kde@gentoo.org</email> - <name>Gentoo KDE Project</name> -</maintainer> -<use> - <flag name="botan">Enable botan plugin</flag> - <flag name="gcrypt">Enable gcrypt plugin</flag> - <flag name="gpg">Enable GnuPG plugin</flag> - <flag name="logger">Enable logger plugin</flag> - <flag name="nss">Enable NSS plugin</flag> - <flag name="pkcs11">Enable PKCS#11 plugin</flag> - <flag name="sasl">Enable SASL plugin</flag> - <flag name="softstore">Enable softstore plugin</flag> -</use> + <maintainer type="project"> + <email>qt@gentoo.org</email> + <name>Gentoo Qt Project</name> + </maintainer> + <maintainer type="project"> + <email>kde@gentoo.org</email> + <name>Gentoo KDE Project</name> + </maintainer> + <upstream> + <bugs-to>https://bugs.kde.org/</bugs-to> + <remote-id type="kde-invent">libraries/qca</remote-id> + </upstream> + <use> + <flag name="botan">Enable botan plugin</flag> + <flag name="gcrypt">Enable gcrypt plugin</flag> + <flag name="gpg">Enable GnuPG plugin</flag> + <flag name="logger">Enable logger plugin</flag> + <flag name="nss">Enable NSS plugin</flag> + <flag name="pkcs11">Enable PKCS#11 plugin</flag> + <flag name="sasl">Enable SASL plugin</flag> + <flag name="softstore">Enable softstore plugin</flag> + </use> </pkgmetadata> diff --git a/app-crypt/qca/qca-2.3.0.ebuild b/app-crypt/qca/qca-2.3.0.ebuild deleted file mode 100644 index ebe13eb..0000000 --- a/app-crypt/qca/qca-2.3.0.ebuild +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -inherit kde.org cmake qmake-utils - -DESCRIPTION="Qt Cryptographic Architecture (QCA)" -HOMEPAGE="https://userbase.kde.org/QCA" -SRC_URI="mirror://kde/stable/${PN}/${PV}/${P}.tar.xz" - -LICENSE="LGPL-2.1" -SLOT="2" -KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris" -IUSE="botan debug doc examples gcrypt gpg libressl logger nss pkcs11 sasl softstore +ssl test" - -RESTRICT="!test? ( test )" - -BDEPEND=" - doc? ( app-doc/doxygen ) -" -RDEPEND=" - dev-qt/qtcore:5 - botan? ( dev-libs/botan:= ) - gcrypt? ( dev-libs/libgcrypt:= ) - gpg? ( app-crypt/gnupg ) - nss? ( dev-libs/nss ) - pkcs11? ( - !libressl? ( >=dev-libs/openssl-1.1 ) - libressl? ( dev-libs/libressl:0= ) - dev-libs/pkcs11-helper - ) - sasl? ( dev-libs/cyrus-sasl:2 ) - ssl? ( - !libressl? ( >=dev-libs/openssl-1.1:0= ) - libressl? ( dev-libs/libressl:= ) - ) -" -DEPEND="${RDEPEND} - test? ( - dev-qt/qtnetwork:5 - dev-qt/qttest:5 - ) -" - -PATCHES=( - "${FILESDIR}/${PN}-disable-pgp-test.patch" - "${FILESDIR}/${P}-libressl.patch" -) - -qca_plugin_use() { - echo -DWITH_${2:-$1}_PLUGIN=$(usex "$1") -} - -src_configure() { - local mycmakeargs=( - -DQCA_FEATURE_INSTALL_DIR="${EPREFIX}$(qt5_get_mkspecsdir)/features" - -DQCA_PLUGINS_INSTALL_DIR="${EPREFIX}$(qt5_get_plugindir)" - $(qca_plugin_use botan) - $(qca_plugin_use gcrypt) - $(qca_plugin_use gpg gnupg) - $(qca_plugin_use logger) - $(qca_plugin_use nss) - $(qca_plugin_use pkcs11) - $(qca_plugin_use sasl cyrus-sasl) - $(qca_plugin_use softstore) - $(qca_plugin_use ssl ossl) - -DBUILD_TESTS=$(usex test) - ) - cmake_src_configure -} - -src_test() { - local -x QCA_PLUGIN_PATH="${BUILD_DIR}/lib/qca" - cmake_src_test -} - -src_install() { - cmake_src_install - - if use doc; then - pushd "${BUILD_DIR}" >/dev/null || die - doxygen Doxyfile || die - dodoc -r apidocs/html - popd >/dev/null || die - fi - - if use examples; then - dodoc -r "${S}"/examples - fi -} diff --git a/app-crypt/qca/qca-2.3.1.ebuild b/app-crypt/qca/qca-2.3.1.ebuild deleted file mode 100644 index ebe13eb..0000000 --- a/app-crypt/qca/qca-2.3.1.ebuild +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -inherit kde.org cmake qmake-utils - -DESCRIPTION="Qt Cryptographic Architecture (QCA)" -HOMEPAGE="https://userbase.kde.org/QCA" -SRC_URI="mirror://kde/stable/${PN}/${PV}/${P}.tar.xz" - -LICENSE="LGPL-2.1" -SLOT="2" -KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris" -IUSE="botan debug doc examples gcrypt gpg libressl logger nss pkcs11 sasl softstore +ssl test" - -RESTRICT="!test? ( test )" - -BDEPEND=" - doc? ( app-doc/doxygen ) -" -RDEPEND=" - dev-qt/qtcore:5 - botan? ( dev-libs/botan:= ) - gcrypt? ( dev-libs/libgcrypt:= ) - gpg? ( app-crypt/gnupg ) - nss? ( dev-libs/nss ) - pkcs11? ( - !libressl? ( >=dev-libs/openssl-1.1 ) - libressl? ( dev-libs/libressl:0= ) - dev-libs/pkcs11-helper - ) - sasl? ( dev-libs/cyrus-sasl:2 ) - ssl? ( - !libressl? ( >=dev-libs/openssl-1.1:0= ) - libressl? ( dev-libs/libressl:= ) - ) -" -DEPEND="${RDEPEND} - test? ( - dev-qt/qtnetwork:5 - dev-qt/qttest:5 - ) -" - -PATCHES=( - "${FILESDIR}/${PN}-disable-pgp-test.patch" - "${FILESDIR}/${P}-libressl.patch" -) - -qca_plugin_use() { - echo -DWITH_${2:-$1}_PLUGIN=$(usex "$1") -} - -src_configure() { - local mycmakeargs=( - -DQCA_FEATURE_INSTALL_DIR="${EPREFIX}$(qt5_get_mkspecsdir)/features" - -DQCA_PLUGINS_INSTALL_DIR="${EPREFIX}$(qt5_get_plugindir)" - $(qca_plugin_use botan) - $(qca_plugin_use gcrypt) - $(qca_plugin_use gpg gnupg) - $(qca_plugin_use logger) - $(qca_plugin_use nss) - $(qca_plugin_use pkcs11) - $(qca_plugin_use sasl cyrus-sasl) - $(qca_plugin_use softstore) - $(qca_plugin_use ssl ossl) - -DBUILD_TESTS=$(usex test) - ) - cmake_src_configure -} - -src_test() { - local -x QCA_PLUGIN_PATH="${BUILD_DIR}/lib/qca" - cmake_src_test -} - -src_install() { - cmake_src_install - - if use doc; then - pushd "${BUILD_DIR}" >/dev/null || die - doxygen Doxyfile || die - dodoc -r apidocs/html - popd >/dev/null || die - fi - - if use examples; then - dodoc -r "${S}"/examples - fi -} diff --git a/app-crypt/qca/qca-2.3.8.ebuild b/app-crypt/qca/qca-2.3.8.ebuild new file mode 100644 index 0000000..cda39d7 --- /dev/null +++ b/app-crypt/qca/qca-2.3.8.ebuild @@ -0,0 +1,119 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake kde.org multibuild out-of-source-utils qmake-utils + +DESCRIPTION="Qt Cryptographic Architecture (QCA)" +HOMEPAGE="https://userbase.kde.org/QCA" +SRC_URI="mirror://kde/stable/${PN}/${PV}/${P}.tar.xz" + +LICENSE="LGPL-2.1" +SLOT="2" +KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos" +IUSE="botan debug doc examples gcrypt gpg logger nss pkcs11 +qt5 qt6 sasl softstore +ssl test" +REQUIRED_USE="|| ( qt5 qt6 )" + +RESTRICT="!test? ( test )" + +RDEPEND=" + botan? ( dev-libs/botan:3= ) + gcrypt? ( dev-libs/libgcrypt:= ) + gpg? ( app-crypt/gnupg ) + nss? ( dev-libs/nss ) + pkcs11? ( + >=dev-libs/openssl-1.1 + dev-libs/pkcs11-helper + ) + qt5? ( >=dev-qt/qtcore-5.14:5 ) + qt6? ( + dev-qt/qtbase:6 + dev-qt/qt5compat:6 + ) + sasl? ( dev-libs/cyrus-sasl:2 ) + ssl? ( >=dev-libs/openssl-1.1:= ) +" +DEPEND="${RDEPEND} + test? ( + qt5? ( + dev-qt/qtnetwork:5 + dev-qt/qttest:5 + ) + qt6? ( dev-qt/qtbase:6[network] ) + ) +" +BDEPEND=" + doc? ( + app-text/doxygen[dot] + virtual/latex-base + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-2.3.4-libressl.patch" + "${FILESDIR}/${PN}-disable-pgp-test.patch" + "${FILESDIR}/${PN}-2.3.7-use-sha256-not-sha1.patch" # git master +) + +qca_plugin_use() { + echo -DWITH_${2:-$1}_PLUGIN=$(usex "$1") +} + +pkg_setup() { + MULTIBUILD_VARIANTS=( $(usev qt5) $(usev qt6) ) +} + +src_configure() { + myconfigure() { + local mycmakeargs=( + -DQCA_FEATURE_INSTALL_DIR="${EPREFIX}$(${MULTIBUILD_VARIANT}_get_mkspecsdir)/features" + -DQCA_PLUGINS_INSTALL_DIR="${EPREFIX}$(${MULTIBUILD_VARIANT}_get_plugindir)" + $(qca_plugin_use botan) + $(qca_plugin_use gcrypt) + $(qca_plugin_use gpg gnupg) + $(qca_plugin_use logger) + $(qca_plugin_use nss) + $(qca_plugin_use pkcs11) + $(qca_plugin_use sasl cyrus-sasl) + $(qca_plugin_use softstore) + $(qca_plugin_use ssl ossl) + -DBUILD_TESTS=$(usex test) + ) + if [[ ${MULTIBUILD_VARIANT} == qt6 ]]; then + mycmakeargs+=( -DBUILD_WITH_QT6=ON ) + else + mycmakeargs+=( -DBUILD_WITH_QT6=OFF ) + fi + cmake_src_configure + } + + multibuild_foreach_variant myconfigure +} + +src_compile() { + multibuild_foreach_variant cmake_src_compile + if use doc; then + multibuild_for_best_variant cmake_build doc + fi +} + +src_test() { + mytest() { + local -x QCA_PLUGIN_PATH="${BUILD_DIR}/lib/qca" + cmake_src_test + } + multibuild_foreach_variant mytest +} + +src_install() { + multibuild_foreach_variant cmake_src_install + + if use doc; then + multibuild_for_best_variant run_in_build_dir dodoc -r apidocs/html + fi + + if use examples; then + dodoc -r "${S}"/examples + fi +} diff --git a/app-crypt/tpm2-tss/Manifest b/app-crypt/tpm2-tss/Manifest new file mode 100644 index 0000000..e5a285d --- /dev/null +++ b/app-crypt/tpm2-tss/Manifest @@ -0,0 +1 @@ +DIST tpm2-tss-4.0.1.tar.gz 1787139 BLAKE2B 627cdefeff6c64148f9da1425922a0a7a72debcee4930ffab208a3b9b66127c2d4f923e3e105bfd45410cdb13c19cb40cc15a720e9a05dd32ff622dabf5fcc32 SHA512 ed6ddc52cb0e8c1082a4bb001e1225eb9905fd2380da88db5fd69ff5b5d9d43a93eb67b634e49d53eb5d586832da3aef2c4c7e5f18d51bb730481f8913319d7d diff --git a/app-crypt/tpm2-tss/files/tpm2-tss-3.2.0-libressl.patch b/app-crypt/tpm2-tss/files/tpm2-tss-3.2.0-libressl.patch new file mode 100644 index 0000000..7a8f267 --- /dev/null +++ b/app-crypt/tpm2-tss/files/tpm2-tss-3.2.0-libressl.patch @@ -0,0 +1,89 @@ +Upstream-PR: https://github.com/tpm2-software/tpm2-tss/pull/2380 + +From: orbea <orbea@riseup.net> +Date: Thu, 13 Apr 2023 17:11:07 -0700 +Subject: [PATCH] Support LibreSSL + +This works with LibreSSL 3.5.x. + +Still missing in LibreSSL: + +* RAND_OpenSSL +* NID_sm2 + +Signed-off-by: orbea <orbea@riseup.net> +--- + src/tss2-esys/esys_crypto_ossl.c | 14 +++++++++++--- + src/tss2-fapi/fapi_crypto.c | 4 ++-- + 2 files changed, 13 insertions(+), 5 deletions(-) + +diff --git a/src/tss2-esys/esys_crypto_ossl.c b/src/tss2-esys/esys_crypto_ossl.c +index a92ecc46..2baae814 100644 +--- a/src/tss2-esys/esys_crypto_ossl.c ++++ b/src/tss2-esys/esys_crypto_ossl.c +@@ -392,7 +392,8 @@ iesys_cryptossl_hmac_start(ESYS_CRYPTO_CONTEXT_BLOB ** context, + "Error EVP_MD_CTX_create", cleanup); + } + +-#if OPENSSL_VERSION_NUMBER < 0x10101000L ++#if OPENSSL_VERSION_NUMBER < 0x10101000L || \ ++ ( defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x3070000fL ) + if (!(hkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL, key, size))) { + #else + /* this is preferred, but available since OpenSSL 1.1.1 only */ +@@ -558,7 +559,11 @@ iesys_cryptossl_random2b( + int rc; + #if OPENSSL_VERSION_NUMBER < 0x30000000L + const RAND_METHOD *rand_save = RAND_get_rand_method(); ++#ifdef LIBRESSL_VERSION_NUMBER ++ RAND_set_rand_method(RAND_SSLeay()); ++#else + RAND_set_rand_method(RAND_OpenSSL()); ++#endif + #else + OSSL_LIB_CTX *libctx = OSSL_LIB_CTX_new(); + if (!libctx) +@@ -615,8 +620,11 @@ iesys_cryptossl_pk_encrypt(TPM2B_PUBLIC * pub_tpm_key, + RSA *rsa_key = NULL; + const EVP_MD * hashAlg = NULL; + const RAND_METHOD *rand_save = RAND_get_rand_method(); +- ++#ifdef LIBRESSL_VERSION_NUMBER ++ RAND_set_rand_method(RAND_SSLeay()); ++#else + RAND_set_rand_method(RAND_OpenSSL()); ++#endif + #else + OSSL_LIB_CTX *libctx = NULL; + EVP_MD * hashAlg = NULL; +@@ -919,7 +927,7 @@ iesys_cryptossl_get_ecdh_point(TPM2B_PUBLIC *key, + curveId = NID_secp521r1; + key_size = 66; + break; +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + case TPM2_ECC_SM2_P256: + curveId = NID_sm2; + key_size = 32; +diff --git a/src/tss2-fapi/fapi_crypto.c b/src/tss2-fapi/fapi_crypto.c +index 3f11b3d6..0d03c5b1 100644 +--- a/src/tss2-fapi/fapi_crypto.c ++++ b/src/tss2-fapi/fapi_crypto.c +@@ -544,7 +544,7 @@ ossl_ecc_pub_from_tpm(const TPM2B_PUBLIC *tpmPublicKey, EVP_PKEY **evpPublicKey) + case TPM2_ECC_NIST_P521: + curveId = NID_secp521r1; + break; +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + case TPM2_ECC_SM2_P256: + curveId = NID_sm2; + break; +@@ -1195,7 +1195,7 @@ get_ecc_tpm2b_public_from_evp( + case NID_secp521r1: + tpmCurveId = TPM2_ECC_NIST_P521; + break; +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + case NID_sm2: + tpmCurveId = TPM2_ECC_SM2_P256; + break; diff --git a/app-crypt/tpm2-tss/files/tpm2-tss-4.0.0-Dont-install-files-into-run.patch b/app-crypt/tpm2-tss/files/tpm2-tss-4.0.0-Dont-install-files-into-run.patch new file mode 100644 index 0000000..ca51ab7 --- /dev/null +++ b/app-crypt/tpm2-tss/files/tpm2-tss-4.0.0-Dont-install-files-into-run.patch @@ -0,0 +1,26 @@ +diff --git a/Makefile.am b/Makefile.am +index 2c81cfa9..2673995c 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -767,13 +767,11 @@ define set_tss_permissions + endef + + define make_fapi_dirs +- ($(call make_tss_dir,$(DESTDIR)$(runstatedir)/tpm2-tss/eventlog/) || true) && \ + ($(call make_tss_dir,$(DESTDIR)$(localstatedir)/lib/tpm2-tss/system/keystore/)) + endef + + define set_fapi_permissions + if test -z "${DESTDIR}"; then \ e +- ($(call set_tss_permissions,$(DESTDIR)$(runstatedir)/tpm2-tss)) && \ + ($(call set_tss_permissions,$(DESTDIR)$(localstatedir)/lib/tpm2-tss)) \ + fi + endef +@@ -784,7 +782,6 @@ endef + + define check_fapi_dirs + if test -z "${DESTDIR}"; then \ +- ($(call check_dir,$(DESTDIR)$(runstatedir)/tpm2-tss/eventlog/)) && \ + ($(call check_dir,$(DESTDIR)$(localstatedir)/lib/tpm2-tss/system/keystore/)) \ + fi; + endef diff --git a/app-crypt/tpm2-tss/files/tpm2-tss-4.0.0-libressl-no-cert-tests.patch b/app-crypt/tpm2-tss/files/tpm2-tss-4.0.0-libressl-no-cert-tests.patch new file mode 100644 index 0000000..d402822 --- /dev/null +++ b/app-crypt/tpm2-tss/files/tpm2-tss-4.0.0-libressl-no-cert-tests.patch @@ -0,0 +1,90 @@ +Upstream-PR: https://github.com/tpm2-software/tpm2-tss/pull/2585 + +From 59d5382e94a2ace2292cb0add68c5e94cf1c071c Mon Sep 17 00:00:00 2001 +From: Juergen Repp <juergen_repp@web.de> +Date: Wed, 22 Mar 2023 10:54:59 +0100 +Subject: [PATCH] FAPI: Skip test fapi-fix-provisioning-with template if no + certificate is available. + +If the configure option --enable-self-generated-certificate is not used this +test can't be executed because no certificate will be stored in NV ram. The +test will be skipped if no certificate is available. +Fixes: #2558 + +Signed-off-by: Juergen Repp <juergen_repp@web.de> +--- + .../fapi-provisioning-with-template.int.c | 40 ++++++++++++++++++- + 1 file changed, 39 insertions(+), 1 deletion(-) + +diff --git a/test/integration/fapi-provisioning-with-template.int.c b/test/integration/fapi-provisioning-with-template.int.c +index 27f8e579d..ddef2a8e1 100644 +--- a/test/integration/fapi-provisioning-with-template.int.c ++++ b/test/integration/fapi-provisioning-with-template.int.c +@@ -4,6 +4,8 @@ + #endif + + #include <stdlib.h> ++#include <stdio.h> ++#include <unistd.h> + + #include "tss2_esys.h" + #include "tss2_fapi.h" +@@ -31,6 +33,39 @@ + * @retval EXIT_SKIP + * + */ ++static bool ++fapi_ek_certless() ++{ ++ FILE *stream = NULL; ++ long config_size; ++ char *config = NULL; ++ char *fapi_config_file = getenv("TSS2_FAPICONF"); ++ ++ stream = fopen(fapi_config_file, "r"); ++ if (!stream) { ++ LOG_ERROR("File %s does not exist", fapi_config_file); ++ return NULL; ++ } ++ fseek(stream, 0L, SEEK_END); ++ config_size = ftell(stream); ++ fclose(stream); ++ config = malloc(config_size + 1); ++ stream = fopen(fapi_config_file, "r"); ++ ssize_t ret = read(fileno(stream), config, config_size); ++ if (ret != config_size) { ++ LOG_ERROR("IO error %s.", fapi_config_file); ++ return NULL; ++ } ++ config[config_size] = '\0'; ++ if (strstr(config, "\"ek_cert_less\": \"yes\"") == NULL) { ++ SAFE_FREE(config); ++ return false; ++ } else { ++ SAFE_FREE(config); ++ return true; ++ } ++} ++ + int + test_fapi_provision_template(FAPI_CONTEXT *context) + { +@@ -148,6 +183,9 @@ test_fapi_provision_template(FAPI_CONTEXT *context) + TPM2B_AUTH auth = { .size = 0, .buffer = {} }; + TPM2B_MAX_NV_BUFFER nv_data; + ++ if (fapi_ek_certless()) ++ return EXIT_SKIP; ++ + if (strcmp(FAPI_PROFILE, "P_ECC") == 0) { + nv_template_idx = ecc_nv_template_idx; + nv_nonce_idx = ecc_nv_nonce_idx; +@@ -166,7 +204,7 @@ test_fapi_provision_template(FAPI_CONTEXT *context) + r = Esys_Initialize(&esys_ctx, tcti, NULL); + goto_if_error(r, "Error Esys_Initialize", error); + +- /* ++ /* + * Store template (marshaled TPMT_PUBLIC) in NV ram. + */ + r = Tss2_MU_TPMT_PUBLIC_Marshal(&in_public, &nv_data.buffer[0], diff --git a/app-crypt/tpm2-tss/files/tpm2-tss-4.0.1-Make-sysusers-and-tmpfiles-optional.patch b/app-crypt/tpm2-tss/files/tpm2-tss-4.0.1-Make-sysusers-and-tmpfiles-optional.patch new file mode 100644 index 0000000..d93fcf9 --- /dev/null +++ b/app-crypt/tpm2-tss/files/tpm2-tss-4.0.1-Make-sysusers-and-tmpfiles-optional.patch @@ -0,0 +1,50 @@ +From 75f53cf7eab591870ce735203995d01d2f577187 Mon Sep 17 00:00:00 2001 +From: Christopher Byrne <salah.coronya@gmail.com> +Date: Tue, 13 Jun 2023 21:40:56 -0500 +Subject: [PATCH] configure.ac: Make sysusers and tmpfiles optional + +Signed-off-by: Christopher Byrne <salah.coronya@gmail.com> +--- + Makefile.am | 6 +++++- + configure.ac | 4 ++-- + 2 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 2c81cfa9..98965fa7 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -563,10 +563,14 @@ fapi-config.json: dist/fapi-config.json.in + -e 's|[@]sysmeasurements@|$(sysmeasurements)|g' \ + < "$<" > "$@" + ++if SYSD_SYSUSERS + sysusers_DATA = dist/sysusers.d/tpm2-tss.conf +-tmpfiles_DATA = tpm2-tss-fapi.conf ++endif + ++if SYSD_TMPFILES ++tmpfiles_DATA = tpm2-tss-fapi.conf + CLEANFILES += tpm2-tss-fapi.conf ++endif + + # We have to do this ourselves, in order to get absolute paths + tpm2-tss-fapi.conf: dist/tmpfiles.d/tpm2-tss-fapi.conf.in +diff --git a/configure.ac b/configure.ac +index b6550278..2d478147 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -550,9 +550,9 @@ AS_IF([test "x$enable_integration" = "xyes" && test "x$enable_self_generated_cer + + # Check for systemd helper tools used by make install + AC_CHECK_PROG(systemd_sysusers, systemd-sysusers, yes) +-AM_CONDITIONAL(SYSD_SYSUSERS, test "x$systemd_sysusers" = "xyes") ++AM_CONDITIONAL([SYSD_SYSUSERS], [test "x$systemd_sysusers" = "xyes" && test "x$sysusersdir" != "xno"]) + AC_CHECK_PROG(systemd_tmpfiles, systemd-tmpfiles, yes) +-AM_CONDITIONAL(SYSD_TMPFILES, test "x$systemd_tmpfiles" = "xyes") ++AM_CONDITIONAL([SYSD_TMPFILES], [test "x$systemd_tmpfiles" = "xyes" && test "x$tmpfilesdir" != "xno"]) + + # Check all tools used by make install + AS_IF([test "$HOSTOS" = "Linux" && test "x$systemd_sysusers" != "xyes"], +-- +2.39.3 + diff --git a/app-crypt/tpm2-tss/metadata.xml b/app-crypt/tpm2-tss/metadata.xml new file mode 100644 index 0000000..ada5791 --- /dev/null +++ b/app-crypt/tpm2-tss/metadata.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>salah.coronya@gmail.com</email> + <name>Christopher Byrne</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <use> + <flag name="fapi">Enable feature API (requires openssl as crypto backend)</flag> + <flag name="mbedtls">Use <pkg>net-libs/mbedtls</pkg> as crypto engine</flag> + <flag name="openssl">Use <pkg>dev-libs/openssl</pkg> as crypto engine</flag> + <flag name="policy">Enable policy library (requires openssl as crypto backend)</flag> + </use> + <upstream> + <remote-id type="github">tpm2-software/tpm2-tss</remote-id> + </upstream> +</pkgmetadata> diff --git a/app-crypt/tpm2-tss/tpm2-tss-4.0.1.ebuild b/app-crypt/tpm2-tss/tpm2-tss-4.0.1.ebuild new file mode 100644 index 0000000..a0f8412 --- /dev/null +++ b/app-crypt/tpm2-tss/tpm2-tss-4.0.1.ebuild @@ -0,0 +1,102 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools flag-o-matic linux-info multilib-minimal tmpfiles udev + +DESCRIPTION="TCG Trusted Platform Module 2.0 Software Stack" +HOMEPAGE="https://github.com/tpm2-software/tpm2-tss" +SRC_URI="https://github.com/tpm2-software/${PN}/releases/download/${PV}/${P}.tar.gz" + +LICENSE="BSD-2" +SLOT="0/4" +KEYWORDS="amd64 arm arm64 ~loong ppc64 ~riscv x86" +IUSE="doc +fapi +openssl mbedtls +policy static-libs test" + +RESTRICT="!test? ( test )" + +REQUIRED_USE="^^ ( mbedtls openssl ) + fapi? ( openssl !mbedtls ) + policy? ( openssl !mbedtls )" + +RDEPEND="acct-group/tss + acct-user/tss + sys-apps/util-linux:=[${MULTILIB_USEDEP}] + fapi? ( dev-libs/json-c:=[${MULTILIB_USEDEP}] + >=net-misc/curl-7.80.0[${MULTILIB_USEDEP}] ) + mbedtls? ( net-libs/mbedtls:=[${MULTILIB_USEDEP}] ) + openssl? ( dev-libs/openssl:=[${MULTILIB_USEDEP}] )" + +DEPEND="${RDEPEND} + test? ( app-crypt/swtpm + dev-libs/uthash + dev-util/cmocka + fapi? ( >=net-misc/curl-7.80.0 ) )" +BDEPEND="sys-apps/acl + virtual/pkgconfig + doc? ( app-text/doxygen )" + +PATCHES=( + "${FILESDIR}/${PN}-3.2.0-libressl.patch" + "${FILESDIR}/${PN}-4.0.0-libressl-no-cert-tests.patch" + "${FILESDIR}/${PN}-4.0.0-Dont-install-files-into-run.patch" + "${FILESDIR}/${PN}-4.0.1-Make-sysusers-and-tmpfiles-optional.patch" + ) + +pkg_setup() { + local CONFIG_CHECK=" \ + ~TCG_TPM + " + linux-info_pkg_setup + kernel_is ge 4 12 0 || ewarn "At least kernel 4.12.0 is required" +} + +src_prepare() { + default + eautoreconf +} + +multilib_src_configure() { + # Fails with inlining + filter-flags -fno-semantic-interposition + # tests fail with LTO enabbled. See bug 865275 and 865279 + filter-lto + + # Disable for libressl for now + # https://github.com/tpm2-software/tpm2-tss/pull/2380 + # $(multilib_native_use_enable test self-generated-certificate) \ + + ECONF_SOURCE=${S} econf \ + --localstatedir=/var \ + $(multilib_native_use_enable doc doxygen-doc) \ + $(use_enable fapi) \ + $(use_enable policy) \ + $(use_enable static-libs static) \ + $(multilib_native_use_enable test unit) \ + $(multilib_native_use_enable test integration) \ + --disable-tcti-libtpms \ + --disable-defaultflags \ + --disable-weakcrypto \ + --with-crypto="$(usex mbedtls mbed ossl)" \ + --with-runstatedir=/run \ + --with-udevrulesdir="$(get_udevdir)/rules.d" \ + --with-udevrulesprefix=60- \ + --without-sysusersdir \ + --with-tmpfilesdir="/usr/lib/tmpfiles.d" +} + +multilib_src_install() { + default + keepdir /var/lib/tpm2-tss/system/keystore + find "${ED}" -name '*.la' -delete || die +} + +pkg_postinst() { + tmpfiles_process tpm2-tss-fapi.conf + udev_reload +} + +pkg_postrm() { + udev_reload +} diff --git a/app-crypt/trousers/Manifest b/app-crypt/trousers/Manifest new file mode 100644 index 0000000..4556d86 --- /dev/null +++ b/app-crypt/trousers/Manifest @@ -0,0 +1 @@ +DIST trousers-0.3.15.tar.gz 4699936 BLAKE2B 53c60498ed6a9d3d87295b00676e5d0d82452918c35af6b98c7979ffa2dc04dd817e7cd3f4a33ca17c30b90eab53d80b2bb25306fe9db7bda2125019edfed280 SHA512 769c7d891c6306c1b3252448f86e3043ee837e566c9431f5b4353512113e2907f6ce29c91e8044c420025b79c5f3ff2396ddce93f73b1eb2a15ea1de89ac0fdb diff --git a/app-crypt/trousers/files/61-trousers.rules b/app-crypt/trousers/files/61-trousers.rules new file mode 100644 index 0000000..20e89cb --- /dev/null +++ b/app-crypt/trousers/files/61-trousers.rules @@ -0,0 +1,2 @@ +KERNEL=="tpm[0-9]*", MODE="0660", OWNER="tss", GROUP="tss", SYMLINK+="tpm" +# vim: ft=udevrules: diff --git a/app-crypt/trousers/files/tcsd.initd b/app-crypt/trousers/files/tcsd.initd new file mode 100644 index 0000000..9b18c48 --- /dev/null +++ b/app-crypt/trousers/files/tcsd.initd @@ -0,0 +1,19 @@ +#!/sbin/openrc-run +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +command=/usr/sbin/tcsd +description="TrouSerS' TCS daemon (tcsd)" +command_user="tss:tss" + +depend() { + use logger + need net +} + +start_pre() { + if [ ! -c /dev/tpm ] && [ ! -c /dev/tpm0 ] ; then + eerror "No TPM device found!" + return 1 + fi +} diff --git a/app-crypt/trousers/files/tcsd.service b/app-crypt/trousers/files/tcsd.service new file mode 100644 index 0000000..4a46e61 --- /dev/null +++ b/app-crypt/trousers/files/tcsd.service @@ -0,0 +1,10 @@ +[Unit] +Description=TCG Core Services Daemon + +[Service] +User=tss +ExecStart=/usr/sbin/tcsd -f + +[Install] +WantedBy=multi-user.target + diff --git a/app-crypt/trousers/files/trousers-0.3.13-nouseradd.patch b/app-crypt/trousers/files/trousers-0.3.13-nouseradd.patch new file mode 100644 index 0000000..5426e99 --- /dev/null +++ b/app-crypt/trousers/files/trousers-0.3.13-nouseradd.patch @@ -0,0 +1,12 @@ +diff -urNp trousers-0.3.13.org/dist/Makefile.am trousers-0.3.13/dist/Makefile.am +--- trousers-0.3.13.org/dist/Makefile.am 2014-04-24 21:05:43.000000000 +0300 ++++ trousers-0.3.13/dist/Makefile.am 2015-04-08 10:05:51.018955728 +0300 +@@ -11,8 +11,6 @@ endif + install-exec-hook: + /bin/sh -c 'if [ ! -e ${DESTDIR}/@localstatedir@/lib/tpm ];then mkdir -p ${DESTDIR}/@localstatedir@/lib/tpm; fi' + if !NOUSERCHECK +- /usr/sbin/groupadd tss || true +- /usr/sbin/useradd -r tss -g tss || true + /bin/chown tss:tss ${DESTDIR}/@localstatedir@/lib/tpm || true + /bin/chmod 0700 ${DESTDIR}/@localstatedir@/lib/tpm + endif diff --git a/app-crypt/trousers/files/trousers-0.3.14-Makefile.am-Mark-tddl.a-nodist.patch b/app-crypt/trousers/files/trousers-0.3.14-Makefile.am-Mark-tddl.a-nodist.patch new file mode 100644 index 0000000..f777b62 --- /dev/null +++ b/app-crypt/trousers/files/trousers-0.3.14-Makefile.am-Mark-tddl.a-nodist.patch @@ -0,0 +1,25 @@ +From 5b1dbb5f8eada9002ec10f4ebc0bc418272e58b2 Mon Sep 17 00:00:00 2001 +From: Salah Coronya <salah.coronya@gmail.com> +Date: Sun, 7 Jun 2020 12:34:03 -0500 +Subject: [PATCH] src/tddl/Makefile.am: Mark tddl.a nodist + +This makes tddl.a nodist like the others, so it is not installed + +Signed-off-by: Salah Coronya <salah.coronya@gmail.com> +--- + src/tddl/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/tddl/Makefile.am b/src/tddl/Makefile.am +index 607eb8e..2cd599b 100644 +--- a/src/tddl/Makefile.am ++++ b/src/tddl/Makefile.am +@@ -1,4 +1,4 @@ +-lib_LIBRARIES=libtddl.a ++noinst_LIBRARIES=libtddl.a + + libtddl_a_SOURCES=tddl.c + libtddl_a_CFLAGS=-DAPPID=\"TCSD\ TDDL\" -I${top_srcdir}/src/include -fPIE -DPIE +-- +2.26.2 + diff --git a/app-crypt/trousers/files/trousers-0.3.15-libressl.patch b/app-crypt/trousers/files/trousers-0.3.15-libressl.patch new file mode 100644 index 0000000..e4aee00 --- /dev/null +++ b/app-crypt/trousers/files/trousers-0.3.15-libressl.patch @@ -0,0 +1,31 @@ +From 88e90ee4c36f0decdf7c15e271bccb8b0809a21a Mon Sep 17 00:00:00 2001 +From: Stefan Strogin <stefan@steils.org> +Date: Tue, 24 Nov 2020 11:08:13 +0200 +Subject: [PATCH] trousers: do not re-declare RSA_set0_key with LibreSSL + +The method RSA_set0_key is provided by LibreSSL since 2.7.0, that means +in all currently supported versions. + +Upstream-Status: Submitted +[https://sourceforge.net/p/trousers/trousers/merge-requests/2/] +Signed-off-by: Stefan Strogin <stefan@steils.org> +--- + src/trspi/crypto/openssl/rsa.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/trspi/crypto/openssl/rsa.c b/src/trspi/crypto/openssl/rsa.c +index 24f13e7..cf46c08 100644 +--- a/src/trspi/crypto/openssl/rsa.c ++++ b/src/trspi/crypto/openssl/rsa.c +@@ -38,7 +38,7 @@ + #define DEBUG_print_openssl_errors() + #endif + +-#if (OPENSSL_VERSION_NUMBER < 0x10100001L) || defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER < 0x10100001L) + static int + RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d) + { +-- +2.29.2 + diff --git a/app-crypt/trousers/files/trousers-0.3.15-tspi-drop-the-use-of-getpwent_r.patch b/app-crypt/trousers/files/trousers-0.3.15-tspi-drop-the-use-of-getpwent_r.patch new file mode 100644 index 0000000..ab6ef76 --- /dev/null +++ b/app-crypt/trousers/files/trousers-0.3.15-tspi-drop-the-use-of-getpwent_r.patch @@ -0,0 +1,69 @@ +https://bugs.gentoo.org/713444 + +From 2299eadf77ae7a7ec52148b6a8f4ea37e217eafa Mon Sep 17 00:00:00 2001 +From: Stijn Tintel <stijn@linux-ipv6.be> +Date: Thu, 2 Feb 2023 01:06:15 +0200 +Subject: [PATCH] tspi: drop the use of getpwent_r + +On systems with musl libc, libtspi.so is unusable due to the lack of +getpwent_r. As there are multiple historical functions named getpwent_r +that all behave differently, let's just play it safe and stop using it +altogether. + +Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> +--- + src/tspi/ps/tspps.c | 16 ---------------- + 1 file changed, 16 deletions(-) + +diff --git a/src/tspi/ps/tspps.c b/src/tspi/ps/tspps.c +index b5e83d0..ae7b3df 100644 +--- a/src/tspi/ps/tspps.c ++++ b/src/tspi/ps/tspps.c +@@ -51,9 +51,7 @@ + + static int user_ps_fd = -1; + static MUTEX_DECLARE_INIT(user_ps_lock); +-#if (defined (__FreeBSD__) || defined (__OpenBSD__)) + static MUTEX_DECLARE_INIT(user_ps_path); +-#endif + static struct flock fl; + + +@@ -66,9 +64,6 @@ get_user_ps_path(char **file) + TSS_RESULT result; + char *file_name = NULL, *home_dir = NULL; + struct passwd *pwp; +-#if (defined (__linux) || defined (linux) || defined(__GLIBC__)) +- struct passwd pw; +-#endif + struct stat stat_buf; + char buf[PASSWD_BUFSIZE]; + uid_t euid; +@@ -96,16 +91,6 @@ get_user_ps_path(char **file) + #else + setpwent(); + while (1) { +-#if (defined (__linux) || defined (linux) || defined(__GLIBC__)) +- rc = getpwent_r(&pw, buf, PASSWD_BUFSIZE, &pwp); +- if (rc) { +- LogDebugFn("USER PS: Error getting path to home directory: getpwent_r: %s", +- strerror(rc)); +- endpwent(); +- return TSPERR(TSS_E_INTERNAL_ERROR); +- } +- +-#elif (defined (__FreeBSD__) || defined (__OpenBSD__)) + if ((pwp = getpwent()) == NULL) { + LogDebugFn("USER PS: Error getting path to home directory: getpwent: %s", + strerror(rc)); +@@ -113,7 +98,6 @@ get_user_ps_path(char **file) + MUTEX_UNLOCK(user_ps_path); + return TSPERR(TSS_E_INTERNAL_ERROR); + } +-#endif + if (euid == pwp->pw_uid) { + home_dir = strdup(pwp->pw_dir); + break; +-- +2.39.1 + diff --git a/app-crypt/trousers/metadata.xml b/app-crypt/trousers/metadata.xml new file mode 100644 index 0000000..2eceffb --- /dev/null +++ b/app-crypt/trousers/metadata.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>salah.coronya@gmail.com</email> + <name>Christopher Byrne</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <upstream> + <remote-id type="cpe">cpe:/a:debian:trousers</remote-id> + <remote-id type="sourceforge">trousers</remote-id> + </upstream> +</pkgmetadata> diff --git a/app-crypt/trousers/trousers-0.3.15-r1.ebuild b/app-crypt/trousers/trousers-0.3.15-r1.ebuild new file mode 100644 index 0000000..5176e27 --- /dev/null +++ b/app-crypt/trousers/trousers-0.3.15-r1.ebuild @@ -0,0 +1,74 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools linux-info readme.gentoo-r1 systemd udev + +DESCRIPTION="An open-source TCG Software Stack (TSS) v1.1 implementation" +HOMEPAGE="http://trousers.sf.net" +SRC_URI="mirror://sourceforge/trousers/${PN}/${P}.tar.gz" + +LICENSE="CPL-1.0 GPL-2" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 x86" +IUSE="doc selinux" # gtk + +# gtk support presently does NOT compile. +# gtk? ( >=x11-libs/gtk+-2 ) + +DEPEND="acct-group/tss + acct-user/tss + >=dev-libs/glib-2 + >=dev-libs/openssl-0.9.7:0= + " +RDEPEND="${DEPEND} + selinux? ( sec-policy/selinux-tcsd )" +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}/${PN}-0.3.13-nouseradd.patch" + "${FILESDIR}/${PN}-0.3.14-Makefile.am-Mark-tddl.a-nodist.patch" + "${FILESDIR}/${P}-tspi-drop-the-use-of-getpwent_r.patch" + "${FILESDIR}/${P}-libressl.patch" +) + +DOCS="AUTHORS ChangeLog NICETOHAVES README TODO" + +DOC_CONTENTS=" + If you have problems starting tcsd, please check permissions and + ownership on /dev/tpm* and ~tss/system.data +" + +CONFIG_CHECK="~TCG_TPM" + +src_prepare() { + default + eautoreconf +} + +src_configure() { + # econf --with-gui=$(usex gtk gtk openssl) + econf --with-gui=openssl +} + +src_install() { + default + find "${D}" -name '*.la' -delete || die + + keepdir /var/lib/tpm + use doc && dodoc doc/* + newinitd "${FILESDIR}"/tcsd.initd tcsd + systemd_dounit "${FILESDIR}"/tcsd.service + udev_dorules "${FILESDIR}"/61-trousers.rules + fowners tss:tss /var/lib/tpm + readme.gentoo_create_doc +} + +pkg_postinst() { + udev_reload +} + +pkg_postrm() { + udev_reload +} diff --git a/app-crypt/trousers/trousers-0.3.15.ebuild b/app-crypt/trousers/trousers-0.3.15.ebuild new file mode 100644 index 0000000..cbf4494 --- /dev/null +++ b/app-crypt/trousers/trousers-0.3.15.ebuild @@ -0,0 +1,73 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools linux-info readme.gentoo-r1 systemd udev + +DESCRIPTION="An open-source TCG Software Stack (TSS) v1.1 implementation" +HOMEPAGE="http://trousers.sf.net" +SRC_URI="mirror://sourceforge/trousers/${PN}/${P}.tar.gz" + +LICENSE="CPL-1.0 GPL-2" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~loong ~m68k ~ppc ppc64 ~riscv ~s390 x86" +IUSE="doc selinux" # gtk + +# gtk support presently does NOT compile. +# gtk? ( >=x11-libs/gtk+-2 ) + +DEPEND="acct-group/tss + acct-user/tss + >=dev-libs/glib-2 + >=dev-libs/openssl-0.9.7:0= + " +RDEPEND="${DEPEND} + selinux? ( sec-policy/selinux-tcsd )" +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}/${PN}-0.3.13-nouseradd.patch" + "${FILESDIR}/${PN}-0.3.14-Makefile.am-Mark-tddl.a-nodist.patch" + "${FILESDIR}/${P}-libressl.patch" +) + +DOCS="AUTHORS ChangeLog NICETOHAVES README TODO" + +DOC_CONTENTS=" + If you have problems starting tcsd, please check permissions and + ownership on /dev/tpm* and ~tss/system.data +" + +CONFIG_CHECK="~TCG_TPM" + +src_prepare() { + default + eautoreconf +} + +src_configure() { + # econf --with-gui=$(usex gtk gtk openssl) + econf --with-gui=openssl +} + +src_install() { + default + find "${D}" -name '*.la' -delete || die + + keepdir /var/lib/tpm + use doc && dodoc doc/* + newinitd "${FILESDIR}"/tcsd.initd tcsd + systemd_dounit "${FILESDIR}"/tcsd.service + udev_dorules "${FILESDIR}"/61-trousers.rules + fowners tss:tss /var/lib/tpm + readme.gentoo_create_doc +} + +pkg_postinst() { + udev_reload +} + +pkg_postrm() { + udev_reload +} diff --git a/app-emulation/spice/Manifest b/app-emulation/spice/Manifest new file mode 100644 index 0000000..c75ff31 --- /dev/null +++ b/app-emulation/spice/Manifest @@ -0,0 +1,2 @@ +DIST spice-0.15.1.tar.bz2 1623290 BLAKE2B 19ddb3cac91be07a4a358ed89a5e4d1a5c406a9831b8c8a518764055354ecf6e09d129ae03ba65d876669da72f2cbf0c307261564097f60951711e9852eebb69 SHA512 362ab2f0b483911830693834515e1d331a6b929c5c63fd4522e843c42bbb7d8a52510d60f5f17d175dd2617c9621630f6a81f3ff7dce11dc28e6fb135e60fa86 +DIST spice-0.15.2.tar.bz2 1663326 BLAKE2B 00f5393ac409590b8fe0203251b811a4fe6dca16e644a30dd8165d57ff28cbef3b2f9c2a92ff7d2f6c8092bbef4f89a4e85ef9228cc8c03b0a163ffa3afaf9f6 SHA512 c8f273b9e97ef38a03b331f7d32c5f0a09d540523fe626568c845152cbd22273a92b3a08bc13fa2e061b913ad16ceb7cbddf142655cd9cdcd8eb5f646fa6aa26 diff --git a/app-emulation/spice/files/README.gentoo b/app-emulation/spice/files/README.gentoo new file mode 100644 index 0000000..1920ea6 --- /dev/null +++ b/app-emulation/spice/files/README.gentoo @@ -0,0 +1,7 @@ + +If you choose to enable the video streaming support of gstreamer, +please try to install addtional gst-plugins which matching the video codecs + + mjpeg media-plugins/gst-plugins-libav:1.0 + vpx media-plugins/gst-plugins-vpx:1.0 + x264 media-plugins/gst-plugins-x264:1.0 diff --git a/app-emulation/spice/files/spice-0.15.0-libressl.patch b/app-emulation/spice/files/spice-0.15.0-libressl.patch new file mode 100644 index 0000000..84f2088 --- /dev/null +++ b/app-emulation/spice/files/spice-0.15.0-libressl.patch @@ -0,0 +1,38 @@ +https://gitlab.freedesktop.org/spice/spice/-/merge_requests/217 + +From 60ee531e7a3572f93143f810089f7f4f591c63b0 Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Fri, 26 May 2023 13:38:34 -0700 +Subject: [PATCH] server: add SSL_OP_NO_RENEGOTIATION fallback path + +With LibreSSL SSL_OP_NO_CLIENT_RENEGOTIATION is opaque which is not +compatible with the OpenSSL 1.0.2 and earlier code path in +red-stream.cpp while SSL_OP_NO_RENEGOTIATION is not yet defined for the +newer OpenSSL code path in reds.cpp. + +So with OpenSSL 1.1.0 and later if SSL_OP_NO_RENEGOTIATION is undefined +and SSL_OP_NO_CLIENT_RENEGOTIATION is defined then define the former as +the latter. This will allow the build to succeed with LibreSSL 3.7.2 and +in the future when newer LibreSSL versions add SSL_OP_NO_RENEGOTIATION +that code path will then be used automatically. + +Signed-off-by: orbea <orbea@riseup.net> +--- + server/red-stream.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/server/red-stream.h b/server/red-stream.h +index 716e93317..8e57c5e5e 100644 +--- a/server/red-stream.h ++++ b/server/red-stream.h +@@ -25,6 +25,10 @@ + + SPICE_BEGIN_DECLS + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(SSL_OP_NO_RENEGOTIATION) && defined(SSL_OP_NO_CLIENT_RENEGOTIATION) ++#define SSL_OP_NO_RENEGOTIATION SSL_OP_NO_CLIENT_RENEGOTIATION ++#endif ++ + typedef void (*AsyncReadDone)(void *opaque); + typedef void (*AsyncReadError)(void *opaque, int err); + diff --git a/app-emulation/spice/metadata.xml b/app-emulation/spice/metadata.xml new file mode 100644 index 0000000..ce2f1ef --- /dev/null +++ b/app-emulation/spice/metadata.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>virtualization@gentoo.org</email> + <name>Gentoo Virtualization Project</name> + </maintainer> + <use> + <flag name="smartcard">Enable smartcard remoting using <pkg>app-emulation/libcacard</pkg></flag> + </use> + <upstream> + <remote-id type="freedesktop-gitlab">spice/spice</remote-id> + </upstream> +</pkgmetadata> diff --git a/app-emulation/spice/spice-0.15.1-r1.ebuild b/app-emulation/spice/spice-0.15.1-r1.ebuild new file mode 100644 index 0000000..6a8caef --- /dev/null +++ b/app-emulation/spice/spice-0.15.1-r1.ebuild @@ -0,0 +1,105 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10,11} ) +# Port to meson once https://gitlab.freedesktop.org/spice/spice/-/issues/75 is fixed +inherit autotools python-any-r1 readme.gentoo-r1 xdg-utils + +DESCRIPTION="SPICE server" +HOMEPAGE="https://www.spice-space.org/" +SRC_URI="https://www.spice-space.org/download/releases/spice-server/${P}.tar.bz2" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="amd64 arm64 ~loong ppc64 ~riscv x86" +IUSE="gstreamer lz4 sasl smartcard static-libs test" + +RESTRICT="!test? ( test )" + +# the libspice-server only uses the headers of libcacard +RDEPEND="dev-lang/orc[static-libs(+)?] + >=dev-libs/glib-2.38:2[static-libs(+)?] + dev-libs/openssl:0=[static-libs(+)?] + media-libs/opus[static-libs(+)?] + media-libs/libjpeg-turbo:0=[static-libs(+)?] + sys-libs/zlib[static-libs(+)?] + >=x11-libs/pixman-0.17.7[static-libs(+)?] + lz4? ( app-arch/lz4:0=[static-libs(+)?] ) + smartcard? ( >=app-emulation/libcacard-2.5.1 ) + sasl? ( dev-libs/cyrus-sasl[static-libs(+)?] ) + gstreamer? ( + media-libs/gstreamer:1.0 + media-libs/gst-plugins-base:1.0 + )" +DEPEND="${RDEPEND} + >=app-emulation/spice-protocol-0.14.3 + smartcard? ( app-emulation/qemu[smartcard] ) + test? ( net-libs/glib-networking )" +BDEPEND="${PYTHON_DEPS} + dev-build/autoconf-archive + virtual/pkgconfig + $(python_gen_any_dep ' + >=dev-python/pyparsing-1.5.6-r2[${PYTHON_USEDEP}] + dev-python/six[${PYTHON_USEDEP}] + ')" + +PATCHES=( + "${FILESDIR}"/${PN}-0.15.0-libressl.patch +) + +python_check_deps() { + python_has_version -b ">=dev-python/pyparsing-1.5.6-r2[${PYTHON_USEDEP}]" + python_has_version -b "dev-python/six[${PYTHON_USEDEP}]" +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && python-any-r1_pkg_setup +} + +src_prepare() { + default + + eautoreconf +} + +src_configure() { + # Prevent sandbox violations, bug #586560 + # https://bugzilla.gnome.org/show_bug.cgi?id=744134 + # https://bugzilla.gnome.org/show_bug.cgi?id=744135 + addpredict /dev + + xdg_environment_reset + + local myconf=( + $(use_enable static-libs static) + $(use_enable lz4) + $(use_with sasl) + $(use_enable smartcard) + $(use_enable test tests) + --enable-gstreamer=$(usex gstreamer "1.0" "no") + --disable-celt051 + ) + + econf "${myconf[@]}" +} + +src_compile() { + # Prevent sandbox violations, bug #586560 + # https://bugzilla.gnome.org/show_bug.cgi?id=744134 + # https://bugzilla.gnome.org/show_bug.cgi?id=744135 + addpredict /dev + + default +} + +src_install() { + default + use static-libs || find "${D}" -name '*.la' -type f -delete || die + readme.gentoo_create_doc +} + +pkg_postinst() { + readme.gentoo_print_elog +} diff --git a/app-emulation/spice/spice-0.15.2.ebuild b/app-emulation/spice/spice-0.15.2.ebuild new file mode 100644 index 0000000..1d4d70e --- /dev/null +++ b/app-emulation/spice/spice-0.15.2.ebuild @@ -0,0 +1,99 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..11} ) +inherit meson python-any-r1 readme.gentoo-r1 xdg-utils + +DESCRIPTION="SPICE server" +HOMEPAGE="https://www.spice-space.org/" +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://anongit.freedesktop.org/git/spice/spice.git" + inherit git-r3 + + DEPEND="~app-emulation/spice-protocol-9999" +else + SRC_URI="https://www.spice-space.org/download/releases/spice-server/${P}.tar.bz2" + KEYWORDS="amd64 arm64 ~loong ppc64 ~riscv x86" +fi + +LICENSE="LGPL-2.1" +SLOT="0" +IUSE="gstreamer lz4 sasl smartcard static-libs test" +RESTRICT="!test? ( test )" + +# The libspice-server only uses the headers of libcacard +RDEPEND=" + dev-lang/orc[static-libs(+)?] + >=dev-libs/glib-2.38:2[static-libs(+)?] + dev-libs/openssl:0=[static-libs(+)?] + media-libs/opus[static-libs(+)?] + media-libs/libjpeg-turbo:0=[static-libs(+)?] + sys-libs/zlib[static-libs(+)?] + >=x11-libs/pixman-0.17.7[static-libs(+)?] + lz4? ( app-arch/lz4:0=[static-libs(+)?] ) + smartcard? ( >=app-emulation/libcacard-2.5.1 ) + sasl? ( dev-libs/cyrus-sasl[static-libs(+)?] ) + gstreamer? ( + media-libs/gstreamer:1.0 + media-libs/gst-plugins-base:1.0 + ) +" +DEPEND+=" + ${RDEPEND} + >=app-emulation/spice-protocol-0.14.3 + smartcard? ( app-emulation/qemu[smartcard] ) + test? ( net-libs/glib-networking ) +" +BDEPEND=" + ${PYTHON_DEPS} + dev-util/glib-utils + virtual/pkgconfig + $(python_gen_any_dep ' + >=dev-python/pyparsing-1.5.6-r2[${PYTHON_USEDEP}] + dev-python/six[${PYTHON_USEDEP}] + ') +" + +PATCHES=( "${FILESDIR}"/${PN}-0.15.0-libressl.patch ) + +python_check_deps() { + python_has_version -b ">=dev-python/pyparsing-1.5.6-r2[${PYTHON_USEDEP}]" + python_has_version -b "dev-python/six[${PYTHON_USEDEP}]" +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && python-any-r1_pkg_setup +} + +src_configure() { + # Prevent sandbox violations, bug #586560 + # https://bugzilla.gnome.org/show_bug.cgi?id=744134 + # https://bugzilla.gnome.org/show_bug.cgi?id=744135 + use gstreamer && addpredict /dev + + xdg_environment_reset + + local emesonargs=( + -Ddefault_library=$(usex static-libs both shared) + -Dgstreamer=$(usex gstreamer 1.0 no) + -Dopus=enabled + -Dmanual=false + $(meson_use lz4) + $(meson_use sasl) + $(meson_feature smartcard) + $(meson_use test tests) + ) + + meson_src_configure +} + +src_install() { + meson_src_install + readme.gentoo_create_doc +} + +pkg_postinst() { + readme.gentoo_print_elog +} diff --git a/app-pda/libimobiledevice/Manifest b/app-pda/libimobiledevice/Manifest new file mode 100644 index 0000000..1a1995a --- /dev/null +++ b/app-pda/libimobiledevice/Manifest @@ -0,0 +1 @@ +DIST libimobiledevice-1.3.0.tar.bz2 733949 BLAKE2B 40717280bb3424c7431aa93d06d10de817e6761acf2b19948d80b691cfb4dd4ef0e31b81c8458eed29a43c8c8aa256da7baa3648fb785cfbdb7316daaba119a3 SHA512 7b22040552a6561729c79c0846f571b0e608abb7c297567d2ecfdd1718ce86df08a5e34ba51f209bdee96a1917da15e7ba3aaef1d289a951d1d3470b1f89e6a8 diff --git a/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-libressl.patch b/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-libressl.patch new file mode 100644 index 0000000..0957c91 --- /dev/null +++ b/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-libressl.patch @@ -0,0 +1,25 @@ +From 170e1c445e8c930f4ee9dddfb9f1bcf24c089962 Mon Sep 17 00:00:00 2001 +From: Nikias Bassen <nikias@gmx.li> +Date: Thu, 6 Aug 2020 20:43:08 +0200 +Subject: [PATCH] idevice: Fix build with LibreSSL + +Upstream-Status: Accepted +[https://github.com/libimobiledevice/libimobiledevice/commit/170e1c445e8c930f4ee9dddfb9f1bcf24c089962] +Signed-off-by: Stefan Strogin <steils@gentoo.org> +--- + src/idevice.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/idevice.c b/src/idevice.c +index fea1e03f..47c9ab4d 100644 +--- a/src/idevice.c ++++ b/src/idevice.c +@@ -1015,7 +1015,7 @@ LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_enable_ssl(idevice_conne + return ret; + } + +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + SSL_CTX_set_security_level(ssl_ctx, 0); + #endif + diff --git a/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-missing_libflags.patch b/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-missing_libflags.patch new file mode 100644 index 0000000..b52bf89 --- /dev/null +++ b/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-missing_libflags.patch @@ -0,0 +1,31 @@ +From 4b2f17e8cce8fa078aa55f5da5f726c20eac3e2e Mon Sep 17 00:00:00 2001 +From: Nikias Bassen <nikias@gmx.li> +Date: Tue, 13 Apr 2021 05:36:03 +0200 +Subject: [PATCH] common: Add missing *_LIBS and *_CFLAGS to fix build + +--- + common/Makefile.am | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/common/Makefile.am b/common/Makefile.am +index 4e3facba..ab01b834 100644 +--- a/common/Makefile.am ++++ b/common/Makefile.am +@@ -8,12 +8,17 @@ AM_CFLAGS = \ + $(libplist_CFLAGS) \ + $(libgnutls_CFLAGS) \ + $(libtasn1_CFLAGS) \ ++ $(libgcrypt_CFLAGS) \ + $(openssl_CFLAGS) \ + $(LFS_CFLAGS) + + AM_LDFLAGS = \ + $(libusbmuxd_LIBS) \ + $(libplist_LIBS) \ ++ $(libgnutls_LIBS) \ ++ $(libtasn1_LIBS) \ ++ $(libgcrypt_LIBS) \ ++ $(openssl_LIBS) \ + ${libpthread_LIBS} + + noinst_LTLIBRARIES = libinternalcommon.la diff --git a/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-python.patch b/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-python.patch new file mode 100644 index 0000000..28ca6da --- /dev/null +++ b/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-python.patch @@ -0,0 +1,223 @@ +https://github.com/libimobiledevice/libimobiledevice/pull/685 + +From fb337f26c8e58ed0ce0750f7899ccbd5da203dee Mon Sep 17 00:00:00 2001 +From: wendyisgr33n <wendyisgr33n@gmail.com> +Date: Mon, 30 Jul 2018 10:43:57 -0700 +Subject: [PATCH 1/5] Fixed AFC afc.pxi definitions for Python2/3 + compatibility. Added missing public method 'remove_path_and_contents' + +--- a/cython/afc.pxi ++++ b/cython/afc.pxi +@@ -52,6 +52,7 @@ cdef extern from "libimobiledevice/afc.h": + afc_error_t afc_read_directory(afc_client_t client, char *dir, char ***list) + afc_error_t afc_get_file_info(afc_client_t client, char *filename, char ***infolist) + afc_error_t afc_remove_path(afc_client_t client, char *path) ++ afc_error_t afc_remove_path_and_contents(afc_client_t client, char *path) + afc_error_t afc_rename_path(afc_client_t client, char *f, char *to) + afc_error_t afc_make_directory(afc_client_t client, char *dir) + afc_error_t afc_truncate(afc_client_t client, char *path, uint64_t newsize) +@@ -235,17 +236,17 @@ cdef class AfcClient(BaseService): + afc_file_mode_t c_mode + uint64_t handle + AfcFile f +- if mode == <bytes>'r': ++ if mode == b'r': + c_mode = AFC_FOPEN_RDONLY +- elif mode == <bytes>'r+': ++ elif mode == b'r+': + c_mode = AFC_FOPEN_RW +- elif mode == <bytes>'w': ++ elif mode == b'w': + c_mode = AFC_FOPEN_WRONLY +- elif mode == <bytes>'w+': ++ elif mode == b'w+': + c_mode = AFC_FOPEN_WR +- elif mode == <bytes>'a': ++ elif mode == b'a': + c_mode = AFC_FOPEN_APPEND +- elif mode == <bytes>'a+': ++ elif mode == b'a+': + c_mode = AFC_FOPEN_RDAPPEND + else: + raise ValueError("mode string must be 'r', 'r+', 'w', 'w+', 'a', or 'a+'") +@@ -282,6 +283,9 @@ cdef class AfcClient(BaseService): + cpdef remove_path(self, bytes path): + self.handle_error(afc_remove_path(self._c_client, path)) + ++ cpdef remove_path_and_contents(self, bytes path): ++ self.handle_error(afc_remove_path_and_contents(self._c_client, path)) ++ + cpdef rename_path(self, bytes f, bytes t): + self.handle_error(afc_rename_path(self._c_client, f, t)) + +@@ -308,17 +312,17 @@ cdef class Afc2Client(AfcClient): + afc_file_mode_t c_mode + uint64_t handle + AfcFile f +- if mode == <bytes>'r': ++ if mode == b'r': + c_mode = AFC_FOPEN_RDONLY +- elif mode == <bytes>'r+': ++ elif mode == b'r+': + c_mode = AFC_FOPEN_RW +- elif mode == <bytes>'w': ++ elif mode == b'w': + c_mode = AFC_FOPEN_WRONLY +- elif mode == <bytes>'w+': ++ elif mode == b'w+': + c_mode = AFC_FOPEN_WR +- elif mode == <bytes>'a': ++ elif mode == b'a': + c_mode = AFC_FOPEN_APPEND +- elif mode == <bytes>'a+': ++ elif mode == b'a+': + c_mode = AFC_FOPEN_RDAPPEND + else: + raise ValueError("mode string must be 'r', 'r+', 'w', 'w+', 'a', or 'a+'") + +From b71e8935949a1d6f419a3f783d804809fb4c309b Mon Sep 17 00:00:00 2001 +From: wendyisgr33n <wendyisgr33n@gmail.com> +Date: Mon, 30 Jul 2018 10:44:40 -0700 +Subject: [PATCH 2/5] Fixed debugserver.pxi PyString_AsString compatibility + with Python3 + +--- a/cython/debugserver.pxi ++++ b/cython/debugserver.pxi +@@ -44,7 +44,12 @@ cdef class DebugServerError(BaseError): + + + # from http://stackoverflow.com/a/17511714 +-from cpython.string cimport PyString_AsString ++# https://github.com/libimobiledevice/libimobiledevice/pull/198 ++from cpython cimport PY_MAJOR_VERSION ++if PY_MAJOR_VERSION <= 2: ++ from cpython.string cimport PyString_AsString ++else: ++ from cpython.bytes cimport PyBytes_AsString as PyString_AsString + cdef char ** to_cstring_array(list_str): + if not list_str: + return NULL + +From 44f54cdc0ebb052e4a642023bbf96504e6139ec9 Mon Sep 17 00:00:00 2001 +From: wendyisgr33n <wendyisgr33n@gmail.com> +Date: Mon, 30 Jul 2018 10:45:22 -0700 +Subject: [PATCH 3/5] Fixed bytes/strings check in imobiledevice.pyx for + compatibility with Python2/3 + +--- a/cython/imobiledevice.pyx ++++ b/cython/imobiledevice.pyx +@@ -171,7 +171,7 @@ from libc.stdlib cimport * + cdef class iDevice(Base): + def __cinit__(self, object udid=None, *args, **kwargs): + cdef char* c_udid = NULL +- if isinstance(udid, basestring): ++ if isinstance(udid, (str, bytes)): + c_udid = <bytes>udid + elif udid is not None: + raise TypeError("iDevice's constructor takes a string or None as the udid argument") + +From 8908619973e751b778d3fb73dc309cd5cb7f4122 Mon Sep 17 00:00:00 2001 +From: wendyisgr33n <wendyisgr33n@gmail.com> +Date: Mon, 30 Jul 2018 10:45:55 -0700 +Subject: [PATCH 4/5] Fixed bytes/strings checks in lockdown.pxi for + compatibility with Python2/3 + +--- a/cython/lockdown.pxi ++++ b/cython/lockdown.pxi +@@ -230,9 +230,9 @@ cdef class LockdownClient(PropertyListService): + + if issubclass(service, BaseService) and \ + service.__service_name__ is not None \ +- and isinstance(service.__service_name__, basestring): ++ and isinstance(service.__service_name__, (str, bytes)): + c_service_name = <bytes>service.__service_name__ +- elif isinstance(service, basestring): ++ elif isinstance(service, (str, bytes)): + c_service_name = <bytes>service + else: + raise TypeError("LockdownClient.start_service() takes a BaseService or string as its first argument") +@@ -253,7 +253,7 @@ cdef class LockdownClient(PropertyListService): + + if not hasattr(service_class, '__service_name__') and \ + not service_class.__service_name__ is not None \ +- and not isinstance(service_class.__service_name__, basestring): ++ and not isinstance(service_class.__service_name__, (str, bytes)): + raise TypeError("LockdownClient.get_service_client() takes a BaseService as its first argument") + + descriptor = self.start_service(service_class) + +From e59cbdbf4e7dba98ef57a54e314a89edfea0a3dc Mon Sep 17 00:00:00 2001 +From: wendyisgr33n <wendyisgr33n@gmail.com> +Date: Mon, 30 Jul 2018 10:47:48 -0700 +Subject: [PATCH 5/5] Fixed method visibility in mobilebackup2.pxi API + +--- a/cython/mobilebackup2.pxi ++++ b/cython/mobilebackup2.pxi +@@ -54,10 +54,10 @@ cdef class MobileBackup2Client(PropertyListService): + cdef inline BaseError _error(self, int16_t ret): + return MobileBackup2Error(ret) + +- cdef send_message(self, bytes message, plist.Node options): ++ cpdef send_message(self, bytes message, plist.Node options): + self.handle_error(mobilebackup2_send_message(self._c_client, message, options._c_node)) + +- cdef tuple receive_message(self): ++ cpdef tuple receive_message(self): + cdef: + char* dlmessage = NULL + plist.plist_t c_node = NULL +@@ -73,29 +73,34 @@ cdef class MobileBackup2Client(PropertyListService): + free(dlmessage) + raise + +- cdef int send_raw(self, bytes data, int length): ++ cpdef int send_raw(self, bytes data, int length): + cdef: +- uint32_t bytes = 0 ++ uint32_t bytes_recvd = 0 + mobilebackup2_error_t err +- err = mobilebackup2_send_raw(self._c_client, data, length, &bytes) ++ err = mobilebackup2_send_raw(self._c_client, data, length, &bytes_recvd) + try: + self.handle_error(err) +- return <bint>bytes ++ return <bint>bytes_recvd + except BaseError, e: + raise + +- cdef int receive_raw(self, bytes data, int length): ++ cpdef int receive_raw(self, bytearray data, int length): + cdef: +- uint32_t bytes = 0 ++ uint32_t bytes_recvd = 0 + mobilebackup2_error_t err +- err = mobilebackup2_receive_raw(self._c_client, data, length, &bytes) ++ err = mobilebackup2_receive_raw(self._c_client, data, length, &bytes_recvd) ++ ++ # Throwing an exception when we test if theres more data to read is excessive ++ if err == -1 and bytes_recvd == 0: ++ return 0 ++ + try: + self.handle_error(err) +- return <bint>bytes ++ return <bint>bytes_recvd + except BaseError, e: + raise + +- cdef float version_exchange(self, double[::1] local_versions): ++ cpdef float version_exchange(self, double[::1] local_versions): + cdef: + double[::1] temp = None + double remote_version = 0.0 +@@ -107,8 +112,8 @@ cdef class MobileBackup2Client(PropertyListService): + except BaseError, e: + raise + +- cdef send_request(self, bytes request, bytes target_identifier, bytes source_identifier, plist.Node options): ++ cpdef send_request(self, bytes request, bytes target_identifier, bytes source_identifier, plist.Node options): + self.handle_error(mobilebackup2_send_request(self._c_client, request, target_identifier, source_identifier, options._c_node)) + +- cdef send_status_response(self, int status_code, bytes status1, plist.Node status2): ++ cpdef send_status_response(self, int status_code, bytes status1, plist.Node status2): + self.handle_error(mobilebackup2_send_status_response(self._c_client, status_code, status1, status2._c_node)) diff --git a/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-slibtool.patch b/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-slibtool.patch new file mode 100644 index 0000000..1e9fa6c --- /dev/null +++ b/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-slibtool.patch @@ -0,0 +1,105 @@ +From 735ac51e0eeaa3419e85dbad9579401ae828f631 Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Tue, 6 Apr 2021 13:06:35 -0700 +Subject: [PATCH] tools: Fix usage of LDFLAGS and LDADD. + +Signed-off-by: orbea <orbea@riseup.net> +--- + tools/Makefile.am | 40 ++++++++++++++++++++-------------------- + 1 file changed, 20 insertions(+), 20 deletions(-) + +diff --git a/tools/Makefile.am b/tools/Makefile.am +index 8ed8ad91..04a5faa7 100644 +--- a/tools/Makefile.am ++++ b/tools/Makefile.am +@@ -40,8 +40,8 @@ bin_PROGRAMS = \ + + ideviceinfo_SOURCES = ideviceinfo.c + ideviceinfo_CFLAGS = $(AM_CFLAGS) +-ideviceinfo_LDFLAGS = $(top_builddir)/common/libinternalcommon.la $(AM_LDFLAGS) +-ideviceinfo_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la ++ideviceinfo_LDFLAGS = $(AM_LDFLAGS) ++ideviceinfo_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la $(top_builddir)/common/libinternalcommon.la + + idevicename_SOURCES = idevicename.c + idevicename_CFLAGS = $(AM_CFLAGS) +@@ -50,8 +50,8 @@ idevicename_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la + + idevicepair_SOURCES = idevicepair.c + idevicepair_CFLAGS = -I$(top_srcdir) $(AM_CFLAGS) +-idevicepair_LDFLAGS = $(top_builddir)/common/libinternalcommon.la $(AM_LDFLAGS) $(libusbmuxd_LIBS) +-idevicepair_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la ++idevicepair_LDFLAGS = $(AM_LDFLAGS) $(libusbmuxd_LIBS) ++idevicepair_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la $(top_builddir)/common/libinternalcommon.la + + idevicesyslog_SOURCES = idevicesyslog.c + idevicesyslog_CFLAGS = $(AM_CFLAGS) +@@ -65,18 +65,18 @@ idevice_id_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la + + idevicebackup_SOURCES = idevicebackup.c + idevicebackup_CFLAGS = $(AM_CFLAGS) +-idevicebackup_LDFLAGS = $(top_builddir)/common/libinternalcommon.la $(AM_LDFLAGS) +-idevicebackup_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la ++idevicebackup_LDFLAGS = $(AM_LDFLAGS) ++idevicebackup_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la $(top_builddir)/common/libinternalcommon.la + + idevicebackup2_SOURCES = idevicebackup2.c + idevicebackup2_CFLAGS = $(AM_CFLAGS) +-idevicebackup2_LDFLAGS = $(top_builddir)/common/libinternalcommon.la $(AM_LDFLAGS) +-idevicebackup2_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la ++idevicebackup2_LDFLAGS = $(AM_LDFLAGS) ++idevicebackup2_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la $(top_builddir)/common/libinternalcommon.la + + ideviceimagemounter_SOURCES = ideviceimagemounter.c + ideviceimagemounter_CFLAGS = $(AM_CFLAGS) +-ideviceimagemounter_LDFLAGS = $(top_builddir)/common/libinternalcommon.la $(AM_LDFLAGS) +-ideviceimagemounter_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la ++ideviceimagemounter_LDFLAGS = $(AM_LDFLAGS) ++ideviceimagemounter_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la $(top_builddir)/common/libinternalcommon.la + + idevicescreenshot_SOURCES = idevicescreenshot.c + idevicescreenshot_CFLAGS = $(AM_CFLAGS) +@@ -95,13 +95,13 @@ idevicedate_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la + + ideviceprovision_SOURCES = ideviceprovision.c + ideviceprovision_CFLAGS = $(AM_CFLAGS) +-ideviceprovision_LDFLAGS = $(top_builddir)/common/libinternalcommon.la $(AM_LDFLAGS) +-ideviceprovision_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la ++ideviceprovision_LDFLAGS = $(AM_LDFLAGS) ++ideviceprovision_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la $(top_builddir)/common/libinternalcommon.la + + idevicedebugserverproxy_SOURCES = idevicedebugserverproxy.c + idevicedebugserverproxy_CFLAGS = -I$(top_srcdir) $(AM_CFLAGS) +-idevicedebugserverproxy_LDFLAGS = $(top_builddir)/common/libinternalcommon.la $(AM_LDFLAGS) +-idevicedebugserverproxy_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la ++idevicedebugserverproxy_LDFLAGS = $(AM_LDFLAGS) ++idevicedebugserverproxy_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la $(top_builddir)/common/libinternalcommon.la + + idevicediagnostics_SOURCES = idevicediagnostics.c + idevicediagnostics_CFLAGS = $(AM_CFLAGS) +@@ -110,8 +110,8 @@ idevicediagnostics_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la + + idevicedebug_SOURCES = idevicedebug.c + idevicedebug_CFLAGS = $(AM_CFLAGS) +-idevicedebug_LDFLAGS = $(top_builddir)/common/libinternalcommon.la $(AM_LDFLAGS) +-idevicedebug_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la ++idevicedebug_LDFLAGS = $(AM_LDFLAGS) ++idevicedebug_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la $(top_builddir)/common/libinternalcommon.la + + idevicenotificationproxy_SOURCES = idevicenotificationproxy.c + idevicenotificationproxy_CFLAGS = $(AM_CFLAGS) +@@ -120,10 +120,10 @@ idevicenotificationproxy_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la + + idevicecrashreport_SOURCES = idevicecrashreport.c + idevicecrashreport_CFLAGS = -I$(top_srcdir) $(AM_CFLAGS) +-idevicecrashreport_LDFLAGS = $(top_builddir)/common/libinternalcommon.la $(AM_LDFLAGS) +-idevicecrashreport_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la ++idevicecrashreport_LDFLAGS = $(AM_LDFLAGS) ++idevicecrashreport_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la $(top_builddir)/common/libinternalcommon.la + + idevicesetlocation_SOURCES = idevicesetlocation.c + idevicesetlocation_CFLAGS = $(AM_CFLAGS) +-idevicesetlocation_LDFLAGS = $(top_builddir)/common/libinternalcommon.la $(AM_LDFLAGS) +-idevicesetlocation_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la ++idevicesetlocation_LDFLAGS = $(AM_LDFLAGS) ++idevicesetlocation_LDADD = $(top_builddir)/src/libimobiledevice-1.0.la $(top_builddir)/common/libinternalcommon.la diff --git a/app-pda/libimobiledevice/libimobiledevice-1.3.0-r3.ebuild b/app-pda/libimobiledevice/libimobiledevice-1.3.0-r3.ebuild new file mode 100644 index 0000000..f994417 --- /dev/null +++ b/app-pda/libimobiledevice/libimobiledevice-1.3.0-r3.ebuild @@ -0,0 +1,116 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{9..11} ) + +inherit autotools python-r1 + +DESCRIPTION="Support library to communicate with Apple iPhone/iPod Touch devices" +HOMEPAGE="https://www.libimobiledevice.org/" +SRC_URI="https://github.com/libimobiledevice/libimobiledevice/releases/download/${PV}/${P}.tar.bz2" + +# While COPYING* doesn't mention 'or any later version', all the headers do, hence use + +LICENSE="GPL-2+ LGPL-2.1+" +SLOT="0/1.0-6" # based on SONAME of libimobiledevice-1.0.so +KEYWORDS="amd64 ~arm ~arm64 ~loong ppc ~ppc64 ~riscv x86" +IUSE="doc gnutls python static-libs" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +RDEPEND=" + >=app-pda/libplist-2.2.0:= <app-pda/libplist-2.3 + >=app-pda/libusbmuxd-2.0.2:= + gnutls? ( + dev-libs/libgcrypt:0 + >=dev-libs/libtasn1-1.1 + >=net-libs/gnutls-2.2.0 + ) + !gnutls? ( + dev-libs/openssl:0= + ) + python? ( + ${PYTHON_DEPS} + app-pda/libplist[python(-),${PYTHON_USEDEP}] + ) +" +DEPEND=" + ${RDEPEND} +" +# <cython-3 for bug #898666 +BDEPEND=" + virtual/pkgconfig + doc? ( app-text/doxygen ) + python? ( <dev-python/cython-3[${PYTHON_USEDEP}] ) +" + +BUILD_DIR="${S}_build" + +PATCHES=( + "${FILESDIR}/${P}-slibtool.patch" + "${FILESDIR}/${P}-missing_libflags.patch" #787962 + "${FILESDIR}/${P}-libressl.patch" + "${FILESDIR}/${P}-python.patch" +) + +src_prepare() { + default + eautoreconf +} + +src_configure() { + local ECONF_SOURCE=${S} + + local myeconfargs=( $(use_enable static-libs static) ) + use gnutls && myeconfargs+=( --disable-openssl ) + + do_configure() { + mkdir -p "${BUILD_DIR}" || die + pushd "${BUILD_DIR}" >/dev/null || die + econf "${myeconfargs[@]}" "${@}" + popd >/dev/null || die + } + + do_configure_python() { + # Bug 567916 + local -x PYTHON_LDFLAGS="$(python_get_LIBS)" + do_configure "$@" + } + + do_configure --without-cython + use python && python_foreach_impl do_configure_python +} + +src_compile() { + python_compile() { + emake -C "${BUILD_DIR}"/cython \ + VPATH="${S}/cython:$1/cython" \ + imobiledevice_la_LIBADD="$1/src/libimobiledevice-1.0.la" + } + + emake -C "${BUILD_DIR}" + use python && python_foreach_impl python_compile "${BUILD_DIR}" + + if use doc; then + doxygen "${BUILD_DIR}"/doxygen.cfg || die + fi +} + +src_install() { + python_install() { + emake -C "${BUILD_DIR}/cython" install \ + DESTDIR="${D}" \ + VPATH="${S}/cython:$1/cython" + } + + emake -C "${BUILD_DIR}" install DESTDIR="${D}" + use python && python_foreach_impl python_install "${BUILD_DIR}" + use doc && dodoc docs/html/* + + if use python; then + insinto /usr/include/${PN}/cython + doins cython/imobiledevice.pxd + fi + + find "${D}" -name '*.la' -delete || die +} diff --git a/app-pda/libimobiledevice/metadata.xml b/app-pda/libimobiledevice/metadata.xml new file mode 100644 index 0000000..3553c5b --- /dev/null +++ b/app-pda/libimobiledevice/metadata.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>matthew@gentoo.org</email> + <name>Matthew Smith</name> + </maintainer> + <upstream> + <remote-id type="github">libimobiledevice/libimobiledevice</remote-id> + </upstream> +</pkgmetadata> diff --git a/app-text/mupdf/Manifest b/app-text/mupdf/Manifest new file mode 100644 index 0000000..a835f7c --- /dev/null +++ b/app-text/mupdf/Manifest @@ -0,0 +1,3 @@ +DIST mupdf-1.22.0-source.tar.gz 55043552 BLAKE2B 745a2fd1d0406acf4fa696585bcd21a4ff36e7539c1d45f886dfe5c9bbf966169e5183e89940d81e88db3014f1ebb0446ae1732b6c2fa25a135251853b71f1f7 SHA512 ba073b977306420343c969e6fec37cca4559031ad06cfdee2356edfdfa013ebe7654175aff931684fa48a935bf87f68537754b5e83f767517bc428ac07709a59 +DIST mupdf-1.23.3-source.tar.gz 55144800 BLAKE2B 816e2bf46c2431df9726976efeaa0d7ebd8809cbdd9331a747cca32088aaf21b70e9522614d1dc20c856cc597003be6285f866eae8bbde3098e702acfdea8465 SHA512 37fbebd07680d79a38d289264a4028396ee58fad52c541efa37463e63a45ed8bab71188d6c05eb15e602964d89ee6633575dceb972f7bd8b0b5efdde5af9b737 +DIST mupdf-1.23.7-source.tar.gz 55312697 BLAKE2B 7ceb7c1871d33b77d4a3d52ed2d1af514c09349df019a189fa7df8ad09648fae313d63de4c1ce6b0666d17f9a897d5ac788d0be2d8896d9b7e4e6ecf679bad7c SHA512 581a4a5a16041bb405fbd7c1b9fba47da5745f00cbdf30e0e0468bfe67ac542884193b5957b293a4cdfc52f043b4f19612086f294b93dbd242d34735a1088777 diff --git a/app-text/mupdf/files/mupdf-1.15-CFLAGS.patch b/app-text/mupdf/files/mupdf-1.15-CFLAGS.patch new file mode 100644 index 0000000..a7de530 --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.15-CFLAGS.patch @@ -0,0 +1,13 @@ +diff --git a/Makerules b/Makerules +index 298b5737..71c307e6 100644 +--- a/Makerules ++++ b/Makerules +@@ -21,8 +21,6 @@ SANITIZE_FLAGS += -fsanitize=address + SANITIZE_FLAGS += -fsanitize=leak + + ifeq ($(build),debug) +- CFLAGS += -pipe -g +- LDFLAGS += -g + else ifeq ($(build),release) + CFLAGS += -pipe -O2 -DNDEBUG -fomit-frame-pointer + LDFLAGS += $(LDREMOVEUNREACH) -Wl,-s diff --git a/app-text/mupdf/files/mupdf-1.15-openssl-x11.patch b/app-text/mupdf/files/mupdf-1.15-openssl-x11.patch new file mode 100644 index 0000000..3f3aac4 --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.15-openssl-x11.patch @@ -0,0 +1,18 @@ +--- a/Makerules ++++ b/Makerules +@@ -119,13 +119,13 @@ else ifeq ($(OS),Linux) + SYS_GLUT_LIBS := -lglut -lGL + endif + +- HAVE_X11 := $(shell pkg-config --exists x11 xext && echo yes) ++ HAVE_X11 := not-unless-portage-tells-me + ifeq ($(HAVE_X11),yes) + X11_CFLAGS := $(shell pkg-config --cflags x11 xext) + X11_LIBS := $(shell pkg-config --libs x11 xext) + endif + +- HAVE_LIBCRYPTO := $(shell pkg-config --exists 'libcrypto >= 1.1.0' && echo yes) ++ HAVE_LIBCRYPTO := not-unless-portage-tells-me + ifeq ($(HAVE_LIBCRYPTO),yes) + LIBCRYPTO_CFLAGS := $(shell pkg-config --cflags libcrypto) -DHAVE_LIBCRYPTO + LIBCRYPTO_LIBS := $(shell pkg-config --libs libcrypto) diff --git a/app-text/mupdf/files/mupdf-1.19.0-Makefile.patch b/app-text/mupdf/files/mupdf-1.19.0-Makefile.patch new file mode 100644 index 0000000..b266655 --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.19.0-Makefile.patch @@ -0,0 +1,37 @@ +diff --git a/Makefile b/Makefile +index 7fa74b3..e842374 100644 +--- a/Makefile ++++ b/Makefile +@@ -3,7 +3,7 @@ + -include user.make + + ifndef build +- build := release ++ build := debug + endif + + default: all +@@ -252,17 +252,19 @@ $(THIRD_GLUT_LIB) : $(THIRD_GLUT_OBJ) + $(THREAD_LIB) : $(THREAD_OBJ) + $(PKCS7_LIB) : $(PKCS7_OBJ) + else +-MUPDF_LIB = $(OUT)/libmupdf.a ++MUPDF_LIB = libmupdf.so.$(GENTOO_PV) + LIBS_TO_INSTALL_IN_LIB = $(MUPDF_LIB) $(THIRD_LIB) +-THIRD_LIB = $(OUT)/libmupdf-third.a ++THIRD_LIB = ++MUPDF_STATIC = $(OUT)/libmupdf.a + ifneq ($(USE_SYSTEM_GLUT),yes) + THIRD_GLUT_LIB = $(OUT)/libmupdf-glut.a + endif + THREAD_LIB = $(OUT)/libmupdf-threads.a + PKCS7_LIB = $(OUT)/libmupdf-pkcs7.a + +-$(MUPDF_LIB) : $(MUPDF_OBJ) +-$(THIRD_LIB) : $(THIRD_OBJ) ++$(MUPDF_LIB) : $(MUPDF_OBJ) $(THIRD_OBJ) ++ $(QUIET_LINK) $(CC) $(LDFLAGS) --shared -Wl,-soname -Wl,$(MUPDF_LIB) -o $@ $^ $(THIRD_LIBS) $(LIBS) ++$(MUPDF_STATIC): $(MUPDF_OBJ) $(THIRD_OBJ) + $(THIRD_GLUT_LIB) : $(THIRD_GLUT_OBJ) + $(THREAD_LIB) : $(THREAD_OBJ) + $(PKCS7_LIB) : $(PKCS7_OBJ) diff --git a/app-text/mupdf/files/mupdf-1.19.0-cross-fixes.patch b/app-text/mupdf/files/mupdf-1.19.0-cross-fixes.patch new file mode 100644 index 0000000..643b6d2 --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.19.0-cross-fixes.patch @@ -0,0 +1,130 @@ +Refreshed patches based on: +https://sources.debian.org/patches/mupdf/1.17.0+ds1-1/0004-MuPDF-crossbuild-use-target-arch-pkg-config.patch/ +https://sources.debian.org/patches/mupdf/1.17.0+ds1-1/0005-MuPDF-crossbuild-use-host-cc-for-utils.patch/ +--- a/Makefile ++++ b/Makefile +@@ -147,6 +147,9 @@ PKCS7_OBJ := $(PKCS7_SRC:%.c=$(OUT)/%.o) + + HEXDUMP_EXE := $(OUT)/scripts/hexdump.exe + ++$(HEXDUMP_EXE): scripts/hexdump.c ++ $(QUIET_CC) $(MKTGTDIR) ; $(CC_FOR_BUILD) $(CFLAGS) -o $@ $< ++ + FONT_BIN := $(sort $(wildcard resources/fonts/urw/*.cff)) + FONT_BIN += $(sort $(wildcard resources/fonts/han/*.ttc)) + FONT_BIN += $(sort $(wildcard resources/fonts/droid/*.ttf)) +--- a/Makerules ++++ b/Makerules +@@ -6,6 +6,9 @@ OS := $(OS:MSYS%=MINGW) + OS := $(OS:Windows_NT=MINGW) + OS := $(OS:Darwin=MACOS) + ++PKG_CONFIG ?= pkg-config ++CC_FOR_BUILD ?= $(CC) ++ + WARNING_CFLAGS := -Wall -Wsign-compare + + # Feature configuration options +@@ -156,51 +159,51 @@ else ifeq ($(OS),MACOS) + endif + endif + +- ifeq ($(shell pkg-config --exists freetype2 && echo yes),yes) +- SYS_FREETYPE_CFLAGS := $(shell pkg-config --cflags freetype2) +- SYS_FREETYPE_LIBS := $(shell pkg-config --libs freetype2) ++ ifeq ($(shell $(PKG_CONFIG) --exists freetype2 && echo yes),yes) ++ SYS_FREETYPE_CFLAGS := $(shell $(PKG_CONFIG) --cflags freetype2) ++ SYS_FREETYPE_LIBS := $(shell $(PKG_CONFIG) --libs freetype2) + endif +- ifeq ($(shell pkg-config --exists gumbo && echo yes),yes) +- SYS_GUMBO_CFLAGS := $(shell pkg-config --cflags gumbo) +- SYS_GUMBO_LIBS := $(shell pkg-config --libs gumbo) ++ ifeq ($(shell $(PKG_CONFIG) --exists gumbo && echo yes),yes) ++ SYS_GUMBO_CFLAGS := $(shell $(PKG_CONFIG) --cflags gumbo) ++ SYS_GUMBO_LIBS := $(shell $(PKG_CONFIG) --libs gumbo) + endif +- ifeq ($(shell pkg-config --exists harfbuzz && echo yes),yes) +- SYS_HARFBUZZ_CFLAGS := $(shell pkg-config --cflags harfbuzz) +- SYS_HARFBUZZ_LIBS := $(shell pkg-config --libs harfbuzz) ++ ifeq ($(shell $(PKG_CONFIG) --exists harfbuzz && echo yes),yes) ++ SYS_HARFBUZZ_CFLAGS := $(shell $(PKG_CONFIG) --cflags harfbuzz) ++ SYS_HARFBUZZ_LIBS := $(shell $(PKG_CONFIG) --libs harfbuzz) + endif +- ifeq ($(shell pkg-config --exists lcms2 && echo yes),yes) +- SYS_LCMS2_CFLAGS := $(shell pkg-config --cflags lcms2) +- SYS_LCMS2_LIBS := $(shell pkg-config --libs lcms2) ++ ifeq ($(shell $(PKG_CONFIG) --exists lcms2 && echo yes),yes) ++ SYS_LCMS2_CFLAGS := $(shell $(PKG_CONFIG) --cflags lcms2) ++ SYS_LCMS2_LIBS := $(shell $(PKG_CONFIG) --libs lcms2) + endif +- ifeq ($(shell pkg-config --exists libjpeg && echo yes),yes) +- SYS_LIBJPEG_CFLAGS := $(shell pkg-config --cflags libjpeg) +- SYS_LIBJPEG_LIBS := $(shell pkg-config --libs libjpeg) ++ ifeq ($(shell $(PKG_CONFIG) --exists libjpeg && echo yes),yes) ++ SYS_LIBJPEG_CFLAGS := $(shell $(PKG_CONFIG) --cflags libjpeg) ++ SYS_LIBJPEG_LIBS := $(shell $(PKG_CONFIG) --libs libjpeg) + endif +- ifeq ($(shell pkg-config --exists libopenjp2 && echo yes),yes) +- SYS_OPENJPEG_CFLAGS := $(shell pkg-config --cflags libopenjp2) +- SYS_OPENJPEG_LIBS := $(shell pkg-config --libs libopenjp2) ++ ifeq ($(shell $(PKG_CONFIG) --exists libopenjp2 && echo yes),yes) ++ SYS_OPENJPEG_CFLAGS := $(shell $(PKG_CONFIG) --cflags libopenjp2) ++ SYS_OPENJPEG_LIBS := $(shell $(PKG_CONFIG) --libs libopenjp2) + endif +- ifeq ($(shell pkg-config --exists zlib && echo yes),yes) +- SYS_ZLIB_CFLAGS := $(shell pkg-config --cflags zlib) +- SYS_ZLIB_LIBS := $(shell pkg-config --libs zlib) ++ ifeq ($(shell $(PKG_CONFIG) --exists zlib && echo yes),yes) ++ SYS_ZLIB_CFLAGS := $(shell $(PKG_CONFIG) --cflags zlib) ++ SYS_ZLIB_LIBS := $(shell $(PKG_CONFIG) --libs zlib) + endif + +- HAVE_SYS_LEPTONICA := $(shell pkg-config --exists 'lept >= 1.7.4' && echo yes) ++ HAVE_SYS_LEPTONICA := $(shell $(PKG_CONFIG) --exists 'lept >= 1.7.4' && echo yes) + ifeq ($(HAVE_SYS_LEPTONICA),yes) +- SYS_LEPTONICA_CFLAGS := $(shell pkg-config --cflags lept) +- SYS_LEPTONICA_LIBS := $(shell pkg-config --libs lept) ++ SYS_LEPTONICA_CFLAGS := $(shell $(PKG_CONFIG) --cflags lept) ++ SYS_LEPTONICA_LIBS := $(shell $(PKG_CONFIG) --libs lept) + endif + +- HAVE_SYS_TESSERACT := $(shell pkg-config --exists 'tesseract >= 4.0.0' && echo yes) ++ HAVE_SYS_TESSERACT := $(shell $(PKG_CONFIG) --exists 'tesseract >= 4.0.0' && echo yes) + ifeq ($(HAVE_SYS_TESSERACT),yes) +- SYS_TESSERACT_CFLAGS := $(shell pkg-config --cflags tesseract) +- SYS_TESSERACT_LIBS := $(shell pkg-config --libs tesseract) ++ SYS_TESSERACT_CFLAGS := $(shell $(PKG_CONFIG) --cflags tesseract) ++ SYS_TESSERACT_LIBS := $(shell $(PKG_CONFIG) --libs tesseract) + endif + +- HAVE_SYS_CURL := $(shell pkg-config --exists libcurl && echo yes) ++ HAVE_SYS_CURL := $(shell $(PKG_CONFIG) --exists libcurl && echo yes) + ifeq ($(HAVE_SYS_CURL),yes) +- SYS_CURL_CFLAGS := $(shell pkg-config --cflags libcurl) +- SYS_CURL_LIBS := $(shell pkg-config --libs libcurl) ++ SYS_CURL_CFLAGS := $(shell $(PKG_CONFIG) --cflags libcurl) ++ SYS_CURL_LIBS := $(shell $(PKG_CONFIG) --libs libcurl) + endif + + HAVE_GLUT := yes +@@ -209,16 +212,16 @@ endif + SYS_GLUT_LIBS := -lglut -lGL + endif + + HAVE_X11 := not-unless-portage-tells-me + ifeq ($(HAVE_X11),yes) +- X11_CFLAGS := $(shell pkg-config --cflags x11 xext) +- X11_LIBS := $(shell pkg-config --libs x11 xext) ++ X11_CFLAGS := $(shell $(PKG_CONFIG) --cflags x11 xext) ++ X11_LIBS := $(shell $(PKG_CONFIG) --libs x11 xext) + endif + + HAVE_LIBCRYPTO := not-unless-portage-tells-me + ifeq ($(HAVE_LIBCRYPTO),yes) +- LIBCRYPTO_CFLAGS := $(shell pkg-config --cflags libcrypto) -DHAVE_LIBCRYPTO +- LIBCRYPTO_LIBS := $(shell pkg-config --libs libcrypto) ++ LIBCRYPTO_CFLAGS := $(shell $(PKG_CONFIG) --cflags libcrypto) -DHAVE_LIBCRYPTO ++ LIBCRYPTO_LIBS := $(shell $(PKG_CONFIG) --libs libcrypto) + endif + + HAVE_PTHREAD := yes diff --git a/app-text/mupdf/files/mupdf-1.19.0-darwin.patch b/app-text/mupdf/files/mupdf-1.19.0-darwin.patch new file mode 100644 index 0000000..a81c7a0 --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.19.0-darwin.patch @@ -0,0 +1,39 @@ +--- a/Makerules ++++ b/Makerules +@@ -139,11 +139,11 @@ ifeq ($(OS),MINGW) + else ifeq ($(OS),MACOS) + HAVE_GLUT := yes + SYS_GLUT_CFLAGS := -Wno-deprecated-declarations +- SYS_GLUT_LIBS := -framework GLUT -framework OpenGL +- CC = xcrun cc +- AR = xcrun ar +- LD = xcrun ld +- RANLIB = xcrun ranlib ++ SYS_GLUT_LIBS ?= -framework GLUT -framework OpenGL ++ CC ?= xcrun cc ++ AR ?= xcrun ar ++ LD ?= xcrun ld ++ RANLIB ?= xcrun ranlib + + ifeq (, $(shell which pkg-config)) + $(warning "No pkg-config found, install it for proper integration of libcrypto") +@@ -154,9 +154,7 @@ else ifeq ($(OS),MACOS) + LIBCRYPTO_LIBS := $(shell pkg-config --libs libcrypto) + endif + endif +- +-else ifeq ($(OS),Linux) +- HAVE_OBJCOPY := yes ++endif + + ifeq ($(shell pkg-config --exists freetype2 && echo yes),yes) + SYS_FREETYPE_CFLAGS := $(shell pkg-config --cflags freetype2) +@@ -229,8 +227,6 @@ else ifeq ($(OS),Linux) + PTHREAD_LIBS := -lpthread + endif + +-endif +- + # The following section has various cross compilation configurations. + # + # Invoke these as: diff --git a/app-text/mupdf/files/mupdf-1.21.0-add-desktop-pc-files.patch b/app-text/mupdf/files/mupdf-1.21.0-add-desktop-pc-files.patch new file mode 100644 index 0000000..4d449a2 --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.21.0-add-desktop-pc-files.patch @@ -0,0 +1,33 @@ +--- /dev/null ++++ ./platform/debian/mupdf.desktop +@@ -0,0 +1,15 @@ ++[Desktop Entry] ++Name=MuPDF ++GenericName=PDF file viewer ++Exec=mupdf %f ++TryExec=mupdf ++Icon=new-mupdf-icon ++Terminal=false ++Type=Application ++MimeType=application/pdf;application/x-pdf;application/x-cbz;application/oxps;application/vnd.ms-xpsdocument;image/jpeg;image/pjpeg;image/png;image/tiff;image/x-tiff; ++Categories=Viewer;Graphics; ++Actions=View; ++ ++[Desktop Action View] ++Name=View with mupdf ++Exec=mupdf %f +--- /dev/null ++++ ./platform/debian/mupdf.pc +@@ -0,0 +1,12 @@ ++prefix=/usr ++exec_prefix=${prefix} ++libdir=${exec_prefix}/lib ++includedir=${prefix}/include ++ ++Name: mupdf ++Description: Library for rendering PDF documents ++Requires: freetype2 libopenjp2 libcrypto ++Version: 0.5.0 ++Libs: -L${libdir} -lmupdf ++Libs.private: -lmupdf-js-none ++Cflags: -I${includedir} diff --git a/app-text/mupdf/files/mupdf-1.21.1-fix-aliasing-violation.patch b/app-text/mupdf/files/mupdf-1.21.1-fix-aliasing-violation.patch new file mode 100644 index 0000000..4f51f72 --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.21.1-fix-aliasing-violation.patch @@ -0,0 +1,63 @@ +https://bugs.gentoo.org/859847 + +From 8c6f6bf3ad2fd33d15de6ee96175cd29bf804d9f Mon Sep 17 00:00:00 2001 +From: Matt Turner <mattst88@gmail.com> +Date: Tue, 26 Jul 2022 15:47:02 -0400 +Subject: [PATCH] Fix aliasing violation +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Noticed when compiling with link-time optimizations. + +include/GL/freeglut_std.h:240:18: error: type of `glutBitmapHelvetica18` does not match original declaration [-Werror=lto-type-mismatch] + 240 | extern void* glutBitmapHelvetica18; + | ^ +src/x11/fg_glutfont_definitions_x11.c:103:27: note: `glutBitmapHelvetica18` was previously declared here + 103 | struct freeglutBitmapFont glutBitmapHelvetica18 ; + | ^ +src/x11/fg_glutfont_definitions_x11.c:103:27: note: code may be misoptimized unless `-fno-strict-aliasing` is used +--- + src/x11/fg_glutfont_definitions_x11.c | 29 ++++++++++++++++++--------- + 1 file changed, 20 insertions(+), 9 deletions(-) + +--- a/thirdparty/freeglut/src/x11/fg_glutfont_definitions_x11.c ++++ b/thirdparty/freeglut/src/x11/fg_glutfont_definitions_x11.c +@@ -91,14 +91,25 @@ struct freeglutBitmapFont + }; + + +-struct freeglutStrokeFont glutStrokeRoman ; +-struct freeglutStrokeFont glutStrokeMonoRoman ; ++static struct freeglutStrokeFont glutStrokeRoman_ ; ++static struct freeglutStrokeFont glutStrokeMonoRoman_ ; + +-struct freeglutBitmapFont glutBitmap9By15 ; +-struct freeglutBitmapFont glutBitmap8By13 ; +-struct freeglutBitmapFont glutBitmapTimesRoman10 ; +-struct freeglutBitmapFont glutBitmapTimesRoman24 ; +-struct freeglutBitmapFont glutBitmapHelvetica10 ; +-struct freeglutBitmapFont glutBitmapHelvetica12 ; +-struct freeglutBitmapFont glutBitmapHelvetica18 ; ++static struct freeglutBitmapFont glutBitmap9By15_ ; ++static struct freeglutBitmapFont glutBitmap8By13_ ; ++static struct freeglutBitmapFont glutBitmapTimesRoman10_ ; ++static struct freeglutBitmapFont glutBitmapTimesRoman24_ ; ++static struct freeglutBitmapFont glutBitmapHelvetica10_ ; ++static struct freeglutBitmapFont glutBitmapHelvetica12_ ; ++static struct freeglutBitmapFont glutBitmapHelvetica18_ ; + ++ ++void *glutStrokeRoman = &glutStrokeRoman_ ; ++void *glutStrokeMonoRoman = &glutStrokeMonoRoman_ ; ++ ++void *glutBitmap9By15 = &glutBitmap9By15_ ; ++void *glutBitmap8By13 = &glutBitmap8By13_ ; ++void *glutBitmapTimesRoman10 = &glutBitmapTimesRoman10_ ; ++void *glutBitmapTimesRoman24 = &glutBitmapTimesRoman24_ ; ++void *glutBitmapHelvetica10 = &glutBitmapHelvetica10_ ; ++void *glutBitmapHelvetica12 = &glutBitmapHelvetica12_ ; ++void *glutBitmapHelvetica18 = &glutBitmapHelvetica18_ ; +-- +2.35.1 + diff --git a/app-text/mupdf/files/mupdf-1.21.1-no-drm.patch b/app-text/mupdf/files/mupdf-1.21.1-no-drm.patch new file mode 100644 index 0000000..9f2b9d6 --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.21.1-no-drm.patch @@ -0,0 +1,18 @@ +diff --git a/source/html/epub-doc.c b/source/html/epub-doc.c +index f764242..83888dc 100644 +--- a/source/html/epub-doc.c ++++ b/source/html/epub-doc.c +@@ -692,10 +692,12 @@ epub_parse_header(fz_context *ctx, epub_document *doc) + epub_chapter **tailp; + int i; + ++ #ifdef GENTOO_MUPDF_DRM + if (fz_has_archive_entry(ctx, zip, "META-INF/rights.xml")) + fz_throw(ctx, FZ_ERROR_GENERIC, "EPUB is locked by DRM"); + if (fz_has_archive_entry(ctx, zip, "META-INF/encryption.xml")) + fz_throw(ctx, FZ_ERROR_GENERIC, "EPUB is locked by DRM"); ++ #endif + + fz_var(buf); + fz_var(container_xml); + diff --git a/app-text/mupdf/files/mupdf-1.23.3-cross-fixes.patch b/app-text/mupdf/files/mupdf-1.23.3-cross-fixes.patch new file mode 100644 index 0000000..02fa3bf --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.23.3-cross-fixes.patch @@ -0,0 +1,120 @@ +Refreshed patches based on: +https://sources.debian.org/patches/mupdf/1.17.0+ds1-1/0004-MuPDF-crossbuild-use-target-arch-pkg-config.patch/ +https://sources.debian.org/patches/mupdf/1.17.0+ds1-1/0005-MuPDF-crossbuild-use-host-cc-for-utils.patch/ +--- a/Makerules ++++ b/Makerules +@@ -9,6 +9,9 @@ ifeq ($(OS),) + OS := $(OS:Darwin=MACOS) + endif + ++PKG_CONFIG ?= pkg-config ++CC_FOR_BUILD ?= $(CC) ++ + WARNING_CFLAGS := -Wall -Wsign-compare + + # Feature configuration options +@@ -190,51 +193,51 @@ else ifeq ($(OS),Linux) + LDFLAGS += -sTOTAL_MEMORY=48MB + endif + +- ifeq ($(shell pkg-config --exists freetype2 && echo yes),yes) +- SYS_FREETYPE_CFLAGS := $(shell pkg-config --cflags freetype2) +- SYS_FREETYPE_LIBS := $(shell pkg-config --libs freetype2) ++ ifeq ($(shell $(PKG_CONFIG) --exists freetype2 && echo yes),yes) ++ SYS_FREETYPE_CFLAGS := $(shell $(PKG_CONFIG) --cflags freetype2) ++ SYS_FREETYPE_LIBS := $(shell $(PKG_CONFIG) --libs freetype2) + endif +- ifeq ($(shell pkg-config --exists gumbo && echo yes),yes) +- SYS_GUMBO_CFLAGS := $(shell pkg-config --cflags gumbo) +- SYS_GUMBO_LIBS := $(shell pkg-config --libs gumbo) ++ ifeq ($(shell $(PKG_CONFIG) --exists gumbo && echo yes),yes) ++ SYS_GUMBO_CFLAGS := $(shell $(PKG_CONFIG) --cflags gumbo) ++ SYS_GUMBO_LIBS := $(shell $(PKG_CONFIG) --libs gumbo) + endif +- ifeq ($(shell pkg-config --exists harfbuzz && echo yes),yes) +- SYS_HARFBUZZ_CFLAGS := $(shell pkg-config --cflags harfbuzz) +- SYS_HARFBUZZ_LIBS := $(shell pkg-config --libs harfbuzz) ++ ifeq ($(shell $(PKG_CONFIG) --exists harfbuzz && echo yes),yes) ++ SYS_HARFBUZZ_CFLAGS := $(shell $(PKG_CONFIG) --cflags harfbuzz) ++ SYS_HARFBUZZ_LIBS := $(shell $(PKG_CONFIG) --libs harfbuzz) + endif +- ifeq ($(shell pkg-config --exists lcms2 && echo yes),yes) +- SYS_LCMS2_CFLAGS := $(shell pkg-config --cflags lcms2) +- SYS_LCMS2_LIBS := $(shell pkg-config --libs lcms2) ++ ifeq ($(shell $(PKG_CONFIG) --exists lcms2 && echo yes),yes) ++ SYS_LCMS2_CFLAGS := $(shell $(PKG_CONFIG) --cflags lcms2) ++ SYS_LCMS2_LIBS := $(shell $(PKG_CONFIG) --libs lcms2) + endif +- ifeq ($(shell pkg-config --exists libjpeg && echo yes),yes) +- SYS_LIBJPEG_CFLAGS := $(shell pkg-config --cflags libjpeg) +- SYS_LIBJPEG_LIBS := $(shell pkg-config --libs libjpeg) ++ ifeq ($(shell $(PKG_CONFIG) --exists libjpeg && echo yes),yes) ++ SYS_LIBJPEG_CFLAGS := $(shell $(PKG_CONFIG) --cflags libjpeg) ++ SYS_LIBJPEG_LIBS := $(shell $(PKG_CONFIG) --libs libjpeg) + endif +- ifeq ($(shell pkg-config --exists libopenjp2 && echo yes),yes) +- SYS_OPENJPEG_CFLAGS := $(shell pkg-config --cflags libopenjp2) +- SYS_OPENJPEG_LIBS := $(shell pkg-config --libs libopenjp2) ++ ifeq ($(shell $(PKG_CONFIG) --exists libopenjp2 && echo yes),yes) ++ SYS_OPENJPEG_CFLAGS := $(shell $(PKG_CONFIG) --cflags libopenjp2) ++ SYS_OPENJPEG_LIBS := $(shell $(PKG_CONFIG) --libs libopenjp2) + endif +- ifeq ($(shell pkg-config --exists zlib && echo yes),yes) +- SYS_ZLIB_CFLAGS := $(shell pkg-config --cflags zlib) +- SYS_ZLIB_LIBS := $(shell pkg-config --libs zlib) ++ ifeq ($(shell $(PKG_CONFIG) --exists zlib && echo yes),yes) ++ SYS_ZLIB_CFLAGS := $(shell $(PKG_CONFIG) --cflags zlib) ++ SYS_ZLIB_LIBS := $(shell $(PKG_CONFIG) --libs zlib) + endif + +- HAVE_SYS_LEPTONICA := $(shell pkg-config --exists 'lept >= 1.7.4' && echo yes) ++ HAVE_SYS_LEPTONICA := $(shell $(PKG_CONFIG) --exists 'lept >= 1.7.4' && echo yes) + ifeq ($(HAVE_SYS_LEPTONICA),yes) +- SYS_LEPTONICA_CFLAGS := $(shell pkg-config --cflags lept) +- SYS_LEPTONICA_LIBS := $(shell pkg-config --libs lept) ++ SYS_LEPTONICA_CFLAGS := $(shell $(PKG_CONFIG) --cflags lept) ++ SYS_LEPTONICA_LIBS := $(shell $(PKG_CONFIG) --libs lept) + endif + +- HAVE_SYS_TESSERACT := $(shell pkg-config --exists 'tesseract >= 4.0.0' && echo yes) ++ HAVE_SYS_TESSERACT := $(shell $(PKG_CONFIG) --exists 'tesseract >= 4.0.0' && echo yes) + ifeq ($(HAVE_SYS_TESSERACT),yes) +- SYS_TESSERACT_CFLAGS := $(shell pkg-config --cflags tesseract) +- SYS_TESSERACT_LIBS := $(shell pkg-config --libs tesseract) ++ SYS_TESSERACT_CFLAGS := $(shell $(PKG_CONFIG) --cflags tesseract) ++ SYS_TESSERACT_LIBS := $(shell $(PKG_CONFIG) --libs tesseract) + endif + +- HAVE_SYS_CURL := $(shell pkg-config --exists libcurl && echo yes) ++ HAVE_SYS_CURL := $(shell $(PKG_CONFIG) --exists libcurl && echo yes) + ifeq ($(HAVE_SYS_CURL),yes) +- SYS_CURL_CFLAGS := $(shell pkg-config --cflags libcurl) +- SYS_CURL_LIBS := $(shell pkg-config --libs libcurl) ++ SYS_CURL_CFLAGS := $(shell $(PKG_CONFIG) --cflags libcurl) ++ SYS_CURL_LIBS := $(shell $(PKG_CONFIG) --libs libcurl) + endif + + HAVE_GLUT := yes +@@ -243,18 +246,18 @@ else ifeq ($(OS),Linux) + SYS_GLUT_LIBS := -lglut -lGL + endif + + HAVE_X11 := not-unless-portage-tells-me + ifeq ($(HAVE_X11),yes) +- X11_CFLAGS := $(shell pkg-config --cflags x11 xext) +- X11_LIBS := $(shell pkg-config --libs x11 xext) ++ X11_CFLAGS := $(shell $(PKG_CONFIG) --cflags x11 xext) ++ X11_LIBS := $(shell $(PKG_CONFIG) --libs x11 xext) + endif + + ifeq ($(HAVE_LIBCRYPTO),) + HAVE_LIBCRYPTO := not-unless-portage-tells-me + endif + ifeq ($(HAVE_LIBCRYPTO),yes) +- LIBCRYPTO_CFLAGS := $(shell pkg-config --cflags libcrypto) -DHAVE_LIBCRYPTO +- LIBCRYPTO_LIBS := $(shell pkg-config --libs libcrypto) ++ LIBCRYPTO_CFLAGS := $(shell $(PKG_CONFIG) --cflags libcrypto) -DHAVE_LIBCRYPTO ++ LIBCRYPTO_LIBS := $(shell $(PKG_CONFIG) --libs libcrypto) + endif + + HAVE_PTHREAD := yes diff --git a/app-text/mupdf/files/mupdf-1.23.3-darwin.patch b/app-text/mupdf/files/mupdf-1.23.3-darwin.patch new file mode 100644 index 0000000..c151d81 --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.23.3-darwin.patch @@ -0,0 +1,45 @@ +--- a/Makerules ++++ b/Makerules +@@ -161,11 +161,11 @@ ifeq ($(OS),MINGW) + else ifeq ($(OS),MACOS) + HAVE_GLUT := yes + SYS_GLUT_CFLAGS := -Wno-deprecated-declarations +- SYS_GLUT_LIBS := -framework GLUT -framework OpenGL +- CC = xcrun cc +- AR = xcrun ar +- LD = xcrun ld +- RANLIB = xcrun ranlib ++ SYS_GLUT_LIBS ?= -framework GLUT -framework OpenGL ++ CC ?= xcrun cc ++ AR ?= xcrun ar ++ LD ?= xcrun ld ++ RANLIB ?= xcrun ranlib + + ifneq ($(ARCHFLAGS),) + $(warning "MacOS with ARCHFLAGS set. Assuming we are building for arm64, and setting HAVE_LIBCRYPTO to no.") +@@ -180,15 +180,7 @@ else ifeq ($(OS),MACOS) + endif + endif + +-else ifeq ($(OS),Linux) +- ifeq ($(PYODIDE_ROOT),) +- HAVE_OBJCOPY := yes +- else +- # Pyodide's ld does not support -b so we cannot use it to create object +- # files containing font data, so leave HAVE_OBJCOPY unset. And we need +- # extra memory when linking. +- LDFLAGS += -sTOTAL_MEMORY=48MB +- endif ++endif + + ifeq ($(shell pkg-config --exists freetype2 && echo yes),yes) + SYS_FREETYPE_CFLAGS := $(shell pkg-config --cflags freetype2) +@@ -263,8 +255,6 @@ else ifeq ($(OS),Linux) + PTHREAD_LIBS := -lpthread + endif + +-endif +- + # The following section has various cross compilation configurations. + # + # Invoke these as: diff --git a/app-text/mupdf/files/mupdf-1.23.3-openssl-x11.patch b/app-text/mupdf/files/mupdf-1.23.3-openssl-x11.patch new file mode 100644 index 0000000..b91bd9a --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.23.3-openssl-x11.patch @@ -0,0 +1,19 @@ +--- a/Makerules ++++ b/Makerules +@@ -243,14 +243,14 @@ else ifeq ($(OS),Linux) + SYS_GLUT_LIBS := -lglut -lGL + endif + +- HAVE_X11 := $(shell pkg-config --exists x11 xext && echo yes) ++ HAVE_X11 := not-unless-portage-tells-me + ifeq ($(HAVE_X11),yes) + X11_CFLAGS := $(shell pkg-config --cflags x11 xext) + X11_LIBS := $(shell pkg-config --libs x11 xext) + endif + + ifeq ($(HAVE_LIBCRYPTO),) +- HAVE_LIBCRYPTO := $(shell pkg-config --exists 'libcrypto >= 1.1.0' && echo yes) ++ HAVE_LIBCRYPTO := not-unless-portage-tells-me + endif + ifeq ($(HAVE_LIBCRYPTO),yes) + LIBCRYPTO_CFLAGS := $(shell pkg-config --cflags libcrypto) -DHAVE_LIBCRYPTO diff --git a/app-text/mupdf/files/mupdf-1.23.7-libressl.patch b/app-text/mupdf/files/mupdf-1.23.7-libressl.patch new file mode 100644 index 0000000..02c91e3 --- /dev/null +++ b/app-text/mupdf/files/mupdf-1.23.7-libressl.patch @@ -0,0 +1,15 @@ +EVP_add_digest is no longer needed with LibreSSL >= 3.9.0 + +--- a/source/helpers/pkcs7/pkcs7-openssl.c ++++ b/source/helpers/pkcs7/pkcs7-openssl.c +@@ -793,8 +793,10 @@ pdf_pkcs7_signer *pkcs7_openssl_read_pfx(fz_context *ctx, const char *pfile, con + + OpenSSL_add_all_algorithms(); + ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER < 0x3090000fL) + EVP_add_digest(EVP_md5()); + EVP_add_digest(EVP_sha1()); ++#endif + + ERR_load_crypto_strings(); + diff --git a/app-text/mupdf/metadata.xml b/app-text/mupdf/metadata.xml new file mode 100644 index 0000000..c0d6177 --- /dev/null +++ b/app-text/mupdf/metadata.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>rndxelement@protonmail.com</email> + <name>Philipp Rösner</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <use> + <flag name="drm">Enable support for Digital rights management (DRM)</flag> + </use> +</pkgmetadata> diff --git a/app-text/mupdf/mupdf-1.22.0-r1.ebuild b/app-text/mupdf/mupdf-1.22.0-r1.ebuild new file mode 100644 index 0000000..2d59cac --- /dev/null +++ b/app-text/mupdf/mupdf-1.22.0-r1.ebuild @@ -0,0 +1,165 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Please check upstream git regularly for relevant security-related commits +# to backport. + +inherit desktop flag-o-matic toolchain-funcs xdg + +DESCRIPTION="A lightweight PDF viewer and toolkit written in portable C" +HOMEPAGE="https://mupdf.com/ https://git.ghostscript.com/?p=mupdf.git" +SRC_URI="https://mupdf.com/downloads/archive/${P}-source.tar.gz" +S="${WORKDIR}"/${P}-source + +LICENSE="AGPL-3" +SLOT="0/${PV}" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86" +IUSE="+drm +javascript opengl ssl X" +REQUIRED_USE="opengl? ( javascript )" + +# Although we use the bundled, patched version of freeglut in mupdf (because of +# bug #653298), the best way to ensure that its dependencies are present is to +# install system's freeglut. +RDEPEND=" + dev-libs/gumbo:= + media-libs/freetype:2 + media-libs/harfbuzz:=[truetype] + media-libs/jbig2dec:= + media-libs/libpng:0= + >=media-libs/openjpeg-2.1:2= + >=media-libs/libjpeg-turbo-1.5.3-r2:0= + javascript? ( >=dev-lang/mujs-1.2.0:= ) + opengl? ( >=media-libs/freeglut-3.0.0 ) + ssl? ( >=dev-libs/openssl-1.1:0= ) + sys-libs/zlib + X? ( + x11-libs/libX11 + x11-libs/libXext + ) +" +DEPEND="${RDEPEND}" +BDEPEND="X? ( x11-base/xorg-proto ) + virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}"/${PN}-1.15-CFLAGS.patch + "${FILESDIR}"/${PN}-1.19.0-Makefile.patch + "${FILESDIR}"/${PN}-1.21.0-add-desktop-pc-files.patch + "${FILESDIR}"/${PN}-1.19.0-darwin.patch + # See bugs #662352 + "${FILESDIR}"/${PN}-1.15-openssl-x11.patch + # General cross fixes from Debian (refreshed) + "${FILESDIR}"/${PN}-1.19.0-cross-fixes.patch + "${FILESDIR}"/${PN}-1.21.1-no-drm.patch + "${FILESDIR}"/${PN}-1.21.1-fix-aliasing-violation.patch + "${FILESDIR}"/${PN}-1.23.7-libressl.patch +) + +src_prepare() { + default + + use hppa && append-cflags -ffunction-sections + + use drm && append-cflags -DGENTOO_MUPDF_DRM + + append-cflags "-DFZ_ENABLE_JS=$(usex javascript 1 0)" + + sed -e "1iOS = Linux" \ + -e "1iCC = $(tc-getCC)" \ + -e "1iCXX = $(tc-getCXX)" \ + -e "1iLD = $(tc-getLD)" \ + -e "1iAR = $(tc-getAR)" \ + -e "1iverbose = yes" \ + -e "1ibuild = debug" \ + -i Makerules || die "Failed adding build variables to Makerules in src_prepare()" + + # Adjust MuPDF version in .pc file created by the + # mupdf-1.10a-add-desktop-pc-xpm-files.patch file + sed -e "s/Version: \(.*\)/Version: ${PV}/" \ + -i platform/debian/${PN}.pc || die "Failed substituting version in ${PN}.pc" +} + +_emake() { + # When HAVE_OBJCOPY is yes, we end up with a lot of QA warnings. + # + # Bundled libs + # * General + # Note that USE_SYSTEM_LIBS=yes is a metaoption which will set to upstream's + # recommendations. It does not mean "always use system libs". + # See [0] below for what it means in a specific version. + # + # * freeglut + # We don't use system's freeglut because upstream has a special modified + # version of it that gives mupdf clipboard support. See bug #653298 + # + # * mujs + # As of v1.15.0, mupdf started using symbols in mujs that were not part + # of any release. We then went back to using the bundled version of it. + # But v1.17.0 looks ok, so we'll go unbundled again. Be aware of this risk + # when bumping and check! + # See bug #685244 + # + # * lmms2 + # mupdf uses a bundled version of lcms2 [0] because Artifex have forked it [1]. + # It is therefore not appropriate for us to unbundle it at this time. + # + # [0] https://git.ghostscript.com/?p=mupdf.git;a=blob;f=Makethird;h=c4c540fa4a075df0db85e6fdaab809099881f35a;hb=HEAD#l9 + # [1] https://www.ghostscript.com/doc/lcms2mt/doc/WhyThisFork.txt + local myemakeargs=( + GENTOO_PV=${PV} + HAVE_GLUT=$(usex opengl) + HAVE_LIBCRYPTO=$(usex ssl) + HAVE_X11=$(usex X) + USE_SYSTEM_LIBS=yes + USE_SYSTEM_MUJS=$(usex javascript) + USE_SYSTEM_GLUT=no + HAVE_OBJCOPY=no + "$@" + ) + + emake "${myemakeargs[@]}" +} + +src_compile() { + tc-export PKG_CONFIG + + _emake XCFLAGS="-fPIC" +} + +src_install() { + if use opengl || use X ; then + domenu platform/debian/${PN}.desktop + doicon -s scalable docs/logo/new-${PN}-icon.svg + else + rm docs/man/${PN}.1 || die "Failed to remove man page in src_install()" + fi + + sed -i \ + -e "1iprefix = ${ED}/usr" \ + -e "1ilibdir = ${ED}/usr/$(get_libdir)" \ + -e "1idocdir = ${ED}/usr/share/doc/${PF}" \ + -i Makerules || die "Failed adding liprefix, lilibdir and lidocdir to Makerules in src_install()" + + _emake install + + dosym libmupdf.so.${PV} /usr/$(get_libdir)/lib${PN}.so + + if use opengl ; then + einfo "mupdf symlink points to mupdf-gl (bug 616654)" + dosym ${PN}-gl /usr/bin/${PN} + elif use X ; then + einfo "mupdf symlink points to mupdf-x11 (bug 616654)" + dosym ${PN}-x11 /usr/bin/${PN} + fi + + # Respect libdir (bug #734898) + sed -i -e "s:/lib:/$(get_libdir):" platform/debian/${PN}.pc \ + || die "Failed to sed pkgconfig file to respect libdir in src_install()" + + insinto /usr/$(get_libdir)/pkgconfig + doins platform/debian/${PN}.pc + + dodoc README CHANGES CONTRIBUTORS +} diff --git a/app-text/mupdf/mupdf-1.23.3-r1.ebuild b/app-text/mupdf/mupdf-1.23.3-r1.ebuild new file mode 100644 index 0000000..ff5f1e0 --- /dev/null +++ b/app-text/mupdf/mupdf-1.23.3-r1.ebuild @@ -0,0 +1,165 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Please check upstream git regularly for relevant security-related commits +# to backport. + +inherit desktop flag-o-matic toolchain-funcs xdg + +DESCRIPTION="A lightweight PDF viewer and toolkit written in portable C" +HOMEPAGE="https://mupdf.com/ https://git.ghostscript.com/?p=mupdf.git" +SRC_URI="https://mupdf.com/downloads/archive/${P}-source.tar.gz" +S="${WORKDIR}"/${P}-source + +LICENSE="AGPL-3" +SLOT="0/${PV}" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86" +IUSE="+javascript opengl ssl X" +REQUIRED_USE="opengl? ( javascript )" + +# Although we use the bundled, patched version of freeglut in mupdf (because of +# bug #653298), the best way to ensure that its dependencies are present is to +# install system's freeglut. +RDEPEND=" + dev-libs/gumbo:= + media-libs/freetype:2 + media-libs/harfbuzz:=[truetype] + media-libs/jbig2dec:= + media-libs/libpng:0= + >=media-libs/openjpeg-2.1:2= + >=media-libs/libjpeg-turbo-1.5.3-r2:0= + net-misc/curl + javascript? ( >=dev-lang/mujs-1.2.0:= ) + opengl? ( >=media-libs/freeglut-3.0.0 ) + ssl? ( >=dev-libs/openssl-1.1:0= ) + sys-libs/zlib + X? ( + media-libs/libglvnd[X] + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + ) +" +DEPEND="${RDEPEND} + X? ( x11-base/xorg-proto )" +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}"/${PN}-1.15-CFLAGS.patch + "${FILESDIR}"/${PN}-1.19.0-Makefile.patch + "${FILESDIR}"/${PN}-1.21.0-add-desktop-pc-files.patch + "${FILESDIR}"/${P}-darwin.patch + # See bugs #662352 + "${FILESDIR}"/${P}-openssl-x11.patch + # General cross fixes from Debian (refreshed) + "${FILESDIR}"/${P}-cross-fixes.patch + "${FILESDIR}"/${PN}-1.21.1-fix-aliasing-violation.patch + "${FILESDIR}"/${PN}-1.23.7-libressl.patch +) + +src_prepare() { + default + + use hppa && append-cflags -ffunction-sections + + append-cflags "-DFZ_ENABLE_JS=$(usex javascript 1 0)" + + sed -e "1iOS = Linux" \ + -e "1iCC = $(tc-getCC)" \ + -e "1iCXX = $(tc-getCXX)" \ + -e "1iLD = $(tc-getLD)" \ + -e "1iAR = $(tc-getAR)" \ + -e "1iverbose = yes" \ + -e "1ibuild = debug" \ + -i Makerules || die "Failed adding build variables to Makerules in src_prepare()" + + # Adjust MuPDF version in .pc file created by the + # mupdf-1.10a-add-desktop-pc-xpm-files.patch file + sed -e "s/Version: \(.*\)/Version: ${PV}/" \ + -i platform/debian/${PN}.pc || die "Failed substituting version in ${PN}.pc" +} + +_emake() { + # When HAVE_OBJCOPY is yes, we end up with a lot of QA warnings. + # + # Bundled libs + # * General + # Note that USE_SYSTEM_LIBS=yes is a metaoption which will set to upstream's + # recommendations. It does not mean "always use system libs". + # See [0] below for what it means in a specific version. + # + # * freeglut + # We don't use system's freeglut because upstream has a special modified + # version of it that gives mupdf clipboard support. See bug #653298 + # + # * mujs + # As of v1.15.0, mupdf started using symbols in mujs that were not part + # of any release. We then went back to using the bundled version of it. + # But v1.17.0 looks ok, so we'll go unbundled again. Be aware of this risk + # when bumping and check! + # See bug #685244 + # + # * lmms2 + # mupdf uses a bundled version of lcms2 [0] because Artifex have forked it [1]. + # It is therefore not appropriate for us to unbundle it at this time. + # + # [0] https://git.ghostscript.com/?p=mupdf.git;a=blob;f=Makethird;h=c4c540fa4a075df0db85e6fdaab809099881f35a;hb=HEAD#l9 + # [1] https://www.ghostscript.com/doc/lcms2mt/doc/WhyThisFork.txt + local myemakeargs=( + GENTOO_PV=${PV} + HAVE_GLUT=$(usex opengl) + HAVE_LIBCRYPTO=$(usex ssl) + HAVE_X11=$(usex X) + USE_SYSTEM_LIBS=yes + USE_SYSTEM_MUJS=$(usex javascript) + USE_SYSTEM_GLUT=no + HAVE_OBJCOPY=no + "$@" + ) + + emake "${myemakeargs[@]}" +} + +src_compile() { + tc-export PKG_CONFIG + + _emake XCFLAGS="-fPIC" +} + +src_install() { + if use opengl || use X ; then + domenu platform/debian/${PN}.desktop + doicon -s scalable docs/logo/new-${PN}-icon.svg + else + rm docs/man/${PN}.1 || die "Failed to remove man page in src_install()" + fi + + sed -i \ + -e "1iprefix = ${ED}/usr" \ + -e "1ilibdir = ${ED}/usr/$(get_libdir)" \ + -e "1idocdir = ${ED}/usr/share/doc/${PF}" \ + -i Makerules || die "Failed adding liprefix, lilibdir and lidocdir to Makerules in src_install()" + + _emake install + + dosym libmupdf.so.${PV} /usr/$(get_libdir)/lib${PN}.so + + if use opengl ; then + einfo "mupdf symlink points to mupdf-gl (bug 616654)" + dosym ${PN}-gl /usr/bin/${PN} + elif use X ; then + einfo "mupdf symlink points to mupdf-x11 (bug 616654)" + dosym ${PN}-x11 /usr/bin/${PN} + fi + + # Respect libdir (bug #734898) + sed -i -e "s:/lib:/$(get_libdir):" platform/debian/${PN}.pc \ + || die "Failed to sed pkgconfig file to respect libdir in src_install()" + + insinto /usr/$(get_libdir)/pkgconfig + doins platform/debian/${PN}.pc + + dodoc README CHANGES CONTRIBUTORS +} diff --git a/app-text/mupdf/mupdf-1.23.7-r1.ebuild b/app-text/mupdf/mupdf-1.23.7-r1.ebuild new file mode 100644 index 0000000..931128e --- /dev/null +++ b/app-text/mupdf/mupdf-1.23.7-r1.ebuild @@ -0,0 +1,166 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Please check upstream git regularly for relevant security-related commits +# to backport. + +inherit desktop flag-o-matic toolchain-funcs xdg + +DESCRIPTION="A lightweight PDF viewer and toolkit written in portable C" +HOMEPAGE="https://mupdf.com/ https://git.ghostscript.com/?p=mupdf.git" +SRC_URI="https://mupdf.com/downloads/archive/${P}-source.tar.gz" +S="${WORKDIR}"/${P}-source + +LICENSE="AGPL-3" +SLOT="0/${PV}" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86" +IUSE="+javascript opengl ssl X" +REQUIRED_USE="opengl? ( javascript )" + +# Although we use the bundled, patched version of freeglut in mupdf (because of +# bug #653298), the best way to ensure that its dependencies are present is to +# install system's freeglut. +RDEPEND=" + dev-libs/gumbo:= + media-libs/freetype:2 + media-libs/harfbuzz:=[truetype] + media-libs/jbig2dec:= + media-libs/libpng:0= + >=media-libs/openjpeg-2.1:2= + >=media-libs/libjpeg-turbo-1.5.3-r2:0= + net-misc/curl + javascript? ( >=dev-lang/mujs-1.2.0:= ) + opengl? ( >=media-libs/freeglut-3.0.0 ) + ssl? ( >=dev-libs/openssl-1.1:0= ) + sys-libs/zlib + X? ( + media-libs/libglvnd[X] + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + ) +" +DEPEND="${RDEPEND} + X? ( x11-base/xorg-proto )" +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}"/${PN}-1.15-CFLAGS.patch + "${FILESDIR}"/${PN}-1.19.0-Makefile.patch + "${FILESDIR}"/${PN}-1.21.0-add-desktop-pc-files.patch + "${FILESDIR}"/${PN}-1.23.3-darwin.patch + # See bugs #662352 + "${FILESDIR}"/${PN}-1.23.3-openssl-x11.patch + # General cross fixes from Debian (refreshed) + "${FILESDIR}"/${PN}-1.23.3-cross-fixes.patch + "${FILESDIR}"/${PN}-1.21.1-fix-aliasing-violation.patch + "${FILESDIR}"/${PN}-1.23.7-libressl.patch +) + +src_prepare() { + default + + use hppa && append-cflags -ffunction-sections + + append-cflags "-DFZ_ENABLE_JS=$(usex javascript 1 0)" + + sed -e "1iOS = Linux" \ + -e "1iCC = $(tc-getCC)" \ + -e "1iCXX = $(tc-getCXX)" \ + -e "1iLD = $(tc-getLD)" \ + -e "1iAR = $(tc-getAR)" \ + -e "1iverbose = yes" \ + -e "1ibuild = debug" \ + -i Makerules || die "Failed adding build variables to Makerules in src_prepare()" + + # Adjust MuPDF version in .pc file created by the + # mupdf-1.21.0-add-desktop-pc-files.patch file + sed -e "s/Version: \(.*\)/Version: ${PV}/" \ + -i platform/debian/${PN}.pc || die "Failed substituting version in ${PN}.pc" +} + +_emake() { + # When HAVE_OBJCOPY is yes, we end up with a lot of QA warnings. + # + # Bundled libs + # * General + # Note that USE_SYSTEM_LIBS=yes is a metaoption which will set to upstream's + # recommendations. It does not mean "always use system libs". + # See [0] below for what it means in a specific version. + # + # * freeglut + # We don't use system's freeglut because upstream has a special modified + # version of it that gives mupdf clipboard support. See bug #653298 + # + # * mujs + # As of v1.15.0, mupdf started using symbols in mujs that were not part + # of any release. We then went back to using the bundled version of it. + # But v1.17.0 looks ok, so we'll go unbundled again. Be aware of this risk + # when bumping and check! + # See bug #685244 + # + # * lmms2 + # mupdf uses a bundled version of lcms2 [0] because Artifex have forked it [1]. + # It is therefore not appropriate for us to unbundle it at this time. + # + # [0] https://git.ghostscript.com/?p=mupdf.git;a=blob;f=Makethird;h=c4c540fa4a075df0db85e6fdaab809099881f35a;hb=HEAD#l9 + # [1] https://www.ghostscript.com/doc/lcms2mt/doc/WhyThisFork.txt + local myemakeargs=( + GENTOO_PV=${PV} + HAVE_GLUT=$(usex opengl) + HAVE_LIBCRYPTO=$(usex ssl) + HAVE_X11=$(usex X) + USE_SYSTEM_LIBS=yes + USE_SYSTEM_MUJS=$(usex javascript) + USE_SYSTEM_GLUT=no + HAVE_OBJCOPY=no + "$@" + ) + + emake "${myemakeargs[@]}" +} + +src_compile() { + tc-export PKG_CONFIG + + _emake XCFLAGS="-fPIC" +} + +src_install() { + if use opengl || use X ; then + domenu platform/debian/${PN}.desktop + doicon -s scalable docs/logo/new-${PN}-icon.svg + else + rm docs/man/${PN}.1 || die "Failed to remove man page in src_install()" + fi + + sed -i \ + -e "1iprefix = ${ED}/usr" \ + -e "1ilibdir = ${ED}/usr/$(get_libdir)" \ + -e "1idocdir = ${ED}/usr/share/doc/${PF}" \ + -i Makerules || die "Failed adding liprefix, lilibdir and lidocdir to Makerules in src_install()" + + _emake install + + dosym libmupdf.so.${PV} /usr/$(get_libdir)/lib${PN}.so + + if use opengl ; then + einfo "mupdf symlink points to mupdf-gl (bug 616654)" + dosym ${PN}-gl /usr/bin/${PN} + elif use X ; then + einfo "mupdf symlink points to mupdf-x11 (bug 616654)" + dosym ${PN}-x11 /usr/bin/${PN} + fi + + # Respect libdir and EPREFIX (bugs #734898, #911965) + sed -i -e "s:/lib:/$(get_libdir):" \ + -e "s:/usr:${EPREFIX}/usr:" platform/debian/${PN}.pc \ + || die "Failed to sed pkgconfig file to respect libdir and EPREFIX in src_install()" + + insinto /usr/$(get_libdir)/pkgconfig + doins platform/debian/${PN}.pc + + dodoc README CHANGES CONTRIBUTORS +} diff --git a/dev-db/mysql-connector-c++/Manifest b/dev-db/mysql-connector-c++/Manifest new file mode 100644 index 0000000..bf88587 --- /dev/null +++ b/dev-db/mysql-connector-c++/Manifest @@ -0,0 +1,3 @@ +DIST mysql-connector-c++-8.0.31-src.tar.gz 4201904 BLAKE2B 48385db732572ccf2ba91edca0fbdecf94b3ac5ca6c095e1e2e525e5f9b17749b9cb1ed9732253f9239296d364a69a91d56f60958eb4cf399f16db38f6bd76a8 SHA512 a088936e207926031b6bafe45925bf0c9d2acede9477b605adb09dc875c87965e58e3ecd0332168021122c9def831f0dfdb837ad2c4ea2f140b07b43c9f8bb3c +DIST mysql-connector-c++-8.0.32-src.tar.gz 4202413 BLAKE2B fe15be7b6ec0c4699ded6e392f3f2e1c12fa9fe033172f6219916fb6ce4ae78d3e8cc882eaf66da606dc1445a59a5cf573f92ee6f1d18178d6c11762dcffb0c0 SHA512 cdfddaf84efe0d49d07c5ef07b5c50bde2f64cbf58d48016573a20ca372b0ba5dab640305d16d8b34032a63f2ceb2954eac108f838fb2f3849a7f3838329df48 +DIST mysql-connector-c++-8.0.33-src.tar.gz 4531693 BLAKE2B b8f426742fa343ebc1f1da5ba1fbf7dfc0db39493bafd0f5d16e355d43277d78ff27b183edad31792a7591ac59bbfb4033f3498dc646883988cba189535a8ddf SHA512 a625a28f63161c97d727d90e7b1211273fe931ae1325c2fbeca16e770761e3159abdcaba1fb6eb1a557674fd817bf266875a089c8c2ea4d2dd1553e6fa887ef1 diff --git a/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.27-mysqlclient_r.patch b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.27-mysqlclient_r.patch new file mode 100644 index 0000000..d929601 --- /dev/null +++ b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.27-mysqlclient_r.patch @@ -0,0 +1,24 @@ +--- a/jdbc/FindMySQL.cmake 2021-09-10 18:31:29.000000000 +0200 ++++ b/jdbc/FindMySQL.cmake 2022-01-21 07:40:03.224705056 +0100 +@@ -282,8 +282,8 @@ + # there, pick "libmysqlclient" that in 5.5 and up is multithreaded + # anyway (soft link "libmysqlclient_r" is not installed MySQL Server + # 5.6 and Debian/Ubuntu and might go in 5.7 for all installs) +- set(_dynamic_libs "mysqlclient_r" "mysqlclient") +- set(_static_libs "libmysqlclient_r.a" "libmysqlclient.a") ++ set(_dynamic_libs "mysqlclient") ++ set(_static_libs "libmysqlclient.a") + set(_static_lib_ext ".a") + endif() + +--- a/jdbc/driver/nativeapi/libmysql_dynamic_proxy.cpp 2022-01-21 07:52:41.224586087 +0100 ++++ b/jdbc/driver/nativeapi/libmysql_dynamic_proxy.cpp 2022-01-21 07:52:50.168631719 +0100 +@@ -49,7 +49,7 @@ + #elif defined(__hpux) && defined(__hppa) + static const char * const baseName = "libmysqlclient_r.sl"; + #else +-static const char * const baseName = "libmysqlclient_r.so"; ++static const char * const baseName = "libmysqlclient.so"; + #endif + + template<typename FunctionType> diff --git a/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.32-libressl.patch b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.32-libressl.patch new file mode 100644 index 0000000..525fa3a --- /dev/null +++ b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.32-libressl.patch @@ -0,0 +1,49 @@ +https://github.com/mysql/mysql-connector-cpp/pull/33 + +From d4db68edf0c475d26758a2eaf68b1858444c8e2d Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Sun, 9 Apr 2023 04:07:59 +0100 +Subject: [PATCH] cdk: Use cmake's FindOpenSSL, not custom FindSSL module + +This avoids issues with detecting the version number with LibreSSL and also +futureproofs mysql for future versions of OpenSSL. + +diff --git a/cdk/CMakeLists.txt b/cdk/CMakeLists.txt +index 4fa43201d..59c96a3cd 100644 +--- a/cdk/CMakeLists.txt ++++ b/cdk/CMakeLists.txt +@@ -93,7 +93,7 @@ add_config(CDK_BIG_ENDIAN ${BIG_ENDIAN}) + # Dependencies + # + +-find_dependency(SSL) ++find_package(OpenSSL) + #find_dependency(Protobuf) + find_dependency(RapidJSON) + find_dependency(Coverage) +diff --git a/cdk/foundation/CMakeLists.txt b/cdk/foundation/CMakeLists.txt +index 0982d1c82..e0e3ed5f2 100644 +--- a/cdk/foundation/CMakeLists.txt ++++ b/cdk/foundation/CMakeLists.txt +@@ -90,7 +90,7 @@ target_include_directories(cdk_foundation PUBLIC + + target_link_libraries(cdk_foundation + PUBLIC RapidJSON::rapidjson +- PRIVATE SSL::ssl ++ PRIVATE OpenSSL::SSL + ) + + IF(WIN32) +diff --git a/cdk/mysqlx/CMakeLists.txt b/cdk/mysqlx/CMakeLists.txt +index 246874ffb..89fb26844 100644 +--- a/cdk/mysqlx/CMakeLists.txt ++++ b/cdk/mysqlx/CMakeLists.txt +@@ -51,7 +51,7 @@ ADD_LIBRARY(cdk_mysqlx STATIC + target_link_libraries(cdk_mysqlx PUBLIC cdk_proto_mysqlx cdk_foundation) + + # this is used by auth_hash.cc +-target_link_libraries(cdk_mysqlx PRIVATE SSL::ssl) ++target_link_libraries(cdk_mysqlx PRIVATE OpenSSL::SSL) + + ADD_COVERAGE(cdk_mysqlx) + diff --git a/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.33-jdbc.patch b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.33-jdbc.patch new file mode 100644 index 0000000..9fe986b --- /dev/null +++ b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.33-jdbc.patch @@ -0,0 +1,11 @@ +--- a/jdbc/driver/nativeapi/library_loader.h 2023-03-23 17:32:48.000000000 +0100 ++++ b/jdbc/driver/nativeapi/library_loader.h 2023-10-17 16:54:37.270710451 +0200 +@@ -45,6 +45,8 @@ + + #include <map> + ++#include "../mysql_util.h" ++ + namespace sql + { + namespace mysql diff --git a/dev-db/mysql-connector-c++/metadata.xml b/dev-db/mysql-connector-c++/metadata.xml new file mode 100644 index 0000000..bf1ec7c --- /dev/null +++ b/dev-db/mysql-connector-c++/metadata.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>mysql-bugs@gentoo.org</email> + <name>MySQL</name> + </maintainer> + <use> + <flag name="legacy">Build the legacy 1.x API as well as the DevX API</flag> + </use> + <upstream> + <remote-id type="github">mysql/mysql-connector-cpp</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.31.ebuild b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.31.ebuild new file mode 100644 index 0000000..79a9a10 --- /dev/null +++ b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.31.ebuild @@ -0,0 +1,59 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CMAKE_MAKEFILE_GENERATOR=emake +inherit cmake + +URI_DIR="Connector-C++" +DESCRIPTION="MySQL database connector for C++ (mimics JDBC 4.0 API)" +HOMEPAGE="https://dev.mysql.com/downloads/connector/cpp/" +SRC_URI="https://dev.mysql.com/get/Downloads/${URI_DIR}/${P}-src.tar.gz" +S="${WORKDIR}/${P}-src" + +LICENSE="Artistic GPL-2" +SLOT="0" +# -ppc, -sparc for bug #711940 +KEYWORDS="amd64 arm ~arm64 -ppc ppc64 -sparc x86" +IUSE="+legacy" + +RDEPEND=" + app-arch/lz4:= + app-arch/zstd:= + dev-libs/openssl:= + dev-libs/protobuf:= + sys-libs/zlib + legacy? ( + dev-libs/boost:= + >=dev-db/mysql-connector-c-8.0.27:= + ) +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${PN}-8.0.27-mysqlclient_r.patch + "${FILESDIR}"/${PN}-8.0.32-libressl.patch +) + +src_configure() { + local mycmakeargs=( + -DBUNDLE_DEPENDENCIES=OFF + -DWITH_PROTOBUF=system + -DWITH_LZ4=system + -DWITH_SSL=system + -DWITH_ZLIB=system + -DWITH_ZSTD=system + -DWITH_JDBC=$(usex legacy) + ) + + if use legacy ; then + mycmakeargs+=( + -DWITH_BOOST="${ESYSROOT}"/usr + -DMYSQLCLIENT_STATIC_BINDING=0 + -DMYSQLCLIENT_STATIC_LINKING=0 + ) + fi + + cmake_src_configure +} diff --git a/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.32.ebuild b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.32.ebuild new file mode 100644 index 0000000..a7c9a39 --- /dev/null +++ b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.32.ebuild @@ -0,0 +1,59 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CMAKE_MAKEFILE_GENERATOR=emake +inherit cmake + +URI_DIR="Connector-C++" +DESCRIPTION="MySQL database connector for C++ (mimics JDBC 4.0 API)" +HOMEPAGE="https://dev.mysql.com/downloads/connector/cpp/" +SRC_URI="https://dev.mysql.com/get/Downloads/${URI_DIR}/${P}-src.tar.gz" +S="${WORKDIR}/${P}-src" + +LICENSE="Artistic GPL-2" +SLOT="0" +# -ppc, -sparc for bug #711940 +KEYWORDS="amd64 arm ~arm64 -ppc ppc64 -sparc x86" +IUSE="+legacy" + +RDEPEND=" + app-arch/lz4:= + app-arch/zstd:= + dev-libs/openssl:= + >=dev-libs/protobuf-3.19.6:= + sys-libs/zlib + legacy? ( + dev-libs/boost:= + >=dev-db/mysql-connector-c-8.0.27:= + ) +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${PN}-8.0.27-mysqlclient_r.patch + "${FILESDIR}"/${PN}-8.0.32-libressl.patch +) + +src_configure() { + local mycmakeargs=( + -DBUNDLE_DEPENDENCIES=OFF + -DWITH_PROTOBUF=system + -DWITH_LZ4=system + -DWITH_SSL=system + -DWITH_ZLIB=system + -DWITH_ZSTD=system + -DWITH_JDBC=$(usex legacy) + ) + + if use legacy ; then + mycmakeargs+=( + -DWITH_BOOST="${ESYSROOT}"/usr + -DMYSQLCLIENT_STATIC_BINDING=0 + -DMYSQLCLIENT_STATIC_LINKING=0 + ) + fi + + cmake_src_configure +} diff --git a/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.33-r1.ebuild b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.33-r1.ebuild new file mode 100644 index 0000000..952fee8 --- /dev/null +++ b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.33-r1.ebuild @@ -0,0 +1,58 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CMAKE_MAKEFILE_GENERATOR=emake +inherit cmake + +URI_DIR="Connector-C++" +DESCRIPTION="MySQL database connector for C++ (mimics JDBC 4.0 API)" +HOMEPAGE="https://dev.mysql.com/downloads/connector/cpp/" +SRC_URI="https://dev.mysql.com/get/Downloads/${URI_DIR}/${P}-src.tar.gz" +S="${WORKDIR}/${P}-src" + +LICENSE="Artistic GPL-2" +SLOT="0" +# -ppc, -sparc for bug #711940 +KEYWORDS="amd64 arm ~arm64 -ppc ppc64 -sparc x86" +IUSE="+legacy" + +RDEPEND=" + app-arch/lz4:= + app-arch/zstd:= + dev-libs/openssl:= + sys-libs/zlib + legacy? ( + >=dev-db/mysql-connector-c-8.0.27:= + ) +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${PN}-8.0.27-mysqlclient_r.patch + "${FILESDIR}"/${PN}-8.0.32-libressl.patch + "${FILESDIR}"/${P}-jdbc.patch +) + +src_configure() { + local mycmakeargs=( + -DBUNDLE_DEPENDENCIES=OFF + # Cannot handle protobuf >23, bug #912797 + #-DWITH_PROTOBUF=system + -DWITH_LZ4=system + -DWITH_SSL=system + -DWITH_ZLIB=system + -DWITH_ZSTD=system + -DWITH_JDBC=$(usex legacy) + ) + + if use legacy ; then + mycmakeargs+=( + -DMYSQLCLIENT_STATIC_BINDING=0 + -DMYSQLCLIENT_STATIC_LINKING=0 + ) + fi + + cmake_src_configure +} diff --git a/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.33.ebuild b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.33.ebuild new file mode 100644 index 0000000..386efc7 --- /dev/null +++ b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.33.ebuild @@ -0,0 +1,46 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CMAKE_MAKEFILE_GENERATOR=emake +inherit cmake + +URI_DIR="Connector-C++" +DESCRIPTION="MySQL database connector for C++ (mimics JDBC 4.0 API)" +HOMEPAGE="https://dev.mysql.com/downloads/connector/cpp/" +SRC_URI="https://dev.mysql.com/get/Downloads/${URI_DIR}/${P}-src.tar.gz" +S="${WORKDIR}/${P}-src" + +LICENSE="Artistic GPL-2" +SLOT="0" +# -ppc, -sparc for bug #711940 +KEYWORDS="~amd64 ~arm ~arm64 -ppc ~ppc64 -sparc ~x86" + +RDEPEND=" + app-arch/lz4:= + app-arch/zstd:= + dev-libs/openssl:= + sys-libs/zlib +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${PN}-8.0.27-mysqlclient_r.patch + "${FILESDIR}"/${PN}-8.0.32-libressl.patch +) + +src_configure() { + local mycmakeargs=( + -DBUNDLE_DEPENDENCIES=OFF + # Cannot handle protobuf >23, bug #912797 + #-DWITH_PROTOBUF=system + -DWITH_LZ4=system + -DWITH_SSL=system + -DWITH_ZLIB=system + -DWITH_ZSTD=system + -DWITH_JDBC=OFF + ) + + cmake_src_configure +} diff --git a/dev-lang/python/Manifest b/dev-lang/python/Manifest new file mode 100644 index 0000000..e761edd --- /dev/null +++ b/dev-lang/python/Manifest @@ -0,0 +1,29 @@ +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.13.tar.xz 19663088 BLAKE2B d9a8edf89d0ccd665fd5ed444a144af240e078fcab1876fea8b44586c23651a08cf5833fc54c39e8471fd9e66ea0ded11fcaa5d215bc025acaf4504a15c5846d SHA512 7579772e501486b2b07f78142082dee1e99c7643640098860ac0cf2ca87daf7588b0c00b1db1960146b37f56a6ed98fd08297c25c9a19b612cf6e6a258984da8 +DIST Python-3.10.13.tar.xz.asc 833 BLAKE2B b00222b30a6701e77c11c6019e2240be7cf42f2b4e558c03f7a058664d242a00665fbc52fdf03106e84c75f49b51b705d8acd1f381d1f41ada67c4647652ef4c SHA512 3083e66f8d26128302dc77a0c6ba3bfefc4229928a1bbd06460f2fec2421188bd30d493e3bce138cde1fed1df206e1dda04912b9f43a0b81229f1e69135e3a7f +DIST Python-3.10.14.tar.xz 19600188 BLAKE2B a9e65fff590d56848f55f2d93d8a1c631bb8135617112997fbaea9fc45db1d5e2ce39f00cb29c9428542e523fdf48064bdb9aea144acb7aa7cfe71990b8e949e SHA512 adee638aeca898743da4b8245c0fa1e9b94b516f22e716e60c99038f0bb3dcbf726317aa86656404be1719b5a7c58eb09533720ebc0badbb04bd9a534dd48fef +DIST Python-3.10.14.tar.xz.asc 833 BLAKE2B 945ada655532d578beba9fdd882cc9cc247e24f7efd68ce172766a8adcb3c8d76bc1f229402405e607004ae0f9bb8e55e4b01867ca712700106d8ec42212cb2c SHA512 450f910a91dd0fb66f99245828983a9234c4a67ea7e653404efa06ce5da1c6667a46329a2d1e276c5a956d2c32d8ae6d8c497a1892102f4a360dae33b135c372 +DIST Python-3.11.8.tar.xz 20041256 BLAKE2B 361253743c58facd01063922523c39fafe647a4204e04db79f36f0c3c180c2f1e95e8ea6662e85a8da06bdbd84d32bb7df9ac0febf361122df5b207ade562740 SHA512 434e727fa370def348838fd84acb69b4d309cfb03f61bf5069150164e9ca005637ac01dfbf997f445607d4e28d02c8bed0858b36589240ccadaa4c14c19f2320 +DIST Python-3.11.8.tar.xz.asc 833 BLAKE2B c82907808de345b263cd1869589004a29e94f225c338a6da3035130728bda137727898743f30d64cc4b819a28cd035fa70123cc45cbf8719b66f9d3ef14452e2 SHA512 aebec01f84e96a76f6c5949004df2bb51c817bac3fc8d925ee26ded1ff2d80bec1b579dd0fc129004bc9cd81cbdcdcdf7c1f0471c3d26b70bd6dac11b97187e0 +DIST Python-3.11.9.tar.xz 20175816 BLAKE2B 4e7cd2c42ee39b5ef9624ebd1798320957e948cb4f23f17fd1530814c60126dbf988846928d4d7d4b9d2174029ab8d4dbaf19e6203da237da4c3212ddebd5803 SHA512 2b0a1d936b4ef8376f9655797aece8ffdff75031ad7bfa840f330cac2aed189aecc80c163edc12ea772851d7a011f3fc1960470a73d9d4290cf3ab8ad6ed7e6a +DIST Python-3.11.9.tar.xz.asc 833 BLAKE2B fa29f632bae0bee7db946038ee3529bc3bfbe1b2e755b21394f67a3c80911ce8079aaab43a16d88e614a8bfc01fb5105ce3f61c59a5ca44470b0f59787c707b3 SHA512 b18b50e7168b2ca5376a1fa75e50e8baae2026d4f11d4cf613d758f3f17df4610fe4653fb2ac0c5c4ec0f6e630dc6490ad1ff32a2fd0ebd60f9f3bd136207ffc +DIST Python-3.12.2.tar.xz 20591308 BLAKE2B 419186d220d4ae5ca31466771158c8b56f5298b93e81a29993f36711e08b0384e002d891280ca29099ae826919ba99c2d056d468d9d3049a984d58e01d4972c0 SHA512 2ccfae7b9f95d8e15ea85d3f66eea5f6a8fdcaffc0b405095fecb33efc0df50b831c1215542910ced948b54e6de1f7242b0b8b9afc5f89079451c552430d7d9f +DIST Python-3.12.2.tar.xz.asc 963 BLAKE2B 45bfa01009f4df19d348a1fda722901cb4f0b76eb63fcf1061c2796949b5b2ef301fd0fdf818cd145e41d45e5785e0cfbfab8d98751765741715ee7d1b27f2f8 SHA512 fb477acb49864a662b1586db79e80fd8ebab85d4e5e14acd3bfb5afc3dbe8d6b9bf97eb518dfb77662e27040d400f451ed7575fe1264a6cc0d9feb06e4f2dc84 +DIST Python-3.12.3.tar.xz 20625068 BLAKE2B fc4f57ae50183db4c8cb37d94c37a7e58da5d031e03866841a678b986f01bbb8afdefb38124ba82b0a4988445b647214be43338dea13b0f063d3c2bf81c48c0b SHA512 4a2213b108e7f1f1525baa8348e68b2a2336d925e60d0a59f0225fc470768a2c8031edafc0b8243f94dbae18afda335ee5adf2785328c2218fd64cbb439f13a4 +DIST Python-3.12.3.tar.xz.asc 963 BLAKE2B f9668dde210793f8da0e0bb026b8ec3e0b4bc3abc58e72732f8faf356b19ca88a59b9d89b4b10f77b3602d9a967f0f2f44a0f091d698bc28ba9bad8049e5e006 SHA512 c291ec5b5e4f8deba867cc517624dd9a174745f04061ef737e58f3d52b9b30318264aec350e339fe88ccb493809ca1a90a378e86d86b8ec4a4f578b1a5843624 +DIST Python-3.9.18.tar.xz 19673928 BLAKE2B 97da9bedaf29101e5df82199ac3ee12f1da74d5cc89de21ff1510c3f6d34d7f9194489e79855f1ab3c6f26768738e784cb7231c1a692fa746edd21d35558bc4e SHA512 aab155aca757d298394eddb91ff9a8f239665bd46feb495c6b6f735bbcb7489c05c858cc4cd08f1575c24f293b33492d763e9a140d92f0b2b0cc81a165a677c7 +DIST Python-3.9.18.tar.xz.asc 833 BLAKE2B b2160eedf7a7529c379ede5cd626f2d1e36db65bad8c8968adbc2940e597bf0e66f4872078c6543c69aed9b7f38b41d922fdc1cb8046738c1d8566a3f48da7d3 SHA512 dff9a86df2b0774b68e7c762bacf05e2482dbb218301acfdc9128fc600bbc51c97a3a44f6b7cee87bd4e153bcb4a0af3c98109560d0c7861b7508edc9ae05ea1 +DIST Python-3.9.19.tar.xz 19682840 BLAKE2B a12256663f0ff3b799c2193c5877aa89a434340dfa01e655f790abea70af0709b54577e1c2590add241308a8581fd6f45a22aed450bd5db2bf9fa35c4a9d619b SHA512 5577830c734e63a70bbc62cd33d263b9aa87c4381b49cb694c3559067c4c682a55506b65ec5514a8e0a5abf6294dc728e909385d449ae1c388e62f83cea9bb89 +DIST Python-3.9.19.tar.xz.asc 833 BLAKE2B b48b58b8ccf4d6ba8d0d7120f04bebf59f843ffecf5fde4c3989fd9c26e3d3d1ccf4e5688f7024ae94775c8731e9ffa56799fca8596289edf93e4aac5480aaad SHA512 f7f4946243dfc56de2c84f50276b088d347f17054f50e3331d1e312e2a8e2c6ed1b4b4a807202b51137fd2af3fc9218cafa42ed348a954ace896d9a432e2defd +DIST python-gentoo-patches-2.7.18_p16.tar.xz 35448 BLAKE2B 0139c0944f62f9cdd236f6a8557e0ed19704c7d72869af1cb7d8bd3e646a746cd4a0201e1b44232a5e78ef49f254db20b0d0271bf744fbfd4fe0f1e99b8f3e6c SHA512 810be590d0e06fab4b2165e6852ca49662f09dcd7e20b47a29f613ad7653252c8dfac3f0eb228d77c8a914efa7c08788b2fbd552a4b47504f5fd0ec17450c48f +DIST python-gentoo-patches-3.10.13_p3.tar.xz 16192 BLAKE2B f13efbaf3b41572cc9d1f3878cf2339448f513c96fd85b35d0f4a9a472cd4867d898ec46230391fc916debf5dc23ac0030b228f8ab78b2ac9e38159c75aecabb SHA512 a5eab5f3ea59b12fa6613a18b4f318981b750899d69cf382abea7705efb873be5b94024ed64fb47f19aa6f6e4f2a9ebe05c05361e7a45bd41dea5161f955448c +DIST python-gentoo-patches-3.10.14.tar.xz 15240 BLAKE2B 0bfae6d93ceb1292891450d6af3bd7f286546141f1eb4a6a39ec1a43450f62fab6f31aa7e7be25982e6354ccfa1f233a4c949f6c9dffcf2d71ef136a64d91597 SHA512 c7084bf49642192d69979fff205d7e29d9491f483219240e3a1cd5fc00985e471a1f884af789058fa490f0994829b50accf2e445d21906a96aefdec8a394da24 +DIST python-gentoo-patches-3.10.14_p1.tar.xz 15836 BLAKE2B a850e4ad4f025fa9d38ccba937f1b3ee8443ed186c22ede58b4c7324a8541cf724590686671a9aa9194662303ce75bc80aac8ee6f9da34b793876817b6f593ff SHA512 5d969f5e5126ee675a062924a5f403de142fc5bfe4a931fd3576bcc6298a855419d305d4b1ffedacb429783a05324b36eef4c45c861c47bada0bdd840de2bca3 +DIST python-gentoo-patches-3.11.8_p1.tar.xz 9604 BLAKE2B 9017104f160f24e0a1818a8b12225c596faee79d646cc73b6edc4ed1e3faca86cfa2fcea09a128224b85330a67dea65f658507e60dcd09b10af0d590a2b05082 SHA512 0f0afa57abfb4282953a1a78e5ad1cc5e17c0a205e96d9c152f9de6537da95671c1d429ac03fd6aa70a457b27a19b0892a1f9b81164468c4085172a58f5e8d9e +DIST python-gentoo-patches-3.11.9.tar.xz 8456 BLAKE2B 4e62837f17c1d056460df417b056a79ad78dbcdd3454761c7cda68ffe6faf8f4d4f04d5539e0ba94332fe19a751f7d5ff2c35ff969a6aa09a2c72d2ce5efbff1 SHA512 a288aa8d1d15e906e0f1762602a2122f9dc91bbd6b72123ac5d00ce55b3af324a4e8280b600fc0fb630e489e57ee1547d7595a4ede7a70e4b26d6686a8414997 +DIST python-gentoo-patches-3.12.2_p1.tar.xz 7208 BLAKE2B 8266f2b6c64ffd509278c0d8756680e6700dcd3ed3ab6d3f0e1be2cc87cb20bc694f9e386b474fa5d115ffecdd5d4807a956a48450e109ef7f449ed6f4a8afce SHA512 5fdb93ffae471b5a9e617c12ca1646b9521867cd260efe6da6350fcf5ba24114cad1dc715f033079ab69ecab7cc62c870e14fe2d2035c2d7f29c05cc0f1297db +DIST python-gentoo-patches-3.12.3.tar.xz 6028 BLAKE2B 7953a48a1d95a6a33bd88060fbcac463a5469371aa0c882c3945f1fea64a63c4d45fca8451f51f4eaeea00a04267ad2e54e4cc720c95e8bb5a3477e00263b80a SHA512 4779bab2b24e59e4a77987ce3e9611d99e87c9c4d016309758c26a65fe2e11ef04d48d5af628c02b1552dc1f31b768f87448f8e19e716b4fe372941e6dacac3f +DIST python-gentoo-patches-3.9.18_p2.tar.xz 26756 BLAKE2B d9625e8972e2b7536ca1f54a284f0b414361e234b869f98593d132d7bc63b7a1a311c3e6769deba1f07358053982845a96b62b14871388e3b6d211f51f7358b5 SHA512 83584170cb29fb71937dd224af381cd5602b736d893c8ae89891805d6882d74208244040e3278baef82c31a6769c827c21746265260e9be7bc55ffdb8b625b2d +DIST python-gentoo-patches-3.9.19.tar.xz 25828 BLAKE2B 1213880c55a34d4c39546fd5b5bfed17f969d8ebf0230861c04730c193b568adc9236e72cf3d65b0169769f47c488954abbcbbefaa28058409010704f3a5ccd0 SHA512 634809c9c80df37336d435e3d946c156f3623454b2cf5aa9a3a6d5b6754a5cfe2fa370310d9ba846abb3b2cdfe81dfec2071efe45b5e23396b38e392cd3314b8 +DIST python-gentoo-patches-3.9.19_p2.tar.xz 27684 BLAKE2B a69f00548c153da7b13dfeccb332d3d67ecf649fb5ae054590492f3e2fc2c84b78ebaf90bcf9738157c9022778e5bf2a6b4fb6a99e996dcb63859dcf6f84af23 SHA512 552a5f2d89307d4193d76df5a2cf1deb4bd5c8ad9ec81e6768987f1649f6571a318e68b92d8f8ecdba12bfe9c5f1a427a4cc577e6aaebf7748027cc50e412804 diff --git a/dev-lang/python/files/pydoc.conf b/dev-lang/python/files/pydoc.conf new file mode 100644 index 0000000..3c6920c --- /dev/null +++ b/dev-lang/python/files/pydoc.conf @@ -0,0 +1,6 @@ +# /etc/init.d/pydoc.conf + +# This file contains the configuration for pydoc's internal webserver. + +# Default port for Python's pydoc server. +@PYDOC_PORT_VARIABLE@="7464" diff --git a/dev-lang/python/files/pydoc.init b/dev-lang/python/files/pydoc.init new file mode 100644 index 0000000..f8e0563 --- /dev/null +++ b/dev-lang/python/files/pydoc.init @@ -0,0 +1,24 @@ +#!/sbin/openrc-run +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public Licence v2 + +start() { + local pydoc_port="${@PYDOC_PORT_VARIABLE@-${PYDOC_PORT}}" + + if [ -z "${pydoc_port}" ]; then + eerror "Port not set" + return 1 + fi + + ebegin "Starting pydoc server on port ${pydoc_port}" + start-stop-daemon --start --background --make-pidfile \ + --pidfile /var/run/@PYDOC@.pid \ + --exec /usr/bin/@PYDOC@ -- -p "${pydoc_port}" + eend $? +} + +stop() { + ebegin "Stopping pydoc server" + start-stop-daemon --stop --quiet --pidfile /var/run/@PYDOC@.pid + eend $? +} diff --git a/dev-lang/python/files/python-2.7.18-libressl.patch b/dev-lang/python/files/python-2.7.18-libressl.patch new file mode 100644 index 0000000..159d329 --- /dev/null +++ b/dev-lang/python/files/python-2.7.18-libressl.patch @@ -0,0 +1,26 @@ +https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/lang/python/2.7/patches/patch-Modules__hashopenssl_c + +--- a/Modules/_hashopenssl.c ++++ b/Modules/_hashopenssl.c +@@ -56,7 +56,8 @@ + #define _OPENSSL_SUPPORTS_SHA2 + #endif + +-#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || \ ++ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL) + /* OpenSSL < 1.1.0 */ + #define EVP_MD_CTX_new EVP_MD_CTX_create + #define EVP_MD_CTX_free EVP_MD_CTX_destroy +--- a/Modules/_ssl.c ++++ b/Modules/_ssl.c +@@ -596,7 +596,9 @@ + Py_INCREF(sslctx); + + /* Make sure the SSL error state is initialized */ ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER < 0x3090000fL) + (void) ERR_get_state(); ++#endif + ERR_clear_error(); + + PySSL_BEGIN_ALLOW_THREADS diff --git a/dev-lang/python/files/python-3.10.14-libressl.patch b/dev-lang/python/files/python-3.10.14-libressl.patch new file mode 100644 index 0000000..7bde606 --- /dev/null +++ b/dev-lang/python/files/python-3.10.14-libressl.patch @@ -0,0 +1,11 @@ +--- a/Modules/_ssl.c.orig ++++ b/Modules/_ssl.c +@@ -4523,7 +4523,7 @@ + return 0; + } + +-#if OPENSSL_VERSION_NUMBER < 0x30300000L ++#if OPENSSL_VERSION_NUMBER < 0x30300000L && !defined(LIBRESSL_VERSION_NUMBER) + static X509_OBJECT *x509_object_dup(const X509_OBJECT *obj) + { + int ok; diff --git a/dev-lang/python/files/python-3.10.3-libressl.patch b/dev-lang/python/files/python-3.10.3-libressl.patch new file mode 100644 index 0000000..ebff9d4 --- /dev/null +++ b/dev-lang/python/files/python-3.10.3-libressl.patch @@ -0,0 +1,69 @@ +LibreSSL has NID_sha3_256 and NID_sha512_256 now, but it's simpler to +handle -stable updates if we keep the patch until 7.4 is out. + +Index: Modules/_hashopenssl.c +--- a/Modules/_hashopenssl.c.orig ++++ b/Modules/_hashopenssl.c +@@ -45,10 +45,18 @@ + + #define MUNCH_SIZE INT_MAX + ++#ifdef NID_id_scrypt + #define PY_OPENSSL_HAS_SCRYPT 1 ++#endif ++#ifdef NID_sha3_256 + #define PY_OPENSSL_HAS_SHA3 1 ++#endif ++#ifdef NID_shake256 + #define PY_OPENSSL_HAS_SHAKE 1 ++#endif ++#ifdef NID_blake2s256 + #define PY_OPENSSL_HAS_BLAKE2 1 ++#endif + + #if OPENSSL_VERSION_NUMBER >= 0x30000000L + #define PY_EVP_MD EVP_MD +@@ -120,19 +128,27 @@ static const py_hashentry_t py_hashes[] = { + PY_HASH_ENTRY(Py_hash_sha384, "SHA384", SN_sha384, NID_sha384), + PY_HASH_ENTRY(Py_hash_sha512, "SHA512", SN_sha512, NID_sha512), + /* truncated sha2 */ ++#ifdef NID_sha512_256 + PY_HASH_ENTRY(Py_hash_sha512_224, "SHA512_224", SN_sha512_224, NID_sha512_224), + PY_HASH_ENTRY(Py_hash_sha512_256, "SHA512_256", SN_sha512_256, NID_sha512_256), ++#endif + /* sha3 */ ++#ifdef PY_OPENSSL_HAS_SHA3 + PY_HASH_ENTRY(Py_hash_sha3_224, NULL, SN_sha3_224, NID_sha3_224), + PY_HASH_ENTRY(Py_hash_sha3_256, NULL, SN_sha3_256, NID_sha3_256), + PY_HASH_ENTRY(Py_hash_sha3_384, NULL, SN_sha3_384, NID_sha3_384), + PY_HASH_ENTRY(Py_hash_sha3_512, NULL, SN_sha3_512, NID_sha3_512), ++#endif + /* sha3 shake */ ++#ifdef PY_OPENSSL_HAS_SHAKE + PY_HASH_ENTRY(Py_hash_shake_128, NULL, SN_shake128, NID_shake128), + PY_HASH_ENTRY(Py_hash_shake_256, NULL, SN_shake256, NID_shake256), ++#endif + /* blake2 digest */ ++#ifdef PY_OPENSSL_HAS_BLAKE2 + PY_HASH_ENTRY(Py_hash_blake2s, "blake2s256", SN_blake2s256, NID_blake2s256), + PY_HASH_ENTRY(Py_hash_blake2b, "blake2b512", SN_blake2b512, NID_blake2b512), ++#endif + PY_HASH_ENTRY(NULL, NULL, NULL, 0), + }; + +@@ -873,11 +889,15 @@ py_evp_fromname(PyObject *module, const char *digestna + goto exit; + } + ++#ifndef EVP_MD_FLAG_XOF ++ type = get_hashlib_state(module)->EVPtype; ++#else + if ((EVP_MD_flags(digest) & EVP_MD_FLAG_XOF) == EVP_MD_FLAG_XOF) { + type = get_hashlib_state(module)->EVPXOFtype; + } else { + type = get_hashlib_state(module)->EVPtype; + } ++#endif + + self = newEVPobject(type); + if (self == NULL) { diff --git a/dev-lang/python/files/python-3.9.9-r1-libressl.patch b/dev-lang/python/files/python-3.9.9-r1-libressl.patch new file mode 100644 index 0000000..997bc0e --- /dev/null +++ b/dev-lang/python/files/python-3.9.9-r1-libressl.patch @@ -0,0 +1,34 @@ +$OpenBSD: patch-Modules__hashopenssl_c,v 1.3 2022/01/21 04:25:12 kmos Exp $ + +Index: Modules/_hashopenssl.c +--- a/Modules/_hashopenssl.c ++++ b/Modules/_hashopenssl.c +@@ -43,7 +43,8 @@ + # error "OPENSSL_THREADS is not defined, Python requires thread-safe OpenSSL" + #endif + +-#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || \ ++ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL) + /* OpenSSL < 1.1.0 */ + #define EVP_MD_CTX_new EVP_MD_CTX_create + #define EVP_MD_CTX_free EVP_MD_CTX_destroy + +$OpenBSD: patch-Modules__ssl_c,v 1.3 2021/11/18 15:45:28 tb Exp $ + +XXX maybe this can go away now we have auto-init, I'm not sure exactly +what python's lock protects + +Index: Modules/_ssl.c +--- a/Modules/_ssl.c ++++ b/Modules/_ssl.c +@@ -213,6 +213,9 @@ extern const SSL_METHOD *TLSv1_2_method(void); + #if defined(OPENSSL_VERSION_1_1) && !defined(OPENSSL_NO_SSL2) + #define OPENSSL_NO_SSL2 + #endif ++#if defined(LIBRESSL_VERSION_NUMBER) && defined(WITH_THREAD) ++#define HAVE_OPENSSL_CRYPTO_LOCK ++#endif + + #ifndef PY_OPENSSL_1_1_API + /* OpenSSL 1.1 API shims for OpenSSL < 1.1.0 and LibreSSL < 2.7.0 */ diff --git a/dev-lang/python/metadata.xml b/dev-lang/python/metadata.xml new file mode 100644 index 0000000..22ce986 --- /dev/null +++ b/dev-lang/python/metadata.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>python@gentoo.org</email> + <name>Python</name> + </maintainer> + <use> + <flag name="bluetooth"> + Build Bluetooth protocol support in socket module + </flag> + <flag name="ensurepip"> + Install the ensurepip module that uses bundled wheels + to bootstrap pip and setuptools (if disabled, it will + be only possible to use venv `--without-pip`) + </flag> + <flag name="jit"> + Enable experimental Just-In-Time compilation support. + </flag> + <flag name="libedit"> + Link readline extension against <pkg>dev-libs/libedit</pkg> + instead of <pkg>sys-libs/readline</pkg> + </flag> + <flag name="pgo"> + Optimize the build using Profile Guided Optimization (PGO) + by running Python's test suite and collecting statistics + based on its performance. This will take longer to build. + </flag> + <flag name="valgrind"> + Disable pymalloc when running under + <pkg>dev-debug/valgrind</pkg> is detected (may incur minor + performance penalty even when valgrind is not used) + </flag> + <flag name="wininst"> + Install Windows executables required to create an executable + installer for MS Windows + </flag> + </use> + <upstream> + <remote-id type="cpe">cpe:/a:python:python</remote-id> + <remote-id type="github">python/cpython</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-lang/python/python-2.7.18_p16-r2.ebuild b/dev-lang/python/python-2.7.18_p16-r2.ebuild new file mode 100644 index 0000000..6d0e22d --- /dev/null +++ b/dev-lang/python/python-2.7.18_p16-r2.ebuild @@ -0,0 +1,323 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" +WANT_LIBTOOL="none" + +inherit autotools flag-o-matic pax-utils toolchain-funcs verify-sig + +MY_P="Python-${PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ + https://gitweb.gentoo.org/fork/cpython.git/ +" +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=" + berkdb bluetooth build examples gdbm +ncurses +readline + +sqlite +ssl tk valgrind wininst +xml +" +RESTRICT="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:= + dev-libs/libffi:= + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + berkdb? ( || ( + sys-libs/db:5.3 + sys-libs/db:4.8 + ) ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( >=sys-libs/readline-4.1:= ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( dev-libs/openssl:= ) + 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 ) + valgrind? ( dev-debug/valgrind ) +" +BDEPEND=" + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_setup() { + if use berkdb; then + ewarn "'bsddb' module is out-of-date and no longer maintained inside" + ewarn "dev-lang/python. 'bsddb' and 'dbhash' modules have been additionally" + ewarn "removed in Python 3. A maintained alternative of 'bsddb3' module" + ewarn "is provided by dev-python/bsddb3." + fi +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat, libffi and zlib are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + rm -r Modules/zlib || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-2.7.18-libressl.patch + ) + + default + + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \ + Lib/distutils/command/install.py \ + Lib/distutils/sysconfig.py \ + Lib/site.py \ + Lib/sysconfig.py \ + Lib/test/test_site.py \ + Makefile.pre.in \ + Modules/Setup.dist \ + Modules/getpath.c \ + setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@" + + if ! use wininst; then + rm Lib/distutils/command/wininst*.exe || die + fi + + eautoreconf +} + +src_configure() { + # dbm module can be linked against berkdb or gdbm. + # Defaults to gdbm when both are enabled, #204343. + local disable + use berkdb || use gdbm || disable+=" dbm" + use berkdb || disable+=" _bsddb" + # disable automagic bluetooth headers detection + use bluetooth || export ac_cv_header_bluetooth_bluetooth_h=no + 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 + + if tc-is-cross-compiler; then + # Force some tests that try to poke fs paths. + export ac_cv_file__dev_ptc=no + export ac_cv_file__dev_ptmx=yes + fi + + # Export CXX so it ends up in /usr/lib/python2.X/config/Makefile. + tc-export CXX + # The configure script fails to use pkg-config correctly. + # http://bugs.python.org/issue15506 + export ac_cv_path_PKG_CONFIG=$(tc-getPKG_CONFIG) + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + if use berkdb; then + dbmliborder+="${dbmliborder:+:}bdb" + fi + + local myeconfargs=( + # The check is broken on clang, and gives false positive: + # https://bugs.gentoo.org/596798 + # (upstream dropped this flag in 3.2a4 anyway) + ac_cv_opt_olimit_ok=no + # 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 + # Test program has missing includes. This doesn't change + # the result but it's cleaner to force it. + ac_cv_broken_poll=no + + --with-fpectl + --enable-shared + --enable-ipv6 + --with-threads + --enable-unicode=ucs4 + --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 + + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + 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 + + # Avoid invoking pgen for cross-compiles. + touch Include/graminit.h Python/graminit.c || die + + emake + + # 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 + + # Skip failing tests. + local skipped_tests=( distutils gdb ) + + for test in "${skipped_tests[@]}"; do + mv Lib/test/test_${test}.py "${T}"/ || die + done + + # bug 660358 + local -x COLUMNS=80 + + # Daylight saving time problem + # https://bugs.python.org/issue22067 + # https://bugs.gentoo.org/610628 + local -x TZ=UTC + + # Rerun failed tests in verbose mode (regrtest -w). + emake -Onone test EXTRATESTOPTS="-w" < /dev/tty + + for test in "${skipped_tests[@]}"; do + mv "${T}/test_${test}.py" Lib/test/ || die + done +} + +src_install() { + local libdir=${ED}/usr/$(get_libdir)/python${PYVER} + + emake DESTDIR="${D}" altinstall + + sed -e "s/\(LDFLAGS=\).*/\1/" -i "${libdir}/config/Makefile" || die + + # Remove static library + rm "${ED}"/usr/$(get_libdir)/libpython*.a || die + + # Fix collisions between different slots of Python. + mv "${ED}/usr/bin/2to3" "${ED}/usr/bin/2to3-${PYVER}" || die + mv "${ED}/usr/bin/pydoc" "${ED}/usr/bin/pydoc${PYVER}" || die + mv "${ED}/usr/bin/idle" "${ED}/usr/bin/idle${PYVER}" || die + rm "${ED}/usr/bin/smtpd.py" || die + + if ! use berkdb; then + rm -r "${libdir}/"{bsddb,dbhash.py*,test/test_bsddb*} || 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,lib-tk} || die + fi + + dodoc Misc/{ACKS,HISTORY,NEWS} + + if use examples; then + docinto examples + dodoc -r Tools + fi + + 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" + + # python2* is no longer wrapped, so just symlink it + local pymajor=${PYVER%.*} + dosym "python${PYVER}" "/usr/bin/python${pymajor}" + dosym "python${PYVER}-config" "/usr/bin/python${pymajor}-config" +} diff --git a/dev-lang/python/python-3.10.13_p3.ebuild b/dev-lang/python/python-3.10.13_p3.ebuild new file mode 100644 index 0000000..ef4e8a6 --- /dev/null +++ b/dev-lang/python/python-3.10.13_p3.ebuild @@ -0,0 +1,509 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit prefix python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm libedit + +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + valgrind? ( dev-debug/valgrind ) + test? ( app-arch/xz-utils ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-3.10.3-libressl.patch + ) + + default + + # https://bugs.gentoo.org/850151 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + local jobs=$(makeopts_jobs) + sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die + sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 and bug #864911. + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross. + --without-lto + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" \ + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Avoid as many dependencies as possible for the cross build. + cat >> Makefile <<-EOF || die + MODULE_NIS=disabled + MODULE__DBM=disabled + MODULE__GDBM=disabled + MODULE__DBM=disabled + MODULE__SQLITE3=disabled + MODULE__HASHLIB=disabled + MODULE__SSL=disabled + MODULE__CURSES=disabled + MODULE__CURSES_PANEL=disabled + MODULE_READLINE=disabled + MODULE__TKINTER=disabled + MODULE_PYEXPAT=disabled + MODULE_ZLIB=disabled + EOF + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the Python it was pointed to + # immediately. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + local disable + use gdbm || disable+=" gdbm" + use ncurses || disable+=" _curses _curses_panel" + use readline || disable+=" readline" + use sqlite || disable+=" _sqlite3" + use ssl || export PYTHON_DISABLE_SSL="1" + use tk || disable+=" _tkinter" + export PYTHON_DISABLE_MODULES="${disable}" + + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}" + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + 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_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + local -x PROFILE_TASK="${profile_task_flags[*]}" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-ffi + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + if tc-is-cross-compiler ; then + build_cbuild_python + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + export PATH="${WORKDIR}/${P}-${CBUILD}:${PATH}" + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + hprefixify setup.py + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + # Prevent using distutils bundled by setuptools. + # https://bugs.gentoo.org/823728 + export SETUPTOOLS_USE_DISTUTILS=stdlib + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + 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_concurrent_futures + -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 -Onone 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 +} diff --git a/dev-lang/python/python-3.10.14.ebuild b/dev-lang/python/python-3.10.14.ebuild new file mode 100644 index 0000000..ff136c1 --- /dev/null +++ b/dev-lang/python/python-3.10.14.ebuild @@ -0,0 +1,510 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit prefix python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 sparc x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm libedit + +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + valgrind? ( dev-debug/valgrind ) + test? ( app-arch/xz-utils ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-3.10.3-libressl.patch + "${FILESDIR}"/${PN}-3.10.14-libressl.patch + ) + + default + + # https://bugs.gentoo.org/850151 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + local jobs=$(makeopts_jobs) + sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die + sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 and bug #864911. + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross. + --without-lto + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" \ + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Avoid as many dependencies as possible for the cross build. + cat >> Makefile <<-EOF || die + MODULE_NIS=disabled + MODULE__DBM=disabled + MODULE__GDBM=disabled + MODULE__DBM=disabled + MODULE__SQLITE3=disabled + MODULE__HASHLIB=disabled + MODULE__SSL=disabled + MODULE__CURSES=disabled + MODULE__CURSES_PANEL=disabled + MODULE_READLINE=disabled + MODULE__TKINTER=disabled + MODULE_PYEXPAT=disabled + MODULE_ZLIB=disabled + EOF + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the Python it was pointed to + # immediately. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + local disable + use gdbm || disable+=" gdbm" + use ncurses || disable+=" _curses _curses_panel" + use readline || disable+=" readline" + use sqlite || disable+=" _sqlite3" + use ssl || export PYTHON_DISABLE_SSL="1" + use tk || disable+=" _tkinter" + export PYTHON_DISABLE_MODULES="${disable}" + + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}" + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + 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_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + local -x PROFILE_TASK="${profile_task_flags[*]}" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-ffi + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + if tc-is-cross-compiler ; then + build_cbuild_python + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + export PATH="${WORKDIR}/${P}-${CBUILD}:${PATH}" + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + hprefixify setup.py + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + # Prevent using distutils bundled by setuptools. + # https://bugs.gentoo.org/823728 + export SETUPTOOLS_USE_DISTUTILS=stdlib + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + 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_concurrent_futures + -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 -Onone 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 +} diff --git a/dev-lang/python/python-3.10.14_p1.ebuild b/dev-lang/python/python-3.10.14_p1.ebuild new file mode 100644 index 0000000..655cd66 --- /dev/null +++ b/dev-lang/python/python-3.10.14_p1.ebuild @@ -0,0 +1,510 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit prefix python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm libedit + +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + valgrind? ( dev-debug/valgrind ) + test? ( app-arch/xz-utils ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-3.10.3-libressl.patch + "${FILESDIR}"/${PN}-3.10.14-libressl.patch + ) + + default + + # https://bugs.gentoo.org/850151 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + local jobs=$(makeopts_jobs) + sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die + sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 and bug #864911. + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross. + --without-lto + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" \ + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Avoid as many dependencies as possible for the cross build. + cat >> Makefile <<-EOF || die + MODULE_NIS=disabled + MODULE__DBM=disabled + MODULE__GDBM=disabled + MODULE__DBM=disabled + MODULE__SQLITE3=disabled + MODULE__HASHLIB=disabled + MODULE__SSL=disabled + MODULE__CURSES=disabled + MODULE__CURSES_PANEL=disabled + MODULE_READLINE=disabled + MODULE__TKINTER=disabled + MODULE_PYEXPAT=disabled + MODULE_ZLIB=disabled + EOF + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the Python it was pointed to + # immediately. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + local disable + use gdbm || disable+=" gdbm" + use ncurses || disable+=" _curses _curses_panel" + use readline || disable+=" readline" + use sqlite || disable+=" _sqlite3" + use ssl || export PYTHON_DISABLE_SSL="1" + use tk || disable+=" _tkinter" + export PYTHON_DISABLE_MODULES="${disable}" + + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}" + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + 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_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + local -x PROFILE_TASK="${profile_task_flags[*]}" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-ffi + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + if tc-is-cross-compiler ; then + build_cbuild_python + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + export PATH="${WORKDIR}/${P}-${CBUILD}:${PATH}" + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + hprefixify setup.py + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + # Prevent using distutils bundled by setuptools. + # https://bugs.gentoo.org/823728 + export SETUPTOOLS_USE_DISTUTILS=stdlib + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + 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_concurrent_futures + -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 -Onone 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 +} diff --git a/dev-lang/python/python-3.11.8_p1.ebuild b/dev-lang/python/python-3.11.8_p1.ebuild new file mode 100644 index 0000000..45389b7 --- /dev/null +++ b/dev-lang/python/python-3.11.8_p1.ebuild @@ -0,0 +1,543 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit prefix python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm libedit + +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + app-crypt/libb2 + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( app-arch/xz-utils ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-3.10.3-libressl.patch + ) + + default + + # https://bugs.gentoo.org/850151 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + local jobs=$(makeopts_jobs) + sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die + sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross to satisfy --with-build-python. + --without-lto + --without-readline + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" \ + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Avoid as many dependencies as possible for the cross build. + cat >> Makefile <<-EOF || die + MODULE_NIS_STATE=disabled + MODULE__DBM_STATE=disabled + MODULE__GDBM_STATE=disabled + MODULE__DBM_STATE=disabled + MODULE__SQLITE3_STATE=disabled + MODULE__HASHLIB_STATE=disabled + MODULE__SSL_STATE=disabled + MODULE__CURSES_STATE=disabled + MODULE__CURSES_PANEL_STATE=disabled + MODULE_READLINE_STATE=disabled + MODULE__TKINTER_STATE=disabled + MODULE_PYEXPAT_STATE=disabled + MODULE_ZLIB_STATE=disabled + EOF + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the --with-build-python value + # immediately. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + 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_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + 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 + + # libressl doesn't find hashlib (From OpenBSD) + ac_cv_working_openssl_hashlib=yes + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-ffi + --with-platlibdir=lib + --with-pkg-config=yes + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + if tc-is-cross-compiler ; then + build_cbuild_python + myeconfargs+=( + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python + ) + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + hprefixify setup.py + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # force-disable modules we don't want built + local disable_modules=( NIS ) + use gdbm || disable_modules+=( _GDBM _DBM ) + use sqlite || disable_modules+=( _SQLITE3 ) + use ssl || disable_modules+=( _HASHLIB _SSL ) + use ncurses || disable_modules+=( _CURSES _CURSES_PANEL ) + use readline || disable_modules+=( READLINE ) + use tk || disable_modules+=( _TKINTER ) + + local mod + for mod in "${disable_modules[@]}"; do + echo "MODULE_${mod}_STATE=disabled" + done >> Makefile || die + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + # Prevent using distutils bundled by setuptools. + # https://bugs.gentoo.org/823728 + export SETUPTOOLS_USE_DISTUTILS=stdlib + export PYTHONSTRICTEXTENSIONBUILD=1 + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + 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_concurrent_futures + -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 -Onone 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 +} diff --git a/dev-lang/python/python-3.11.9.ebuild b/dev-lang/python/python-3.11.9.ebuild new file mode 100644 index 0000000..2c6b569 --- /dev/null +++ b/dev-lang/python/python-3.11.9.ebuild @@ -0,0 +1,544 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit prefix python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm libedit + +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + app-crypt/libb2 + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( app-arch/xz-utils ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-3.10.3-libressl.patch + "${FILESDIR}"/${PN}-3.10.14-libressl.patch + ) + + default + + # https://bugs.gentoo.org/850151 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + local jobs=$(makeopts_jobs) + sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die + sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + + eautoreconf +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross to satisfy --with-build-python. + --without-lto + --without-readline + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" \ + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Avoid as many dependencies as possible for the cross build. + cat >> Makefile <<-EOF || die + MODULE_NIS_STATE=disabled + MODULE__DBM_STATE=disabled + MODULE__GDBM_STATE=disabled + MODULE__DBM_STATE=disabled + MODULE__SQLITE3_STATE=disabled + MODULE__HASHLIB_STATE=disabled + MODULE__SSL_STATE=disabled + MODULE__CURSES_STATE=disabled + MODULE__CURSES_PANEL_STATE=disabled + MODULE_READLINE_STATE=disabled + MODULE__TKINTER_STATE=disabled + MODULE_PYEXPAT_STATE=disabled + MODULE_ZLIB_STATE=disabled + EOF + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the --with-build-python value + # immediately. + PYTHON_DISABLE_MODULES+=" _ctypes _crypt" emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + 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_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + 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 + + # libressl doesn't find hashlib (From OpenBSD) + ac_cv_working_openssl_hashlib=yes + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-ffi + --with-platlibdir=lib + --with-pkg-config=yes + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + if tc-is-cross-compiler ; then + build_cbuild_python + myeconfargs+=( + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python + ) + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + hprefixify setup.py + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # force-disable modules we don't want built + local disable_modules=( NIS ) + use gdbm || disable_modules+=( _GDBM _DBM ) + use sqlite || disable_modules+=( _SQLITE3 ) + use ssl || disable_modules+=( _HASHLIB _SSL ) + use ncurses || disable_modules+=( _CURSES _CURSES_PANEL ) + use readline || disable_modules+=( READLINE ) + use tk || disable_modules+=( _TKINTER ) + + local mod + for mod in "${disable_modules[@]}"; do + echo "MODULE_${mod}_STATE=disabled" + done >> Makefile || die + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + # Prevent using distutils bundled by setuptools. + # https://bugs.gentoo.org/823728 + export SETUPTOOLS_USE_DISTUTILS=stdlib + export PYTHONSTRICTEXTENSIONBUILD=1 + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + 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_concurrent_futures + -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 -Onone 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 +} diff --git a/dev-lang/python/python-3.12.2_p1.ebuild b/dev-lang/python/python-3.12.2_p1.ebuild new file mode 100644 index 0000000..9da529c --- /dev/null +++ b/dev-lang/python/python-3.12.2_p1.ebuild @@ -0,0 +1,541 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm libedit + +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + app-crypt/libb2 + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-pip ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( + app-arch/xz-utils + dev-python/ensurepip-pip + dev-python/ensurepip-setuptools + dev-python/ensurepip-wheel + ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + # TODO: Makefile has annoying deps on expat headers + #rm -r Modules/expat || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-3.10.3-libressl.patch + ) + + 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 +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross to satisfy --with-build-python. + --without-lto + --without-readline + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + + # Avoid as many dependencies as possible for the cross build. + mkdir Modules || die + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + _dbm _gdbm + _sqlite3 + _hashlib _ssl + _curses _curses_panel + readline + _tkinter + pyexpat + zlib + # We disabled these for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. This should be rechecked for the pure Makefile approach, + # and uncommented if needed. + #_ctypes _crypt + EOF + + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the --with-build-python value + # immediately. + emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + 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_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + 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 + + # libressl doesn't find hashlib (From OpenBSD) + ac_cv_working_openssl_hashlib=yes + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-platlibdir=lib + --with-pkg-config=yes + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + # Force-disable modules we don't want built. + # See Modules/Setup for docs on how this works. Setup.local contains our local deviations. + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + $(usev !gdbm '_gdbm _dbm') + $(usev !sqlite '_sqlite3') + $(usev !ssl '_hashlib _ssl') + $(usev !ncurses '_curses _curses_panel') + $(usev !readline 'readline') + $(usev !tk '_tkinter') + EOF + + # disable implicit optimization/debugging flags + local -x OPT= + + if tc-is-cross-compiler ; then + build_cbuild_python + myeconfargs+=( + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python + ) + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + export PYTHONSTRICTEXTENSIONBUILD=1 + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + 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_concurrent_futures + -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 -Onone 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 +} diff --git a/dev-lang/python/python-3.12.3.ebuild b/dev-lang/python/python-3.12.3.ebuild new file mode 100644 index 0000000..c5224a9 --- /dev/null +++ b/dev-lang/python/python-3.12.3.ebuild @@ -0,0 +1,542 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm libedit + +ncurses pgo +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + app-crypt/libb2 + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-pip ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( + !libedit? ( >=sys-libs/readline-4.1:= ) + libedit? ( dev-libs/libedit:= ) + ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( + app-arch/xz-utils + dev-python/ensurepip-pip + dev-python/ensurepip-setuptools + dev-python/ensurepip-wheel + ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" +if [[ ${PV} != *_alpha* ]]; then + RDEPEND+=" + dev-lang/python-exec[python_targets_python${PYVER/./_}(-)] + " +fi + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + # TODO: Makefile has annoying deps on expat headers + #rm -r Modules/expat || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-3.10.3-libressl.patch + "${FILESDIR}"/${PN}-3.10.14-libressl.patch + ) + + 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 +} + +build_cbuild_python() { + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --prefix="${BROOT}"/usr + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross to satisfy --with-build-python. + --without-lto + --without-readline + --disable-optimizations + ) + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + + # Avoid as many dependencies as possible for the cross build. + mkdir Modules || die + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + _dbm _gdbm + _sqlite3 + _hashlib _ssl + _curses _curses_panel + readline + _tkinter + pyexpat + zlib + # We disabled these for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. This should be rechecked for the pure Makefile approach, + # and uncommented if needed. + #_ctypes _crypt + EOF + + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the --with-build-python value + # immediately. + emake + popd &> /dev/null || die +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + 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_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + 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 + + # libressl doesn't find hashlib (From OpenBSD) + ac_cv_working_openssl_hashlib=yes + + --enable-shared + --without-static-libpython + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-platlibdir=lib + --with-pkg-config=yes + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with readline readline "$(usex libedit editline readline)") + $(use_with valgrind) + ) + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + # Force-disable modules we don't want built. + # See Modules/Setup for docs on how this works. Setup.local contains our local deviations. + cat > Modules/Setup.local <<-EOF || die + *disabled* + nis + $(usev !gdbm '_gdbm _dbm') + $(usev !sqlite '_sqlite3') + $(usev !ssl '_hashlib _ssl') + $(usev !ncurses '_curses _curses_panel') + $(usev !readline 'readline') + $(usev !tk '_tkinter') + EOF + + # disable implicit optimization/debugging flags + local -x OPT= + + if tc-is-cross-compiler ; then + build_cbuild_python + myeconfargs+=( + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + --with-build-python="${WORKDIR}"/${P}-${CBUILD}/python + ) + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + export PYTHONSTRICTEXTENSIONBUILD=1 + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + 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_concurrent_futures + -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 -Onone 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 +} diff --git a/dev-lang/python/python-3.9.18_p2.ebuild b/dev-lang/python/python-3.9.18_p2.ebuild new file mode 100644 index 0000000..ea5bea1 --- /dev/null +++ b/dev-lang/python/python-3.9.18_p2.ebuild @@ -0,0 +1,494 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit prefix python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm +ncurses pgo + +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( >=sys-libs/readline-4.1:= ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( app-arch/xz-utils ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + + # Causes runtime issues with libressl + rm "${WORKDIR}/${PATCHSET}"/0013-bpo-43998-Default-to-TLS-1.2-and-increase-cipher-sui.patch || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-3.9.9-r1-libressl.patch + ) + + default + + # https://bugs.gentoo.org/850151 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + local jobs=$(makeopts_jobs) + sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die + sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + + eautoreconf +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + local disable + use gdbm || disable+=" gdbm" + use ncurses || disable+=" _curses _curses_panel" + use readline || disable+=" readline" + use sqlite || disable+=" _sqlite3" + use ssl || export PYTHON_DISABLE_SSL="1" + use tk || disable+=" _tkinter" + export PYTHON_DISABLE_MODULES="${disable}" + + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}" + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + 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_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + local -x PROFILE_TASK="${profile_task_flags[*]}" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-ffi + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + if tc-is-cross-compiler ; then + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 and bug #864911. + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross. + --without-lto + --disable-optimizations + ) + + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + export PATH="${WORKDIR}/${P}-${CBUILD}:${PATH}" + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. + PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" \ + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Avoid as many dependencies as possible for the cross build. + cat >> Makefile <<-EOF || die + MODULE_NIS=disabled + MODULE__DBM=disabled + MODULE__GDBM=disabled + MODULE__DBM=disabled + MODULE__SQLITE3=disabled + MODULE__HASHLIB=disabled + MODULE__SSL=disabled + MODULE__CURSES=disabled + MODULE__CURSES_PANEL=disabled + MODULE_READLINE=disabled + MODULE__TKINTER=disabled + MODULE_PYEXPAT=disabled + MODULE_ZLIB=disabled + EOF + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the Python it was pointed to + # immediately. + PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" emake + popd &> /dev/null || die + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + hprefixify setup.py + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + # Prevent using distutils bundled by setuptools. + # https://bugs.gentoo.org/823728 + export SETUPTOOLS_USE_DISTUTILS=stdlib + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + 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_concurrent_futures + -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 -Onone 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 +} diff --git a/dev-lang/python/python-3.9.19.ebuild b/dev-lang/python/python-3.9.19.ebuild new file mode 100644 index 0000000..d1ca123 --- /dev/null +++ b/dev-lang/python/python-3.9.19.ebuild @@ -0,0 +1,494 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit prefix python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 sparc x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm +ncurses pgo + +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( >=sys-libs/readline-4.1:= ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( app-arch/xz-utils ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + + # Causes runtime issues with libressl + rm "${WORKDIR}/${PATCHSET}"/0013-bpo-43998-Default-to-TLS-1.2-and-increase-cipher-sui.patch || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-3.9.9-r1-libressl.patch + ) + + default + + # https://bugs.gentoo.org/850151 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + local jobs=$(makeopts_jobs) + sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die + sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + + eautoreconf +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + local disable + use gdbm || disable+=" gdbm" + use ncurses || disable+=" _curses _curses_panel" + use readline || disable+=" readline" + use sqlite || disable+=" _sqlite3" + use ssl || export PYTHON_DISABLE_SSL="1" + use tk || disable+=" _tkinter" + export PYTHON_DISABLE_MODULES="${disable}" + + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}" + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + 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_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + local -x PROFILE_TASK="${profile_task_flags[*]}" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-ffi + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + if tc-is-cross-compiler ; then + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 and bug #864911. + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross. + --without-lto + --disable-optimizations + ) + + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + export PATH="${WORKDIR}/${P}-${CBUILD}:${PATH}" + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. + PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" \ + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Avoid as many dependencies as possible for the cross build. + cat >> Makefile <<-EOF || die + MODULE_NIS=disabled + MODULE__DBM=disabled + MODULE__GDBM=disabled + MODULE__DBM=disabled + MODULE__SQLITE3=disabled + MODULE__HASHLIB=disabled + MODULE__SSL=disabled + MODULE__CURSES=disabled + MODULE__CURSES_PANEL=disabled + MODULE_READLINE=disabled + MODULE__TKINTER=disabled + MODULE_PYEXPAT=disabled + MODULE_ZLIB=disabled + EOF + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the Python it was pointed to + # immediately. + PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" emake + popd &> /dev/null || die + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + hprefixify setup.py + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + # Prevent using distutils bundled by setuptools. + # https://bugs.gentoo.org/823728 + export SETUPTOOLS_USE_DISTUTILS=stdlib + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + 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_concurrent_futures + -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 -Onone 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 +} diff --git a/dev-lang/python/python-3.9.19_p2.ebuild b/dev-lang/python/python-3.9.19_p2.ebuild new file mode 100644 index 0000000..b257d02 --- /dev/null +++ b/dev-lang/python/python-3.9.19_p2.ebuild @@ -0,0 +1,495 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" +WANT_LIBTOOL="none" + +inherit autotools check-reqs flag-o-matic multiprocessing pax-utils +inherit prefix python-utils-r1 toolchain-funcs verify-sig + +MY_PV=${PV/_rc/rc} +MY_P="Python-${MY_PV%_p*}" +PYVER=$(ver_cut 1-2) +PATCHSET="python-gentoo-patches-${MY_PV}" + +DESCRIPTION="An interpreted, interactive, object-oriented programming language" +HOMEPAGE=" + https://www.python.org/ + https://github.com/python/cpython/ +" +SRC_URI=" + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz + https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz + verify-sig? ( + https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc + ) +" +S="${WORKDIR}/${MY_P}" + +LICENSE="PSF-2" +SLOT="${PYVER}" +KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86" +IUSE=" + bluetooth build debug +ensurepip examples gdbm +ncurses pgo + +readline +sqlite +ssl test tk valgrind +" +RESTRICT="!test? ( test )" + +# Do not add a dependency on dev-lang/python to this ebuild. +# If you need to apply a patch which requires python for bootstrapping, please +# run the bootstrap code on your dev box and include the results in the +# patchset. See bug 447752. + +RDEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + >=dev-libs/expat-2.1:= + dev-libs/libffi:= + dev-python/gentoo-common + >=sys-libs/zlib-1.1.3:= + virtual/libcrypt:= + virtual/libintl + ensurepip? ( dev-python/ensurepip-wheels ) + gdbm? ( sys-libs/gdbm:=[berkdb] ) + kernel_linux? ( sys-apps/util-linux:= ) + ncurses? ( >=sys-libs/ncurses-5.2:= ) + readline? ( >=sys-libs/readline-4.1:= ) + sqlite? ( >=dev-db/sqlite-3.3.8:3= ) + ssl? ( >=dev-libs/openssl-1.1.1:= ) + tk? ( + >=dev-lang/tcl-8.0:= + >=dev-lang/tk-8.0:= + dev-tcltk/blt:= + dev-tcltk/tix + ) +" +# bluetooth requires headers from bluez +DEPEND=" + ${RDEPEND} + bluetooth? ( net-wireless/bluez ) + test? ( app-arch/xz-utils ) + valgrind? ( dev-debug/valgrind ) +" +# autoconf-archive needed to eautoreconf +BDEPEND=" + dev-build/autoconf-archive + app-alternatives/awk + virtual/pkgconfig + verify-sig? ( sec-keys/openpgp-keys-python ) +" +RDEPEND+=" + !build? ( app-misc/mime-types ) +" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc + +# large file tests involve a 2.5G file being copied (duplicated) +CHECKREQS_DISK_BUILD=5500M + +QA_PKGCONFIG_VERSION=${PYVER} +# false positives -- functions specific to *BSD +QA_CONFIG_IMPL_DECL_SKIP=( chflags lchflags ) + +pkg_pretend() { + use test && check-reqs_pkg_pretend +} + +pkg_setup() { + use test && check-reqs_pkg_setup +} + +src_unpack() { + if use verify-sig; then + verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc} + fi + default +} + +src_prepare() { + # Ensure that internal copies of expat and libffi are not used. + rm -r Modules/expat || die + rm -r Modules/_ctypes/libffi* || die + + # Causes runtime issues with libressl + rm "${WORKDIR}/${PATCHSET}"/0013-bpo-43998-Default-to-TLS-1.2-and-increase-cipher-sui.patch || die + + local PATCHES=( + "${WORKDIR}/${PATCHSET}" + "${FILESDIR}"/${PN}-3.9.9-r1-libressl.patch + "${FILESDIR}"/${PN}-3.10.14-libressl.patch + ) + + default + + # https://bugs.gentoo.org/850151 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" setup.py || die + + # force the correct number of jobs + # https://bugs.gentoo.org/737660 + local jobs=$(makeopts_jobs) + sed -i -e "s:-j0:-j${jobs}:" Makefile.pre.in || die + sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die + + eautoreconf +} + +src_configure() { + # disable automagic bluetooth headers detection + if ! use bluetooth; then + local -x ac_cv_header_bluetooth_bluetooth_h=no + fi + local disable + use gdbm || disable+=" gdbm" + use ncurses || disable+=" _curses _curses_panel" + use readline || disable+=" readline" + use sqlite || disable+=" _sqlite3" + use ssl || export PYTHON_DISABLE_SSL="1" + use tk || disable+=" _tkinter" + export PYTHON_DISABLE_MODULES="${disable}" + + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}" + fi + + append-flags -fwrapv + filter-flags -malign-double + + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile. + # PKG_CONFIG needed for cross. + tc-export CXX PKG_CONFIG + + local dbmliborder= + if use gdbm; then + dbmliborder+="${dbmliborder:+:}gdbm" + fi + + 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_concurrent_futures + -x test_httpservers + -x test_logging + -x test_multiprocessing_fork + -x test_socket + -x test_xmlrpc + + # Hangs (actually runs indefinitely executing itself w/ many cpython builds) + # bug #900429 + -x test_tools + ) + + if has_version "app-arch/rpm" ; then + # Avoid sandbox failure (attempts to write to /var/lib/rpm) + profile_task_flags+=( + -x test_distutils + ) + fi + local -x PROFILE_TASK="${profile_task_flags[*]}" + fi + + local myeconfargs=( + # glibc-2.30 removes it; since we can't cleanly force-rebuild + # Python on glibc upgrade, remove it proactively to give + # a chance for users rebuilding python before glibc + ac_cv_header_stropts_h=no + + --enable-shared + --enable-ipv6 + --infodir='${prefix}/share/info' + --mandir='${prefix}/share/man' + --with-computed-gotos + --with-dbmliborder="${dbmliborder}" + --with-libc= + --enable-loadable-sqlite-extensions + --without-ensurepip + --without-lto + --with-system-expat + --with-system-ffi + --with-wheel-pkg-dir="${EPREFIX}"/usr/lib/python/ensurepip + + $(use_with debug assertions) + $(use_enable pgo optimizations) + $(use_with valgrind) + ) + + # disable implicit optimization/debugging flags + local -x OPT= + + # https://bugs.gentoo.org/700012 + if tc-is-lto; then + append-cflags $(test-flags-CC -ffat-lto-objects) + myeconfargs+=( + --with-lto + ) + fi + + if tc-is-cross-compiler ; then + # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181 + local cbuild_libdir=$(unset PKG_CONFIG_PATH ; $(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libffi) + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + # + # -fno-lto to avoid bug #700012 (not like it matters for mini-CBUILD Python anyway) + local -x CFLAGS_NODIST="${BUILD_CFLAGS} -fno-lto" + local -x LDFLAGS_NODIST=${BUILD_LDFLAGS} + local -x CFLAGS= LDFLAGS= + local -x BUILD_CFLAGS="${CFLAGS_NODIST}" + local -x BUILD_LDFLAGS=${LDFLAGS_NODIST} + + # We need to build our own Python on CBUILD first, and feed it in. + # bug #847910 and bug #864911. + local myeconfargs_cbuild=( + "${myeconfargs[@]}" + + --libdir="${cbuild_libdir:2}" + + # Avoid needing to load the right libpython.so. + --disable-shared + + # As minimal as possible for the mini CBUILD Python + # we build just for cross. + --without-lto + --disable-optimizations + ) + + # Point the imminent CHOST build to the Python we just + # built for CBUILD. + export PATH="${WORKDIR}/${P}-${CBUILD}:${PATH}" + + mkdir "${WORKDIR}"/${P}-${CBUILD} || die + pushd "${WORKDIR}"/${P}-${CBUILD} &> /dev/null || die + # We disable _ctypes and _crypt for CBUILD because Python's setup.py can't handle locating + # libdir correctly for cross. + PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" \ + ECONF_SOURCE="${S}" econf_build "${myeconfargs_cbuild[@]}" + + # Avoid as many dependencies as possible for the cross build. + cat >> Makefile <<-EOF || die + MODULE_NIS=disabled + MODULE__DBM=disabled + MODULE__GDBM=disabled + MODULE__DBM=disabled + MODULE__SQLITE3=disabled + MODULE__HASHLIB=disabled + MODULE__SSL=disabled + MODULE__CURSES=disabled + MODULE__CURSES_PANEL=disabled + MODULE_READLINE=disabled + MODULE__TKINTER=disabled + MODULE_PYEXPAT=disabled + MODULE_ZLIB=disabled + EOF + + # Unfortunately, we do have to build this immediately, and + # not in src_compile, because CHOST configure for Python + # will check the existence of the Python it was pointed to + # immediately. + PYTHON_DISABLE_MODULES="${PYTHON_DISABLE_MODULES} _ctypes _crypt" emake + popd &> /dev/null || die + fi + + # pass system CFLAGS & LDFLAGS as _NODIST, otherwise they'll get + # propagated to sysconfig for built extensions + local -x CFLAGS_NODIST=${CFLAGS} + local -x LDFLAGS_NODIST=${LDFLAGS} + local -x CFLAGS= LDFLAGS= + + # Fix implicit declarations on cross and prefix builds. Bug #674070. + if use ncurses; then + append-cppflags -I"${ESYSROOT}"/usr/include/ncursesw + fi + + hprefixify setup.py + econf "${myeconfargs[@]}" + + if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then + eerror "configure has detected that the sem_open function is broken." + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." + die "Broken sem_open function (bug 496328)" + fi + + # install epython.py as part of stdlib + echo "EPYTHON='python${PYVER}'" > Lib/epython.py || die +} + +src_compile() { + # Ensure sed works as expected + # https://bugs.gentoo.org/594768 + local -x LC_ALL=C + # Prevent using distutils bundled by setuptools. + # https://bugs.gentoo.org/823728 + export SETUPTOOLS_USE_DISTUTILS=stdlib + + # Save PYTHONDONTWRITEBYTECODE so that 'has_version' doesn't + # end up writing bytecode & violating sandbox. + # bug #831897 + local -x _PYTHONDONTWRITEBYTECODE=${PYTHONDONTWRITEBYTECODE} + + 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_concurrent_futures + -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 -Onone 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 +} diff --git a/dev-lang/ruby/Manifest b/dev-lang/ruby/Manifest new file mode 100644 index 0000000..a55e651 --- /dev/null +++ b/dev-lang/ruby/Manifest @@ -0,0 +1 @@ +DIST ruby-3.1.4.tar.xz 15316604 BLAKE2B 5d771c267451c05ae192991976957d43d1131e652ac5a90a8dfff9deba97cf6b139d0113f5d2ed44225a545aa79a1c732555de1efc83d1010d097ec35f7e92dd SHA512 a627bb629a10750b8b2081ad451a41faea0fc85d95aa1e267e3d2a0f56a35bb58195d4a8d13bbdbd82f4197a96dae22b1cee1dfc83861ec33a67ece07aef5633 diff --git a/dev-lang/ruby/files/3.0/001-socksocket-fix.patch b/dev-lang/ruby/files/3.0/001-socksocket-fix.patch new file mode 100644 index 0000000..1a79e25 --- /dev/null +++ b/dev-lang/ruby/files/3.0/001-socksocket-fix.patch @@ -0,0 +1,15 @@ +Fix compilation with socks5 USE flag. + +Patch by Phobos Kappa in https://bugs.gentoo.org/762253 + +--- a/ext/socket/sockssocket.c 2020-12-25 05:33:01.000000000 +0200 ++++ b/ext/socket/sockssocket.c 2020-12-28 15:42:50.310029778 +0200 +@@ -34,7 +34,7 @@ + init = 1; + } + +- return rsock_init_inetsock(sock, host, port, Qnil, Qnil, INET_SOCKS, Qnil); ++ return rsock_init_inetsock(sock, host, port, Qnil, Qnil, INET_SOCKS, Qnil, Qnil); + } + + #ifdef SOCKS5 diff --git a/dev-lang/ruby/files/3.0/010-default-gem-location.patch b/dev-lang/ruby/files/3.0/010-default-gem-location.patch new file mode 100644 index 0000000..060579b --- /dev/null +++ b/dev-lang/ruby/files/3.0/010-default-gem-location.patch @@ -0,0 +1,20 @@ +--- a/tool/rbinstall.rb.~1~ 2020-12-25 04:33:01.000000000 +0100 ++++ b/tool/rbinstall.rb 2020-12-25 10:05:34.629096405 +0100 +@@ -897,7 +897,7 @@ + end + + def install_default_gem(dir, srcdir) +- gem_dir = Gem.default_dir ++ gem_dir = ENV['GEM_DESTDIR'] + install_dir = with_destdir(gem_dir) + prepare "default gems from #{dir}", gem_dir + makedirs(Gem.ensure_default_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)}) +@@ -943,7 +943,7 @@ + end + + install?(:ext, :comm, :gem, :'bundled-gems') do +- gem_dir = Gem.default_dir ++ gem_dir = ENV['GEM_DESTDIR'] + install_dir = with_destdir(gem_dir) + prepare "bundled gems", gem_dir + makedirs(Gem.ensure_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)}) diff --git a/dev-lang/ruby/files/3.0/900-musl-coroutine.patch b/dev-lang/ruby/files/3.0/900-musl-coroutine.patch new file mode 100644 index 0000000..a323cdd --- /dev/null +++ b/dev-lang/ruby/files/3.0/900-musl-coroutine.patch @@ -0,0 +1,28 @@ +Adapted for Gentoo version 3.0.2 + +From b570e7de87aaad8c903176d835e8124127f627b3 Mon Sep 17 00:00:00 2001 +From: Andrew Aladjev <aladjev.andrew@gmail.com> +Date: Sat, 26 Sep 2020 12:58:06 +0300 +Subject: [PATCH] fixed default coroutine selection for musl + +--- + configure.ac | 5 ++++- + coroutine/copy/Context.c | 2 ++ + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index ab5d532c103b..084f0936c006 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2364,7 +2364,10 @@ + rb_cv_coroutine=copy + ], + [ +- rb_cv_coroutine=ucontext ++ AC_CHECK_FUNCS([getcontext swapcontext makecontext], ++ [rb_cv_coroutine=ucontext], ++ [rb_cv_coroutine=copy; break] ++ ) + ] + ) + AC_MSG_RESULT(${rb_cv_coroutine}) diff --git a/dev-lang/ruby/files/3.0/901-musl-stacksize.patch b/dev-lang/ruby/files/3.0/901-musl-stacksize.patch new file mode 100644 index 0000000..e5fcfce --- /dev/null +++ b/dev-lang/ruby/files/3.0/901-musl-stacksize.patch @@ -0,0 +1,26 @@ +musl has a conservative stacksize, as compared to glibc, so treat it +like other systems with such stacksize + +diff --git a/thread_pthread.c b/thread_pthread.c +index 951885ffa0..e2d662143b 100644 +--- a/thread_pthread.c ++++ b/thread_pthread.c +@@ -721,7 +721,7 @@ ruby_init_stack(volatile VALUE *addr + { + native_main_thread.id = pthread_self(); + +-#if MAINSTACKADDR_AVAILABLE ++#if MAINSTACKADDR_AVAILABLE && !(defined(__linux__) && !defined(__GLIBC__)) + if (native_main_thread.stack_maxsize) return; + { + void* stackaddr; +@@ -1680,7 +1680,7 @@ ruby_stack_overflowed_p(const rb_thread_t *th, const void *addr) + + #ifdef STACKADDR_AVAILABLE + if (get_stack(&base, &size) == 0) { +-# ifdef __APPLE__ ++# if defined(__APPLE__) || (defined(__linux__) && !defined(__GLIBC__)) + if (pthread_equal(th->thread_id, native_main_thread.id)) { + struct rlimit rlim; + if (getrlimit(RLIMIT_STACK, &rlim) == 0 && rlim.rlim_cur > size) { + diff --git a/dev-lang/ruby/files/3.0/902-hppa-pthread-stack-size.patch b/dev-lang/ruby/files/3.0/902-hppa-pthread-stack-size.patch new file mode 100644 index 0000000..7978566 --- /dev/null +++ b/dev-lang/ruby/files/3.0/902-hppa-pthread-stack-size.patch @@ -0,0 +1,54 @@ +https://bugs.gentoo.org/701494 + +From 794b6fce94343c4f9dceca5d08224b0fb364fde8 Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Fri, 7 Apr 2023 11:46:12 +0100 +Subject: [PATCH] thread_pthread: Grow main_stack if required (fixes tests on + HPPA) + +On HPPA, test_insns.rb fails (along with various Ruby gems) with +'stack level too deep (SystemStackError)'. This turns out to be because HPPA +defaults to a small(er) stack. + +With this change, most of Ruby's test suite now passes on HPPA. + +Thanks to both Dave and Helge for the investigation and coming up with the +patch. + +Bug: https://bugs.gentoo.org/701494 +Bug: https://bugs.debian.org/881773 +Bug: https://bugs.debian.org/881772 (for PPC64) +Bug: https://github.com/rack/rack/issues/1640 +Thanks-to: John David Anglin <dave.anglin@bell.net> +Thanks-to: Helge Deller <deller@gmx.de> +Signed-off-by: Sam James <sam@gentoo.org> +--- a/thread_pthread.c ++++ b/thread_pthread.c +@@ -681,8 +681,22 @@ size_t pthread_get_stacksize_np(pthread_t); + # define MAINSTACKADDR_AVAILABLE 0 + # endif + #endif +-#if MAINSTACKADDR_AVAILABLE && !defined(get_main_stack) +-# define get_main_stack(addr, size) get_stack(addr, size) ++#if MAINSTACKADDR_AVAILABLE ++static int get_stack(void **, size_t *); ++static int ++get_main_stack(void **addr, size_t *size) ++{ ++ int ret = get_stack(addr, size); ++ ++#ifdef __hppa__ ++ /* On some architectures, the initial stack size may be too small, but fortunately, ++ it's growable. Bump it up to the minimum needed if it is too small. */ ++ if (*size < RUBY_VM_THREAD_VM_STACK_SIZE) ++ *size = RUBY_VM_THREAD_VM_STACK_SIZE; ++#endif ++ ++ return ret; ++} + #endif + + #ifdef STACKADDR_AVAILABLE +-- +2.40.0 + diff --git a/dev-lang/ruby/files/3.1/001-socksocket-fix.patch b/dev-lang/ruby/files/3.1/001-socksocket-fix.patch new file mode 100644 index 0000000..1a79e25 --- /dev/null +++ b/dev-lang/ruby/files/3.1/001-socksocket-fix.patch @@ -0,0 +1,15 @@ +Fix compilation with socks5 USE flag. + +Patch by Phobos Kappa in https://bugs.gentoo.org/762253 + +--- a/ext/socket/sockssocket.c 2020-12-25 05:33:01.000000000 +0200 ++++ b/ext/socket/sockssocket.c 2020-12-28 15:42:50.310029778 +0200 +@@ -34,7 +34,7 @@ + init = 1; + } + +- return rsock_init_inetsock(sock, host, port, Qnil, Qnil, INET_SOCKS, Qnil); ++ return rsock_init_inetsock(sock, host, port, Qnil, Qnil, INET_SOCKS, Qnil, Qnil); + } + + #ifdef SOCKS5 diff --git a/dev-lang/ruby/files/3.1/010-default-gem-location.patch b/dev-lang/ruby/files/3.1/010-default-gem-location.patch new file mode 100644 index 0000000..039a44b --- /dev/null +++ b/dev-lang/ruby/files/3.1/010-default-gem-location.patch @@ -0,0 +1,20 @@ +--- a/tool/rbinstall.rb.~1~ 2020-12-25 04:33:01.000000000 +0100 ++++ b/tool/rbinstall.rb 2020-12-25 10:05:34.629096405 +0100 +@@ -897,7 +897,7 @@ + end + + def install_default_gem(dir, srcdir, bindir) +- gem_dir = Gem.default_dir ++ gem_dir = ENV['GEM_DESTDIR'] + install_dir = with_destdir(gem_dir) + prepare "default gems from #{dir}", gem_dir + makedirs(Gem.ensure_default_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)}) +@@ -1018,7 +1018,7 @@ + end + Gem.instance_variable_set(:@ruby, ruby_path) if Gem.ruby != ruby_path + +- gem_dir = Gem.default_dir ++ gem_dir = ENV['GEM_DESTDIR'] + install_dir = with_destdir(gem_dir) + prepare "bundled gems", gem_dir + RbInstall.no_write do diff --git a/dev-lang/ruby/files/3.1/011-default-gem-location.patch b/dev-lang/ruby/files/3.1/011-default-gem-location.patch new file mode 100644 index 0000000..fe5d33d --- /dev/null +++ b/dev-lang/ruby/files/3.1/011-default-gem-location.patch @@ -0,0 +1,20 @@ +--- a/tool/rbinstall.rb.~1~ 2020-12-25 04:33:01.000000000 +0100 ++++ b/tool/rbinstall.rb 2020-12-25 10:05:34.629096405 +0100 +@@ -897,7 +897,7 @@ + end + + def install_default_gem(dir, srcdir, bindir) +- gem_dir = Gem.default_dir ++ gem_dir = ENV['GEM_DESTDIR'] + install_dir = with_destdir(gem_dir) + prepare "default gems from #{dir}", gem_dir + makedirs(Gem.ensure_default_gem_subdirectories(install_dir, $dir_mode).map {|d| File.join(gem_dir, d)}) +@@ -1010,7 +1010,7 @@ + end + + install?(:ext, :comm, :gem, :'bundled-gems') do +- gem_dir = Gem.default_dir ++ gem_dir = ENV['GEM_DESTDIR'] + install_dir = with_destdir(gem_dir) + prepare "bundled gems", gem_dir + RbInstall.no_write do diff --git a/dev-lang/ruby/files/3.1/901-musl-stacksize.patch b/dev-lang/ruby/files/3.1/901-musl-stacksize.patch new file mode 100644 index 0000000..e5fcfce --- /dev/null +++ b/dev-lang/ruby/files/3.1/901-musl-stacksize.patch @@ -0,0 +1,26 @@ +musl has a conservative stacksize, as compared to glibc, so treat it +like other systems with such stacksize + +diff --git a/thread_pthread.c b/thread_pthread.c +index 951885ffa0..e2d662143b 100644 +--- a/thread_pthread.c ++++ b/thread_pthread.c +@@ -721,7 +721,7 @@ ruby_init_stack(volatile VALUE *addr + { + native_main_thread.id = pthread_self(); + +-#if MAINSTACKADDR_AVAILABLE ++#if MAINSTACKADDR_AVAILABLE && !(defined(__linux__) && !defined(__GLIBC__)) + if (native_main_thread.stack_maxsize) return; + { + void* stackaddr; +@@ -1680,7 +1680,7 @@ ruby_stack_overflowed_p(const rb_thread_t *th, const void *addr) + + #ifdef STACKADDR_AVAILABLE + if (get_stack(&base, &size) == 0) { +-# ifdef __APPLE__ ++# if defined(__APPLE__) || (defined(__linux__) && !defined(__GLIBC__)) + if (pthread_equal(th->thread_id, native_main_thread.id)) { + struct rlimit rlim; + if (getrlimit(RLIMIT_STACK, &rlim) == 0 && rlim.rlim_cur > size) { + diff --git a/dev-lang/ruby/files/3.1/902-hppa-pthread-stack-size.patch b/dev-lang/ruby/files/3.1/902-hppa-pthread-stack-size.patch new file mode 100644 index 0000000..2578ff0 --- /dev/null +++ b/dev-lang/ruby/files/3.1/902-hppa-pthread-stack-size.patch @@ -0,0 +1,54 @@ +https://bugs.gentoo.org/701494 + +From 91bfb8a5166f4530ce556a11a4b7fb64983b7686 Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Fri, 7 Apr 2023 11:46:12 +0100 +Subject: [PATCH] thread_pthread: Grow main_stack if required (fixes tests on + HPPA) + +On HPPA, test_insns.rb fails (along with various Ruby gems) with +'stack level too deep (SystemStackError)'. This turns out to be because HPPA +defaults to a small(er) stack. + +With this change, most of Ruby's test suite now passes on HPPA. + +Thanks to both Dave and Helge for the investigation and coming up with the +patch. + +Bug: https://bugs.gentoo.org/701494 +Bug: https://bugs.debian.org/881773 +Bug: https://bugs.debian.org/881772 (for PPC64) +Bug: https://github.com/rack/rack/issues/1640 +Thanks-to: John David Anglin <dave.anglin@bell.net> +Thanks-to: Helge Deller <deller@gmx.de> +Signed-off-by: Sam James <sam@gentoo.org> +--- a/thread_pthread.c ++++ b/thread_pthread.c +@@ -738,8 +738,22 @@ size_t pthread_get_stacksize_np(pthread_t); + # define MAINSTACKADDR_AVAILABLE 0 + # endif + #endif +-#if MAINSTACKADDR_AVAILABLE && !defined(get_main_stack) +-# define get_main_stack(addr, size) get_stack(addr, size) ++#if MAINSTACKADDR_AVAILABLE ++static int get_stack(void **, size_t *); ++static int ++get_main_stack(void **addr, size_t *size) ++{ ++ int ret = get_stack(addr, size); ++ ++#ifdef __hppa__ ++ /* On some architectures, the initial stack size may be too small, but fortunately, ++ it's growable. Bump it up to the minimum needed if it is too small. */ ++ if (*size < RUBY_VM_THREAD_VM_STACK_SIZE) ++ *size = RUBY_VM_THREAD_VM_STACK_SIZE; ++#endif ++ ++ return ret; ++} + #endif + + #ifdef STACKADDR_AVAILABLE +-- +2.40.0 + diff --git a/dev-lang/ruby/files/ruby-3.1-libressl.patch b/dev-lang/ruby/files/ruby-3.1-libressl.patch new file mode 100644 index 0000000..0394c93 --- /dev/null +++ b/dev-lang/ruby/files/ruby-3.1-libressl.patch @@ -0,0 +1,19 @@ +From OpenBSD: + +https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/lang/ruby/3.1/patches/patch-ext_openssl_ossl_pkey_c + +LibreSSL 3.5 and later provide and need to use +PEM_write_bio_PrivateKey_traditional() + +Index: ext/openssl/ossl_pkey.c +--- a/ext/openssl/ossl_pkey.c.orig ++++ b/ext/openssl/ossl_pkey.c +@@ -670,7 +670,7 @@ ossl_pkey_export_traditional(int argc, VALUE *argv, VA + } + } + else { +-#if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000 + if (!PEM_write_bio_PrivateKey_traditional(bio, pkey, enc, NULL, 0, + ossl_pem_passwd_cb, + (void *)pass)) { diff --git a/dev-lang/ruby/metadata.xml b/dev-lang/ruby/metadata.xml new file mode 100644 index 0000000..cf9a216 --- /dev/null +++ b/dev-lang/ruby/metadata.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>ruby@gentoo.org</email> + <name>Gentoo Ruby Project</name> + </maintainer> + <use> + <flag name="rdoc">Install <pkg>dev-ruby/rdoc</pkg> after installing Ruby.</flag> + <flag name="systemtap">Enable SystemTAP/DTrace tracing</flag> + </use> + <upstream> + <remote-id type="github">ruby/ruby</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-lang/ruby/ruby-3.1.4-r3.ebuild b/dev-lang/ruby/ruby-3.1.4-r3.ebuild new file mode 100644 index 0000000..1213328 --- /dev/null +++ b/dev-lang/ruby/ruby-3.1.4-r3.ebuild @@ -0,0 +1,273 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools flag-o-matic multiprocessing + +MY_P="${PN}-$(ver_cut 1-3)" +S=${WORKDIR}/${MY_P} + +SLOT=$(ver_cut 1-2) +MY_SUFFIX=$(ver_rs 1 '' ${SLOT}) +RUBYVERSION=${SLOT}.0 + +DESCRIPTION="An object-oriented scripting language" +HOMEPAGE="https://www.ruby-lang.org/" +SRC_URI="https://cache.ruby-lang.org/pub/ruby/${SLOT}/${MY_P}.tar.xz" + +LICENSE="|| ( Ruby-BSD BSD-2 )" +KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="berkdb debug doc examples gdbm ipv6 jemalloc jit +rdoc socks5 +ssl static-libs systemtap tk valgrind xemacs" + +RDEPEND=" + berkdb? ( sys-libs/db:= ) + gdbm? ( sys-libs/gdbm:= ) + jemalloc? ( dev-libs/jemalloc:= ) + jit? ( || ( sys-devel/gcc:* sys-devel/clang:* ) ) + ssl? ( + dev-libs/openssl:0= + ) + socks5? ( >=net-proxy/dante-1.1.13 ) + systemtap? ( dev-debug/systemtap ) + tk? ( + dev-lang/tcl:0=[threads] + dev-lang/tk:0=[threads] + ) + dev-libs/libyaml + dev-libs/libffi:= + sys-libs/readline:0= + sys-libs/zlib + virtual/libcrypt:= + >=app-eselect/eselect-ruby-20201225 +" + +DEPEND=" + ${RDEPEND} + valgrind? ( dev-debug/valgrind ) +" + +BUNDLED_GEMS=" + >=dev-ruby/minitest-5.15.0[ruby_targets_ruby31(-)] + >=dev-ruby/power_assert-2.0.1[ruby_targets_ruby31(-)] + >=dev-ruby/rake-13.0.6-r2[ruby_targets_ruby31(-)] + >=dev-ruby/rbs-2.1.0[ruby_targets_ruby31(-)] + >=dev-ruby/rexml-3.2.5[ruby_targets_ruby31(-)] + >=dev-ruby/rss-0.2.9[ruby_targets_ruby31(-)] + >=dev-ruby/test-unit-3.5.3[ruby_targets_ruby31(-)] + >=dev-ruby/typeprof-0.12.2[ruby_targets_ruby31(-)] +" + +PDEPEND=" + ${BUNDLED_GEMS} + virtual/rubygems[ruby_targets_ruby31(-)] + >=dev-ruby/bundler-2.3.3[ruby_targets_ruby31(-)] + >=dev-ruby/did_you_mean-1.6.1[ruby_targets_ruby31(-)] + >=dev-ruby/json-2.6.1[ruby_targets_ruby31(-)] + rdoc? ( >=dev-ruby/rdoc-6.3.3[ruby_targets_ruby31(-)] ) + xemacs? ( app-xemacs/ruby-modes ) +" + +src_prepare() { + eapply "${FILESDIR}"/${PN}-3.1-libressl.patch + eapply "${FILESDIR}"/"${SLOT}"/011*.patch + eapply "${FILESDIR}"/"${SLOT}"/902*.patch + + if use elibc_musl ; then + eapply "${FILESDIR}"/3.1/901-musl-*.patch + fi + + einfo "Unbundling gems..." + cd "$S" + # Remove bundled gems that we will install via PDEPEND, bug + # 539700. + rm -fr gems/* || die + touch gems/bundled_gems || die + # Don't install CLI tools since they will clash with the gem + rm -f bin/{racc,racc2y,y2racc} || die + sed -i -e '/executables/ s:^:#:' lib/racc/racc.gemspec || die + + einfo "Removing bundled libraries..." + rm -fr ext/fiddle/libffi-3.2.1 || die + + # Remove tests that are known to fail or require a network connection + rm -f test/ruby/test_process.rb test/rubygems/test_gem{,_path_support}.rb || die + rm -f test/rinda/test_rinda.rb test/socket/test_tcp.rb test/fiber/test_address_resolve.rb test/resolv/test_addr.rb \ + spec/ruby/library/socket/tcpsocket/{initialize,open}_spec.rb|| die + sed -i -e '/def test_test/askip "Depends on system setup"' test/ruby/test_file_exhaustive.rb || die + + if use prefix ; then + # Fix hardcoded SHELL var in mkmf library + sed -i -e "s#\(SHELL = \).*#\1${EPREFIX}/bin/sh#" lib/mkmf.rb || die + + if [[ ${CHOST} == *darwin* ]] ; then + # avoid symlink loop on Darwin (?!) + sed -i \ + -e '/LIBRUBY_ALIASES=/s/lib$(RUBY_INSTALL_NAME).$(SOEXT)//' \ + configure.ac || die + + # make ar/libtool hack for Darwin work + sed -i \ + -e "s/ac_cv_prog_ac_ct_AR='libtool/ac_cv_prog_AR='${CHOST}-libtool/" \ + configure.ac || die + + # disable using security framework (GCC barfs on those headers) + sed -i \ + -e 's/MAC_OS_X_VERSION_MIN_REQUIRED/_DISABLED_/' \ + random.c || die + fi + fi + + eapply_user + + eautoreconf +} + +src_configure() { + local modules="win32,win32ole" myconf= + + # Ruby's build system does interesting things with MAKEOPTS and doesn't + # handle MAKEOPTS="-Oline" or similar well. Just filter it all out + # and use -j/-l parsed out from the original MAKEOPTS, then use that. + # Newer Portage sets this option by default in GNUMAKEFLAGS if nothing + # is set by the user in MAKEOPTS. See bug #900929 and bug #728424. + local makeopts_tmp="-j$(makeopts_jobs) -l$(makeopts_loadavg)" + unset MAKEOPTS MAKEFLAGS GNUMAKEFLAGS + export MAKEOPTS="${makeopts_tmp}" + + # -fomit-frame-pointer makes ruby segfault, see bug #150413. + filter-flags -fomit-frame-pointer + # In many places aliasing rules are broken; play it safe + # as it's risky with newer compilers to leave it as it is. + append-flags -fno-strict-aliasing + + # Socks support via dante + if use socks5 ; then + # Socks support can't be disabled as long as SOCKS_SERVER is + # set and socks library is present, so need to unset + # SOCKS_SERVER in that case. + unset SOCKS_SERVER + fi + + # Increase GC_MALLOC_LIMIT if set (default is 8000000) + if [ -n "${RUBY_GC_MALLOC_LIMIT}" ] ; then + append-flags "-DGC_MALLOC_LIMIT=${RUBY_GC_MALLOC_LIMIT}" + fi + + # ipv6 hack, bug 168939. Needs --enable-ipv6. + use ipv6 || myconf="${myconf} --with-lookup-order-hack=INET" + + # Determine which modules *not* to build depending in the USE flags. + if ! use berkdb ; then + modules="${modules},dbm" + fi + if ! use gdbm ; then + modules="${modules},gdbm" + fi + if ! use ssl ; then + modules="${modules},openssl" + fi + if ! use tk ; then + modules="${modules},tk" + fi + + # Provide an empty LIBPATHENV because we disable rpath but we do not + # need LD_LIBRARY_PATH by default since that breaks USE=multitarget + # #564272 + INSTALL="${EPREFIX}/usr/bin/install -c" LIBPATHENV="" econf \ + --program-suffix=${MY_SUFFIX} \ + --with-soname=ruby${MY_SUFFIX} \ + --with-readline-dir="${EPREFIX}"/usr \ + --enable-shared \ + --enable-pthread \ + --disable-rpath \ + --without-baseruby \ + --with-compress-debug-sections=no \ + --enable-mkmf-verbose \ + --with-out-ext="${modules}" \ + $(use_with jemalloc jemalloc) \ + $(use_enable jit jit-support ) \ + $(use_enable socks5 socks) \ + $(use_enable systemtap dtrace) \ + $(use_enable doc install-doc) \ + --enable-ipv6 \ + $(use_enable static-libs static) \ + $(use_enable static-libs install-static-library) \ + $(use_with static-libs static-linked-ext) \ + $(use_enable debug) \ + $(use_with valgrind) \ + ${myconf} \ + --enable-option-checking=no + + # Makefile is broken because it lacks -ldl + rm -rf ext/-test-/popen_deadlock || die +} + +src_compile() { + emake V=1 EXTLDFLAGS="${LDFLAGS}" MJIT_CFLAGS="${CFLAGS}" MJIT_OPTFLAGS="" MJIT_DEBUGFLAGS="" +} + +src_test() { + emake V=1 check +} + +src_install() { + # Remove the remaining bundled gems. We do this late in the process + # since they are used during the build to e.g. create the + # documentation. + einfo "Removing default gems before installation" + rm -rf lib/bundler* lib/rdoc/rdoc.gemspec || die + + # Ruby is involved in the install process, we don't want interference here. + unset RUBYOPT + + local MINIRUBY=$(echo -e 'include Makefile\ngetminiruby:\n\t@echo $(MINIRUBY)'|make -f - getminiruby) + + local -x LD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}" + + if [[ ${CHOST} == *darwin* ]] ; then + local -x DYLD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${DYLD_LIBRARY_PATH+:}${DYLD_LIBRARY_PATH}" + fi + + local -x RUBYLIB="${S}:${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}" + for d in $(find "${S}/ext" -type d) ; do + RUBYLIB="${RUBYLIB}:$d" + done + + # Create directory for the default gems + local gem_home="${EPREFIX}/usr/$(get_libdir)/ruby/gems/${RUBYVERSION}" + mkdir -p "${D}/${gem_home}" || die "mkdir gem home failed" + + emake V=1 DESTDIR="${D}" GEM_DESTDIR=${gem_home} install + + # Remove installed rubygems and rdoc copy + rm -rf "${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}/rubygems" || die "rm rubygems failed" + rm -rf "${ED}/usr/bin/"gem"${MY_SUFFIX}" || die "rm rdoc bins failed" + rm -rf "${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}"/rdoc* || die "rm rdoc failed" + rm -rf "${ED}/usr/bin/"{bundle,bundler,ri,rdoc}"${MY_SUFFIX}" || die "rm rdoc bins failed" + + if use doc; then + emake DESTDIR="${D}" GEM_DESTDIR=${gem_home} install-doc + fi + + if use examples; then + dodoc -r sample + fi + + dodoc ChangeLog NEWS.md doc/NEWS* README* +} + +pkg_postinst() { + if [[ ! -n $(readlink "${EROOT}"/usr/bin/ruby) ]] ; then + eselect ruby set ruby${MY_SUFFIX} + fi + + elog + elog "To switch between available Ruby profiles, execute as root:" + elog "\teselect ruby set ruby(30|31|...)" + elog +} + +pkg_postrm() { + eselect ruby cleanup +} diff --git a/dev-lang/ruby/ruby-3.1.4-r5.ebuild b/dev-lang/ruby/ruby-3.1.4-r5.ebuild new file mode 100644 index 0000000..22d15a9 --- /dev/null +++ b/dev-lang/ruby/ruby-3.1.4-r5.ebuild @@ -0,0 +1,277 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools flag-o-matic multiprocessing + +MY_P="${PN}-$(ver_cut 1-3)" +S=${WORKDIR}/${MY_P} + +SLOT=$(ver_cut 1-2) +MY_SUFFIX=$(ver_rs 1 '' ${SLOT}) +RUBYVERSION=${SLOT}.0 + +DESCRIPTION="An object-oriented scripting language" +HOMEPAGE="https://www.ruby-lang.org/" +SRC_URI="https://cache.ruby-lang.org/pub/ruby/${SLOT}/${MY_P}.tar.xz" + +LICENSE="|| ( Ruby-BSD BSD-2 )" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="berkdb debug doc examples gdbm ipv6 jemalloc jit socks5 +ssl static-libs systemtap tk valgrind xemacs" + +RDEPEND=" + berkdb? ( sys-libs/db:= ) + gdbm? ( sys-libs/gdbm:= ) + jemalloc? ( dev-libs/jemalloc:= ) + jit? ( || ( sys-devel/gcc:* sys-devel/clang:* ) ) + ssl? ( + dev-libs/openssl:0= + ) + socks5? ( >=net-proxy/dante-1.1.13 ) + systemtap? ( dev-debug/systemtap ) + tk? ( + dev-lang/tcl:0=[threads] + dev-lang/tk:0=[threads] + ) + dev-libs/libyaml + dev-libs/libffi:= + sys-libs/readline:0= + sys-libs/zlib + virtual/libcrypt:= + >=app-eselect/eselect-ruby-20231008 +" + +DEPEND=" + ${RDEPEND} + valgrind? ( dev-debug/valgrind ) +" + +BUNDLED_GEMS=" + >=dev-ruby/irb-1.4.1[ruby_targets_ruby31(-)] + >=dev-ruby/minitest-5.15.0[ruby_targets_ruby31(-)] + >=dev-ruby/power_assert-2.0.1[ruby_targets_ruby31(-)] + >=dev-ruby/rake-13.0.6-r2[ruby_targets_ruby31(-)] + >=dev-ruby/rbs-2.1.0[ruby_targets_ruby31(-)] + >=dev-ruby/rexml-3.2.5[ruby_targets_ruby31(-)] + >=dev-ruby/rss-0.2.9[ruby_targets_ruby31(-)] + >=dev-ruby/test-unit-3.5.3[ruby_targets_ruby31(-)] + >=dev-ruby/typeprof-0.12.2[ruby_targets_ruby31(-)] +" + +PDEPEND=" + ${BUNDLED_GEMS} + virtual/rubygems[ruby_targets_ruby31(-)] + >=dev-ruby/bundler-2.3.3[ruby_targets_ruby31(-)] + >=dev-ruby/did_you_mean-1.6.1[ruby_targets_ruby31(-)] + >=dev-ruby/json-2.6.1[ruby_targets_ruby31(-)] + >=dev-ruby/rdoc-6.3.3[ruby_targets_ruby31(-)] + xemacs? ( app-xemacs/ruby-modes ) +" + +src_prepare() { + eapply "${FILESDIR}"/${PN}-3.1-libressl.patch + eapply "${FILESDIR}"/"${SLOT}"/011*.patch + eapply "${FILESDIR}"/"${SLOT}"/902*.patch + + if use elibc_musl ; then + eapply "${FILESDIR}"/3.1/901-musl-*.patch + fi + + einfo "Unbundling gems..." + cd "$S" + # Remove bundled gems that we will install via PDEPEND, bug + # 539700. + rm -fr gems/* || die + touch gems/bundled_gems || die + # Don't install CLI tools since they will clash with the gem + rm -f bin/{racc,racc2y,y2racc} || die + sed -i -e '/executables/ s:^:#:' lib/racc/racc.gemspec || die + + einfo "Removing bundled libraries..." + rm -fr ext/fiddle/libffi-3.2.1 || die + + # Remove webrick tests because setting LD_LIBRARY_PATH does not work for them. + rm -rf tool/test/webrick || die + + # Remove tests that are known to fail or require a network connection + rm -f test/ruby/test_process.rb test/rubygems/test_gem{,_path_support}.rb || die + rm -f test/rinda/test_rinda.rb test/socket/test_tcp.rb test/fiber/test_address_resolve.rb test/resolv/test_addr.rb \ + spec/ruby/library/socket/tcpsocket/{initialize,open}_spec.rb|| die + sed -i -e '/def test_test/askip "Depends on system setup"' test/ruby/test_file_exhaustive.rb || die + + if use prefix ; then + # Fix hardcoded SHELL var in mkmf library + sed -i -e "s#\(SHELL = \).*#\1${EPREFIX}/bin/sh#" lib/mkmf.rb || die + + if [[ ${CHOST} == *darwin* ]] ; then + # avoid symlink loop on Darwin (?!) + sed -i \ + -e '/LIBRUBY_ALIASES=/s/lib$(RUBY_INSTALL_NAME).$(SOEXT)//' \ + configure.ac || die + + # make ar/libtool hack for Darwin work + sed -i \ + -e "s/ac_cv_prog_ac_ct_AR='libtool/ac_cv_prog_AR='${CHOST}-libtool/" \ + configure.ac || die + + # disable using security framework (GCC barfs on those headers) + sed -i \ + -e 's/MAC_OS_X_VERSION_MIN_REQUIRED/_DISABLED_/' \ + random.c || die + fi + fi + + eapply_user + + eautoreconf +} + +src_configure() { + local modules="win32,win32ole" myconf= + + # Ruby's build system does interesting things with MAKEOPTS and doesn't + # handle MAKEOPTS="-Oline" or similar well. Just filter it all out + # and use -j/-l parsed out from the original MAKEOPTS, then use that. + # Newer Portage sets this option by default in GNUMAKEFLAGS if nothing + # is set by the user in MAKEOPTS. See bug #900929 and bug #728424. + local makeopts_tmp="-j$(makeopts_jobs) -l$(makeopts_loadavg)" + unset MAKEOPTS MAKEFLAGS GNUMAKEFLAGS + export MAKEOPTS="${makeopts_tmp}" + + # -fomit-frame-pointer makes ruby segfault, see bug #150413. + filter-flags -fomit-frame-pointer + # In many places aliasing rules are broken; play it safe + # as it's risky with newer compilers to leave it as it is. + append-flags -fno-strict-aliasing + + # Socks support via dante + if use socks5 ; then + # Socks support can't be disabled as long as SOCKS_SERVER is + # set and socks library is present, so need to unset + # SOCKS_SERVER in that case. + unset SOCKS_SERVER + fi + + # Increase GC_MALLOC_LIMIT if set (default is 8000000) + if [ -n "${RUBY_GC_MALLOC_LIMIT}" ] ; then + append-flags "-DGC_MALLOC_LIMIT=${RUBY_GC_MALLOC_LIMIT}" + fi + + # ipv6 hack, bug 168939. Needs --enable-ipv6. + use ipv6 || myconf="${myconf} --with-lookup-order-hack=INET" + + # Determine which modules *not* to build depending in the USE flags. + if ! use berkdb ; then + modules="${modules},dbm" + fi + if ! use gdbm ; then + modules="${modules},gdbm" + fi + if ! use ssl ; then + modules="${modules},openssl" + fi + if ! use tk ; then + modules="${modules},tk" + fi + + # Provide an empty LIBPATHENV because we disable rpath but we do not + # need LD_LIBRARY_PATH by default since that breaks USE=multitarget + # #564272 + INSTALL="${EPREFIX}/usr/bin/install -c" LIBPATHENV="" econf \ + --program-suffix=${MY_SUFFIX} \ + --with-soname=ruby${MY_SUFFIX} \ + --with-readline-dir="${EPREFIX}"/usr \ + --enable-shared \ + --enable-pthread \ + --disable-rpath \ + --without-baseruby \ + --with-compress-debug-sections=no \ + --enable-mkmf-verbose \ + --with-out-ext="${modules}" \ + $(use_with jemalloc jemalloc) \ + $(use_enable jit jit-support ) \ + $(use_enable socks5 socks) \ + $(use_enable systemtap dtrace) \ + $(use_enable doc install-doc) \ + --enable-ipv6 \ + $(use_enable static-libs static) \ + $(use_enable static-libs install-static-library) \ + $(use_with static-libs static-linked-ext) \ + $(use_enable debug) \ + $(use_with valgrind) \ + ${myconf} \ + --enable-option-checking=no + + # Makefile is broken because it lacks -ldl + rm -rf ext/-test-/popen_deadlock || die +} + +src_compile() { + emake V=1 EXTLDFLAGS="${LDFLAGS}" MJIT_CFLAGS="${CFLAGS}" MJIT_OPTFLAGS="" MJIT_DEBUGFLAGS="" +} + +src_test() { + emake V=1 check +} + +src_install() { + # Remove the remaining bundled gems. We do this late in the process + # since they are used during the build to e.g. create the + # documentation. + einfo "Removing default gems before installation" + rm -rf lib/bundler* lib/rdoc/rdoc.gemspec || die + + # Ruby is involved in the install process, we don't want interference here. + unset RUBYOPT + + local MINIRUBY=$(echo -e 'include Makefile\ngetminiruby:\n\t@echo $(MINIRUBY)'|make -f - getminiruby) + + local -x LD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}" + + if [[ ${CHOST} == *darwin* ]] ; then + local -x DYLD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${DYLD_LIBRARY_PATH+:}${DYLD_LIBRARY_PATH}" + fi + + local -x RUBYLIB="${S}:${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}" + for d in $(find "${S}/ext" -type d) ; do + RUBYLIB="${RUBYLIB}:$d" + done + + # Create directory for the default gems + local gem_home="${EPREFIX}/usr/$(get_libdir)/ruby/gems/${RUBYVERSION}" + mkdir -p "${D}/${gem_home}" || die "mkdir gem home failed" + + emake V=1 DESTDIR="${D}" GEM_DESTDIR=${gem_home} install + + # Remove installed rubygems and rdoc copy + rm -rf "${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}/rubygems" || die "rm rubygems failed" + rm -rf "${ED}/usr/bin/"gem"${MY_SUFFIX}" || die "rm rdoc bins failed" + rm -rf "${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}"/rdoc* || die "rm rdoc failed" + rm -rf "${ED}/usr/bin/"{bundle,bundler,ri,rdoc}"${MY_SUFFIX}" || die "rm rdoc bins failed" + + if use doc; then + emake DESTDIR="${D}" GEM_DESTDIR=${gem_home} install-doc + fi + + if use examples; then + dodoc -r sample + fi + + dodoc ChangeLog NEWS.md doc/NEWS* README* +} + +pkg_postinst() { + if [[ ! -n $(readlink "${EROOT}"/usr/bin/ruby) ]] ; then + eselect ruby set ruby${MY_SUFFIX} + fi + + elog + elog "To switch between available Ruby profiles, execute as root:" + elog "\teselect ruby set ruby(30|31|...)" + elog +} + +pkg_postrm() { + eselect ruby cleanup +} diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest new file mode 100644 index 0000000..1d9c9d3 --- /dev/null +++ b/dev-lang/rust/Manifest @@ -0,0 +1,188 @@ +DIST rust-1.70.0-aarch64-unknown-linux-gnu.tar.xz 212261108 BLAKE2B 56e15d01ea0e84c51ca3d4fc292c124536472e9c3e6d9ae13ab524e520865117b36621eca5072b961831ee6ad3077abd84afa9e092483095234b7ab2ddcae769 SHA512 d64eb19417a03452f591bb779042b2b3ff16d2ac48a9a74d293bc7265980280801784f92cdd0ae0dbc21743433388149557da7642871c72f3bb4b3061cf7eeba +DIST rust-1.70.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 435383da02632d404ce95ecfc0b0690f18447f22cd82e67cd08e6e8aab072539b33a49c2712bdc35f34a811f8e66bda6bcf9505b41dcdaf4cc66e358df9d7f02 SHA512 634c35b52d85c524a954d0663b6f1507c5aec826768c1a51394bf72bae585afadd3d3af985a9d165a65d178e04813fd592a78d058ed1400bb0fc43b0a1614a27 +DIST rust-1.70.0-aarch64-unknown-linux-musl.tar.xz 195626092 BLAKE2B df5ca11b64513c86dbcab93bbc5eee37a1f2c6307ca479c07ef62d683ec1b1f56bd596284b11695d80c8483ba5ffaacb0bf060d7618f5e79f3957bfe8bae042b SHA512 5bcc47e2e791603b419c2d1f3503a60cc9a4a7351d3e8a61e6f3823c53195f58795cfcdc56c0c2011ae40a21ec7819d7dad32f5f9981f3d39e5f28ba85083d07 +DIST rust-1.70.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 06e279acca2308599b367cfcc105e9a1a9b129c1ce8d70e9c64f34f471fb9f28ba0b3ffc71ba389a8268d7f35fbaeadafb3275be29e7db8e8167ce1a828a3fbc SHA512 945a1679eea5fc89debe6c840b95314fd7be3f5ded9897965584cb53c3571b9ad18b1894fe4f8f82cd2373ee473c002c290ff943466f7d467357a6d56b62ce2b +DIST rust-1.70.0-arm-unknown-linux-gnueabi.tar.xz 175940376 BLAKE2B 101b06523554df9f115f33dbace6a045fdad5ede100c7ed70a50da8a522e271708223f2cd5600fc4c2d5aa920e8179c9d60c24649dd234afc3fffe20d06935f8 SHA512 b1c3bd1c80437fda5e605aebbedc3f03f13223ab7fb37cf5808c8ccad00f015dd4656979e6f47ae65ef42dd158ffe18e9fa74aa17e80de76e73a8065efdf0760 +DIST rust-1.70.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 1e901439a083b6da2e62df19829c76a3cd2486115f855407f329b9cae0dff7a0c24b31dc48c13b28c17975cbc7f3c8d6073d7cc5629e78182f891d01e93d09a1 SHA512 c32b7f12c1c5cb5263444f6ccc5facf69e78a63816915babfe68e81be33bbf8a922618fc47fe2ec7142f8f04127fac89504b332cab5e0b29e028011ec5d2927c +DIST rust-1.70.0-arm-unknown-linux-gnueabihf.tar.xz 176229396 BLAKE2B 4c3be748a110a0db483b5cc8baff433ef7b67af0c21be41a68a72b4307ac8dfa9717e066db3768204b03550484ebb4d7e6d45345f33ba797844132e1dbdb16dd SHA512 847602b101fe68e639598fd15592e60c8b4b2482077aad62b60918fd09c1928f1ed251197bbbbe3fbc5578a0e1e2abcdfe838e9c54cacba30e3ef2fa3d6e9557 +DIST rust-1.70.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B f8d920f2f3c1021ac207b1e3c0004e07bedaa207d463a60c9f2556d057a8e80eeec00565fc61ec9fae67e435bbfd902c4b54d2df0a710fd9f63594e7852498dd SHA512 0b7983572502d918241510abbe23ff913e5757f9a7d64e00701b23666a188a2324d70fd1840cb2b604fec813ce1883e1aa30bb421e1648497f3b165b9ccf4e89 +DIST rust-1.70.0-armv7-unknown-linux-gnueabihf.tar.xz 180820156 BLAKE2B dcaf472e5bce185f56a8ecd509ca0b829afe8203c5f3154c8065b0e3d9848f9f2cb6f6ee30568a52deebb21bec9aa8d05f7f2c2f42d584833a4f998ade707c94 SHA512 adb7d0fbabf14fc654e020bc8f7a2071d3aec7cdc64edb82739e78f0bd6f02d3d0cbcd18a648be24947a80008a1f45a1e35b9ad098b7cd31272ef985a502e25a +DIST rust-1.70.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 3f42c11e20e1e86b0f934954c7d59b7b09af1613f0f10ff3295a3105c4f90554ff67c5c300f4d8bc1e113cd7631f10a4a1b9bc4f18049c97d6a3a66e6f1d0790 SHA512 981df55ff730f20ec415dd86f9fe035cbdb280d4cf742734db0270311f800db28e0688115937f7a9e525a8ee15adb61787a91d0a89bdefe950cd7489a7a09258 +DIST rust-1.70.0-i686-unknown-linux-gnu.tar.xz 204795680 BLAKE2B 9cf9b73b388145589fab8580bb6efb60cf731ae2dc98eec50abe819771778c9c27277bd62f89c4fc89c70089f499b7c0d02e4e4ba60bbdc31f48a3d534a4ef52 SHA512 a8001d2df7384f29783b4811896a3634d4daa5310d2b3b881e347c9dd727a621417e6e59ac30c6556e123850d1bfe557f8fc57955f4e8ea7b541cf2dde4735b2 +DIST rust-1.70.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 002ee6ebeb71b5178ce6e88d5a95db6e176b4262ffde775383187ce705d3a6bf3c756ccf975d8642efc71ab9c90c8540cf6cd20501f6d2b668d91943d5a6cd06 SHA512 ccd6b486a000ccbf4f78ba0863e926c621d06214452a2730da8d05c70972d84bbcb3f49005b23a9acf82e31cec32ea1672fda8c091c04cb70224cdb5740d7bfa +DIST rust-1.70.0-mips-unknown-linux-gnu.tar.xz 155096952 BLAKE2B c19219093ae7ea268b847b5fe0f20343d16e035c7666a545420473214fca6e5a43201421de693deec721ecf94c8d0ca44148ff7359184f5d07f94fadcddfa8b2 SHA512 8c5178fd56ca57af90ad4efc1dc2265b185858d6fed1e7494bfbd054c4849337af08c0b4d8e99eb126b9c8551800ab5986764faa4fd782abb56ae85b5a6169b5 +DIST rust-1.70.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 49e8717adc826756bd7439cb8b8a5d62d7aaaba7ef5ace3f8cf1766d04cf8831a69345ba10a9804abb179fc23a6cd9b2f88fe3277de603ba2e9ebbb7e2c919ba SHA512 02c33b2d80c2b40f013b4a44553e6e8bd84b9df748718ac3cf7b2d6a0b33a1723cac2e142ba80c38195533cbc907b621c4b89cb7790612a175f2cccfd3d508cd +DIST rust-1.70.0-mips64-unknown-linux-gnuabi64.tar.xz 152952764 BLAKE2B a65bab1e6284cb81d2e6c03d82ca103a6b7984925f85d45caef0cf2735eb8156f9bbff31e9265b7a94827f5098895f7a09e05360e808013779fbe34ebb4de32b SHA512 4ecd8a3155ad2734bb996473d03b346dc8022b89943e1accf8a81348eaa1965fe9d289c5431196c7fc387a945a9fa89c9c2d9ca244723970b6dacdc2b978c453 +DIST rust-1.70.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B aef454db1e0952174c78d0341aa8fc3d1aa3f4bb16019151589d0c377443d61929a03d8b5891133cc4a29d93b6ca5195a0adead6ced96af6a0eeee88dddd8e91 SHA512 6f50a9f0b32e3f6d14039b3f1a2bd13a912d45cb1c297a8af8836c4be6dc9a5590f3f09c2f30132e7aaf9b0e2ea5d356c180462c6054888f6e6ec58b0e99f20f +DIST rust-1.70.0-mips64el-unknown-linux-gnuabi64.tar.xz 156871924 BLAKE2B 254910113b718725dde06d4350a366aef669662c7a52c3c1f13d2bb8cbb59a6d03bd04def02c9f3e6bcfa0119aa994e708ab8a808e6f4abdfe444af3cea6d5c3 SHA512 333dca6baf1bf580fe028cb5a2c261beebbb906a027142e36a9e93b7eb0728f01320c8a143473829e412524a6d958659775cf0972f40b87ebe3c664e44ef38a8 +DIST rust-1.70.0-mips64el-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 2ad85a65706830973b380eebf6807092853f4916e44d265b5822f286541981895519ddf863221bcfd7c5789737ea8e553c50dc83ec3e8b43cb8d04d4fcbe574f SHA512 cbc2d658d041d5437db9e8b564fd5e6d8f7ef130157f79aa4a92000f562b40dfd40cbc350553554f5e6bbeac347c9704f72a75ab06cd1f1f3a7031ab64764f9f +DIST rust-1.70.0-mipsel-unknown-linux-gnu.tar.xz 158491280 BLAKE2B 299065eb46c14e5243450b5a4bd4d6bd18a3cd80331001bbccc563b4d2a52dd051d1791b5bb564c648b0fe4df4fdccf472d43805bd71c3e7cbc1bd424a857758 SHA512 0adbb98062cac36bf3a59218b892a3e85917a230ff07fe371069e1eca0a62169874655e53f607ae100ed998f6c91579faa1cf36f5944ccc5d1b28fa2ad456b54 +DIST rust-1.70.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9774d50e76700cae25ee51ad9d1a3b718dab9a4be04d0006ff55dafd9918f07cfe2fe5a83b45ee4934a7e0f0b661c4d3838331738a9e69cc77e6331d1b3e489a SHA512 586f3e7e09226d9e5bff379261b107a4ce75614aa53e196cbbb68b7828b25eb9a1743c4e667c4f57b6269f93074394c97acac88854fe89f545a5acd6a233128f +DIST rust-1.70.0-powerpc-unknown-linux-gnu.tar.xz 174738376 BLAKE2B acac25164e9b5bd7335dfb0249588abb54ff02b012539f540392cac3ddbfd064e9ab000a8790c1d7f980cbf7a9a38e19574aa83297448a48fe42ee1aeaaecd8f SHA512 1a369e3a63e658a86588c6565f36740069417b0e2a207584da5b32994c801362eda463d8a7de9676adf42a8476a5def4c7363150eea7d1a09fd6f3c298279c1a +DIST rust-1.70.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ee5c4079fc9493e78713c54540e69047a05f41246f9f88d3da422216fb04d3e876b25ec61f19b7de02f1cbb5dc3aeb7e5c5cd03a5c1d7ff9717d7e49f660b245 SHA512 1b7cb72919453ef5c272ef62c8b76937362dd56a70e292439da1f28f6803ecd3794bdca3c433ce3155823d524ac70a9873c0aa5b7fe8b59f06abc67935cd8450 +DIST rust-1.70.0-powerpc64-unknown-linux-gnu.tar.xz 172874164 BLAKE2B d0c718cfcd533b5aca653144831c50aabd6d292e7cdb8b53be768fd946de91f3274eb07e9c741145fb9a5f632d626629b6d4989f9cef203e240382fdac3ed8f2 SHA512 645c39d447e92c18705be0db6e5e53449fdac6fd0cd2262b8c33dc9fedb596ad3fb3f2a172ca5de019fbaa6d48acdc98c6c742e925c23859a58f27094db82179 +DIST rust-1.70.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B fc97b83827d351e0ddb95e3f844bdb8458232c374d23fa656ae6ca35a8db34b54b8ec47d18cb316410698970d63caf4bc028d9ea68825f83349320b28a7b1270 SHA512 a21553e7c4b28575f15cc28536d5af6bbc0be6992fbd7c6cf086b5318fd87de60181bc019ad264dca1dc3e59d1091ea0df233db83d69a267a91db9e22847a4ea +DIST rust-1.70.0-powerpc64le-unknown-linux-gnu.tar.xz 182570028 BLAKE2B 2ae544c9006a850d457ebe240fbdca58905c86cb26be3edeaa95aea02a3201c94852936cf3e91c052f2bfb5960cf923f3bb4ae6d6d92493733f4acf9e70c71b4 SHA512 89cd4d1118ff8f5fec5e148f41ac9cd7dcb76b21b67b1733679c8fd9ed6f726239a22fcb45faf2ba45bb16e04f679bda9e29fdc8d3da3a6ec03f7a6ec85b1927 +DIST rust-1.70.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 234a2051888eeccf772d9b7f41ac6757453c29cd736a2abf1b3d1fe22dd45fa9929efbc501ad429b6e44de13fccfa17d64ce4beb86879498c157b0856bb3eae6 SHA512 48ccff718902cb4d78663b69efdd16925b4df21b735c373db25eccd8baaff3c6dcc5c49ae37d583cdd22f44df91244e34e8463e65db69f8ee6ee96fba90f1cf0 +DIST rust-1.70.0-riscv64gc-unknown-linux-gnu.tar.xz 167304092 BLAKE2B 977fdd1fd305d4cb405d18a21719e37928c5ad0934a62c53ef395c067afa75eb7bf6fba5c9c7004d1413cfb78496809d1425fea9f38fc33916fa7571cc9f687f SHA512 2b19f66ce4702a19f7ebb8329569031c4a5e2deaacd161ba231114780a565fd8f1ae0b3970e021da6b7b0a23b1f41ffe3296f2f2b1dadd5de3f533308ab02d95 +DIST rust-1.70.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 26af74d00f9f7c53a15f9c39acef5364a1cbc7df2380ebf43cab3b02240b8fe446c200ef4652ea8684f0470035d8352accf5e0ab5b34dd9632b471458aad2516 SHA512 93ffd6214db7e04e2692f4e05bccb7140c81378da039317f2e04587f1403935abd57b8b9bd5e12b1befc5dec10898c06a508b1ebf83b845564b9b8a42d7041ac +DIST rust-1.70.0-s390x-unknown-linux-gnu.tar.xz 197741656 BLAKE2B 7d31b09ad69eba9ad1a2b7196679a439907ee80fa3ddee9014f0c78505ee9e1c93514e7f44f83b0ac5ad442c6e7f05568b0ea928a89c5a69601a1a935d2d253b SHA512 3fa31674a3ba33d41c7db2b33e176edac1bd67713b7b52dc51eca73d4ed1821a2a4ecfd2545734fecb57271828ae0bcc7e1c4d0883821b650bff99544484db07 +DIST rust-1.70.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9dac941acb317914f4eac12df601b442e9d9c74f13048dd8120d23c3297e7f5bc77618fa8eb29d4401b141acd59d20e87e1b198f9997041d4113de9ad39b59cf SHA512 64b8658b275a53b52986aa967535ade73009e833fdc89c4e225f3139262fedbeef902702e8e71b18380a0826afbe7dfb1afdd5800bd5f810e66f2193c4de6501 +DIST rust-1.70.0-x86_64-unknown-linux-gnu.tar.xz 163456784 BLAKE2B 49a8397a7129aa70f5ab3876613c9c3f25abe2a48fcdfaeec0bf030529f558dd6ee221bef18ab135b95b2e8bdd61349e3357674a794bd08e4539c0fbbf51bb3e SHA512 8950c85f03f2e7af23c18e9be0ca1cdf7074b9be8d8c7b26102277c150c598bb7d5f1f74400bd70efcd42b38f68c96c7701239719f320311e8b131191ee77512 +DIST rust-1.70.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e5fae8b3c87f54b39d922fe0c7694e0ba115ae34a668cc873390fc9e4638baaff5b6d1b4c67228c6bfc57b4da9bf77d6a452ca12bf6653d5610895b8ba19d64d SHA512 352749df741287107b966fd603113c51e82a426a7151e224e3a8d1cc7bd4658ef86147f6fce62caccd7b5779d9961be72cbb618db79a2850e8a8c4b0bc229ad3 +DIST rust-1.70.0-x86_64-unknown-linux-musl.tar.xz 233692884 BLAKE2B 295e815bbee6dc135ad17dd78801999afa7880a7a8f5ad4932a7580f1b03d50b850bcc3eb68e9d679e0a2d68392d446423ea752e47bb22d64823bf3222e0b377 SHA512 5e42224e109d525a321c107005660059ddcb0414392abc660b80fb09a55c936c79215989646be0aff6b0427b2f5d82a2a19ec3bd3235883a2037575808aeb69b +DIST rust-1.70.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 7c5be81109607f191f339cfef87c736e2d35d4a045511036ee6e9bd68f22fbaae825ad5c463b0a5bf29606a8b9cf488172d1338aa4d034767b0f59243613c250 SHA512 241863164ee1a0d702080c9967e2ec5bb7af9222236316c8857b89b517fcbdc362b26ff3e362c4be7fd2989d3fd2aad0a0476feacecd2604855dfa53f5f1af27 +DIST rust-1.72.0-aarch64-unknown-linux-gnu.tar.xz 212153292 BLAKE2B 2896fb7c195bfb0b1b8313c390458c86e18986e2c1fcd973380e26ed78ea955c20c37475c9788fe9b23435020393fd8408566091c2974ba439b86f3b34676100 SHA512 7843b39ac259267c276834c66bb139f0548e5ee2dd1bf9e3830b07cf687e15f4b27f343dc13ff155bd86c8f0580f7f16576bb6731b782447fd0f0511f8c75e95 +DIST rust-1.72.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B aa8b2eac07010a0e564d6681831f99e3379ab5a2520c3fc29cc67803afdcb8952b596b653d8bd8e15305f1ce5b9c97ec611a3d3e8f4f3ab2dd2dd066c0401218 SHA512 308f82d5acdd18469b751d97d89617502ba554e6dfe72cc38cbcda0abb5705dc667f0c18a69aa1260143cfb4a93ce7c77726a917ab2060f7cd7d4a071387fc28 +DIST rust-1.72.0-aarch64-unknown-linux-musl.tar.xz 195414824 BLAKE2B 0bcd33b23ab927c36d2fe4eeca98edf421824d1ac9d88593bfd29476c8faec6fd7deddf0e6efad38faa0000986b234c7f5aed8d15eab9ca37569a434ddfddbf3 SHA512 7ab0adfabe9e5e3226add9fcc34445fecf9bea270cacf5e87c13edfa240c2b26f34cf035386ccd9b8c1edcbd74285d903d3dd7a96f6f1a928f4f60c6e619324d +DIST rust-1.72.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 243c5108f2f56f742d589a3d510758c7377e5ff2625e1414f6cf5340c111780ad6397305fb01d28af50a9484662777c70328f9b2f490f3e2e3f934a4ff133604 SHA512 49289ccbc79f022d23eaa9d4d9e551365be6cd348e23f01ac099e103cc6cd2508b30494057e181a8246d7c9fe1d7fefb6ff473608e3d8835d098ad6c00dc02a5 +DIST rust-1.72.0-arm-unknown-linux-gnueabi.tar.xz 175875544 BLAKE2B 20dc09b8e2cc48a7a52f184baac30c523cd180524b178a91a72c6b7bc91e8ce0fe3e4d2605b1f9b5aa1535daf29a8e92328bd919a9f5913002086726f5e6d8b7 SHA512 2b8da66ec7575fe4e77d34247cbd91b376f5f00039c02855964883fe0e3610c47f087ff3486b36181ab7724dcecec78762636c9c9fd17a2e9410bee5f7efc84f +DIST rust-1.72.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 8a5cbed0df91a723f3c96b612c2eeb2580073fc895467a051b714b8d29956caee3199422686ebdeec6f38c8b0b05e5ef7a79f4a5ba92d77ed500ffcc4e3532f9 SHA512 a3259d475ad2722319a15ebcdc5c5c7a74b38813d7ee2de5d1d69e7ddcb9cd2bd3144655df73e1f5736262de5166d444a4aa9ec638ab4e2228de0e5b91fc46e0 +DIST rust-1.72.0-arm-unknown-linux-gnueabihf.tar.xz 176030324 BLAKE2B 8285f86700cd5dfb7ad2bdd70fc58a5222e64d7bb70aa51984001ce379b4fc7117e90faba1c3465357a27691231aab1c601f9b603418fb2004a4b2a8ed74a083 SHA512 9f810fd926b7d425c14ae40f8e47f59609fb18618ff4b16f26cc42904f9797a9633852a6747c2a7ecc130adada08ded4c99565a53d563b17ad04350d15145666 +DIST rust-1.72.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 6465556de7829ac1c02fc8cf6f9f394d87d8af9326710c100f24de5cdca62c3a6dcb831177d98d9b060a6e4338985513072f3430418e4378c1988509d8f10528 SHA512 3a85a1a7111fc86a5974700de196f716c6cef0436a7bbf791be7ec5eed3252ae654d48f60c5056e5d5000196b34d7cd32d821670677363aa9a94200ff269d6d7 +DIST rust-1.72.0-armv7-unknown-linux-gnueabihf.tar.xz 180272644 BLAKE2B e3c1d8cfdb4a3ed8e445ea1814d62f1d072de67f0c217908c7cdbffb30614cabcf8582e393a62ac43624e0d131bde1c51426ca04d9dfbbec265887b674863b83 SHA512 36f7d44e52668e4e67700834d0614d7f37f3b7219eecd1008ff9660f79226a011bac75402ecd43ae12ef5479d2e2187b10691057c188fc5046cb79138bf6e521 +DIST rust-1.72.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 09ed6107a45ffc61a80dd2ef21a286d184f0a2c8c57a8c0e41fa1eca786941cef06b66b5035eefade29781912118ff1da11a7f7fbb3ab3b4873d8cd2249e3f03 SHA512 7735c460247df0a6536561967090eeb5784a44d1a1cabbefd6d57a0afd74bbaeec96f65e206388f7958b32568997ecadaf83c9e75451986e70fb05167584bae4 +DIST rust-1.72.0-i686-unknown-linux-gnu.tar.xz 203434692 BLAKE2B 2affd5b42c664939ea0c15837baf51c9f315aa456c41e916300b45a3eb06c26995394d292380470442f0fd4b187fb58a1730ecbe9a4928837a7ccc0d59d8ed2b SHA512 fc8ed251d6c9888894b168506e5980cb9802b43485de5c9145d128257b1b60d363612115149f39cc13a9e18929422deb8285dd999abdcdb089d2318dec8ec606 +DIST rust-1.72.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 16048265dcb012b67fe9de44c11353a2506b314c45482721648358ee84dd500d13c30ab55e14f0cbc6837761924904355f02a0001a042819201c096965c8bc74 SHA512 5f16000c95372d9799787c3bb0f4d948cca18ab806e368ccee17d4bddb20352492906d54cd56fa3d50545374a70e42a893c37463baaccd1e612358a7c809a9e6 +DIST rust-1.72.0-loongarch64-unknown-linux-gnu.tar.xz 160819080 BLAKE2B 66b5f34f9dbbc633fc240a240d5b0555ac55c5cfddbadeb22168ab90be83410a75a9fbb154fd1aeec2ba8447ff76ed2984966c7352b46afb52fdb2eae82b02a1 SHA512 fdebcca89a65d5cfa6c9d65f89a34989af0b8c5c1396dc182ff6d4ce320111ae6b23c2e06786ebefd8dc40dc391342d38fed38a193daf0b42b6dac64cd79d36e +DIST rust-1.72.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d7e483773ee6c105829d7b711904dd14194c9e69d6ad1271c45ff826d78cd23da3e8f5dfea688adb157a9c2697d3c36b1e88e7ee2789d571bc90e41701e46540 SHA512 0644e4d76dda08cd95bc45c5797252b26318841844f4d0baa49212c1121c773b64d2a4ea993c83d412e33433e604b1cbdb86ff60f8328cad2f5c741ebfc24a42 +DIST rust-1.72.0-powerpc-unknown-linux-gnu.tar.xz 175099316 BLAKE2B 7eaa2dc7816f63a9a4288d852b2ba7b3e13c5155f5f9a8a6ebb4a2d20f03e900b52054689958a07e7f52918835536ce92a117f8ffa014196040c3bf340d33b78 SHA512 f2e87a12a2d5146011fd9df5532df06b7a936c2ee4866b95d0d484099240df9aa13597877d8f1ef56537928b196dfb89d2b2084784ff9b2f86eb37407661bc4a +DIST rust-1.72.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 681fae9a730a7f8006e30d05378ca518abd8514edbf69d82e6485f11a8a98f14c819f63618412fbb4c525a4b60367498d79c0b935f6be5c7b8a59f4e60775bfd SHA512 c4f5020297ff35043c1985e04ef5322b18283d1ee24a84cc29fef3f3e48e87612bece6ea5e86a5573b86133fb1cda7402aae98c897062b18d3ab71da48e3b68b +DIST rust-1.72.0-powerpc64-unknown-linux-gnu.tar.xz 174927468 BLAKE2B 2b7c0d3b22a6b6b80f2f9771a6a6ef678575d94c2dd0dffcde0ab572507a09b663a5a4106f72865b57da37c9e710f75d38882fa0345a73f6f1498566a77e52de SHA512 c7b7f9c2b525c8ea1ec9f9c0090a8a4c098f5680b22b04b30ac86da29586b04d2a901498035ffdb94793b2732ee985c71137c63c1f7b938496568ce8b82d678f +DIST rust-1.72.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5b9a6805c0ca7af4931d47c9950358b896689b452b898f0ae5d21a4c4027c20c321ce6cb2b150ac3b2508ccf0a3a430124a44974cb011572a126594374e9c182 SHA512 239bb2ae442d2b7d970bcbab4bfca77e09ae17d2caf4a2cdcc231d1c9f1aceb4b98a050eb3f3fae3184c2b6f451d32cafdd0d1e11c2714e180f3e3769b9a1b42 +DIST rust-1.72.0-powerpc64le-unknown-linux-gnu.tar.xz 185829712 BLAKE2B 305af3179f7a66e6fd7b8886e9f86e4fd4d2d71654658f0804182bf7ba1a5da6c71903fd89e899eebb74ccae366ada580a7b4a33436b3b82af928ff5d081fce9 SHA512 2401d3490c1e3ec32d185f7f5886c355384ba2cf28c5d14ace0d2b8d14eb5c5cdf4c507c67c104849decc23bdeb7223a151214e11b67c2276dc8f795878c76cb +DIST rust-1.72.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 10bd90f3e07d892adcc04d9ca43454a78a5e260dc0e90978ebd50d48aaab488466584180324970f790eb181165f2d3961c515225c95efa55ee3d53d4a8f831a8 SHA512 e72d4482171090bd1e801a94b7ddf7002555e37aea9e9543e3d7f263df938ff223c0980dbae4b56665ea42e2c352e94f0f18c418fad02cd68d3b6d7f087f4e7a +DIST rust-1.72.0-riscv64gc-unknown-linux-gnu.tar.xz 167275368 BLAKE2B 0e77dadf640c0fae29f720458caffb3dfe1d9a6514526676e1da333098341eba20d2df9b191005e5d66e6396b9e12c25520692f862ad84c1fc91eb1a6a71c470 SHA512 157da3684962c3145206910627bebc9fc5f01fc8d7e56477bae2796bc8fafdcc504dcb77cbdcc96cb2288b0cb019452116df7740fae3a87b5274d103da7f3a41 +DIST rust-1.72.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e660968bd401882034d63884e60ddf0e50a42c1e17a517aaf153731a0d319d9de5c074381fd1e56b535e1a870afe2b17b7dbfbbef33463a6bf4ac0a78226abdd SHA512 87bb2b30710a4159d1b2b87dffd45be772dfaf58218459109c8279da21440ce423cf5ee28fee0281c3b2b9eb433880c0f63177b0b775027b15095c9b6ea99bd0 +DIST rust-1.72.0-s390x-unknown-linux-gnu.tar.xz 197718192 BLAKE2B 465815892d2c4c76978fb3f14fae021f95007f17e3b6937ac64f22432aed808e77eda6081f0918d7fd48e00364099ea147e21dd80ffe93600088d7d1b39ae9fb SHA512 5ba7b7fe39fdf9a542040807283ded3271e37a8576e387c7d5333936623f688192902686027e491a6c5405906102afc0dfd465fd4093956b88942d54e5974e45 +DIST rust-1.72.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B cdf0ee76397801ac561e39cddd1eb1ee94454ff52df8e117a35aec010d4534b1ec024e1e1981579924bd976a1a48bc1217c990adb307a2c4fdf618c85801cd0e SHA512 a333a1ecd37aedb9f32365396dcf69e235a3c084bdb34b656929ce38ad78b5a26092ece2b81380efb32544ba578a657615132c02c7f4491855c9ca90d77fb863 +DIST rust-1.72.0-x86_64-unknown-linux-gnu.tar.xz 163402880 BLAKE2B 0f498510f8bbaba4b36e9e1cdc8e1e0482b4f26bc7f42a600b3e3f2294490f230a87d955c4f79c53ce277163660752a39889456d743c74adb2659cde536e09bc SHA512 f02fc82181fe2665aa66ca4948b66abf031c9ca273bb11ba69d1e99bf5bd1707010c4baaa04d8c83e9e97e7bb60440e3562380077903a459f689ef5dbac3ff40 +DIST rust-1.72.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 51083330fef8b0e9f4fafe71e3a08891bec9be8e1c2e64ef37cba463e99c13f44639981c8aae6c86d50c6a23c4846a4f056535dbcbf39a2d9096615862feff87 SHA512 284b74f87e192451ba95cc423089d64334f43da8c221f45acb683a088e7dfd783c488c7ed3fe68619aff4c245271cdcf4b1b8c5f0bef1f8c3d3af0ca13d394c4 +DIST rust-1.72.0-x86_64-unknown-linux-musl.tar.xz 234831716 BLAKE2B 3ee1a5727ad120bcf173dcee3770e342f107777984b06782f5ae588a58e5da94ad4550b00c168ddbe84350605100558bc01e139763b5734cdea32545ee6ee41e SHA512 62d5967669164ce7e8b6815298d79380ca96cce5a6c8a67db84cd3d5fdb6825ba9d2a91d59c2185a93b1c26030ef017c63942dc7a363e742d0abf356bca6f1f5 +DIST rust-1.72.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B e04731dd5edfe93d17cb032d772917d49bd46f195738cefe2e685f42b9ba5148d120e8d71c627cae46a665235f14ac0b35aff58498ff92da7edfdc5d6e562773 SHA512 2ed245aa779c594f8d9cbcbf63e7c68165d600408a25288163ceebf78946210a36958a3df80c50b2006e11930e09ecec0eee233ff659a9d2ffc78c1b55d3b0fc +DIST rust-1.73.0-aarch64-unknown-linux-gnu.tar.xz 216033148 BLAKE2B 78bac094c78d68102cd5ca6a7bc9ac8a51ecd3e14cc5c66fefca0a0597b5ba439c22d69a323a6e7cafdfec60cadf0672c91ca5f85065ac8d7913c83437ec0256 SHA512 58198ebecaa4652e0477eed6ad2c29524e7a3e991ed437775281ce526c8485b2a1a49c75ac6fd5bdcc6cb997cee4d1b4d82fba49c03ad38bcafa764f5a9bdfb1 +DIST rust-1.73.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d4b85efab3aef10fd6940630ed3cbf6cca12961228482ce42cdbd4c0c185c55b9ccecb1ca386e7a5c02fa33b77685dc8e2d619ecdec0cb5afc7a01402be5a22e SHA512 b7392e301c00e2ee1be692e6b5a44fdadc4b442979bf8f09fe71f80d82b6f395d0505621ba8eb54fe6145812f7f9c0d2b278e474d6edde51a2318cf27f5080bc +DIST rust-1.73.0-aarch64-unknown-linux-musl.tar.xz 197525740 BLAKE2B ed84c438426bb0fc9a5a320731ae448f242b70a764d67e46e53a37f0e76262a183886e83fb27166e030740a27e6a79ef1c8f50bfc4a2c9c5d915ee5fa74a251f SHA512 b1a3007217dbb771e459b92a2ce0efca3babb34e9901cd44006d7c8ca92f48f67bdb877d3ec4710c58ad1645da4830a52cc2062b6b5a9827b8d57d508f4029a6 +DIST rust-1.73.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 2e2a965b37bdeec12fbe3f605c4bd10bb51adc7dd1c2e2d185b7306e8c75415d678b1bd83eb68e8a05099eb77958a928e867f87b0a4f05b5315b89869f120a64 SHA512 b65b08a68571cd0cf17f4469c1eb95868e00e6244e30ac0d3c30e0ad6abcaed143a7389002c0f90b2ddbd79b9c9c3856d66387f701a8d0eb9f1683ce456e4910 +DIST rust-1.73.0-arm-unknown-linux-gnueabi.tar.xz 180327600 BLAKE2B f28725f19259806f934298d2b6dde6bf59e5f8bc3ee0ad9b1cf0565a5383a31189170f26495b3103bbc9d86d2ac9b83147b3803508a53b96eebd214d2b0aff90 SHA512 27900c5faa9076db40cc85d973274a09ff44a76936312f905a3d9751d0b7480dc260ed3cec91a65bb78382c67208b28978e2079e28a47a25aa6279d09adcc045 +DIST rust-1.73.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 03ad365e06dbaf30d4ca2d8d2d3066d4f956ba5426f2c5b601c3830d9b0741b3655d26eafb3853b41ab01dc377065ca330f9d6fcf89de066c50adb0c9c9fe3bd SHA512 ecef5fe8359d8dbf23337398c1cb90a269ae169a1cd08525361d6f39e0a24dd22c1819c7ee0fe3828431ad492af89d19bf8c3c7b111f7925831362e2050d1040 +DIST rust-1.73.0-arm-unknown-linux-gnueabihf.tar.xz 180870680 BLAKE2B fea49832d8eefa7545b76114874de3d653ed888f753b68cd7636b7a1462bb564e19bbe37a5f3b94cf9a06640bf81f6fcc97f224f0f3e1745eb19f99ae193d3af SHA512 3648672256182cf6c73e31a05af3084b996bf25e1ccad8b96d68501e57a4ae4cf57befdf84db27e3e1a9fa3af051117e94ffcefd14246794e7528020bc26f4d5 +DIST rust-1.73.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 7046fad305aabf192a1084328d739754bf76c27fd3f1efcc4be36047ef6c4bf899ef8ae7e3cb359e23578af4c9a25d4e1f453ed8695ba33c630d46351234de69 SHA512 7e046b79d4d0a1bee3c7c5f6b8e3020a342a39e9913a24ef672aa1d197e63905653acc24652b720a4b996029661503e2dfc3b678f297ce15c548281ed772ac23 +DIST rust-1.73.0-armv7-unknown-linux-gnueabihf.tar.xz 184898496 BLAKE2B d0b2ce03ce7ab5e2c843989958a00524fc59000f62dc07f9783f4b9f22c734b67b33e403e3300fe3350322e1ad2b59e64e41b339d5f5c258b29dcdd98dec9c61 SHA512 ca48bb9b683058321b0ae770faf2fd607e03ff5e9291626ccbeba707f5ef8c211c29b9ddf52dfa11958691a127f95dedb742010018bbd6be2fc1d7ddced44190 +DIST rust-1.73.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 12e19ff5f586a7f67bf7e4f6ee96d919293500bbfb3bec306b412a423a3dafe94fe63939f371a644e1d3a1575a6a21df78f11ee63a8dbae9af3a2ce6b03d5104 SHA512 9e1f316abb8f7861fe1188aba1880732b957514fe58de3f10e340c430c1ce64e9627feec1a655335d33605cc6f5ee32830159a8215c5a233f25ebff18e2c7bf7 +DIST rust-1.73.0-i686-unknown-linux-gnu.tar.xz 209918920 BLAKE2B 545c48dce0e275228e260669d0f5b93977a9c7a02237d4ae9d84ed69236f5e412c5980e2c5823478949214c2b775c89c836bbd43e25406c20fbdc52cee328240 SHA512 a80742d14acc1d018ac35b77abba4491b5eafe28bc3173527c865b0e930572f2a92d4fc459db51c34600f8288b20b5790346b5f8e6fbdfcb080f1f14f44a2db4 +DIST rust-1.73.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9800a96cf8484b0370f343c2fdda0762bab534fa7551a7716e7665bc90b651207c471ef5e06b2d7acb766959155b5d593b375487b01cf65e980ebc721c3a4042 SHA512 dc0c25c270701ff6509bbff3fd173178ec8aa3e5cf606fe87b803e6f1279dde3571d22cf0c7f28bb0ba5410c08a491f9b9b937d0aa796c0ba30fe43f7e381c1e +DIST rust-1.73.0-loongarch64-unknown-linux-gnu.tar.xz 161763960 BLAKE2B 1ae7019055a4fb457733826750d2c20708e7d8bfeb8532ac1af5027387bd1f992c2ab1fe08d088b07581b0a81d7ea7ac8e44ff077887297a4d4da2a633089de0 SHA512 9840e1454506e3f0880e8113040eecd1b363bb78371386aa069271e18e70600f81e19358539785a3bd1ada7244b4830362e6f0b466798cda7647ed795072342d +DIST rust-1.73.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B cacbbd7793d6f693cf2c1211529cb4a0c888f3ed4d8674f610e034a7216fcf7f4ecc85331aaeaa89ec02c1412a62fdbda29a3bca6faa64dee0f8d419d055b41d SHA512 64b8594f2f19151927f5b74584822a78b15da97fc8f5e4823dfc222056a203ed68ced70cca915e1694ea6b36fdef5697e5b56062cb761a0d9557e5c08ec8ea07 +DIST rust-1.73.0-powerpc-unknown-linux-gnu.tar.xz 176694620 BLAKE2B e8b43ea4b9ad78ece530985afdeb140e0e960213272857cedcfe4e9262c190c7d26ce77d46fd113d2742cb159442c256a081bb6cf23e6977fa5ca8c6cf21ec30 SHA512 03f889dad45d1bd9ee4af52209af3d763ad5362cf1a617c86b050e0d2fe00c39edc716fc32a83c6e45c118b97d828c32f682ffec5b32f215d6694509a885772f +DIST rust-1.73.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e63cf87a2fb0584f2fc5c01a98dbb12bd9a7f4aace54a08505a0b4f9e7141705409d8bff1cd3a2d7cf40504ea274f29e11624ba050d56e4ec2a4e794fdf188f1 SHA512 a86db43be2a2fd92638e6355ac4117e707073fbb98631a8b41064e5b01e12bc1d2c594547778d9c99ec3e24c5c4dce6603cbfcb3715b11aef9d2c2758ee8b7d6 +DIST rust-1.73.0-powerpc64-unknown-linux-gnu.tar.xz 176165132 BLAKE2B 3750ef413de00047fa957ecc6c832995e072b58b78f994bdd6b8291583acd0a4ab54634d4e4778456bce6420135c83e9961aef5e615fd62806531686e33a31d8 SHA512 9f1a669f7d532a831df76292916493e1bcd4a56d95d3819c477898eb0510bc8760d008fc1e7d383927f8afbeff826b0598f9bc4067f692f530856c8e444f44df +DIST rust-1.73.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a1c1db86107b48a554d815811b518f7b28abac90cd08920362643a538670e7859ce43d179de24551b5e4409e0a421029e66b8374b27ddd699ca68fe0f47b8904 SHA512 04604baa0f13693d4bc7a0729df7041a55c0cb9efa11ef511d29d2b5a50c3575867c1ecbb6a23a030dc014876bc9c02e370c8d0eb531249833fbb52dd964f2b4 +DIST rust-1.73.0-powerpc64le-unknown-linux-gnu.tar.xz 187628140 BLAKE2B 1ab716a7d2e536ca3447fc0aa2751d774259ea2e39ee3cc150bfe11967e57bd85b484cf050a39cba717a0552dabe6d1aa79ca7dc24abe4b43d4802fb9cc1bc85 SHA512 d6566978f47067b84715ef39756721ced5f5430d5c92f51b673db39d1e1666a8dd933e998d4fe3ccbc36ec47c62b4fe7e335c4e3b830d27571dcf9e534446d0d +DIST rust-1.73.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6b3a29cf580d750a17436036d6bdb2457cafde123c289205aa239457afa4de10b4b97c9f3ccc23cd296a1a388802ac4f696c71e45a2ff7c97d15d63f2a04cba3 SHA512 5840b7986e9472a4907ae01eee0c4a40664ce1a29ff159557766bcf50da773d246a74ffed2bc5bc735d255514e0daba55d10bdbf7d8d2c3a6aeebd704f3009b3 +DIST rust-1.73.0-riscv64gc-unknown-linux-gnu.tar.xz 182202208 BLAKE2B 836d89e6ce276d100edce8016f5a466b99e8aff2646be7e58dea2f38678e4fdb9b93fff1126573a112e19cdb32ee5290fa58df0e5cbb1c309e65927ae1439b52 SHA512 c49031996ecde5dfda4b8bf3869b37ecb51c89e3fb8f69d3d43d865bf2ed6dfa928f0239460f0f3c7b7168eedee9b5a957d956f39ad42fc7276fe64a649ee501 +DIST rust-1.73.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 119d6cf2b0b4f8950d51aac6eb865619412e513c6c87f31702572cb2120a20cb23133a763036cbac0a9977a20dccfb58a8b034d19d13892ffbde05c01970ec92 SHA512 578c2576f66d0ad344549a94cf83f80551dbec7ecf2ff8616d81cd1eb3a7154b89701a05caf6a21649361ccdd1abfd37b33de935e91dba02dd914945de3930b5 +DIST rust-1.73.0-s390x-unknown-linux-gnu.tar.xz 201224624 BLAKE2B 5f9f28c5f511a3bd119233e4a2b882119b18a42a8c235bafc57f35e365496fe9d6d88c6278e014345f76a98a235ecec31335178a6b047e5b2188d391ba465e70 SHA512 e946192961623be1e3ab4b3e2c86f16f9fd716ee3ccf88137e6ed7ca92b9e8376552a9b46b48c127f6be76a1fc7b240d9b8db568390fd7d81605634ebb431ea4 +DIST rust-1.73.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d05fc43c55e47b3a32e8be8f97b072961e920ed09d368968d1121dfaa0dc36e11ca61a0b03df2f708d0eff31a80367b5d465434b851da4c8ff00ce9ecd577bce SHA512 5950cfd08f49bfd0f1277e2f07e333e7188d65d6a61d738dbe586bde8f3647862ef6d6ca5f52d74f357ae3997f1554a2c7cd0399392cde7ec32b1f2aaf8a4c6b +DIST rust-1.73.0-x86_64-unknown-linux-gnu.tar.xz 161588916 BLAKE2B 10c1c57641e2ae076c55826985d8ef43034a3e4b6fd15d109f949e8bc655dfb16d45ce86482992cc2aa3f4000f3432b8be17019f9f5d29a92fb42c37cd7df72e SHA512 b70886b5ecac41a7e6ea85d1b2d1aa557a0395d3f8abe4b8d1ad91f3b32ac9ae73bebfd7a9c48ebef4141be041cf5bdfab8bdb78e1b4969afb439daca203d5a3 +DIST rust-1.73.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 22e68ec4e6bfa49c15344675abd20ef9449d928943dafc64bfa1cf78dd36ccbce4802af8d4adb84762194dabc512efa74655a93785c127e6942ebeca8f6e3303 SHA512 56e53a1047a23a7f37250a785de2422ee2a3a72fdedb9a02530b3cc1cd978370cbbfc0e67d75f3d537f48c6c78f91d3de949ac2c9392a79404609b169cedaa40 +DIST rust-1.73.0-x86_64-unknown-linux-musl.tar.xz 236190528 BLAKE2B 062b54b31742bc846bdff63fb38be3a3a1f6d2f061da26cee6a0b089feee995fe3dbea536675495ed75d47d657c3d4bf04e36f6752f59f8308f7eb9a397d6e38 SHA512 abd01e0c98a8aa447d01613e24302ca81a8cce7d41179ed60834a39ed1942de0459add3c498a63f94bb1ee8662a2750b375b49894e3108da45f47d3a643cfdba +DIST rust-1.73.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 9822879d0f14eb5387a623d111ed7a3b1ff038522c071608bd254c4b3479da8a1e9ed78c69c267c1156c45a9cbb2f7db00d123b85f28021a743d392d1cb65c75 SHA512 ff65fd3ca47afeb10f7434d8d4f91b6649739167639c3eadf178aa1339553c5316bd0bb393cd53fcce17c126dcf8db1f1dca6e87044b14762bb20ed8f5a500b7 +DIST rust-1.74.0-aarch64-unknown-linux-gnu.tar.xz 216169516 BLAKE2B 830b97f710a3249c4d1df6b37dc9c429cd8d8c8edb0a77de8d04460bc2132ababa6777dc92b82b8a3b3839256f2dc522128d31a81c8b5ae9820a483368292cc2 SHA512 40a98f9238af1a60a0506e3e1b88e1d61ce68ed6380c78c77b638b1fccbc8cd0e39d7c042a70dcde454a3fe95b6c49950820f728b847dda218fdd91fef7066de +DIST rust-1.74.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6b15fd93514659cc64759b7c7c3e26781b87f58022d91bbeacc64906c681ed37b825031e9fd78051671b35c5abbf4d76c11e320742d5b482f36e98ed9d8691e7 SHA512 2480367abacb766e015c3287568cc2ea2f186b48cafe709595641e40471b4da1e29b5e41d2a3b5eb7d9f9329725e46e4110800952e554e84212e3a1ad36f06c5 +DIST rust-1.74.0-aarch64-unknown-linux-musl.tar.xz 196821888 BLAKE2B aa8444b243a670ce5130a0436bbe100b75912a03bf8b3f99f5dbef9b3459fbb3b6e0d0fae6e9d9ec368e95b20f563a8821ed7698cf699b169887dbc63a7a71f4 SHA512 22255c52052977b272dc740853359c15e2764164b38afd473830dd69830d4897d60dc037f0e6190df8a31ee22f80d69f60d7dad968a41b91f23368328e11eef5 +DIST rust-1.74.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B f3ab9235640f5314de7a01564fa60563f123d7d4d8755b4263a687fb22b4d874cbaaf9184436e62c8e65d23c64685d33333f3585dcc518fa90229d1a045186e8 SHA512 2ba35243e3d626347a442bb9b798e698e654d65d81d3d2391b791f33636a74e51b2c5f6270d37abe641f6e243dc70169e990e9fe1ed0392936f272b65216bd08 +DIST rust-1.74.0-arm-unknown-linux-gnueabi.tar.xz 180475660 BLAKE2B 33ac40eec4641d71ed03226dcc0cef62fb4b108835ca8532110237c41c5c1eaf5f2a78ae3b97fd69043898439816702df6d1ce8bbfea36622736b62db1de7d7c SHA512 4f90237267516870a9d236add52b70c4e3ffe2b12ce0280faea4f740aa81b0ab8fdbb0e6e58425c8e33a0795a4bd18cf766d222b9d6f8ec9e972d4ce10ac0640 +DIST rust-1.74.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B cb1c623548cd2dad04ba2130883fe6ca70466ad8e8d10a0bcbe42ecbf7f3e10c5f62eeccb5300d133458e26c9b340ea9f5aeb3b3bd35420e39ca4c2a751946d9 SHA512 eccee9e6ec905d4b30b620236bb2c3648f4c5e00518c2e1b0ad5d009865d56abfc866f1a100acc8c7ef559590052cd858cd247bd091d31821b27bfef00b9487f +DIST rust-1.74.0-arm-unknown-linux-gnueabihf.tar.xz 180651920 BLAKE2B 34be0e8e7621bae3a7ae0c0c5fb94df55b42035d4a6219d773e109cf8e17082c81e0b8e831421f702bf269e095b0fd6bb798a8ccd78f12b099e5cfa638458572 SHA512 c6f7f9aa592985206a3af47f8d61e094e0fe3c714deb6c569a8a0bef8f5dd897f8f27ab33dd184eb28a9267c877f21527dd421baa312bbdf08994cb69aeb6ba0 +DIST rust-1.74.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 81703b2035f44dd3272cce97671205d6f838f1ef09dc22e25316567119da12ecae6c38d5cd54a82f70253a65357c60cac3d2c6c91ceb90614baedb5fb3707306 SHA512 aa7d6320d868f4b05274a964570f6d1e5bb4b0f72da0875d43356ff2a48a4d1a2605dce1097e88fdb3cae502c05373540799175bf205676088654a0288718995 +DIST rust-1.74.0-armv7-unknown-linux-gnueabihf.tar.xz 184856340 BLAKE2B 5002309dbc31916ff4984637c646136c0be0ff682d105f579f3e66dc3aac51feffd9fe70e1e4020bf554155bab88fceafd0a223ff6f2d8d3c885233b4592303e SHA512 8beb260a0f07b11b91a21ff7a6bc863d412006a4b7a582c769ac6991ef8d93ccbdf3b3e9921ba16fd2d3c4354aec706298fce182c910c26e4fcc61575e6f6213 +DIST rust-1.74.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 6945a1ad0917f5cca07e1d8e292644054a613ccbc7d6d8d8b4bbe1d0e580bd1e7e40c62383fd9ec3a465d9af1db02f28eacb98bfcd5bd9f4c4431f74824f1a7e SHA512 c3652f8a7336e5ba4c45a31a089d99fd9e36bf8f7b593a3bcbb728a24d3d76f81ac908b0ae97905b27ec0697364ce01ef6adcc1853756da300989b4ab4bc6d15 +DIST rust-1.74.0-i686-unknown-linux-gnu.tar.xz 211708688 BLAKE2B ef83549b86e4da0c8ea61d14dc302dd10459798fccabaafaec7e8f24ff2a4695e4378706c48092b8afd3dffac7d995e53100bf0d5f3caf73dcdfda764cd3e656 SHA512 b97e1ee46d8ea20af6a61ee933c66b5314f55c3c3879bd8101943a769dda3ded7c91899fb7eb26ecdbe1f01f35e9784398cb85d494b03bf0673d2c1c8ed27f9a +DIST rust-1.74.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9a0916d77499972812edda89c04563d41e899a68f73fc8867d878e938ef6b37057e97e7209b033d6624674f472b9e8441fd89bc0a82a9ec17c85381b07809367 SHA512 562931b7a78a92ae6f07e502fb044c1ed45ffca94690cf8316c55c85ed37ce426ec72b526a10c4da8bbe947f1b253e618338028ea064eab8bc446ffb291b5aa6 +DIST rust-1.74.0-loongarch64-unknown-linux-gnu.tar.xz 161629420 BLAKE2B da3b11b1c8ce2d3e1f30885279e4524f795bb8680f0f076fc154c7ffcf067d5933f2a89c2c5dc142859adebeda9eebd9559193a5829a114bc670262872069fa1 SHA512 a3d75491371d74d14d5ea3e1578040b1baf67166c899e0c590599d1a5efe5d6fa11c6efa9f2525ef2011650cf62d7e1384f71f9bd33357296915a9564b2f0c3a +DIST rust-1.74.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 58d483bd3f21344f3a2da5ee4a88b2a536baab0503d0fa52f7c97ac7f6cee308401246cedc5b2c38d7d6ecf57290e2e0f48f8a84c72cfd5aca7e2d2310723963 SHA512 28fc0773a95b0822b262dbd48f37b637ec95cfe7694b2b2c9d5b18e0492c802d29dbb0013382fadf2037250faf9b3019cd38882102f864136be1e64623c89882 +DIST rust-1.74.0-powerpc-unknown-linux-gnu.tar.xz 174911076 BLAKE2B 3539adb3fdcdaf6163a58aeaa2d5f1a7ca5e13119d19a559b328d2e994ea5c0147ffc410391c6a7d2714f814b4254d847791a3737596e4fdc97defc7e3838000 SHA512 95b76ca4f0667ed63e76b99ef7b3667d88e13592de941a6cdb85e970ac766667c2d1f7161e20e1d8d63d5968fd5c82f2c0bce5d84f11d59b438b0ef16679faf6 +DIST rust-1.74.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 58262a22b6a589bebf51a494e4bf0217b58cdf214c2eb0bbfa9d9fea20f0a21ab0ce76271772c452fc2d5a0b049bf09c84b342eced0995b9456e68747aaf4c63 SHA512 3c694d9ec22c03d07cbd64dde1bf5f532beafdf3d974e77e5fc09adc1484bb1572625d62fd1e0d13613c4b63c2efd82f58ec9e4a2a8ff87b2527b2da7896e703 +DIST rust-1.74.0-powerpc64-unknown-linux-gnu.tar.xz 176265620 BLAKE2B 2885cb229d612e702e47e7fcbb18a60c9b5aefaacbf14ae146b3078b53e3e64d05273268d4e2e0c61dac1f7f1a5238f82c0ab7e0a05aca25478e661e6f5c7600 SHA512 ce6c5eab3de7ce6800137aa02c19a9c1513738af140c9cb1cf1c89f33f71de50d022a6af92eaadb26898422c7beebb6d6870f2d766e3eb4e363afcffe75a2627 +DIST rust-1.74.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e3c29be027c55bd51b1520c9d573b2e3c6b8c094568d57b940db9b895532405717676cfbbb7486b78fed6d3c79453a760132ffe2b2b86bfbf67a7872809cc5ff SHA512 baed4414207068429bf5c4bf445650936bd1ace3bde19f8fdede269a4204e37964c6b172d2d347fa93e472128fbe7ae5696be82d5ef873aa6a3c588a1621f1e2 +DIST rust-1.74.0-powerpc64le-unknown-linux-gnu.tar.xz 187255560 BLAKE2B 29fd06bd7a3f0229b0c1513045932a7786ce10501469f46ffaa9d747d7badb63c69a0d1f13ece3b09ee811b492e1214ad4bf2b875269caf829e5a6eea449f0f1 SHA512 96a18b9938f8e7c6772a7215d866f6bbbb28d379ebfe4f0fe0e32fcb4fdc5f3b7441edbdce3b04fa30ef91f8d5c2a2c1fe75ad0cce1ce1f2ed75cbbeceb1e64e +DIST rust-1.74.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 0cd802412a19cb27510c91831f953ece98b0ac65c8ad6f91e1b136694403b71b1fd29aa8eccf45384eb59ed72e7a6e4218226826e243d1bd232444c277f8f0e2 SHA512 a73c22b8b0a319c3b0997e463f4cafbae8ce3fd5e66d42db07aa60b6e366a92afe640ac36b0a941879df3510d9341b3cb3c895e2c864c0ebd4b2bab7c5426dd9 +DIST rust-1.74.0-riscv64gc-unknown-linux-gnu.tar.xz 181305504 BLAKE2B 708e30456c32d7fd6d8d07e18bfcc73d339e5c6f5ea92fb3958b538c8a3bc4b79d02c79e2de9a5e2480ec7ae6cab6a36d345cb183a811d738aef0536fd143701 SHA512 050ac10adbed179c646c6348fa43a1bcfa18084de444032d8c064b5f1a7b059aeadbf9e06a75079b2dd9170e1cb078205c2a675e0c39fa694c813f2da2d616dd +DIST rust-1.74.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a3be1f47f23d62f46b6c2b1dae6d07243c90690f3d097b24b4f7b2a22471d39160593e2703b5baf6a3c701f167d8941241511bca5c78ba79a25da37387ea1cf0 SHA512 a9c4c3e22bafb1c53c71d9836873e84c6a1b3adffeb361394d584b829b5239df39cfacfbddb96c93f4ecf48c4ea98421da3c46245f32659aed49961198db18de +DIST rust-1.74.0-s390x-unknown-linux-gnu.tar.xz 201169576 BLAKE2B c8d5b9d621fe3a1f3ffe28a09cc0660636d33c6aba5463a99570d4061d736847b95cbb7bb3cd0c2d6a007aa8c4b08364867a5b6d4d12b7f34887327ecfdf041a SHA512 96c00ceb9bea19637d92151ff8ac289e0bc62f05e08a4ebe0221d08271a4e80e0fd628ef2c59240796dd289b6d16efa6d6191aafad1adb11f2d8fff92df3084d +DIST rust-1.74.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 779fef510b53e24a6b20d868a3dcb349ececfb35f5e7059ccb0ef125d24361a8732e8459051a8b1e4da2ad1c6de342f15f857d4973ac4a1b9c19236cb66c4040 SHA512 bd266f3b6c09c73d400541a436890c85fd7d7b82241ed9952ab41481a1f19df8b477228a54ea4c215f0313aa7515d6b659e8ebc78f6186ac2b9fb2ec04cfa902 +DIST rust-1.74.0-x86_64-unknown-linux-gnu.tar.xz 155920616 BLAKE2B 6213da724e5052fd72aa35816aeded0136c873bdac5536b8d6efd8e830d1db6b909313f58462b5ebeeab148ded4d29a36f2dd5439ac6c1d1c68f73d137928376 SHA512 27dace338e78e437d5b8214778f75e79dec604ca54023ac6046c6761ad02db4790f3df902589a934ef2ec7e162ae201f9a5f6b0bb2e688d5c1eca90462cd75b1 +DIST rust-1.74.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9d81f9c2861963a34b0bf9bb15a584db502d388b15f73ce98f78cae6bea0357403d9bd0e6f8ea427a9f4db5946ba7dbb4242e7fb4400b561b7431235f0dbe2d5 SHA512 e1e5e3850715379d30c557791a4eeba2bea090ac85e09a982579a703b2582eddfbc060e21420f418cb492e8d4abe87d5bd81b5acf6ee8bd17b80bb6e0f65b721 +DIST rust-1.74.0-x86_64-unknown-linux-musl.tar.xz 235589268 BLAKE2B d695695ebbb3bf0dea28b9d337f82d5828e6ee70cf7220c849a6008b32f2b590ff57ee35efd58d9a38cd17e0f77ac1187765e8fd6470e0ee2c6cf75f3e3f1489 SHA512 3a8d4cb87d1295b07f0ed48f6e01e69801be3c93744948ef0145217b0cb17581c11c618a07b72edb0945c2ffbe85c59ec1cfd99ef6a60c2e96486f9d5d04d38a +DIST rust-1.74.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 0ba1390f67b88fc694df26df22c99ae40f56ccdffb479d9228a17a153de965f8c31dfb4d2c65dad4819d42a0b66b96ff9d3e2c404848dd91141220fdce40710f SHA512 efc779bd0e6fb41297a67efdf731abe3857dace889be284d8ac1e6c239a35749185ad5ac3b82c3b2e55edab3f0e51754c8e53e07d207cf8b4b68ede20cdb8591 +DIST rust-1.75.0-aarch64-unknown-linux-gnu.tar.xz 215543948 BLAKE2B 6d5de2260e4720275bc8c0ce23865840886e27a3cc539ff90c7b8c3a9c04368f2c2a2955dd7c3fe2fe5471492a7ecdf4c2e5a749789a059ad8178a0d70dc32f1 SHA512 7ccd4d605c97cc5a7dfc443ecaee23b4d7c58b0e9673ebd0f9174a4a123639213eb85ed25f19479ea6a818859190e673e0479ee80235a7e35a2d971a636872be +DIST rust-1.75.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ee4d716d905f654932ef70d65c3e83c573d9076c447b4e5831d1dd657be407621890d7a9858fee1ca8ab869420edd267f71d73948abc5861315ed4dc0880d18c SHA512 007e9b45b3b3957a8da7d01c45c5cc7d2d49942dac39067038e74b414ff32e810fd902b8dc7f7563b18c565c782b4e701f23f6d1cea397959241d3cdfd6421fd +DIST rust-1.75.0-aarch64-unknown-linux-musl.tar.xz 195703332 BLAKE2B a662f9402ede618e78c9899c9b01c2138b927286c0269e847ff4fd389a07029eaa4dd5242576457c8ed67b6b46eef26396d079d1dc2749884cb05334676435b9 SHA512 eceececb90e3c2fb19866e58619237b416777399c6212362bc09f784138df83edd9160dd29906ed928a50e0359b2d9471868b594d765d35c1c7d8d22760c4f1e +DIST rust-1.75.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B c37dd733fdd13617f6c4be580631dc78e40684c4f47d1e90f575e8aa1c122b36c1fd7182773944cf8cd873c84299a484c9f50a48ff70c7cf54e4b5becb6355cf SHA512 5c35f04cc4a58cd29c1d6e9a5616937492f584fca29db099ed1d59442e76700b83583b1d41e7ce4815187c7092af2eb6f307a959e8b7a647818c9ebe84cf4c8a +DIST rust-1.75.0-arm-unknown-linux-gnueabi.tar.xz 179835780 BLAKE2B c532fc00e99c6428947e5335efe73fb979e66fd8d52f60e9cac7040d253ef15543171f74c4841ad740d2d334c0b2305f59925e42420ea0658307ad434186a715 SHA512 9d2b398cf97ccf8b70a82c1d03322c1e432f9bd4885d8a42ec26d0d6d6095b783630d83b8a9287c77d8d57b7bc648410273460ed6339e9d254d1bcb81191a578 +DIST rust-1.75.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 5ab700ba8898ab1211b20bf1d1a89bf3e4223eccad6b0e816b113254f7d44f23a03cb7fa9fe68386b0b18ca57d71f39b28b4328f072037058c301526d760b063 SHA512 12d5791f0c1d092b52862786ba6b80031607ed819568734d904e553bc24677b583c64e93cc0cd05fad2eddc7357b21c5d15ef68d720b0ab037c7787f2a47eea0 +DIST rust-1.75.0-arm-unknown-linux-gnueabihf.tar.xz 179907476 BLAKE2B 6ed49db0214fd8b35e4d184337b38dc8393f8baf2958bb62308125e6f8e2126f0aa19c8d44fed3475b7818b001447d69267504ab3c96136e257c37db5d2c2285 SHA512 61d555d9c33c8e1647338fdfe24fdfbb42e194ce4995939a58bda6c46f4b857a058e344e714b88435a7bdcc5ee4a086bbaa9c670bc01de45249ca8376ec47c80 +DIST rust-1.75.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 9d5ae3c83985aafdfd1dda6c1db4bf849b4ebaf91ca71ac7249cc8c89de2b3135e752c21850b20c45c5570bb188db1f8513e1df072ebbdd700c37b3ef5f22051 SHA512 6481cfbf21e108d440c8836963d752496eebdf6018b7439459ea079ca82fa05bfc0bd423594e3537c7b522dce05546e59c125eb0cb24ef4db13ed36413c2c1e3 +DIST rust-1.75.0-armv7-unknown-linux-gnueabihf.tar.xz 184210428 BLAKE2B ef329f05d143590d91cba77e7b9a90a977c316e9ae2d8593e7f0247a5db00ca0115c6d468da5394b36e6ce64b2716a51827f39fdc4a34dc16c9220bf5690f042 SHA512 77bfae1f170cd4b2e85a6cc0e02c6f9d621f386a4c0709a2e99c4383479f8979e067d0e92ee7d267150bbf36bc7134bc053afdff7dc0ad66f289aa182755b1d6 +DIST rust-1.75.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B d0a3ebb883641272211478bec1a8089929be0107b05b0f499d71f96515941f7d1e18870c8685f77ef2375251e6f1484f675bd04d5fc0d544854f15ba6402f0e6 SHA512 79e631dd0c44905732ee312486a7c8233440120abeaf40172172e9d5ef0c9687469bac2693ccc2aeb63030590167d88e0fb7d912663dbef655e54ee4cbe9a323 +DIST rust-1.75.0-i686-unknown-linux-gnu.tar.xz 209938900 BLAKE2B 0c9afda24a93f3f35dd779c08d65d6c2366c916a8a3ce6633cd5502bcdbbba537743d95b76daa29d0b4ed3a822915cd5516e864b911bf354e7436745d5a17021 SHA512 242775555d7d38d9aed83018f0d0f8f5f03347c07ee92751de445826c08bc66c24f8601d83eb79729d001d63e81a5b1e27dbb5fac724d80d49e6430685052ba5 +DIST rust-1.75.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9b7d778b75c2d0a6f43f48345cb4735a9d00d457a1b4d868f777eb16db040daf246459620ec478b0632ee0428e6215e5c39d819608ca800dd065b6e95b13a77d SHA512 f307db41c5e380dd023cfa3e91eda98dd1af8004d062fcaa759c4913464ee01abcf168f19a9fdbdda6dec7f718083f4765eb4296614de4c1fb6fa06144116297 +DIST rust-1.75.0-loongarch64-unknown-linux-gnu.tar.xz 160649540 BLAKE2B c96a90d28e6b71e2e5a5bea8f591e6b472f63bbcc59f181800e87d4400e647c8a18110ec50c7d6d10c8f460589386e1fbde6273ccbccea9373813c80f6612a2b SHA512 04b601e96e1fa6a7bc00c7d8463e7ad1fc4fb1bb46383e797189ecb972e23535ff864e5379c56fac400dcaf4c42923b8a5c4fd9aa08adb52bc1db8341f5254f1 +DIST rust-1.75.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9da9a6da9b631e72484a3360d692860e98dc77b74e55cf24d6a6a271e9eaa4787ea2f30c38dba483b18890500704319c1dd34b185adf2cf6aee6730bda8d239f SHA512 d6e20fca261aa2c81c019fffe46c7708b58146f9488041419b84a381761a2cd27606d78fd0f6b5e5e79945e1dd76776d54c335ddb453172deab8bac2c3fdf904 +DIST rust-1.75.0-powerpc-unknown-linux-gnu.tar.xz 174918688 BLAKE2B ff7c03e23f8d21dd8f4e0ebaa958fb97ac7779459ad318304070da0c1d98d832200d20d9331f758a33d6131da387af830392e8b34c33c4d220ae49bc93d7c060 SHA512 7a836a7d2ba883388025693044e59af34b2c41a4ffe93def5ed161bf012fbcba7da81cb521217da142852da05503b18df9a965537ba6ba33ef92f52cada8b7d6 +DIST rust-1.75.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B aa30bfeea014f600b1e3c387476a28af619bd8d63f5b6f10801cc15ee42deca5ab34d3470ec4f07fdfe2b8548f580ff6a63a89c74e1c53c7ef8cd73ddfb69272 SHA512 7efb2c4540a4be9f712698e7a9a905462b2fec70ddd65b9a6ffd28119eb595514366451932c888abe1ffbf93aa8b05c33bb0560c47b478f5122bc87be1c3bd96 +DIST rust-1.75.0-powerpc64-unknown-linux-gnu.tar.xz 174640484 BLAKE2B 768ae78a073b1a7614594ec1f6c381d7a4a9b4be14e548cd5031ea011600755c1934c442795e05f95a720a38c155cd18be188cf7e4b6417d924edc9c2a9076aa SHA512 f83ee23aa8eb7a511984b096876cce60415943d729c77ef4b4cdf0b0f9f8088082058d10881d5866d81a0e94c8515b3966de5a41dc8916d75392650715a844c0 +DIST rust-1.75.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2bcdf4419fbf491fedcb32a7b54bf2ceb2aaffe0319d9e15f7eb07997646e11283535c5b2024f2785398bbdcaf586aee0ada7128a47b9b8fbd8ffa9e7d0607b5 SHA512 89a0eb5762d49351cfbadcbe098243095a62d41381ea48ebe8a3bf322998c6a46a59ea30da29c03291738fb3d04cafb3c1f57ad1e9ffedd68b4bc1516fdef66f +DIST rust-1.75.0-powerpc64le-unknown-linux-gnu.tar.xz 186507032 BLAKE2B 49bfbc50e087874b844a7292fefabc0df5217751e2391c44827baf3e83bc0e6a6ce9b392cca58c5b8df6f7f8503110609667fcd9b34e84122016fd0d8df29058 SHA512 536210c00f9cf4bcdcd5bac308954afa4a1e7145844914a5b614745a9023c04273a58ba4ef83214663d69a0a6fc941cd4011349d54e55d84bc090628a7624874 +DIST rust-1.75.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b7a48197f9159a6c5d46306808d4ebd17b492669745a941b5db380d76d5ca78095f4bf396804caf7b55bdf47d79b5e88fa2f74aad999306f586e62851d7de029 SHA512 27d86a35df7985a626b64ae7ec05b803a7ef5feefad476c3eddc2d89fad44fe4e520ab29bb27cac8be0a0f3aff7da85e45ae8fef15f2afceeed4962933869e0d +DIST rust-1.75.0-riscv64gc-unknown-linux-gnu.tar.xz 179877936 BLAKE2B 210b84fe6b0729f52c2dde492b4408f33a7661ea9a40daeb1b2b312788f2c4dc80ce54ca72f08098e8575215e7fa7500694142c0448460bf8a82b2761c236290 SHA512 7cc11f07552cc50e78a2e90c0d0da1a62fb0547f56aa6facac4791ef81e7d62a2d66f3cd079cda91e0db1564c2931074ae40c8c142dc9cede1f9c374379fe49c +DIST rust-1.75.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 8230c219c9cc22c93fc25f023729e87bf5e725f0613cc0a1a205a671c24beecc48997f824e128b56e4242369328666e355fb5e630cefa6339b39ddab61ca273f SHA512 75820f06aea67b3731777d5b7a0cb907a829b65dcabb4ce2fd55bff52837f6929239be6f8c6b303b86a352ecab16d38afde3ef9683cf7d5c4b4046231c9988c0 +DIST rust-1.75.0-s390x-unknown-linux-gnu.tar.xz 199359500 BLAKE2B fffc6c690c4ad8a9985ce8d2b3e6518787b474e47cf1d5a634f38b5d9d4017ac8f5f69206a9229298dd504d2ed2648dacd2d09a8512c008678033608231c2d7c SHA512 bae263c19a59347705959bf2d285420d2074836adcb92a74d2ec922be2ce2f8aff6f758509701a2136473301654bf528b7c1c2522fd7388f5669d1ed94324c50 +DIST rust-1.75.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 74cca56622367225f8326b60540c3738adb2ab12a5e320bc85b448e1cd2111983a0816188dd8767d2f20db0f9120d5d1bcc5393548f1a18c828a55f99e4c50e6 SHA512 00e0181fbf6ea1ba2035b368f3ea143f270f8a3c5e41e441593cf3cf072c31b3874146de8c2c51e3eef5c8f0ce8594132a39516d3f614d8d5f0863b546dfb746 +DIST rust-1.75.0-x86_64-unknown-linux-gnu.tar.xz 156249584 BLAKE2B e6ac90854f589c2fb15144bb4db07a9b05b72196febd07c9de223c74c05c2637c832505f1135faceed14fe8c8bcad0a5205005540faa2bdf0f42949d934107c5 SHA512 86d1a5686f826c8f43f876c4cef42e9483785a37b1aaead73dc64a1ff64e7a025a6771d2e642771c6c847d717c25c6bd2560a2b8b59516a55dece589580b2534 +DIST rust-1.75.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6614cb3ef782c917e8f7fdc990c5b82e8fcffa71e075f10f9726f405ff566fd963bec64cde4dd7252d9d78e09a184b8ba22d15cc87662ad987cdd37c881d8288 SHA512 bfaeef4cd7643879991955fd33f4cdc4c34afb1202cb77c0736434fb735bd215d18d1a11c25f04a7f2514640858a36832e5805a5f85e92d8b7076aa18607ffc3 +DIST rust-1.75.0-x86_64-unknown-linux-musl.tar.xz 234151836 BLAKE2B 9461afbdf26dea19e118b35ea7ef1ee60c22f601501ae6a08950658598a74a6b3179cbdfd9dc4748a0c2485af721b371e5fb523f27e7d7d702f94b532a70437f SHA512 7d650a29c5d14023a3d7d606b7bac4be6ef7988a82525f02d7af9cf3895bb88284442b8042d27be69689f4bddaa5c5370ef7609d18849986860eafcdf89d2d69 +DIST rust-1.75.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B c222d0989518602c0ecde9d21dbca97e9e60d81083804d1d8b2c6bffc8114af78570fd384eb58e5dba1bf249b99300e7f3f4067c1a66c0cd9fac60443f56f751 SHA512 6f78913e34402cedb37f4a54491c65a8bfe79e535e4e40516f2381bc27783cc7655e9252e7701813578c8ffcaf6b301e61ad32917a475d4388fa472733b21b12 +DIST rust-1.76.0-aarch64-unknown-linux-gnu.tar.xz 217392212 BLAKE2B aa587d69b5acc389a8d1431875f10f6261bbedb259a9009092e663a345fb0ac0cf3ad3459ca549a496853b8d760c7fc56b797ee269bcd15d54bc735cd1100fbf SHA512 ad95566ca7597ef64a03f614cc20b9c8d9b2fe67f33141b817973fa160c2be978511509fee79bdbfc74c50076a607e8543ad5bb4b56723704df27b5573b8d606 +DIST rust-1.76.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 86834b999cb0ad9de02a32a79f801d28268c986c830ad3f16274cd4c404a4305267c90b677f7a8637f2de08c766ad3555945f77da181906358e3d51b35e258b1 SHA512 79c1b258267d6feaecba18648a7eb620a570c99fb75e422d0a5b946a66f3a5bf6d2b41dca89b4ae79feed704d498674f36de368e4b228b1e38e3499ac8cd4f21 +DIST rust-1.76.0-aarch64-unknown-linux-musl.tar.xz 197852572 BLAKE2B 93985909e049957f80d4a14842c85dd14e5eec6d74e4e439479f353b44b123947c782856de86555262829d755a344ad01a94c41e8852818e727fba74620e1d68 SHA512 1f36245932d3b9bab0b99604085d886d9fd2e575e896e1c28b1771ae916466c060f4d70486e47200d58947147eb5571b922e175b1a450a36388c3c95e6537655 +DIST rust-1.76.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 50326fb881308300aa01f3783ec6856b7ab9ef80e986cc4e64fc5d6d0bcd246add9330ee5459a3ab5c0bd417d75c2b9486bdbdc19edf5a899dfd9e1ecf31028e SHA512 0e775d73bee5cfc70035db1d0fc4506d022d593cf847e01c3f09ddc48a02c4eb24eabd42391c3241cc05ca49b15e38eea0f56786a4f800df724753ee7c557ab4 +DIST rust-1.76.0-arm-unknown-linux-gnueabi.tar.xz 181085440 BLAKE2B 024b82d285208635dda1c6dd66f634d1b921657d3921c402b7adeb7ac9b495628c31b248ed480d4e52e55293815a686f9ee52a84c2407763de5b961962ca9cc4 SHA512 c6840b3368bed511976c32dd3b22a8d1341c002843958a8cc8666c4f19547eb71d8a90946c1c075cf8af50187c1f14fcad2df488d186941d00cfd6b638b27dde +DIST rust-1.76.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 71f2d3a9de1343eb96a75a7eec3d8d4ca9a02e7ed01a1cd2f4f352855dc6d58cae5ffbd70944d7d1e0c7559c74f8d8a25f3c1c3a14c2f00e5797d0f142b25a12 SHA512 b3dcd4b3e2fb5e5039b7fe654421f7a2f72ec5ebfa841589be715bf0a8ff4ff0a3c46a25d0978b4206678a2f2410c5ca69146f6e3eaa4b02a6231589bb099ed7 +DIST rust-1.76.0-arm-unknown-linux-gnueabihf.tar.xz 181168340 BLAKE2B 8d48ed7c79f87aeb91676c3f90877fbd396341130276e27adf42a0a0e5d3f7ded34a271cca34f1c0fa7f37d5666ba3f2f16eeccd91aa37859adc34077dd2a000 SHA512 6beba28be79a563eab4567ca33dbcaa7cba5f4389fa480ef4e16e528fcdc1ed6a2c7ccce1ee527afbaaa43545bfd80fa47ccd3ca2ea4c38ca2b397bdbee47a3a +DIST rust-1.76.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 534e5f05848e5f6c05f2de69e0c974f5e4860c9ab4501491a651f5d2200aff69c9ece29010aa732d0eac3173b1f148afc3096b5f05146f7be7df14e5d9ecc44f SHA512 fba15a41ffc9202ae27a6c2884bac7367219fc5b1892287a599a1c8d2251bbe763df07da4b9719d73bb6d93fbac3dd1b8c4d8af75acb942200c9d7b1050be009 +DIST rust-1.76.0-armv7-unknown-linux-gnueabihf.tar.xz 184387332 BLAKE2B 7b9b03332f19859d43629d4e65815619fab1845c129a254643f164c025c5d574e71f6001899deec470e93c97fa6ac8c9d71cde5320b6f4cd822c2ab113e4b827 SHA512 3fbb7300e4dbe855207671ad309b71cdbad9cdc41b1c8144734f9de85c904918b137a2fe7284e9046f00526c7fce8b68dcbb40ab8d6543ef31ca0bbbfb396431 +DIST rust-1.76.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 050c4eead78d8161d46acd4ae47b69612706d8053bdfb5e4cfc0fe20ccbf4544643c1850f14cf93f7d17602849770857551b64c7f8f8db45594b7dbe267ecb41 SHA512 32e72430c4c9a5970994bcc6034d3be1a2a915adc6aa45a0c1cba403f6c44206af3e024afc42fe39a8501322fe46deea9921c9760f8e1f65422960baa88abafb +DIST rust-1.76.0-i686-unknown-linux-gnu.tar.xz 211679020 BLAKE2B 06c9e52a1b6c802be3c4b0cb424dcf243f08fd5345e4b3977cca82093839cec885f6f491179e9e1f8e64c971bd7bfdbb6c551e463874b44c8b89ea649e8c9f40 SHA512 64605e0c981df2c805ba8cb31a89fabd00332faeea6d04ac57cb4898b7cedc66e4043ca3eeca799a204ffb93ecfa770150f09b99da3a7dc913d4e97331554e8f +DIST rust-1.76.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 72d87215c5ddf03ed0cab99adb97b6f15fa8048fca68b44bdb77cd0df09cb1784cecb80f6618ad43d1b6f41a5848ddc84126ad576ff1ff08a3928cec9811a4d2 SHA512 a6d52e452a7afabb329b75155db9da91d51f809e913b19cde1c51c4d0f79831e962e698cf8e86079649e31a662d13743da23b13d16df6530427eec3e4269be7a +DIST rust-1.76.0-loongarch64-unknown-linux-gnu.tar.xz 162940496 BLAKE2B 4c3b66199339262ea93de6785980795e493ce4e7de9d7ddf3e7c9fe38ad404f980abf408e979780905c149bb3de65d26cdc654f8b3ad0823a3d5067809fc4944 SHA512 64fac030d7edf9677757b883d1664b7e06ab9d5007d87a78d449acac359d7d6ba694bf4a6635c8bca51f274f842dad0612377aef655bb430f6290459343aa6e2 +DIST rust-1.76.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f52e951657308df5a944d35e2f9c19278f6f250474c070593f3b2072f372b8f6c32d379d144c8ae5a3ee31f7de21c00ec1da097f2c8c9a54759d9440ec5eb822 SHA512 d5ed37fd844715daa5d9901b388cbf39854fce3408c1d572f18e83d6207a20345e5e2c2b49b9c1523097245c73e1a448df8ecef2ae5b344e57bbe646b1266af6 +DIST rust-1.76.0-powerpc-unknown-linux-gnu.tar.xz 176795548 BLAKE2B 77e102e4d3821557895f3e24059b65847dc46ce3b81ce73f15063e9a6d383ba12f4c905fcbc85b79c39f00e9cb011fd2831737bb3ee9bb53103b4a7361aa312b SHA512 05ccb4294d788e948b69c9e38abf28454604f6b5bdd04704d6dd5231445e2f791cb18ea5149b4324a152ce9ae356b55036d2f74a5d9dc3aaaa05f5c7e4e69e1f +DIST rust-1.76.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6d2fe65e5840cd7ddbf1b18ef89cd337b16e3424b6e20d21e199b274fbbc4d9fd88406c2a119d5b0bd48fc9e47145dade3f37bbf99faff68905e57bd41937c1a SHA512 a1e45e41f901513e97956d336910927d7357cb8c2362be69989528fa5ae7087da409853adfd86354b4b7faec3e8542e400838df1d195843c030d9c6fffed7557 +DIST rust-1.76.0-powerpc64-unknown-linux-gnu.tar.xz 177409476 BLAKE2B 7c9829c8e8ecf2a162663a2c382bff49739ca2bb02b785ffdbcf632edf55a3ea37ea3be09298b0a0a984512aef290123d3b0ca9ae0d088a2a816f38778aec79b SHA512 1f29f66d8e64d4c191bc90b05d791f08317aeec042ced815fd353beef6a7a4f6d5f91755481114e707728bd9a02ed9094b2a75d91d61ddb12748d9d40b211e17 +DIST rust-1.76.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 3087eda9eec862455906510d38f43b81644243ff7afbd5ddf221cfb2c12408b8ac9a0bd2a269a9499776e04b56b3d52c890e056af544aa56cc06b399614f83b5 SHA512 8a90d5acea677a02b2c5eec93157ee2c47bab895e16408123a0e2c3d44b0f9a9d95fe56dfa903fa1cd2fd298f17050110793e94d60510283c8e3cc120770ce9d +DIST rust-1.76.0-powerpc64le-unknown-linux-gnu.tar.xz 187967776 BLAKE2B 0ffbbb4e4ca44285d8387fa66c58df72971bba6410faa96f6cfd80c223f4996285fac27672104f25ae2a20cb81a0ec6be0bea1d6893d95eab0d017fbae896509 SHA512 eb8be647651b02f1e9287d075d76c288e34e66514305a68ac118ef41dc14a16e5e1a3f2c5cb8512c4565a2eef3e5063dc4eb11272fa91c01d8313a323c20755c +DIST rust-1.76.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5f41ec8841f4004df7b65b50a451027489e303bb2863ece09a14900a229d3180ba23bbf5c770c2939399eb157e97b4a08ccc0632a66eca5ca5cf4c29a1523186 SHA512 929e415a66d8777e2509c25a780b4963b8991adb905a9841dca19a5412a5f86326fd73c43f79c304a48a2898f863b76024b0144109343933a0c5f3f1fb8ed287 +DIST rust-1.76.0-riscv64gc-unknown-linux-gnu.tar.xz 183161264 BLAKE2B 9a0b579bc076b8cc55414c95456caa2146fd0597091d2332c1033d03ac7495684b7b7989ec6a8a108953c681ed88d4b62a9a7fbb39c0300128189a91b035d2df SHA512 29fe21df7b99b9a9483af6f2370e2b5a403c12aee94a1285bfb2d2efa631f9d284c70caf863247843ab1418bc78a26c6f6d5de4e8606456a9ebd265ea3bb504f +DIST rust-1.76.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7a380f9d2f2f7083afe7abcd81a15d34df703f076c2c842fee2433c6c40d629bc5b0818fc186b462d653aafeb1fe767de3c01b7a014ec3220d77725bf1074fed SHA512 53e4942d74f42f4a7c35ef4a33833d23a955af157d80588c277f32f30cae63e8543fd4ffb569693ad00a6a20ebdb2d8422ca078ebc85bbf98814815e32791894 +DIST rust-1.76.0-s390x-unknown-linux-gnu.tar.xz 202133724 BLAKE2B d6d68392b9b9b69914cb6986cc1501246e0461a6eb5d18eb0ffe71e0a2a7be20d27e90b117c520723254b4709d08c4fb33d145e5ab559802ba6592dfabf81317 SHA512 fa74e1605eea945445f8ea621a667d50907d8b3ceed700e6b05dbcbf58dc7fec62c1e50247ad9688a5b9c5b78c4a140d93557d494260f8a21b1eb25baa315bec +DIST rust-1.76.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 574df1144e6e79710a73962511fc73215b3a4d1c3b6623190180c7ec13aa8295e13329c4bc66710013f874054dd756e02bfb2c5f6ce1fc8a07ae0717f958b244 SHA512 17938b3f4671127c9c46a5c51703d430938b73b2e30cd497cbc159ed372889af42e651479d1ca69c000974e21d4d34cfb9e3cf28b79ec8e35540ac319e1b8b9d +DIST rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz 159385660 BLAKE2B 0846999358aba95a2bebd2ff35ccc9e1954ff4fca66227d1c8c1985c08e91159f2acaa1357544b81e92065a2f9ddf6aee41a2d9199d71d8de1655f9b16ba2ed3 SHA512 1cf0ffb44aee4da9768e27daf5ab3b20e67fc9e8eba5a1718b700c85ecdb61cdef129cb571633294f9c826b6e7bd2958086eec371922ca31af332266d3632609 +DIST rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 88e6b124812b409372ee05e2872cb4dfacbc638f8e3b4fb0d5fa4ea63f4594333a9788732502f8bd41e34b5cbc404d7ac08e7690d095a6c37c80b0043dd2be88 SHA512 f7ddca81da468d5617f48240b6d3e8d7d09336ac58f515acd3a20f2d315468ba1d53508dd3264a088ffc0141cb3fbcd8d3c17379f9628270d39c7d44f7727291 +DIST rust-1.76.0-x86_64-unknown-linux-musl.tar.xz 237333892 BLAKE2B e95b92c68e3c2df49fa0d5d84e35f6575fb80571db290b5969441cc09b6c07dee6b2b887f41a2b1ff1e3c099cda2ce2a4a8c05afbcf9f4dc8acbaed5245b69e4 SHA512 04bbbb9a6891c3bb7a20845010029e6ca979548ff70324c08d3162ebc1fa3a84e8c7e2d453495edd34aba19b7a685f048d5047993103bbf221c88ea36350370c +DIST rust-1.76.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B cd4334fecc17cf03b7333659393004fed4bb895f9b75f93520d1c3e3ee0ce4fcd17d75d748c4a35d31984215c7aec8904ebe3a4ad8bafcd625aef30688a473f7 SHA512 a458372b41c2833bdbd3d6678c35fc23397817b406c409d1ba5e19b4c6246072afff3f938f111382de56f7ff57e660c3eaf3fea0e54871d9af50b52a54f39e41 +DIST rustc-1.71.0-src.tar.xz 151962928 BLAKE2B da8d83cd6621947816630ae487efe7d087266c1352949cedbbd441ba7c7f7c7beb13b9470e66e2f3359c37a050d0e44d22481c418532d3ebb339a456ab092648 SHA512 2c93bafdd248563765a285add48ca77c1e4bad4d5431675ae6a5cdee4cfe7a41e6bcc880a489ca1069a307fd9a005f2d5f8e230dfc95b4a69152b4f9ca49ac44 +DIST rustc-1.71.0-src.tar.xz.asc 801 BLAKE2B e5ddc4b18a6caeeb63c5aed5b5d15989d086f408787d2e603e50e7b8548dc078683062627280fd2a0393bec01c314eb1cc59f9b0e3146abf07b8365a0b44c640 SHA512 cb1b208c8b2bfccf02c73c4246fb238edb0dd10e292c1ef781920964e54e40add3089d988769982c0ce06b719014685b1c37daa2d08b513d86ad73808f4ce3ac +DIST rustc-1.71.1-src.tar.xz 151983068 BLAKE2B 3dfdbc246feb84a79ae94c2de978c5585ee06cf6b683d2245869b62e28f7c79f89cc589f5431537713bf088236a0b824acefc1b68e418e9eb72e1eea98054e3f SHA512 fd0e5a16bdbeb539184513583089e55f681cb772810df357b6b1464853f7022ac02edab3dd155b2262ed0047e2a25dea3808dd078dcdfce9d399384465009db4 +DIST rustc-1.71.1-src.tar.xz.asc 801 BLAKE2B a88c073a70552d73e2d7695eceabdaa478f34501b7271fabf7f4a09f3efa545181f34353e45776b05918e6aeba88adb02f9731454f7085a7abf1602fc6589983 SHA512 9dd0406cf22f1daa7fcfd015fc1c6f8d36586aa99bf14c1491ee464c1f892ab759feb83e8b55b64713170fb777fdbe038fb5fd01a59c911b6599223baaba0677 +DIST rustc-1.73.0-src.tar.xz 154319536 BLAKE2B 077bdedb36fdbc30db3c6331ac6014615eb79393ad42e38488d037ba38eaa6542467d39b2a14228d0bf6717110f915bf6fdcf0074c6293f413720cc748316eff SHA512 75c59680a82cb9d076b9434744a1c65908524ef769293952f5d9c5779d9a9c6fa4d9aa0c7e7d6b7566a21a50a27cd6ae452b5283a4d4606b2fa1acc24dfd8e0c +DIST rustc-1.73.0-src.tar.xz.asc 801 BLAKE2B fac2f8652e9a103e8a678b30222e1a505671253827d1d092c4964230a535a85e21cedf00b70f108ac5cb2db961b50e482223e8eaa5b0d585777dd43d80c5931e SHA512 e80ef6280c50522a575f040610184fcf5f45444db2534c6a334e66a69f3338b43d8b34cf035685f28d0e8f006427bbe413611c49fe028c9f72810d74ccfab15e +DIST rustc-1.74.1-src.tar.xz 155968724 BLAKE2B e05f2379ac94b286f85791a138e1928e5b5b5a7749f0981d82c40c2a12860f55bf96bb2f0e924e35a0f8b2447b13052d38adea909aaa3199105787bb5a4861b3 SHA512 14c7e7ed2f38ab60299d8c7d41d78f042b6b57ef822d577b5138e60bdde31cf141eccd4332a25bc5da3d58eb5313d63c1448b5dfe9e11b8055bb8ea133a9038d +DIST rustc-1.74.1-src.tar.xz.asc 801 BLAKE2B ddf73175b164233babf31ca3a381b03e20c0f36d017c1d5f85d6ab11f0986d861ab23b11c061e6b2444ced70c3d6a494cc3de4ec86f0deb221a805491bd75420 SHA512 9a96ff9ba9a4e2af4e267b2ec126fc0675c78d0eb767703daa2f28491c3d85c2ab00fbd8584390bf658812ec6c4ab6c57e43b386db59fd505bd3134a8873a09e +DIST rustc-1.75.0-src.tar.xz 159624388 BLAKE2B 8937b80585eddaa3e1f1ef948899d14a170308518c6fef9fe569560cdd870053776956743f796055f2119399b9ca6c0df12fedd789ae46324d071e5126c4e495 SHA512 7b0f25d91b1b5c317980fc88e059200bd43b56a70b445fbc72fb9b96e09775bfd3a98e9bd9d662af80f0ce3aef527c777ee82777e96ca876f47a972d63da8606 +DIST rustc-1.75.0-src.tar.xz.asc 801 BLAKE2B 434da96b1dc93a5aeed07f4961b087fdd15870e407283ecc00df08dbc1e9f6c65fe459b3a25d39ee55900d53ee583207098ecf3d63f5d6ea114ef0b8398b6a63 SHA512 a0e948553af77ca6e2daa82c69d79079ef7d4ec61957bdff99efd73748200d6c7caa9282daeb3fe3ef849d81a48e66a25336df4c7b6f62f975266aa8b9b93d3a +DIST rustc-1.76.0-src.tar.xz 162267908 BLAKE2B 0cf726841a837d9906d82a6216e65edad1e3e4a798ccd1ca3824c2098d0c45473854b8bf183c6e9ca70ba095752e77c4f5ef575d98c07243d609857214175f5e SHA512 92e16cfdeb91bde341fe6c2774d92868275b07aa1d46d870ddc9291eadfe4ea9af93e06586fa7d6b8d60534903945cbbe706d354c90272712989c58d2bf174bf +DIST rustc-1.76.0-src.tar.xz.asc 801 BLAKE2B eadb2f54fceb9c1ac60af72407a2957e37e1ba134a696675a1e9dcf23a2958b41d7f5aa1f75156e4843cefc387cdc9c909e364c3bfcabecc6bfbe262d9c6e8af SHA512 d35c010a5a129580746bcec5c0dad1b0bc1b7864a69505c7c0ccfad436fdfbdf33f87518965a09de187d6a70fb8867dc6a20037c648861031a17501577855120 +DIST rustc-1.77.1-src.tar.xz 162796048 BLAKE2B 18a9fd095808ba78bf50ec94f7fd4087a1033ec79750aa593bacf64219c77ef90c030d41a7d8bc43f7ec8eb30b316c225024be4aeb517100ff6723487f8bb282 SHA512 e057ae638e4c3e54fdb367d48f4b85458121cee0d0ee1ed72f346940b8acad2f16cd9cc8abc16fcf4a17bf244b3300bb56a7e7be3bd0c23b034692c983b84fe8 +DIST rustc-1.77.1-src.tar.xz.asc 801 BLAKE2B 175a551abdb970295d37a0797cf262ac43055a3cb75b23845dbb8696d04b7705b7a2908b82fcbce7cd7dec2e05c382d06622013b9d4aa19fab7f651f7e00bb73 SHA512 eb24976ae97d2980d4c547bcf27d815f4b98b8aa45441a7201a849ee37e0ef15671732c9916d33964b8e802a87ede758daaadf84901bd569527c8b6c48efff23 diff --git a/dev-lang/rust/files/1.62.1-musl-dynamic-linking.patch b/dev-lang/rust/files/1.62.1-musl-dynamic-linking.patch new file mode 100644 index 0000000..fd56396 --- /dev/null +++ b/dev-lang/rust/files/1.62.1-musl-dynamic-linking.patch @@ -0,0 +1,25 @@ +From e42709c46647dab342b826d30324f3e6e5590e00 Mon Sep 17 00:00:00 2001 +From: Jory Pratt <anarchy@gentoo.org> +Date: Tue, 2 Aug 2022 18:32:53 -0500 +Subject: [PATCH] Enable dynamic linking by default for musl + +Signed-off-by: Jory Pratt <anarchy@gentoo.org> +--- + compiler/rustc_target/src/spec/linux_musl_base.rs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/compiler/rustc_target/src/spec/linux_musl_base.rs b/compiler/rustc_target/src/spec/linux_musl_base.rs +index 207a87ab0..8a5a43363 100644 +--- a/compiler/rustc_target/src/spec/linux_musl_base.rs ++++ b/compiler/rustc_target/src/spec/linux_musl_base.rs +@@ -10,7 +10,7 @@ pub fn opts() -> TargetOptions { + base.crt_objects_fallback = Some(CrtObjectsFallback::Musl); + + // These targets statically link libc by default +- base.crt_static_default = true; ++ base.crt_static_default = false; + + base + } +-- +2.35.1 diff --git a/dev-lang/rust/files/1.67.0-doc-wasm.patch b/dev-lang/rust/files/1.67.0-doc-wasm.patch new file mode 100644 index 0000000..06011de --- /dev/null +++ b/dev-lang/rust/files/1.67.0-doc-wasm.patch @@ -0,0 +1,34 @@ +From 92aa5f6b272bcdc020a34f8d90f9ef851b5b4504 Mon Sep 17 00:00:00 2001 +From: John Millikin <john@john-millikin.com> +Date: Mon, 9 Jan 2023 13:54:21 +0900 +Subject: [PATCH] Disable `linux_ext` in wasm32 and fortanix rustdoc builds. + +The `std::os::unix` module is stubbed out when building docs for these +target platforms. The introduction of Linux-specific extension traits +caused `std::os::net` to depend on sub-modules of `std::os::unix`, +which broke rustdoc for the `wasm32-unknown-unknown` target. + +Adding an additional `#[cfg]` guard solves that rustdoc failure by +not declaring `linux_ext` on targets with a stubbed `std::os::unix`. +--- + library/std/src/os/net/mod.rs | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/library/std/src/os/net/mod.rs b/library/std/src/os/net/mod.rs +index 5ec267c41e97c..b7046dd7c598c 100644 +--- a/library/std/src/os/net/mod.rs ++++ b/library/std/src/os/net/mod.rs +@@ -1,4 +1,13 @@ + //! OS-specific networking functionality. + ++// See cfg macros in `library/std/src/os/mod.rs` for why these platforms must ++// be special-cased during rustdoc generation. ++#[cfg(not(all( ++ doc, ++ any( ++ all(target_arch = "wasm32", not(target_os = "wasi")), ++ all(target_vendor = "fortanix", target_env = "sgx") ++ ) ++)))] + #[cfg(any(target_os = "linux", target_os = "android", doc))] + pub(super) mod linux_ext; diff --git a/dev-lang/rust/files/1.70.0-ignore-broken-and-non-applicable-tests.patch b/dev-lang/rust/files/1.70.0-ignore-broken-and-non-applicable-tests.patch new file mode 100644 index 0000000..2e12c78 --- /dev/null +++ b/dev-lang/rust/files/1.70.0-ignore-broken-and-non-applicable-tests.patch @@ -0,0 +1,30 @@ +From 1879d1d1a284bf51c752e47db284ce22701ed5d0 Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Sun, 16 Sep 2018 16:38:48 +0000 +Subject: [PATCH 12/15] Ignore broken and non-applicable tests + +c-link-to-rust-va-list-fn: unstable feature, broken on aarch64, #56475 +env-funky-keys: can't handle LD_PRELOAD (e.g. sandbox) +long-linker-command-lines: takes >10 minutes to run (but still passes) +simd-intrinsic-generic-bitmask.rs: broken on BE, #59356 +sparc-struct-abi: no sparc target +sysroot-crates-are-unstable: can't run rustc without RPATH +--- + test/ui/env-funky-keys.rs | 1 + + 6 files changed, 10 insertions(+) + +diff --git a/tests/ui/env-funky-keys.rs b/tests/ui/env-funky-keys.rs +index c5c824ac58d..f3fe047a79c 100644 +--- a/tests/ui/env-funky-keys.rs ++++ b/tests/ui/env-funky-keys.rs +@@ -1,6 +1,7 @@ + // run-pass + // Ignore this test on Android, because it segfaults there. + ++// ignore-test + // ignore-android + // ignore-windows + // ignore-cloudabi no execve +-- +2.24.1 + diff --git a/dev-lang/rust/files/1.71.0-fix-bashcomp-installation.patch b/dev-lang/rust/files/1.71.0-fix-bashcomp-installation.patch new file mode 100644 index 0000000..14efbfc --- /dev/null +++ b/dev-lang/rust/files/1.71.0-fix-bashcomp-installation.patch @@ -0,0 +1,23 @@ +https://github.com/rust-lang/rust/pull/113579 which reverts the broken +https://github.com/rust-lang/rust/pull/110906. +From: ekusiadadus <ekusiadadus@gmail.com> +Date: Wed, 12 Jul 2023 00:54:27 +0900 +Subject: [PATCH] Revert "fix: :bug: etc/bash_complettion -> src/etc/... to + avoid copy error" + +This reverts commit 08ce68b6a6bad360e9c3611ad60cf6598401f878. +--- a/src/bootstrap/dist.rs ++++ b/src/bootstrap/dist.rs +@@ -1074,11 +1074,7 @@ impl Step for Cargo { + + tarball.add_file(&cargo, "bin", 0o755); + tarball.add_file(etc.join("_cargo"), "share/zsh/site-functions", 0o644); +- tarball.add_renamed_file( +- etc.join("cargo.bashcomp.sh"), +- "src/etc/bash_completion.d", +- "cargo", +- ); ++ tarball.add_renamed_file(etc.join("cargo.bashcomp.sh"), "etc/bash_completion.d", "cargo"); + tarball.add_dir(etc.join("man"), "share/man/man1"); + tarball.add_legal_and_readme_to("share/doc/cargo"); + diff --git a/dev-lang/rust/files/1.71.0-libressl-openssl-sys.patch b/dev-lang/rust/files/1.71.0-libressl-openssl-sys.patch new file mode 100644 index 0000000..4869569 --- /dev/null +++ b/dev-lang/rust/files/1.71.0-libressl-openssl-sys.patch @@ -0,0 +1,10 @@ +--- a/build/main.rs.orig ++++ b/build/main.rs +@@ -285,6 +285,7 @@ + (3, 7, 0) => ('3', '7', '0'), + (3, 7, 1) => ('3', '7', '1'), + (3, 7, _) => ('3', '7', 'x'), ++ (3, _, _) => ('3', 'x', 'x'), + _ => version_error(), + }; + diff --git a/dev-lang/rust/files/1.71.0-lint-docs-libpath.patch b/dev-lang/rust/files/1.71.0-lint-docs-libpath.patch new file mode 100644 index 0000000..27c6738 --- /dev/null +++ b/dev-lang/rust/files/1.71.0-lint-docs-libpath.patch @@ -0,0 +1,39 @@ +https://bugs.gentoo.org/910595 +https://github.com/rust-lang/rust/issues/113678 + +https://github.com/rust-lang/rust/commit/67b5990472e3cac643d8cf90f45fe42201ddec3c +From: jyn <github@jyn.dev> +Date: Mon, 10 Jul 2023 15:59:30 -0500 +Subject: [PATCH] Revert "Fix `x test lint-docs` when download-rustc is + enabled" + +This was not the correct fix. The problem was two-fold: +- `download-rustc` didn't respect `llvm.assertions` +- `rust-dev` was missing a bump to `download-ci-llvm-stamp` + +The first is fixed in this PR and the latter was fixed a while ago. Revert this change to avoid breaking `rpath = false`. +--- a/src/tools/lint-docs/src/groups.rs ++++ b/src/tools/lint-docs/src/groups.rs +@@ -39,7 +39,6 @@ impl<'a> LintExtractor<'a> { + fn collect_groups(&self) -> Result<LintGroups, Box<dyn Error>> { + let mut result = BTreeMap::new(); + let mut cmd = Command::new(self.rustc_path); +- cmd.env_remove("LD_LIBRARY_PATH"); + cmd.arg("-Whelp"); + let output = cmd.output().map_err(|e| format!("failed to run command {:?}\n{}", cmd, e))?; + if !output.status.success() { +--- a/src/tools/lint-docs/src/lib.rs ++++ b/src/tools/lint-docs/src/lib.rs +@@ -403,12 +403,6 @@ impl<'a> LintExtractor<'a> { + fs::write(&tempfile, source) + .map_err(|e| format!("failed to write {}: {}", tempfile.display(), e))?; + let mut cmd = Command::new(self.rustc_path); +- // NOTE: bootstrap sets `LD_LIBRARY_PATH` for building lint-docs itself. +- // Unfortunately, lint-docs is a bootstrap tool while rustc is built from source, +- // and sometimes the paths conflict. In particular, when using `download-rustc`, +- // the LLVM versions can differ between `ci-llvm` and `ci-rustc-sysroot`. +- // Unset LD_LIBRARY_PATH here so it doesn't interfere with running the compiler. +- cmd.env_remove("LD_LIBRARY_PATH"); + if options.contains(&"edition2015") { + cmd.arg("--edition=2015"); + } else { diff --git a/dev-lang/rust/files/1.71.1-fix-bootstrap-version-comparison.patch b/dev-lang/rust/files/1.71.1-fix-bootstrap-version-comparison.patch new file mode 100644 index 0000000..8857c4b --- /dev/null +++ b/dev-lang/rust/files/1.71.1-fix-bootstrap-version-comparison.patch @@ -0,0 +1,26 @@ +https://github.com/rust-lang/rust/pull/114440 +From: Ariadne Conill <ariadne@dereferenced.org> +Date: Thu, 3 Aug 2023 15:05:40 -0700 +Subject: [PATCH] bootstrap: config: fix version comparison bug + +Rust requires a previous version of Rust to build, such as the current version, or the +previous version. However, the version comparison logic did not take patch releases +into consideration when doing the version comparison for the current branch, e.g. +Rust 1.71.1 could not be built by Rust 1.71.0 because it is neither an exact version +match, or the previous version. + +Adjust the version comparison logic to tolerate mismatches in the patch version. + +Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> +--- a/src/bootstrap/config.rs ++++ b/src/bootstrap/config.rs +@@ -2004,7 +2004,8 @@ impl Config { + .unwrap(); + if !(source_version == rustc_version + || (source_version.major == rustc_version.major +- && source_version.minor == rustc_version.minor + 1)) ++ && (source_version.minor == rustc_version.minor ++ || source_version.minor == rustc_version.minor + 1))) + { + let prev_version = format!("{}.{}.x", source_version.major, source_version.minor - 1); + eprintln!( diff --git a/dev-lang/rust/files/1.72.0-bump-libc-deps-to-0.2.146.patch b/dev-lang/rust/files/1.72.0-bump-libc-deps-to-0.2.146.patch new file mode 100644 index 0000000..bd1c4b5 --- /dev/null +++ b/dev-lang/rust/files/1.72.0-bump-libc-deps-to-0.2.146.patch @@ -0,0 +1,156 @@ +This patch bumps all libc dependencies and checksums to 0.2.146, which includes the fix for musl 1.2.4. + +--- a/vendor/addr2line-0.20.0/Cargo.lock ++++ b/vendor/addr2line-0.20.0/Cargo.lock +@@ -246,9 +246,9 @@ checksum = "e2abad23fbc42b3700f2f279844d + + [[package]] + name = "libc" +-version = "0.2.141" ++version = "0.2.146" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" ++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + + [[package]] + name = "libtest-mimic" +--- a/vendor/backtrace-0.3.67/Cargo.lock ++++ b/vendor/backtrace-0.3.67/Cargo.lock +@@ -64,9 +64,9 @@ checksum = "dec7af912d60cdbd3677c1af9352 + + [[package]] + name = "libc" +-version = "0.2.138" ++version = "0.2.146" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" ++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + + [[package]] + name = "libloading" +--- a/vendor/bstr/Cargo.lock ++++ b/vendor/bstr/Cargo.lock +@@ -34,9 +34,9 @@ dependencies = [ + + [[package]] + name = "libc" +-version = "0.2.138" ++version = "0.2.146" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" ++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + + [[package]] + name = "memchr" +--- a/vendor/cranelift-jit/Cargo.lock ++++ b/vendor/cranelift-jit/Cargo.lock +@@ -224,9 +224,9 @@ dependencies = [ + + [[package]] + name = "libc" +-version = "0.2.141" ++version = "0.2.146" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" ++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + + [[package]] + name = "log" +--- a/vendor/crossbeam-channel/Cargo.lock ++++ b/vendor/crossbeam-channel/Cargo.lock +@@ -50,9 +50,9 @@ dependencies = [ + + [[package]] + name = "libc" +-version = "0.2.141" ++version = "0.2.146" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" ++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + + [[package]] + name = "num_cpus" +--- a/vendor/elasticlunr-rs/Cargo.lock ++++ b/vendor/elasticlunr-rs/Cargo.lock +@@ -555,9 +555,9 @@ checksum = "e2abad23fbc42b3700f2f279844d + + [[package]] + name = "libc" +-version = "0.2.140" ++version = "0.2.146" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" ++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + + [[package]] + name = "lindera" +--- a/vendor/handlebars/Cargo.lock ++++ b/vendor/handlebars/Cargo.lock +@@ -550,9 +550,9 @@ checksum = "e2abad23fbc42b3700f2f279844d + + [[package]] + name = "libc" +-version = "0.2.140" ++version = "0.2.146" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" ++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + + [[package]] + name = "lock_api" +--- a/vendor/icu_locid/Cargo.lock ++++ b/vendor/icu_locid/Cargo.lock +@@ -318,9 +318,9 @@ checksum = "e2abad23fbc42b3700f2f279844d + + [[package]] + name = "libc" +-version = "0.2.141" ++version = "0.2.146" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" ++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + + [[package]] + name = "litemap" +--- a/vendor/libffi/Cargo.lock ++++ b/vendor/libffi/Cargo.lock +@@ -10,9 +10,9 @@ checksum = "50d30906286121d95be3d479533b + + [[package]] + name = "libc" +-version = "0.2.140" ++version = "0.2.146" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" ++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + + [[package]] + name = "libffi" +--- a/vendor/terminal_size/Cargo.lock ++++ b/vendor/terminal_size/Cargo.lock +@@ -47,9 +47,9 @@ dependencies = [ + + [[package]] + name = "libc" +-version = "0.2.140" ++version = "0.2.146" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" ++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + + [[package]] + name = "linux-raw-sys" +--- a/vendor/tracing-tree/Cargo.lock ++++ b/vendor/tracing-tree/Cargo.lock +@@ -100,9 +100,9 @@ checksum = "e2abad23fbc42b3700f2f279844d + + [[package]] + name = "libc" +-version = "0.2.141" ++version = "0.2.146" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" ++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + + [[package]] + name = "log" diff --git a/dev-lang/rust/files/1.72.0-libressl-openssl-sys.patch b/dev-lang/rust/files/1.72.0-libressl-openssl-sys.patch new file mode 100644 index 0000000..2d03b58 --- /dev/null +++ b/dev-lang/rust/files/1.72.0-libressl-openssl-sys.patch @@ -0,0 +1,10 @@ +--- a/build/main.rs.orig ++++ b/build/main.rs +@@ -274,6 +274,7 @@ + (3, 7, 1) => ('3', '7', '1'), + (3, 7, _) => ('3', '7', 'x'), + (3, 8, 0) => ('3', '8', '0'), ++ (3, _, _) => ('3', 'x', 'x'), + _ => version_error(), + }; + diff --git a/dev-lang/rust/files/1.74.1-cross-compile-libz.patch b/dev-lang/rust/files/1.74.1-cross-compile-libz.patch new file mode 100644 index 0000000..f2a881b --- /dev/null +++ b/dev-lang/rust/files/1.74.1-cross-compile-libz.patch @@ -0,0 +1,19 @@ +https://paste.sr.ht/~kchibisov/682321e0fd4a3ece4a4b7b71591896f5cd3cdb22 +https://github.com/gentoo/gentoo/pull/35246#discussion_r1484525497 + +diff --git a/compiler/rustc_llvm/build.rs b/compiler/rustc_llvm/build.rs +index f606fa483ca..8a2e1c40e8b 100644 +--- a/compiler/rustc_llvm/build.rs ++++ b/compiler/rustc_llvm/build.rs +@@ -237,10 +237,7 @@ fn main() { + // of llvm-config, not the target that we're attempting to link. + let mut cmd = Command::new(&llvm_config); + cmd.arg(llvm_link_arg).arg("--libs"); +- +- if !is_crossed { +- cmd.arg("--system-libs"); +- } ++ cmd.arg("--system-libs"); + + if (target.starts_with("arm") && !target.contains("freebsd")) + || target.starts_with("mips-") diff --git a/dev-lang/rust/files/1.75.0-handle-vendored-sources.patch b/dev-lang/rust/files/1.75.0-handle-vendored-sources.patch new file mode 100644 index 0000000..c68ceba --- /dev/null +++ b/dev-lang/rust/files/1.75.0-handle-vendored-sources.patch @@ -0,0 +1,45 @@ +From 4b7e0a0b56aa2446e670dfd6558380a1039a86aa Mon Sep 17 00:00:00 2001 +From: Arlo Siemsen <arsiem@microsoft.com> +Date: Thu, 4 Jan 2024 11:40:56 -0600 +Subject: [PATCH] Handle vendored sources when remapping paths + +Signed-off-by: Randy Barlow <randy@electronsweatshop.com> +--- + src/bootstrap/src/core/builder.rs | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +diff --git a/src/bootstrap/src/core/builder.rs b/src/bootstrap/src/core/builder.rs +index 4e20babc55a..3770d0687b2 100644 +--- a/src/bootstrap/src/core/builder.rs ++++ b/src/bootstrap/src/core/builder.rs +@@ -1799,15 +1799,20 @@ pub fn cargo( + } + + if self.config.rust_remap_debuginfo { +- // FIXME: handle vendored sources +- let registry_src = t!(home::cargo_home()).join("registry").join("src"); + let mut env_var = OsString::new(); +- for entry in t!(std::fs::read_dir(registry_src)) { +- if !env_var.is_empty() { +- env_var.push("\t"); +- } +- env_var.push(t!(entry).path()); ++ if self.config.vendor { ++ let vendor = self.build.src.join("vendor"); ++ env_var.push(vendor); + env_var.push("=/rust/deps"); ++ } else { ++ let registry_src = t!(home::cargo_home()).join("registry").join("src"); ++ for entry in t!(std::fs::read_dir(registry_src)) { ++ if !env_var.is_empty() { ++ env_var.push("\t"); ++ } ++ env_var.push(t!(entry).path()); ++ env_var.push("=/rust/deps"); ++ } + } + cargo.env("RUSTC_CARGO_REGISTRY_SRC_TO_REMAP", env_var); + } +-- +2.43.0 + diff --git a/dev-lang/rust/files/1.75.0-musl-dynamic-linking.patch b/dev-lang/rust/files/1.75.0-musl-dynamic-linking.patch new file mode 100644 index 0000000..7dc34f8 --- /dev/null +++ b/dev-lang/rust/files/1.75.0-musl-dynamic-linking.patch @@ -0,0 +1,19 @@ +From e42709c46647dab342b826d30324f3e6e5590e00 Mon Sep 17 00:00:00 2001 +From: Jory Pratt <anarchy@gentoo.org> +Date: Tue, 2 Aug 2022 18:32:53 -0500 +Subject: [PATCH] Enable dynamic linking by default for musl + +Signed-off-by: Jory Pratt <anarchy@gentoo.org> +--- a/compiler/rustc_target/src/spec/base/linux_musl.rs ++++ b/compiler/rustc_target/src/spec/base/linux_musl.rs +@@ -10,7 +10,7 @@ pub fn opts() -> TargetOptions { + base.crt_objects_fallback = Some(CrtObjectsFallback::Musl); + + // These targets statically link libc by default +- base.crt_static_default = true; ++ base.crt_static_default = false; + + base + } +-- +2.35.1 diff --git a/dev-lang/rust/files/1.76.0-loong-code-model.patch b/dev-lang/rust/files/1.76.0-loong-code-model.patch new file mode 100644 index 0000000..02bfeca --- /dev/null +++ b/dev-lang/rust/files/1.76.0-loong-code-model.patch @@ -0,0 +1,73 @@ +https://github.com/rust-lang/rust/pull/120661 +From: WANG Xuerui <xen0n@gentoo.org> +Date: Mon, 5 Feb 2024 13:18:32 +0800 +Subject: [PATCH] target: default to the medium code model on LoongArch targets +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The Rust LoongArch targets have been using the default LLVM code model +so far, which is "small" in LLVM-speak and "normal" in LoongArch-speak. +As described in the "Code Model" section of LoongArch ELF psABI spec +v20231219 [1], one can only make function calls as far as ±128MiB with +the "normal" code model; this is insufficient for very large software +containing Rust components that needs to be linked into the big text +section, such as Chromium. + +Because: + +* we do not want to ask users to recompile std if they are to build + such software, +* objects compiled with larger code models can be linked with those + with smaller code models without problems, and +* the "medium" code model is comparable to the "small"/"normal" one + performance-wise (same data access pattern; each function call + becomes 2-insn long and indirect, but this may be relaxed back into + the direct 1-insn form in a future LLVM version), but is able to + perform function calls within ±128GiB, + +it is better to just switch the targets to the "medium" code model, +which is also "medium" in LLVM-speak. + +[1]: https://github.com/loongson/la-abi-specs/blob/v2.30/laelf.adoc#code-models +--- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_gnu.rs ++++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_gnu.rs +@@ -1,4 +1,4 @@ +-use crate::spec::{base, Target, TargetOptions}; ++use crate::spec::{base, CodeModel, Target, TargetOptions}; + + pub fn target() -> Target { + Target { +@@ -7,6 +7,7 @@ pub fn target() -> Target { + data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".into(), + arch: "loongarch64".into(), + options: TargetOptions { ++ code_model: Some(CodeModel::Medium), + cpu: "generic".into(), + features: "+f,+d".into(), + llvm_abiname: "lp64d".into(), +--- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none.rs ++++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none.rs +@@ -16,7 +16,7 @@ pub fn target() -> Target { + max_atomic_width: Some(64), + relocation_model: RelocModel::Static, + panic_strategy: PanicStrategy::Abort, +- code_model: Some(CodeModel::Small), ++ code_model: Some(CodeModel::Medium), + ..Default::default() + }, + } +--- a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none_softfloat.rs ++++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_none_softfloat.rs +@@ -17,7 +17,7 @@ pub fn target() -> Target { + max_atomic_width: Some(64), + relocation_model: RelocModel::Static, + panic_strategy: PanicStrategy::Abort, +- code_model: Some(CodeModel::Small), ++ code_model: Some(CodeModel::Medium), + ..Default::default() + }, + } +-- +2.43.0 + diff --git a/dev-lang/rust/files/1.77.1-libressl-openssl-sys.patch b/dev-lang/rust/files/1.77.1-libressl-openssl-sys.patch new file mode 100644 index 0000000..c3ba287 --- /dev/null +++ b/dev-lang/rust/files/1.77.1-libressl-openssl-sys.patch @@ -0,0 +1,10 @@ +--- a/build/main.rs.orig ++++ b/build/main.rs +@@ -293,6 +293,7 @@ + (3, 8, 0) => ('3', '8', '0'), + (3, 8, 1) => ('3', '8', '1'), + (3, 8, _) => ('3', '8', 'x'), ++ (_, _, _) => ('x', 'x', 'x'), + _ => version_error(), + }; + diff --git a/dev-lang/rust/files/rehash-crate.sh b/dev-lang/rust/files/rehash-crate.sh new file mode 100644 index 0000000..c43f542 --- /dev/null +++ b/dev-lang/rust/files/rehash-crate.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# $1 = crate patch file + +set -euf + +cargo='.cargo-checksum.json' + +grep -- '^[+][+][+] ' "${1:?}" | while read -r _ f; do + file="${f#*/}" + orig_sum="$(grep -Eo "\"${file}\":\"[0-9a-fA-F]+\"" "${cargo}" | + cut -d':' -f2 | tr -d '"')" + if [ -n "${orig_sum}" ]; then + sum="$(sha256sum "${file}")" + sed -i "s|${orig_sum}|${sum%% *}|" "${cargo}" + fi +done + +exit 0 diff --git a/dev-lang/rust/metadata.xml b/dev-lang/rust/metadata.xml new file mode 100644 index 0000000..1cf83c8 --- /dev/null +++ b/dev-lang/rust/metadata.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>randy@electronsweatshop.com</email> + <name>Randy Barlow</name> + </maintainer> + <maintainer type="person" proxied="yes"> + <email>navi@vlhl.dev</email> + <name>Anna Figueiredo Gomes</name> + </maintainer> + <maintainer type="project"> + <email>rust@gentoo.org</email> + <name>Rust Project</name> + </maintainer> + <use> + <flag name="clippy">Install clippy, Rust code linter</flag> + <flag name="dist">Install dist tarballs (used for bootstrapping)</flag> + <flag name="miri">Install miri, an interpreter for Rust's mid-level intermediate representation (requires USE=nightly, sometimes is broken)</flag> + <flag name="nightly">Enable nightly (UNSTABLE) features (NOTE: it does not install nightly version, just enables features marked as nightly at time of release)</flag> + <flag name="parallel-compiler">Build a multi-threaded rustc (experimental, not tested by upstream)</flag> + <flag name="profiler">Build the profiler runtime and rust-demangler tool (needed for '-C profile-generate' or '-C instrument-coverage' codegen opts)</flag> + <flag name="rustfmt">Install rustfmt, Rust code formatter</flag> + <flag name="rust-analyzer">Install rust-analyzer, A Rust compiler front-end for IDEs (language server)</flag> + <flag name="rust-src">Install rust-src, needed by developer tools and for build-std (cross)</flag> + <flag name="system-bootstrap">Bootstrap using installed rust compiler</flag> + <flag name="system-llvm">Use the system LLVM installation</flag> + <flag name="wasm">Build support for the wasm32-unknown-unknown target</flag> + </use> + <upstream> + <remote-id type="github">rust-lang/rust</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-lang/rust/rust-1.71.0.ebuild b/dev-lang/rust/rust-1.71.0.ebuild new file mode 100644 index 0000000..5eed9ea --- /dev/null +++ b/dev-lang/rust/rust-1.71.0.ebuild @@ -0,0 +1,759 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) + +inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \ + multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SLOT="beta/${PV}" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + ABI_VER="$(ver_cut 1-2)" + SLOT="stable/${ABI_VER}" + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0" + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) + !system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) ) +" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai LoongArch Mips MSP430 + NVPTX PowerPC RISCV Sparc SystemZ VE WebAssembly X86 XCore ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +# Please keep the LLVM dependency block separate. Since LLVM is slotted, +# we need to *really* make sure we're not pulling more than one slot +# simultaneously. + +# How to use it: +# List all the working slots in LLVM_VALID_SLOTS, newest first. +LLVM_VALID_SLOTS=( 16 ) +LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}" + +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +# (-) usedep needed because we may build with older llvm without that target +LLVM_DEPEND="|| ( " +for _s in ${LLVM_VALID_SLOTS[@]}; do + LLVM_DEPEND+=" ( " + for _x in ${ALL_LLVM_TARGETS[@]}; do + LLVM_DEPEND+=" + ${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] ) + wasm? ( sys-devel/lld:${_s} )" + done + LLVM_DEPEND+=" )" +done +unset _s _x +LLVM_DEPEND+=" ) + <sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):= +" + +# to bootstrap we need at least exactly previous version, or same. +# most of the time previous versions fail to bootstrap with newer +# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok, +# but it fails to bootstrap with 1.48.x +# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json +RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*" +RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*" +BOOTSTRAP_DEPEND="|| + ( + =dev-lang/rust-"${RUST_DEP_PREV}" + =dev-lang/rust-bin-"${RUST_DEP_PREV}" + =dev-lang/rust-"${RUST_DEP_CURR}" + =dev-lang/rust-bin-"${RUST_DEP_CURR}" + ) +" + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + system-bootstrap? ( ${BOOTSTRAP_DEPEND} ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND} + llvm-libunwind? ( sys-libs/llvm-libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + sys-apps/lsb-release +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.71.0-fix-bashcomp-installation.patch + "${FILESDIR}"/1.71.0-lint-docs-libpath.patch + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.62.1-musl-dynamic-linking.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch +) + +S="${WORKDIR}/${MY_P}-src" + +eapply_crate() { + pushd "${1:?}" > /dev/null || die + local patch="${2:?}" + eapply "${patch}" + "${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die + popd > /dev/null || die +} + +toml_usex() { + usex "${1}" true false +} + +bootstrap_rust_version_check() { + # never call from pkg_pretend. eselect-rust may be not installed yet. + [[ ${MERGE_TYPE} == binary ]] && return + local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))" + local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))" + local rustc_version=( $(eselect --brief rust show 2>/dev/null) ) + rustc_version=${rustc_version[0]#rust-bin-} + rustc_version=${rustc_version#rust-} + + [[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output" + + if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then + eerror "Rust >=${rustc_wanted} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too old" + elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then + eerror "Rust <${rustc_toonew} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too new" + else + einfo "Using rust ${rustc_version} to build" + fi +} + +pre_build_checks() { + local M=8192 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex system-bootstrap 0 1024) + ${M} )) + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include <ciso646> +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + + use system-bootstrap && bootstrap_rust_version_check + + if use system-llvm; then + llvm_pkg_setup + + local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +esetup_unwind_hack() { + # https://bugs.gentoo.org/870280 + # this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system. + # it should trigger for internal bootstrap or system-bootstrap with rust-bin. + # the whole idea is for stage0 to bootstrap with fake libgcc_s. + # final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler. + local fakelib="${T}/fakelib" + mkdir -p "${fakelib}" || die + # we need both symlinks, one for cargo runtime, other for linker. + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die + export LD_LIBRARY_PATH="${fakelib}" + export RUSTFLAGS+=" -L${fakelib}" + # this is a literally magic variable that gets through cargo cache, without it some + # crates ignore RUSTFLAGS. + # this variable can not contain leading space. + export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}" +} + +src_prepare() { + eapply_crate vendor/openssl-sys-0.9.85 "${FILESDIR}"/1.71.0-libressl-openssl-sys.patch + eapply_crate vendor/openssl-sys "${FILESDIR}"/1.71.0-libressl-openssl-sys.patch + + if ! use system-bootstrap; then + has_version sys-devel/gcc || esetup_unwind_hack + local rust_stage0_root="${WORKDIR}"/rust-stage0 + local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)" + + "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \ + --without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die + fi + + default +} + +src_configure() { + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use profiler && tools+=',"rust-demangler"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer"' + use rust-src && tools+=',"src"' + + local rust_stage0_root + if use system-bootstrap; then + local printsysroot + printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")" + rust_stage0_root="${printsysroot}" + else + rust_stage0_root="${WORKDIR}"/rust-stage0 + fi + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}" + CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}" + CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}" + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_target}" + host = ["${rust_target}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = $(toml_usex profiler) + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + default-linker = "$(tc-getCC)" + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = false + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + lto = "$(usex lto fat off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/<target> + + # extra targets defined as a bash array + # spec format: <LLVM target>:<rust-target>:<CTARGET> + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form <LLVM target>:<rust-target>:<CTARGET> + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, <rust-target>:<CTARGET> + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use profiler && symlinks+=( rust-demangler ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver> + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + LDPATH="${EPREFIX}/usr/lib/rust/lib" + MANPATH="${EPREFIX}/usr/lib/rust/man" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/libexec + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use profiler; then + echo /usr/bin/rust-demangler >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version dev-debug/lldb; then + elog "Rust installs a helper script for calling GDB and LLDB," + elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.71.1.ebuild b/dev-lang/rust/rust-1.71.1.ebuild new file mode 100644 index 0000000..36d61ae --- /dev/null +++ b/dev-lang/rust/rust-1.71.1.ebuild @@ -0,0 +1,759 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) + +inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \ + multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SLOT="beta/${PV}" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + ABI_VER="$(ver_cut 1-2)" + SLOT="stable/${ABI_VER}" + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" +fi + +RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0" + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) + !system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) ) +" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai LoongArch Mips MSP430 + NVPTX PowerPC RISCV Sparc SystemZ VE WebAssembly X86 XCore ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +# Please keep the LLVM dependency block separate. Since LLVM is slotted, +# we need to *really* make sure we're not pulling more than one slot +# simultaneously. + +# How to use it: +# List all the working slots in LLVM_VALID_SLOTS, newest first. +LLVM_VALID_SLOTS=( 16 ) +LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}" + +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +# (-) usedep needed because we may build with older llvm without that target +LLVM_DEPEND="|| ( " +for _s in ${LLVM_VALID_SLOTS[@]}; do + LLVM_DEPEND+=" ( " + for _x in ${ALL_LLVM_TARGETS[@]}; do + LLVM_DEPEND+=" + ${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] ) + wasm? ( sys-devel/lld:${_s} )" + done + LLVM_DEPEND+=" )" +done +unset _s _x +LLVM_DEPEND+=" ) + <sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):= +" + +# to bootstrap we need at least exactly previous version, or same. +# most of the time previous versions fail to bootstrap with newer +# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok, +# but it fails to bootstrap with 1.48.x +# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json +RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*" +RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*" +BOOTSTRAP_DEPEND="|| + ( + =dev-lang/rust-"${RUST_DEP_PREV}" + =dev-lang/rust-bin-"${RUST_DEP_PREV}" + =dev-lang/rust-"${RUST_DEP_CURR}" + =dev-lang/rust-bin-"${RUST_DEP_CURR}" + ) +" + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + system-bootstrap? ( ${BOOTSTRAP_DEPEND} ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND} + llvm-libunwind? ( sys-libs/llvm-libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + sys-apps/lsb-release +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.71.1-fix-bootstrap-version-comparison.patch + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.62.1-musl-dynamic-linking.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch +) + +S="${WORKDIR}/${MY_P}-src" + +eapply_crate() { + pushd "${1:?}" > /dev/null || die + local patch="${2:?}" + eapply "${patch}" + "${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die + popd > /dev/null || die +} + +toml_usex() { + usex "${1}" true false +} + +bootstrap_rust_version_check() { + # never call from pkg_pretend. eselect-rust may be not installed yet. + [[ ${MERGE_TYPE} == binary ]] && return + local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))" + local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))" + local rustc_version=( $(eselect --brief rust show 2>/dev/null) ) + rustc_version=${rustc_version[0]#rust-bin-} + rustc_version=${rustc_version#rust-} + + [[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output" + + if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then + eerror "Rust >=${rustc_wanted} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too old" + elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then + eerror "Rust <${rustc_toonew} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too new" + else + einfo "Using rust ${rustc_version} to build" + fi +} + +pre_build_checks() { + local M=8192 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex system-bootstrap 0 1024) + ${M} )) + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include <ciso646> +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + + use system-bootstrap && bootstrap_rust_version_check + + if use system-llvm; then + llvm_pkg_setup + + local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +esetup_unwind_hack() { + # https://bugs.gentoo.org/870280 + # this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system. + # it should trigger for internal bootstrap or system-bootstrap with rust-bin. + # the whole idea is for stage0 to bootstrap with fake libgcc_s. + # final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler. + local fakelib="${T}/fakelib" + mkdir -p "${fakelib}" || die + # we need both symlinks, one for cargo runtime, other for linker. + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die + export LD_LIBRARY_PATH="${fakelib}" + export RUSTFLAGS+=" -L${fakelib}" + # this is a literally magic variable that gets through cargo cache, without it some + # crates ignore RUSTFLAGS. + # this variable can not contain leading space. + export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}" +} + +src_prepare() { + eapply_crate vendor/openssl-sys-0.9.85 "${FILESDIR}"/1.71.0-libressl-openssl-sys.patch + eapply_crate vendor/openssl-sys "${FILESDIR}"/1.71.0-libressl-openssl-sys.patch + + if ! use system-bootstrap; then + has_version sys-devel/gcc || esetup_unwind_hack + local rust_stage0_root="${WORKDIR}"/rust-stage0 + local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)" + + "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \ + --without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die + fi + + default +} + +src_configure() { + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use profiler && tools+=',"rust-demangler"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer"' + use rust-src && tools+=',"src"' + + local rust_stage0_root + if use system-bootstrap; then + local printsysroot + printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")" + rust_stage0_root="${printsysroot}" + else + rust_stage0_root="${WORKDIR}"/rust-stage0 + fi + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}" + CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}" + CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}" + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_target}" + host = ["${rust_target}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = $(toml_usex profiler) + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + default-linker = "$(tc-getCC)" + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = false + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + lto = "$(usex lto fat off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/<target> + + # extra targets defined as a bash array + # spec format: <LLVM target>:<rust-target>:<CTARGET> + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form <LLVM target>:<rust-target>:<CTARGET> + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, <rust-target>:<CTARGET> + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use profiler && symlinks+=( rust-demangler ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver> + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + LDPATH="${EPREFIX}/usr/lib/rust/lib" + MANPATH="${EPREFIX}/usr/lib/rust/man" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/libexec + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use profiler; then + echo /usr/bin/rust-demangler >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version dev-debug/lldb; then + elog "Rust installs a helper script for calling GDB and LLDB," + elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.73.0.ebuild b/dev-lang/rust/rust-1.73.0.ebuild new file mode 100644 index 0000000..6bf90ad --- /dev/null +++ b/dev-lang/rust/rust-1.73.0.ebuild @@ -0,0 +1,769 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) + +inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \ + multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SLOT="beta/${PV}" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + ABI_VER="$(ver_cut 1-2)" + SLOT="stable/${ABI_VER}" + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0" + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) + !system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) ) +" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +# Please keep the LLVM dependency block separate. Since LLVM is slotted, +# we need to *really* make sure we're not pulling more than one slot +# simultaneously. + +# How to use it: +# List all the working slots in LLVM_VALID_SLOTS, newest first. +LLVM_VALID_SLOTS=( 17 ) +LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}" + +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +# (-) usedep needed because we may build with older llvm without that target +LLVM_DEPEND="|| ( " +for _s in ${LLVM_VALID_SLOTS[@]}; do + LLVM_DEPEND+=" ( " + for _x in ${ALL_LLVM_TARGETS[@]}; do + LLVM_DEPEND+=" + ${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] ) + wasm? ( sys-devel/lld:${_s} )" + done + LLVM_DEPEND+=" )" +done +unset _s _x +LLVM_DEPEND+=" ) + <sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):= +" + +# to bootstrap we need at least exactly previous version, or same. +# most of the time previous versions fail to bootstrap with newer +# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok, +# but it fails to bootstrap with 1.48.x +# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json +RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*" +RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*" +BOOTSTRAP_DEPEND="|| + ( + =dev-lang/rust-"${RUST_DEP_PREV}" + =dev-lang/rust-bin-"${RUST_DEP_PREV}" + =dev-lang/rust-"${RUST_DEP_CURR}" + =dev-lang/rust-bin-"${RUST_DEP_CURR}" + ) +" + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + system-bootstrap? ( ${BOOTSTRAP_DEPEND} ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND} + llvm-libunwind? ( sys-libs/llvm-libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + sys-apps/lsb-release +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.62.1-musl-dynamic-linking.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch +) + +S="${WORKDIR}/${MY_P}-src" + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +eapply_crate() { + pushd "${1:?}" > /dev/null || die + local patch="${2:?}" + eapply "${patch}" + "${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die + popd > /dev/null || die +} + +toml_usex() { + usex "${1}" true false +} + +bootstrap_rust_version_check() { + # never call from pkg_pretend. eselect-rust may be not installed yet. + [[ ${MERGE_TYPE} == binary ]] && return + local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))" + local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))" + local rustc_version=( $(eselect --brief rust show 2>/dev/null) ) + rustc_version=${rustc_version[0]#rust-bin-} + rustc_version=${rustc_version#rust-} + + [[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output" + + if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then + eerror "Rust >=${rustc_wanted} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too old" + elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then + eerror "Rust <${rustc_toonew} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too new" + else + einfo "Using rust ${rustc_version} to build" + fi +} + +pre_build_checks() { + local M=8192 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex system-bootstrap 0 1024) + ${M} )) + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include <ciso646> +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + + use system-bootstrap && bootstrap_rust_version_check + + if use system-llvm; then + llvm_pkg_setup + + local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +esetup_unwind_hack() { + # https://bugs.gentoo.org/870280 + # this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system. + # it should trigger for internal bootstrap or system-bootstrap with rust-bin. + # the whole idea is for stage0 to bootstrap with fake libgcc_s. + # final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler. + local fakelib="${T}/fakelib" + mkdir -p "${fakelib}" || die + # we need both symlinks, one for cargo runtime, other for linker. + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die + export LD_LIBRARY_PATH="${fakelib}" + export RUSTFLAGS+=" -L${fakelib}" + # this is a literally magic variable that gets through cargo cache, without it some + # crates ignore RUSTFLAGS. + # this variable can not contain leading space. + export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}" +} + +src_prepare() { + eapply_crate vendor/openssl-sys "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch + + # Clear vendor checksums for crates that we patched to bump libc. + for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \ + terminal_size tracing-tree; do + clear_vendor_checksums "${i}" + done + + if ! use system-bootstrap; then + has_version sys-devel/gcc || esetup_unwind_hack + local rust_stage0_root="${WORKDIR}"/rust-stage0 + local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)" + + "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \ + --without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die + fi + + default +} + +src_configure() { + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use profiler && tools+=',"rust-demangler"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer"' + use rust-src && tools+=',"src"' + + local rust_stage0_root + if use system-bootstrap; then + local printsysroot + printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")" + rust_stage0_root="${printsysroot}" + else + rust_stage0_root="${WORKDIR}"/rust-stage0 + fi + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}" + CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}" + CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}" + CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}" + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_target}" + host = ["${rust_target}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = $(toml_usex profiler) + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + default-linker = "$(tc-getCC)" + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = false + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + lto = "$(usex lto fat off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/<target> + + # extra targets defined as a bash array + # spec format: <LLVM target>:<rust-target>:<CTARGET> + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form <LLVM target>:<rust-target>:<CTARGET> + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, <rust-target>:<CTARGET> + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use profiler && symlinks+=( rust-demangler ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver> + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + LDPATH="${EPREFIX}/usr/lib/rust/lib" + MANPATH="${EPREFIX}/usr/lib/rust/man" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/libexec + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use profiler; then + echo /usr/bin/rust-demangler >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version dev-debug/lldb; then + elog "Rust installs a helper script for calling GDB and LLDB," + elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.74.1.ebuild b/dev-lang/rust/rust-1.74.1.ebuild new file mode 100644 index 0000000..5fec8f3 --- /dev/null +++ b/dev-lang/rust/rust-1.74.1.ebuild @@ -0,0 +1,794 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) + +inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \ + multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SLOT="beta/${PV}" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + ABI_VER="$(ver_cut 1-2)" + SLOT="stable/${ABI_VER}" + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" +fi + +RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0" + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) + !system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) ) +" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +# Please keep the LLVM dependency block separate. Since LLVM is slotted, +# we need to *really* make sure we're not pulling more than one slot +# simultaneously. + +# How to use it: +# List all the working slots in LLVM_VALID_SLOTS, newest first. +LLVM_VALID_SLOTS=( 17 ) +LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}" + +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +# (-) usedep needed because we may build with older llvm without that target +LLVM_DEPEND="|| ( " +for _s in ${LLVM_VALID_SLOTS[@]}; do + LLVM_DEPEND+=" ( " + for _x in ${ALL_LLVM_TARGETS[@]}; do + LLVM_DEPEND+=" + ${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] ) + wasm? ( sys-devel/lld:${_s} )" + done + LLVM_DEPEND+=" )" +done +unset _s _x +LLVM_DEPEND+=" ) + <sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):= +" + +# to bootstrap we need at least exactly previous version, or same. +# most of the time previous versions fail to bootstrap with newer +# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok, +# but it fails to bootstrap with 1.48.x +# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json +RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*" +RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*" +BOOTSTRAP_DEPEND="|| + ( + =dev-lang/rust-"${RUST_DEP_PREV}" + =dev-lang/rust-bin-"${RUST_DEP_PREV}" + =dev-lang/rust-"${RUST_DEP_CURR}" + =dev-lang/rust-bin-"${RUST_DEP_CURR}" + ) +" + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + system-bootstrap? ( ${BOOTSTRAP_DEPEND} ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND} + llvm-libunwind? ( sys-libs/llvm-libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + sys-apps/lsb-release +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.62.1-musl-dynamic-linking.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch +) + +S="${WORKDIR}/${MY_P}-src" + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +eapply_crate() { + pushd "${1:?}" > /dev/null || die + local patch="${2:?}" + eapply "${patch}" + "${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die + popd > /dev/null || die +} + +toml_usex() { + usex "${1}" true false +} + +bootstrap_rust_version_check() { + # never call from pkg_pretend. eselect-rust may be not installed yet. + [[ ${MERGE_TYPE} == binary ]] && return + local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))" + local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))" + local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) ) + rustc_version=${rustc_version[0]#rust-bin-} + rustc_version=${rustc_version#rust-} + + [[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output" + + if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then + eerror "Rust >=${rustc_wanted} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too old" + elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then + eerror "Rust <${rustc_toonew} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too new" + else + einfo "Using rust ${rustc_version} to build" + fi +} + +pre_build_checks() { + local M=8192 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex system-bootstrap 0 1024) + ${M} )) + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include <ciso646> +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include" + export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)" + + use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling" + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + use system-bootstrap && bootstrap_rust_version_check + + if use system-llvm; then + llvm_pkg_setup + + local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +esetup_unwind_hack() { + # https://bugs.gentoo.org/870280 + # this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system. + # it should trigger for internal bootstrap or system-bootstrap with rust-bin. + # the whole idea is for stage0 to bootstrap with fake libgcc_s. + # final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler. + local fakelib="${T}/fakelib" + mkdir -p "${fakelib}" || die + # we need both symlinks, one for cargo runtime, other for linker. + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die + export LD_LIBRARY_PATH="${fakelib}" + export RUSTFLAGS+=" -L${fakelib}" + # this is a literally magic variable that gets through cargo cache, without it some + # crates ignore RUSTFLAGS. + # this variable can not contain leading space. + export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}" +} + +src_prepare() { + eapply_crate vendor/openssl-sys "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch + + # Clear vendor checksums for crates that we patched to bump libc. + # NOTE: refresh this on each bump. + #for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \ + # terminal_size tracing-tree; do + # clear_vendor_checksums "${i}" + #done + + if ! use system-bootstrap; then + has_version sys-devel/gcc || esetup_unwind_hack + local rust_stage0_root="${WORKDIR}"/rust-stage0 + local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")" + + "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \ + --without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die + fi + + default +} + +src_configure() { + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use profiler && tools+=',"rust-demangler"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer"' + use rust-src && tools+=',"src"' + + local rust_stage0_root + if use system-bootstrap; then + local printsysroot + printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")" + rust_stage0_root="${printsysroot}" + else + rust_stage0_root="${WORKDIR}"/rust-stage0 + fi + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = $(toml_usex profiler) + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = false + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + lto = "$(usex lto fat off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/<target> + + # extra targets defined as a bash array + # spec format: <LLVM target>:<rust-target>:<CTARGET> + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form <LLVM target>:<rust-target>:<CTARGET> + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, <rust-target>:<CTARGET> + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use profiler && symlinks+=( rust-demangler ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver> + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + LDPATH="${EPREFIX}/usr/lib/rust/lib" + MANPATH="${EPREFIX}/usr/lib/rust/man" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/libexec + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use profiler; then + echo /usr/bin/rust-demangler >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version dev-debug/lldb; then + elog "Rust installs a helper script for calling GDB and LLDB," + elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.75.0-r1.ebuild b/dev-lang/rust/rust-1.75.0-r1.ebuild new file mode 100644 index 0000000..d874d98 --- /dev/null +++ b/dev-lang/rust/rust-1.75.0-r1.ebuild @@ -0,0 +1,797 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) + +inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \ + multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SLOT="beta/${PV}" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + ABI_VER="$(ver_cut 1-2)" + SLOT="stable/${ABI_VER}" + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86" +fi + +RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0" + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) + !system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) ) +" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +# Please keep the LLVM dependency block separate. Since LLVM is slotted, +# we need to *really* make sure we're not pulling more than one slot +# simultaneously. + +# How to use it: +# List all the working slots in LLVM_VALID_SLOTS, newest first. +LLVM_VALID_SLOTS=( 17 ) +LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}" + +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +# (-) usedep needed because we may build with older llvm without that target +LLVM_DEPEND="|| ( " +for _s in ${LLVM_VALID_SLOTS[@]}; do + LLVM_DEPEND+=" ( " + for _x in ${ALL_LLVM_TARGETS[@]}; do + LLVM_DEPEND+=" + ${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] ) + wasm? ( sys-devel/lld:${_s} )" + done + LLVM_DEPEND+=" )" +done +unset _s _x +LLVM_DEPEND+=" ) + <sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):= +" + +# to bootstrap we need at least exactly previous version, or same. +# most of the time previous versions fail to bootstrap with newer +# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok, +# but it fails to bootstrap with 1.48.x +# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json +RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*" +RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*" +BOOTSTRAP_DEPEND="|| + ( + =dev-lang/rust-"${RUST_DEP_PREV}" + =dev-lang/rust-bin-"${RUST_DEP_PREV}" + =dev-lang/rust-"${RUST_DEP_CURR}" + =dev-lang/rust-bin-"${RUST_DEP_CURR}" + ) +" + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + system-bootstrap? ( ${BOOTSTRAP_DEPEND} ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND} + llvm-libunwind? ( sys-libs/llvm-libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + sys-apps/lsb-release +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.75.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch + # This patch shouldn't be necessary for later versions of Rust because its + # code was backported from master. + "${FILESDIR}"/1.75.0-handle-vendored-sources.patch +) + +S="${WORKDIR}/${MY_P}-src" + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +eapply_crate() { + pushd "${1:?}" > /dev/null || die + local patch="${2:?}" + eapply "${patch}" + "${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die + popd > /dev/null || die +} + +toml_usex() { + usex "${1}" true false +} + +bootstrap_rust_version_check() { + # never call from pkg_pretend. eselect-rust may be not installed yet. + [[ ${MERGE_TYPE} == binary ]] && return + local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))" + local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))" + local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) ) + rustc_version=${rustc_version[0]#rust-bin-} + rustc_version=${rustc_version#rust-} + + [[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output" + + if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then + eerror "Rust >=${rustc_wanted} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too old" + elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then + eerror "Rust <${rustc_toonew} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too new" + else + einfo "Using rust ${rustc_version} to build" + fi +} + +pre_build_checks() { + local M=8192 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex system-bootstrap 0 1024) + ${M} )) + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include <ciso646> +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include" + export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)" + + use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling" + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + use system-bootstrap && bootstrap_rust_version_check + + if use system-llvm; then + llvm_pkg_setup + + local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +esetup_unwind_hack() { + # https://bugs.gentoo.org/870280 + # this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system. + # it should trigger for internal bootstrap or system-bootstrap with rust-bin. + # the whole idea is for stage0 to bootstrap with fake libgcc_s. + # final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler. + local fakelib="${T}/fakelib" + mkdir -p "${fakelib}" || die + # we need both symlinks, one for cargo runtime, other for linker. + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die + export LD_LIBRARY_PATH="${fakelib}" + export RUSTFLAGS+=" -L${fakelib}" + # this is a literally magic variable that gets through cargo cache, without it some + # crates ignore RUSTFLAGS. + # this variable can not contain leading space. + export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}" +} + +src_prepare() { + eapply_crate vendor/openssl-sys "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch + + # Clear vendor checksums for crates that we patched to bump libc. + # NOTE: refresh this on each bump. + #for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \ + # terminal_size tracing-tree; do + # clear_vendor_checksums "${i}" + #done + + if ! use system-bootstrap; then + has_version sys-devel/gcc || esetup_unwind_hack + local rust_stage0_root="${WORKDIR}"/rust-stage0 + local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")" + + "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \ + --without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die + fi + + default +} + +src_configure() { + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use profiler && tools+=',"rust-demangler"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer"' + use rust-src && tools+=',"src"' + + local rust_stage0_root + if use system-bootstrap; then + local printsysroot + printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")" + rust_stage0_root="${printsysroot}" + else + rust_stage0_root="${WORKDIR}"/rust-stage0 + fi + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = $(toml_usex profiler) + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = false + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + lto = "$(usex lto fat off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/<target> + + # extra targets defined as a bash array + # spec format: <LLVM target>:<rust-target>:<CTARGET> + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form <LLVM target>:<rust-target>:<CTARGET> + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, <rust-target>:<CTARGET> + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use profiler && symlinks+=( rust-demangler ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver> + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + LDPATH="${EPREFIX}/usr/lib/rust/lib" + MANPATH="${EPREFIX}/usr/lib/rust/man" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/libexec + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use profiler; then + echo /usr/bin/rust-demangler >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version dev-debug/lldb; then + elog "Rust installs a helper script for calling GDB and LLDB," + elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.76.0-r1.ebuild b/dev-lang/rust/rust-1.76.0-r1.ebuild new file mode 100644 index 0000000..0f297fa --- /dev/null +++ b/dev-lang/rust/rust-1.76.0-r1.ebuild @@ -0,0 +1,797 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) + +inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \ + multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SLOT="beta/${PV}" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + ABI_VER="$(ver_cut 1-2)" + SLOT="stable/${ABI_VER}" + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0" + +DESCRIPTION="Language empowering everyone to build reliable and efficient software" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) + !system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) ) +" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +# Please keep the LLVM dependency block separate. Since LLVM is slotted, +# we need to *really* make sure we're not pulling more than one slot +# simultaneously. + +# How to use it: +# List all the working slots in LLVM_VALID_SLOTS, newest first. +LLVM_VALID_SLOTS=( 17 ) +LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}" + +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +# (-) usedep needed because we may build with older llvm without that target +LLVM_DEPEND="|| ( " +for _s in ${LLVM_VALID_SLOTS[@]}; do + LLVM_DEPEND+=" ( " + for _x in ${ALL_LLVM_TARGETS[@]}; do + LLVM_DEPEND+=" + ${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] ) + wasm? ( sys-devel/lld:${_s} )" + done + LLVM_DEPEND+=" )" +done +unset _s _x +LLVM_DEPEND+=" ) + <sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):= +" + +# to bootstrap we need at least exactly previous version, or same. +# most of the time previous versions fail to bootstrap with newer +# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok, +# but it fails to bootstrap with 1.48.x +# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json +RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*" +RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*" +BOOTSTRAP_DEPEND="|| + ( + =dev-lang/rust-"${RUST_DEP_PREV}" + =dev-lang/rust-bin-"${RUST_DEP_PREV}" + =dev-lang/rust-"${RUST_DEP_CURR}" + =dev-lang/rust-bin-"${RUST_DEP_CURR}" + ) +" + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + system-bootstrap? ( ${BOOTSTRAP_DEPEND} ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND} + llvm-libunwind? ( sys-libs/llvm-libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + sys-apps/lsb-release +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.75.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch + "${FILESDIR}"/1.75.0-handle-vendored-sources.patch # remove for >=1.77.0 + "${FILESDIR}"/1.76.0-loong-code-model.patch # remove for >=1.78.0 +) + +S="${WORKDIR}/${MY_P}-src" + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +eapply_crate() { + pushd "${1:?}" > /dev/null || die + local patch="${2:?}" + eapply "${patch}" + "${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die + popd > /dev/null || die +} + +toml_usex() { + usex "${1}" true false +} + +bootstrap_rust_version_check() { + # never call from pkg_pretend. eselect-rust may be not installed yet. + [[ ${MERGE_TYPE} == binary ]] && return + local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))" + local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))" + local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) ) + rustc_version=${rustc_version[0]#rust-bin-} + rustc_version=${rustc_version#rust-} + + [[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output" + + if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then + eerror "Rust >=${rustc_wanted} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too old" + elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then + eerror "Rust <${rustc_toonew} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too new" + else + einfo "Using rust ${rustc_version} to build" + fi +} + +pre_build_checks() { + local M=8192 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex system-bootstrap 0 1024) + ${M} )) + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include <ciso646> +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include" + export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)" + + use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling" + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + use system-bootstrap && bootstrap_rust_version_check + + if use system-llvm; then + llvm_pkg_setup + + local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +esetup_unwind_hack() { + # https://bugs.gentoo.org/870280 + # this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system. + # it should trigger for internal bootstrap or system-bootstrap with rust-bin. + # the whole idea is for stage0 to bootstrap with fake libgcc_s. + # final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler. + local fakelib="${T}/fakelib" + mkdir -p "${fakelib}" || die + # we need both symlinks, one for cargo runtime, other for linker. + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die + export LD_LIBRARY_PATH="${fakelib}" + export RUSTFLAGS+=" -L${fakelib}" + # this is a literally magic variable that gets through cargo cache, without it some + # crates ignore RUSTFLAGS. + # this variable can not contain leading space. + export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}" +} + +src_prepare() { + eapply_crate vendor/openssl-sys "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch + + # Clear vendor checksums for crates that we patched to bump libc. + # NOTE: refresh this on each bump. + #for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \ + # terminal_size tracing-tree; do + # clear_vendor_checksums "${i}" + #done + + if ! use system-bootstrap; then + has_version sys-devel/gcc || esetup_unwind_hack + local rust_stage0_root="${WORKDIR}"/rust-stage0 + local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")" + + "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \ + --without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die + fi + + default +} + +src_configure() { + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use profiler && tools+=',"rust-demangler"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer"' + use rust-src && tools+=',"src"' + + local rust_stage0_root + if use system-bootstrap; then + local printsysroot + printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")" + rust_stage0_root="${printsysroot}" + else + rust_stage0_root="${WORKDIR}"/rust-stage0 + fi + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = $(toml_usex profiler) + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = false + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/<target> + + # extra targets defined as a bash array + # spec format: <LLVM target>:<rust-target>:<CTARGET> + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form <LLVM target>:<rust-target>:<CTARGET> + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, <rust-target>:<CTARGET> + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use profiler && symlinks+=( rust-demangler ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver> + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + LDPATH="${EPREFIX}/usr/lib/rust/lib" + MANPATH="${EPREFIX}/usr/lib/rust/man" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/libexec + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use profiler; then + echo /usr/bin/rust-demangler >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version dev-debug/lldb; then + elog "Rust installs a helper script for calling GDB and LLDB," + elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-lang/rust/rust-1.77.1.ebuild b/dev-lang/rust/rust-1.77.1.ebuild new file mode 100644 index 0000000..c441f51 --- /dev/null +++ b/dev-lang/rust/rust-1.77.1.ebuild @@ -0,0 +1,797 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) + +inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \ + multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig + +if [[ ${PV} = *beta* ]]; then + betaver=${PV//*beta} + BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}" + MY_P="rustc-beta" + SLOT="beta/${PV}" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" +else + ABI_VER="$(ver_cut 1-2)" + SLOT="stable/${ABI_VER}" + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0" + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI=" + https://static.rust-lang.org/dist/${SRC} + verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc ) + !system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) ) +" + +# keep in sync with llvm ebuild of the same version as bundled one. +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai + LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE + WebAssembly X86 XCore Xtensa ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?} + +LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4" + +IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}" + +# Please keep the LLVM dependency block separate. Since LLVM is slotted, +# we need to *really* make sure we're not pulling more than one slot +# simultaneously. + +# How to use it: +# List all the working slots in LLVM_VALID_SLOTS, newest first. +LLVM_VALID_SLOTS=( 17 ) +LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}" + +# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation +# (-) usedep needed because we may build with older llvm without that target +LLVM_DEPEND="|| ( " +for _s in ${LLVM_VALID_SLOTS[@]}; do + LLVM_DEPEND+=" ( " + for _x in ${ALL_LLVM_TARGETS[@]}; do + LLVM_DEPEND+=" + ${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] ) + wasm? ( sys-devel/lld:${_s} )" + done + LLVM_DEPEND+=" )" +done +unset _s _x +LLVM_DEPEND+=" ) + <sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):= +" + +# to bootstrap we need at least exactly previous version, or same. +# most of the time previous versions fail to bootstrap with newer +# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok, +# but it fails to bootstrap with 1.48.x +# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json +RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*" +RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*" +BOOTSTRAP_DEPEND="|| + ( + =dev-lang/rust-"${RUST_DEP_PREV}" + =dev-lang/rust-bin-"${RUST_DEP_PREV}" + =dev-lang/rust-"${RUST_DEP_CURR}" + =dev-lang/rust-bin-"${RUST_DEP_CURR}" + ) +" + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + system-bootstrap? ( ${BOOTSTRAP_DEPEND} ) + !system-llvm? ( + >=dev-build/cmake-3.13.4 + app-alternatives/ninja + ) + test? ( dev-debug/gdb ) + verify-sig? ( sec-keys/openpgp-keys-rust ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + dev-libs/openssl:0= + system-llvm? ( + ${LLVM_DEPEND} + llvm-libunwind? ( sys-libs/llvm-libunwind:= ) + ) + !system-llvm? ( + !llvm-libunwind? ( + elibc_musl? ( sys-libs/libunwind:= ) + ) + ) +" + +RDEPEND="${DEPEND} + app-eselect/eselect-rust + sys-apps/lsb-release +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + rust-analyzer? ( rust-src ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warning +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + usr/lib/${PN}/${PV}/libexec/.* + usr/lib/${PN}/${PV}/lib/lib.*.so + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_SONAME=" + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so +" + +QA_PRESTRIPPED=" + usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o +" + +# An rmeta file is custom binary format that contains the metadata for the crate. +# rmeta files do not support linking, since they do not contain compiled object files. +# so we can safely silence the warning for this QA check. +QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta" + +# causes double bootstrap +RESTRICT="test" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc + +PATCHES=( + "${FILESDIR}"/1.75.0-musl-dynamic-linking.patch + "${FILESDIR}"/1.74.1-cross-compile-libz.patch + #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh + "${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.67.0-doc-wasm.patch + "${FILESDIR}"/1.76.0-loong-code-model.patch # remove for >=1.78.0 +) + +S="${WORKDIR}/${MY_P}-src" + +clear_vendor_checksums() { + sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die +} + +eapply_crate() { + pushd "${1:?}" > /dev/null || die + local patch="${2:?}" + eapply "${patch}" + "${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die + popd > /dev/null || die +} + +toml_usex() { + usex "${1}" true false +} + +bootstrap_rust_version_check() { + # never call from pkg_pretend. eselect-rust may be not installed yet. + [[ ${MERGE_TYPE} == binary ]] && return + local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))" + local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))" + local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) ) + rustc_version=${rustc_version[0]#rust-bin-} + rustc_version=${rustc_version#rust-} + + [[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output" + + if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then + eerror "Rust >=${rustc_wanted} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too old" + elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then + eerror "Rust <${rustc_toonew} is required" + eerror "please run 'eselect rust' and set correct rust version" + die "selected rust version is too new" + else + einfo "Using rust ${rustc_version} to build" + fi +} + +pre_build_checks() { + local M=8192 + # multiply requirements by 1.3 if we are doing x86-multilib + if use amd64; then + M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 )) + fi + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + # add 2G if we compile llvm and 256M per llvm_target + if ! use system-llvm; then + M=$(( 2048 + ${M} )) + local ltarget + for ltarget in ${ALL_LLVM_TARGETS[@]}; do + M=$(( $(usex ${ltarget} 256 0) + ${M} )) + done + fi + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 2 1) * ${M} )) + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + M=$(( 15 * ${M} / 10 )) + fi + eshopts_pop + M=$(( $(usex system-bootstrap 0 1024) + ${M} )) + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} +} + +llvm_check_deps() { + has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]" +} + +# Is LLVM being linked against libc++? +is_libcxx_linked() { + local code='#include <ciso646> +#if defined(_LIBCPP_VERSION) + HAVE_LIBCXX +#endif +' + local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1 + [[ ${out} == *HAVE_LIBCXX* ]] +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + if tc-is-cross-compiler; then + export PKG_CONFIG_ALLOW_CROSS=1 + export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig" + export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include" + export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)" + + use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling" + use system-llvm && die "USE=system-llvm not allowed when cross-compiling" + local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")" + use "llvm_targets_${cross_llvm_target}" || \ + die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling" + fi + + use system-bootstrap && bootstrap_rust_version_check + + if use system-llvm; then + llvm_pkg_setup + + local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + export LLVM_LINK_SHARED=1 + export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)" + fi +} + +esetup_unwind_hack() { + # https://bugs.gentoo.org/870280 + # this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system. + # it should trigger for internal bootstrap or system-bootstrap with rust-bin. + # the whole idea is for stage0 to bootstrap with fake libgcc_s. + # final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler. + local fakelib="${T}/fakelib" + mkdir -p "${fakelib}" || die + # we need both symlinks, one for cargo runtime, other for linker. + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die + ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die + export LD_LIBRARY_PATH="${fakelib}" + export RUSTFLAGS+=" -L${fakelib}" + # this is a literally magic variable that gets through cargo cache, without it some + # crates ignore RUSTFLAGS. + # this variable can not contain leading space. + export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}" +} + +src_prepare() { + eapply_crate vendor/openssl-sys-0.9.92 "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch + eapply_crate vendor/openssl-sys "${FILESDIR}"/1.77.1-libressl-openssl-sys.patch + + # Clear vendor checksums for crates that we patched to bump libc. + # NOTE: refresh this on each bump. + #for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \ + # terminal_size tracing-tree; do + # clear_vendor_checksums "${i}" + #done + + if ! use system-bootstrap; then + has_version sys-devel/gcc || esetup_unwind_hack + local rust_stage0_root="${WORKDIR}"/rust-stage0 + local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")" + + "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \ + --without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die + fi + + default +} + +src_configure() { + filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231 + + local rust_target="" rust_targets="" arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets+=",\"wasm32-unknown-unknown\"" + if use system-llvm; then + # un-hardcode rust-lld linker for this target + # https://bugs.gentoo.org/715348 + sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + # cargo and rustdoc are mandatory and should always be included + local tools='"cargo","rustdoc"' + use clippy && tools+=',"clippy"' + use miri && tools+=',"miri"' + use profiler && tools+=',"rust-demangler"' + use rustfmt && tools+=',"rustfmt"' + use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"' + use rust-src && tools+=',"src"' + + local rust_stage0_root + if use system-bootstrap; then + local printsysroot + printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")" + rust_stage0_root="${printsysroot}" + else + rust_stage0_root="${WORKDIR}"/rust-stage0 + fi + # in case of prefix it will be already prefixed, as --print sysroot returns full path + [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory" + + rust_target="$(rust_abi)" + rust_build="$(rust_abi "${CBUILD}")" + rust_host="$(rust_abi "${CHOST}")" + + local cm_btype="$(usex debug DEBUG RELEASE)" + cat <<- _EOF_ > "${S}"/config.toml + changelog-seen = 2 + [llvm] + download-ci-llvm = false + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + ninja = true + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "" + link-shared = $(toml_usex system-llvm) + $(if is_libcxx_linked; then + # https://bugs.gentoo.org/732632 + echo "use-libcxx = true" + echo "static-libstdcpp = false" + fi) + $(case "${rust_target}" in + i586-*-linux-*) + # https://github.com/rust-lang/rust/issues/93059 + echo 'cflags = "-fcf-protection=none"' + echo 'cxxflags = "-fcf-protection=none"' + echo 'ldflags = "-fcf-protection=none"' + ;; + *) + ;; + esac) + enable-warnings = false + [llvm.build-config] + CMAKE_VERBOSE_MAKEFILE = "ON" + $(if ! tc-is-cross-compiler; then + # When cross-compiling, LLVM is compiled twice, once for host and + # once for target. Unfortunately, this build configuration applies + # to both, which means any flags applicable to one target but not + # the other will break. Conditionally disable respecting user + # flags when cross-compiling. + echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\"" + echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\"" + echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\"" + echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\"" + fi) + [build] + build-stage = 2 + test-stage = 2 + build = "${rust_build}" + host = ["${rust_host}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + rustfmt = "${rust_stage0_root}/bin/rustfmt" + docs = $(toml_usex doc) + compiler-docs = false + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = $(toml_usex profiler) + cargo-native-static = false + [install] + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" + libdir = "lib" + mandir = "share/man" + [rust] + # https://github.com/rust-lang/rust/issues/54872 + codegen-units-std = 1 + optimize = true + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + debug-assertions-std = $(toml_usex debug) + debuginfo-level = $(usex debug 2 0) + debuginfo-level-rustc = $(usex debug 2 0) + debuginfo-level-std = $(usex debug 2 0) + debuginfo-level-tools = $(usex debug 2 0) + debuginfo-level-tests = 0 + backtrace = true + incremental = false + $(if ! tc-is-cross-compiler; then + echo "default-linker = \"$(tc-getCC)\"" + fi) + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + description = "gentoo" + rpath = false + verbose-tests = true + optimize-tests = $(toml_usex !debug) + codegen-tests = true + dist-src = false + remap-debuginfo = true + lld = $(usex system-llvm false $(toml_usex wasm)) + # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it + # https://github.com/rust-lang/rust/issues/74976 + # https://github.com/rust-lang/rust/issues/76526 + deny-warnings = $(usex wasm $(usex doc false true) true) + backtrace-on-ice = true + jemalloc = false + # See https://github.com/rust-lang/rust/issues/121124 + lto = "$(usex lto thin off)" + [dist] + src-tarball = false + compression-formats = ["xz"] + compression-profile = "balanced" + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + export CFLAGS_${rust_target//-/_}="${arch_cflags}" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + ar = "$(tc-getAR)" + cc = "$(tc-getCC)" + cxx = "$(tc-getCXX)" + linker = "$(tc-getCC)" + ranlib = "$(tc-getRANLIB)" + llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; + # but we patch it and set to false here as well + if use elibc_musl; then + cat <<- _EOF_ >> "${S}"/config.toml + crt-static = false + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld rust-lld)" + # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483 + profiler = false + _EOF_ + fi + + if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below + # experimental cross support + # discussion: https://bugs.gentoo.org/679878 + # TODO: c*flags, clang, system-llvm, cargo.eclass target support + # it would be much better if we could split out stdlib + # complilation to separate ebuild and abuse CATEGORY to + # just install to /usr/lib/rustlib/<target> + + # extra targets defined as a bash array + # spec format: <LLVM target>:<rust-target>:<CTARGET> + # best place would be /etc/portage/env/dev-lang/rust + # Example: + # RUST_CROSS_TARGETS=( + # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu" + # ) + # no extra hand holding is done, no target transformations, all + # values are passed as-is with just basic checks, so it's up to user to supply correct values + # valid rust targets can be obtained with + # rustc --print target-list + # matching cross toolchain has to be installed + # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one) + # only gcc toolchains installed with crossdev are checked for now. + + # BUG: we can't pass host flags to cross compiler, so just filter for now + # BUG: this should be more fine-grained. + filter-flags '-mcpu=*' '-march=*' '-mtune=*' + + local cross_target_spec + for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do + # extracts first element form <LLVM target>:<rust-target>:<CTARGET> + local cross_llvm_target="${cross_target_spec%%:*}" + # extracts toolchain triples, <rust-target>:<CTARGET> + local cross_triples="${cross_target_spec#*:}" + # extracts first element after before : separator + local cross_rust_target="${cross_triples%%:*}" + # extracts last element after : separator + local cross_toolchain="${cross_triples##*:}" + use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled" + command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain" + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${cross_rust_target}] + ar = "${cross_toolchain}-ar" + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + ranlib = "${cross_toolchain}-ranlib" + _EOF_ + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + if [[ "${cross_toolchain}" == *-musl* ]]; then + cat <<- _EOF_ >> "${S}"/config.toml + musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr" + _EOF_ + fi + + # append cross target to "normal" target list + # example 'target = ["powerpc64le-unknown-linux-gnu"]' + # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]' + + rust_targets="${rust_targets},\"${cross_rust_target}\"" + sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die + + ewarn + ewarn "Enabled ${cross_rust_target} rust target" + ewarn "Using ${cross_toolchain} cross toolchain" + ewarn + if ! has_version -b 'sys-devel/binutils[multitarget]' ; then + ewarn "'sys-devel/binutils[multitarget]' is not installed" + ewarn "'strip' will be unable to strip cross libraries" + ewarn "cross targets will be installed with full debug information" + ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files" + ewarn + ewarn "Alternatively llvm-strip can be used, it supports stripping any target" + ewarn "define STRIP=\"llvm-strip\" to use it (experimental)" + ewarn + fi + done + fi # I_KNOW_WHAT_I_AM_DOING_CROSS + + einfo "Rust configured with the following flags:" + echo + echo RUSTFLAGS="\"${RUSTFLAGS}\"" + echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\"" + echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\"" + echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\"" + env | grep "CARGO_TARGET_.*_RUSTFLAGS=" + env | grep "CFLAGS_.*" + echo + einfo "config.toml contents:" + cat "${S}"/config.toml || die + echo +} + +src_compile() { + RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die +} + +src_test() { + # https://rustc-dev-guide.rust-lang.org/tests/intro.html + + # those are basic and codegen tests. + local tests=( + codegen + codegen-units + compile-fail + incremental + mir-opt + pretty + run-make + ) + + # fails if llvm is not built with ALL targets. + # and known to fail with system llvm sometimes. + use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra builds + # TODO: instead of skipping, just make some nonfatal. + if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then + tests+=( + rustdoc + rustdoc-js + rustdoc-js-std + rustdoc-ui + run-make-fulldeps + ui + ui-fulldeps + ) + fi + + local i failed=() + einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}" + for i in "${tests[@]}"; do + local t="src/test/${i}" + einfo "rust_src_test: running ${t}" + if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \ + -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}" + then + failed+=( "${t}" ) + eerror "rust_src_test: ${t} failed" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + + # bug #689562, #689160 + rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo + + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) + + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use profiler && symlinks+=( rust-demangler ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + use rust-analyzer && symlinks+=( rust-analyzer ) + + einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver> + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then + einfo "Installing ${i} symlink" + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + else + ewarn "${i} symlink requested, but source file not found" + ewarn "please report this" + fi + dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}" + done + + # symlinks to switch components to active rust in eselect + dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}" + dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}" + dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + LDPATH="${EPREFIX}/usr/lib/rust/lib" + MANPATH="${EPREFIX}/usr/lib/rust/man" + _EOF_ + + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die + rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die + + # note: eselect-rust adds EROOT to all paths below + cat <<-_EOF_ > "${T}/provider-${P}" + /usr/bin/cargo + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /usr/bin/rust-lldb + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/libexec + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use miri; then + echo /usr/bin/miri >> "${T}/provider-${P}" + echo /usr/bin/cargo-miri >> "${T}/provider-${P}" + fi + if use profiler; then + echo /usr/bin/rust-demangler >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + if use rust-analyzer; then + echo /usr/bin/rust-analyzer >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" + + if use dist; then + insinto "/usr/lib/${PN}/${PV}/dist" + doins -r "${S}/build/dist/." + fi +} + +pkg_postinst() { + eselect rust update + + if has_version dev-debug/gdb || has_version dev-debug/lldb; then + elog "Rust installs a helper script for calling GDB and LLDB," + elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}." + fi + + if has_version app-editors/emacs; then + elog "install app-emacs/rust-mode to get emacs support for rust." + fi + + if has_version app-editors/gvim || has_version app-editors/vim; then + elog "install app-vim/rust-vim to get vim support for rust." + fi +} + +pkg_postrm() { + eselect rust cleanup +} diff --git a/dev-libs/libressl/Manifest b/dev-libs/libressl/Manifest new file mode 100644 index 0000000..ac00a00 --- /dev/null +++ b/dev-libs/libressl/Manifest @@ -0,0 +1,8 @@ +DIST libressl-3.8.3.tar.gz 4475058 BLAKE2B f29ca56e6a717c09efd2510c97ef38a4f037b38352c3b02badad9db841c636628cbebdd9a1f69e9138fee038764326559939b0221bf335aaf03b415f4fe92d66 SHA512 b8107fc809d5a095a49cebe3192a9b609441dfaa86c7bee472c34c177854d1d8ca983eb071828593f98e0c161f75176dabeefe6067ba417b2ecbaea5aa20645f +DIST libressl-3.8.3.tar.gz.asc 833 BLAKE2B 752c161854cbeeb3ff3e6d921728f723d4ae1dd391cf41a266fee3bb1575664b2608481db26706fb239469888ae0885194cfa727c59c4c0339d3962155594aa9 SHA512 a2a9e5e0cf6387674c7af9ca07531eee294e3c1c90862082af6d7aafc1953b1bb8ff79172ac2c6e2b9113c462622a7e4feb2a28824721288cb30d9b6ab21fa8a +DIST libressl-3.8.4.tar.gz 4467303 BLAKE2B 7ae939e012e1a8d98814e28caec86d5f36f7e01250f6201f6d46aa5a236a8fc0619b6bbe24d6ff70eb65eae767e9d43f26a714df317a1fd2b2dea0c0177ba50d SHA512 b8986a9e2c0a1f912770d2e55ed39b3ca0c072b8c98ecf2d22a3d36768c36b6f4588698dd248d8b585db1bd0a74f8995cc09a0ca3e707e680d87d4fa169f8941 +DIST libressl-3.8.4.tar.gz.asc 833 BLAKE2B 8c22b3a48db6d7155fae869ed44c14afaf34b5c6c421c3d5f8d6408192ae35576967f03213d31ad5e9e482bd088984faf0d69c7a03642f4cf0a177cf9d618789 SHA512 0f2b3147b1fc1dd58c3214905c43cdac94677fae51a0dc4775e3e17004d4e76b34a86126e2728a62d8845af8696860cb06b846f543a1a02a17912288d436b527 +DIST libressl-3.9.0.tar.gz 4360845 BLAKE2B 25ae0c4b8cad0fdfcc25d128cad1a8f9c45c9624c07a3d89cd134eeaa30c2359660ed0b31931fb6c0e70c1b6751a4c944189b9f836dea687b5b7875da54014d4 SHA512 66c595ff2f72310ff5bbea8f733c84067b7fea90612bcead3588f98da409d36fa0f9fbc3b59d1e91037714464b2288d3196e7ac80efe87268af961276e9aa3aa +DIST libressl-3.9.0.tar.gz.asc 833 BLAKE2B 077409f154ed81a07a48cc9269dd5206c9f7fffa57f5a0f504dee7aa758de33f492846ac217a5e63d4177498df1bde5061279cae5643b7d08e43667e97485ac8 SHA512 be810ed9f463b039ad9b2f425e9769a707bcce40c7d38379da1cc099be5ea70091dfaf358b5ae5b17a0da7ab9b43eed5dd274a7b8af0ceb40f73ea4240289491 +DIST libressl-3.9.1.tar.gz 4352796 BLAKE2B f757741a75bbd5ac7da6378165d8f4f63d0a0116f7a67dc65b6fb9b60519ca46007bfd9c74a0ecc17e340575da3c1e30fe9e2750f255ea1ada07fc720420ba33 SHA512 15426f8830761c84bdffa22d5db5a25aba16214c49197c231ca3b7ef0ca5bca473994df78a1fc758c302b06a9bf095255adac90eebe9f1767528c6b65b2ce0a1 +DIST libressl-3.9.1.tar.gz.asc 833 BLAKE2B ea81a791bbf48d0472f4966bd2aa38121bfc3fd2328134efd225ade92a3d3c71c7038b30e44fa227ca0906dc9ce0ead2cfd7d9b85a4072e50846c31711eb6900 SHA512 51b6dedac840f9b5bbe6f349ac17c0633bdaccd13a4dc8ee0e6c37ac19f9e1e479ebbe248ff7cf72566c2224a4523d98a8e53780bcea816f9d2b99b99e7cb1d2 diff --git a/dev-libs/libressl/files/libressl-2.8.3-solaris10.patch b/dev-libs/libressl/files/libressl-2.8.3-solaris10.patch new file mode 100644 index 0000000..20a0af0 --- /dev/null +++ b/dev-libs/libressl/files/libressl-2.8.3-solaris10.patch @@ -0,0 +1,69 @@ +From libressl Thu Jul 21 09:25:08 2016 +From: schily () schily ! net (Joerg Schilling) +Date: Thu, 21 Jul 2016 09:25:08 +0000 +To: libressl +Subject: Non-portable code in ./crypto/compat/getentropy_solaris.c +Message-Id: <579094f4.Ca9M384ri4oiBOIa%schily () schily ! net> +X-MARC-Message: https://marc.info/?l=libressl&m=146910737815443 + +Hi, + +the code works only on Solaris based on OpenSolaris-ON from February 18 2010 or +later. + +Many people however still use Solaris 10. + +BTW: there is an official portable ELF way based on the AUX vector to do the same +but this was unfortunately not made a public libc interface, so it would need to +be incorporated into your code: + +https://sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/src/lib/libc/port/gen/getauxv.c + +___getauxptr(AT_PHDR) returns the address of &phdr[0] +___getauxval(AT_PHENT) returns sizeof(phdr[0]) +___getauxval(AT_PHNUM) returns # phdr entries + + +Here is a patch to disable the non-portable code getting the code to compile at +all: + + + +--- a/crypto/compat/getentropy_solaris.c ++++ b/crypto/compat/getentropy_solaris.c +@@ -72,7 +72,9 @@ + static int getentropy_urandom(void *buf, size_t len, const char *path, + int devfscheck); + static int getentropy_fallback(void *buf, size_t len); ++#ifdef ElfW + static int getentropy_phdr(struct dl_phdr_info *info, size_t size, void *data); ++#endif + + int + getentropy(void *buf, size_t len) +@@ -244,6 +246,7 @@ + #endif + }; + ++#ifdef ElfW + static int + getentropy_phdr(struct dl_phdr_info *info, size_t size, void *data) + { +@@ -252,6 +255,7 @@ + SHA512_Update(ctx, &info->dlpi_addr, sizeof (info->dlpi_addr)); + return (0); + } ++#endif + + static int + getentropy_fallback(void *buf, size_t len) +@@ -290,7 +294,9 @@ + cnt += (int)tv.tv_usec; + } + ++#ifdef ElfW + dl_iterate_phdr(getentropy_phdr, &ctx); ++#endif + + for (ii = 0; ii < sizeof(cl)/sizeof(cl[0]); ii++) + HX(clock_gettime(cl[ii], &ts) == -1, ts); diff --git a/dev-libs/libressl/files/libressl-3.7.2-genrsa-rand.patch b/dev-libs/libressl/files/libressl-3.7.2-genrsa-rand.patch new file mode 100644 index 0000000..66fe21a --- /dev/null +++ b/dev-libs/libressl/files/libressl-3.7.2-genrsa-rand.patch @@ -0,0 +1,26 @@ +Gentoo's ssl-cert.eclass uses 'openssl genrsa -rand'. + +Upstream Issue: https://github.com/libressl/portable/issues/839 + +--- a/apps/openssl/genrsa.c.orig ++++ b/apps/openssl/genrsa.c +@@ -90,6 +90,7 @@ static struct { + unsigned long f4; + char *outfile; + char *passargout; ++ char *rand_dummy; + } cfg; + + static int +@@ -251,6 +252,11 @@ static const struct option genrsa_option + .desc = "Output file passphrase source", + .type = OPTION_ARG, + .opt.arg = &cfg.passargout, ++ }, ++ { ++ .name = "rand", ++ .type = OPTION_ARG, ++ .opt.arg = &cfg.rand_dummy, + }, + { NULL }, + }; diff --git a/dev-libs/libressl/libressl-3.8.3.ebuild b/dev-libs/libressl/libressl-3.8.3.ebuild new file mode 100644 index 0000000..13e5b8f --- /dev/null +++ b/dev-libs/libressl/libressl-3.8.3.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libressl.asc +inherit autotools multilib-minimal verify-sig + +DESCRIPTION="Free version of the SSL/TLS protocol forked from OpenSSL" +HOMEPAGE="https://www.libressl.org/" +SRC_URI=" + https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/${P}.tar.gz + verify-sig? ( https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/${P}.tar.gz.asc ) +" + +LICENSE="ISC openssl" +# Reflects ABI of libcrypto.so and libssl.so. Since these can differ, +# we'll try to use the max of either. However, if either change between +# versions, we have to change the subslot to trigger rebuild of consumers. +SLOT="0/55" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~s390 ~sparc x86 ~amd64-linux ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="+asm netcat static-libs test" +RESTRICT="!test? ( test )" + +PDEPEND="app-misc/ca-certificates" +BDEPEND="verify-sig? ( sec-keys/openpgp-keys-libressl )" +RDEPEND="netcat? ( + !net-analyzer/netcat + !net-analyzer/nmap[symlink] + !net-analyzer/openbsd-netcat +)" + +MULTILIB_WRAPPED_HEADERS=( /usr/include/openssl/opensslconf.h ) + +# LibreSSL checks for libc features during configure +QA_CONFIG_IMPL_DECL_SKIP=( + __va_copy + b64_ntop +) + +PATCHES=( + "${FILESDIR}"/${PN}-2.8.3-solaris10.patch + # Gentoo's ssl-cert.eclass uses 'openssl genrsa -rand' + # which LibreSSL doesn't support. + # https://github.com/libressl/portable/issues/839 + "${FILESDIR}"/${PN}-3.7.2-genrsa-rand.patch +) + +src_prepare() { + default + + eautoreconf +} + +multilib_src_configure() { + local ECONF_SOURCE="${S}" + local args=( + $(use_enable asm) + $(use_enable static-libs static) + $(use_enable netcat nc) + $(use_enable test tests) + ) + econf "${args[@]}" +} + +multilib_src_install_all() { + einstalldocs + find "${D}" -name '*.la' -exec rm -f {} + || die +} diff --git a/dev-libs/libressl/libressl-3.8.4.ebuild b/dev-libs/libressl/libressl-3.8.4.ebuild new file mode 100644 index 0000000..13e5b8f --- /dev/null +++ b/dev-libs/libressl/libressl-3.8.4.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libressl.asc +inherit autotools multilib-minimal verify-sig + +DESCRIPTION="Free version of the SSL/TLS protocol forked from OpenSSL" +HOMEPAGE="https://www.libressl.org/" +SRC_URI=" + https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/${P}.tar.gz + verify-sig? ( https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/${P}.tar.gz.asc ) +" + +LICENSE="ISC openssl" +# Reflects ABI of libcrypto.so and libssl.so. Since these can differ, +# we'll try to use the max of either. However, if either change between +# versions, we have to change the subslot to trigger rebuild of consumers. +SLOT="0/55" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~s390 ~sparc x86 ~amd64-linux ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="+asm netcat static-libs test" +RESTRICT="!test? ( test )" + +PDEPEND="app-misc/ca-certificates" +BDEPEND="verify-sig? ( sec-keys/openpgp-keys-libressl )" +RDEPEND="netcat? ( + !net-analyzer/netcat + !net-analyzer/nmap[symlink] + !net-analyzer/openbsd-netcat +)" + +MULTILIB_WRAPPED_HEADERS=( /usr/include/openssl/opensslconf.h ) + +# LibreSSL checks for libc features during configure +QA_CONFIG_IMPL_DECL_SKIP=( + __va_copy + b64_ntop +) + +PATCHES=( + "${FILESDIR}"/${PN}-2.8.3-solaris10.patch + # Gentoo's ssl-cert.eclass uses 'openssl genrsa -rand' + # which LibreSSL doesn't support. + # https://github.com/libressl/portable/issues/839 + "${FILESDIR}"/${PN}-3.7.2-genrsa-rand.patch +) + +src_prepare() { + default + + eautoreconf +} + +multilib_src_configure() { + local ECONF_SOURCE="${S}" + local args=( + $(use_enable asm) + $(use_enable static-libs static) + $(use_enable netcat nc) + $(use_enable test tests) + ) + econf "${args[@]}" +} + +multilib_src_install_all() { + einstalldocs + find "${D}" -name '*.la' -exec rm -f {} + || die +} diff --git a/dev-libs/libressl/libressl-3.9.0.ebuild b/dev-libs/libressl/libressl-3.9.0.ebuild new file mode 100644 index 0000000..08cd5bc --- /dev/null +++ b/dev-libs/libressl/libressl-3.9.0.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libressl.asc +inherit autotools multilib-minimal verify-sig + +DESCRIPTION="Free version of the SSL/TLS protocol forked from OpenSSL" +HOMEPAGE="https://www.libressl.org/" +SRC_URI=" + https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/${P}.tar.gz + verify-sig? ( https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/${P}.tar.gz.asc ) +" + +LICENSE="ISC openssl" +# Reflects ABI of libcrypto.so and libssl.so. Since these can differ, +# we'll try to use the max of either. However, if either change between +# versions, we have to change the subslot to trigger rebuild of consumers. +SLOT="0/56" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="+asm netcat static-libs test" +RESTRICT="!test? ( test )" + +PDEPEND="app-misc/ca-certificates" +BDEPEND="verify-sig? ( sec-keys/openpgp-keys-libressl )" +RDEPEND="netcat? ( + !net-analyzer/netcat + !net-analyzer/nmap[symlink] + !net-analyzer/openbsd-netcat +)" + +MULTILIB_WRAPPED_HEADERS=( /usr/include/openssl/opensslconf.h ) + +# LibreSSL checks for libc features during configure +QA_CONFIG_IMPL_DECL_SKIP=( + __va_copy + b64_ntop +) + +PATCHES=( + "${FILESDIR}"/${PN}-2.8.3-solaris10.patch + # Gentoo's ssl-cert.eclass uses 'openssl genrsa -rand' + # which LibreSSL doesn't support. + # https://github.com/libressl/portable/issues/839 + "${FILESDIR}"/${PN}-3.7.2-genrsa-rand.patch +) + +src_prepare() { + default + + eautoreconf +} + +multilib_src_configure() { + local ECONF_SOURCE="${S}" + local args=( + $(use_enable asm) + $(use_enable static-libs static) + $(use_enable netcat nc) + $(use_enable test tests) + ) + econf "${args[@]}" +} + +multilib_src_install_all() { + einstalldocs + find "${D}" -name '*.la' -exec rm -f {} + || die +} diff --git a/dev-libs/libressl/libressl-3.9.1.ebuild b/dev-libs/libressl/libressl-3.9.1.ebuild new file mode 100644 index 0000000..6eff98f --- /dev/null +++ b/dev-libs/libressl/libressl-3.9.1.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libressl.asc +inherit autotools multilib-minimal verify-sig + +DESCRIPTION="Free version of the SSL/TLS protocol forked from OpenSSL" +HOMEPAGE="https://www.libressl.org/" +SRC_URI=" + https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/${P}.tar.gz + verify-sig? ( https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/${P}.tar.gz.asc ) +" + +LICENSE="ISC openssl" +# Reflects ABI of libcrypto.so and libssl.so. Since these can differ, +# we'll try to use the max of either. However, if either change between +# versions, we have to change the subslot to trigger rebuild of consumers. +SLOT="0/56" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~s390 ~sparc x86 ~amd64-linux ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="+asm netcat static-libs test" +RESTRICT="!test? ( test )" + +PDEPEND="app-misc/ca-certificates" +BDEPEND="verify-sig? ( sec-keys/openpgp-keys-libressl )" +RDEPEND="netcat? ( + !net-analyzer/netcat + !net-analyzer/nmap[symlink] + !net-analyzer/openbsd-netcat +)" + +MULTILIB_WRAPPED_HEADERS=( /usr/include/openssl/opensslconf.h ) + +# LibreSSL checks for libc features during configure +QA_CONFIG_IMPL_DECL_SKIP=( + __va_copy + b64_ntop +) + +PATCHES=( + "${FILESDIR}"/${PN}-2.8.3-solaris10.patch + # Gentoo's ssl-cert.eclass uses 'openssl genrsa -rand' + # which LibreSSL doesn't support. + # https://github.com/libressl/portable/issues/839 + "${FILESDIR}"/${PN}-3.7.2-genrsa-rand.patch +) + +src_prepare() { + default + + eautoreconf +} + +multilib_src_configure() { + local ECONF_SOURCE="${S}" + local args=( + $(use_enable asm) + $(use_enable static-libs static) + $(use_enable netcat nc) + $(use_enable test tests) + ) + econf "${args[@]}" +} + +multilib_src_install_all() { + einstalldocs + find "${D}" -name '*.la' -exec rm -f {} + || die +} diff --git a/dev-libs/libressl/metadata.xml b/dev-libs/libressl/metadata.xml new file mode 100644 index 0000000..f497ca7 --- /dev/null +++ b/dev-libs/libressl/metadata.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>libressl@gentoo.org</email> + </maintainer> + <longdescription lang="en"> + LibreSSL is a version of the TLS/crypto stack forked from OpenSSL in + 2014, with goals of modernizing the codebase, improving security, and + applying best practice development processes. + </longdescription> + <use> + <flag name="asm">Enables assembly</flag> + <flag name="netcat">Enable installing TLS-enabled nc(1)</flag> + </use> + <upstream> + <changelog>http://www.libressl.org/releases.html</changelog> + <bugs-to> + https://github.com/libressl-portable/portable/issues + </bugs-to> + <remote-id type="github">libressl-portable/portable</remote-id> + </upstream> + <slots> + <slot name="0"> + Pin source packages to SLOT 0, as binary compatibility slots are expected to come and go. + </slot> + <subslots> + Reflect ABI of libcrypto.so and libssl.so only, NOT libtls.so. + </subslots> + </slots> +</pkgmetadata> diff --git a/dev-libs/libretls/libretls-3.3.2.ebuild b/dev-libs/libretls/libretls-3.3.2.ebuild new file mode 100644 index 0000000..d30927d --- /dev/null +++ b/dev-libs/libretls/libretls-3.3.2.ebuild @@ -0,0 +1,17 @@ +# Copyright 2020-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit multilib-minimal + +DESCRIPTION="dummy package for dev-libs/libressl" +HOMEPAGE="https://wiki.gentoo.org/wiki/Project:LibreSSL" +LICENSE="metapackage" + +SLOT="0" +KEYWORDS="amd64 arm ~arm64 ~hppa ~ia64 ~mips ppc ppc64 ~s390 sparc x86" + +RDEPEND="dev-libs/libressl:${SLOT}[${MULTILIB_USEDEP}]" + +S="${WORKDIR}" diff --git a/dev-libs/libretls/metadata.xml b/dev-libs/libretls/metadata.xml new file mode 100644 index 0000000..1385ffc --- /dev/null +++ b/dev-libs/libretls/metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>libressl@gentoo.org</email> + </maintainer> + <slots> + <subslots> + Reflect ABI of dev-libs/libressl libtls.so. + </subslots> + </slots> +</pkgmetadata> + diff --git a/dev-libs/libtpms/Manifest b/dev-libs/libtpms/Manifest new file mode 100644 index 0000000..b253048 --- /dev/null +++ b/dev-libs/libtpms/Manifest @@ -0,0 +1 @@ +DIST libtpms-0.9.6.tar.gz 1264338 BLAKE2B 7b127ef370a48214814bb9ad0e8461ed0af21f32ab84f243945980c5e36ba5e374b4de7a83bf9c67c29264609063d48eae2dae83832daed70170bb1ed39eafea SHA512 35f26e4849eb98cd73461aff439c19f77bbbcde9b7661402e3d419354c4dcddd057349c4f7178573f1ceea2e95326498eb9afea3bd48064bbff534fc7f6939c3 diff --git a/dev-libs/libtpms/files/407.patch b/dev-libs/libtpms/files/407.patch new file mode 100644 index 0000000..2c7aecf --- /dev/null +++ b/dev-libs/libtpms/files/407.patch @@ -0,0 +1,27 @@ +From 96cf3dede02cbf58134115603209d863fc82a06c Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Wed, 13 Mar 2024 10:01:49 -0700 +Subject: [PATCH] tpm_crypto: add missing openssl includes + +This fixes the build with LibreSSL 3.9.0 where many implicit +declarations for BN_, EVP_ and RSA_ functions occur which were +implicitly included before. + +Signed-off-by: orbea <orbea@riseup.net> +--- + src/tpm12/tpm_crypto.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/tpm12/tpm_crypto.c b/src/tpm12/tpm_crypto.c +index bcbaa7fc2..628e27cc2 100644 +--- a/src/tpm12/tpm_crypto.c ++++ b/src/tpm12/tpm_crypto.c +@@ -48,6 +48,8 @@ + #include <openssl/rand.h> + #include <openssl/sha.h> + #include <openssl/engine.h> ++#include <openssl/evp.h> ++#include <openssl/rsa.h> + + #include "tpm_cryptoh.h" + #include "tpm_debug.h" diff --git a/dev-libs/libtpms/files/libtpms-0.9.0-Remove-WError.patch b/dev-libs/libtpms/files/libtpms-0.9.0-Remove-WError.patch new file mode 100644 index 0000000..14fe4c5 --- /dev/null +++ b/dev-libs/libtpms/files/libtpms-0.9.0-Remove-WError.patch @@ -0,0 +1,13 @@ +diff --git a/configure.ac b/configure.ac +index 5f995a8..957c461 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -321,7 +321,7 @@ if test "x$enable_hardening" != "xno"; then + AC_SUBST([HARDENING_LDFLAGS]) + fi + +-AM_CFLAGS="$CFLAGS $COVERAGE_CFLAGS -Wall -Werror -Wreturn-type -Wsign-compare -Wno-self-assign -Wmissing-prototypes" ++AM_CFLAGS="$CFLAGS $COVERAGE_CFLAGS -Wall -Wreturn-type -Wsign-compare -Wno-self-assign -Wmissing-prototypes" + AM_CFLAGS="$AM_CFLAGS" + AM_LDFLAGS="$LDFLAGS $COVERAGE_LDFLAGS" + diff --git a/dev-libs/libtpms/files/libtpms-0.9.5-slibtool.patch b/dev-libs/libtpms/files/libtpms-0.9.5-slibtool.patch new file mode 100644 index 0000000..7e83434 --- /dev/null +++ b/dev-libs/libtpms/files/libtpms-0.9.5-slibtool.patch @@ -0,0 +1,52 @@ +Bug: https://bugs.gentoo.org/858671 +Upstream-PR: https://github.com/stefanberger/libtpms/pull/344 +Upstream-Commit: https://github.com/stefanberger/libtpms/commit/0c2bc32a21e2c7218faa8cd6d5cf31b13835e6d5 + +From 343f1b21b36fe98daf31c355ebc12902ba7e162a Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Fri, 15 Jul 2022 17:02:43 -0700 +Subject: [PATCH] tests: Fix the build with slibtool + +When building the tests with `make check` and slibtool the tests will +then all fail to load libtpms.so.0. + + $ ./base64decode + /tmp/libtpms/tests/.libs/base64decode: error while loading shared libraries: libtpms.so.0: cannot open shared object file: No such file or directory + +This happens because they are linked with -ltpms rather than the +libtpms.la file which has unexpected results with slibtool. GNU libtool +does some magic to make this work while slibtool fails to link the +dependency. + +The correct way to link internal dependencies is directly with the +libtool archive (.la) files where the -lfoo linker flags should be only +used with external dependencies. Additionally -no-undefined is added to +the LDFLAGS to ensure there aren't undefined references in the future. + +Note: + +* This doesn't happen if libtpms is installed to the system and the tests + find the already installs libtpms rather than the newly built library. + +* GNU libtool silently ignores -no-undefined, but slibtool will respect + it. + +Signed-off-by: orbea <orbea@riseup.net> +--- + tests/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index eb23c59a4..d3d831938 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -10,7 +10,8 @@ TESTS_ENVIRONMENT = \ + abs_top_srcdir=`cd '$(top_srcdir)'; pwd` + + AM_CFLAGS = -I$(top_srcdir)/include $(SANITIZERS) +-AM_LDFLAGS = -ltpms -L$(top_builddir)/src/.libs $(SANITIZERS) ++AM_LDFLAGS = -no-undefined $(SANITIZERS) ++LDADD = $(top_builddir)/src/libtpms.la + + check_PROGRAMS = \ + base64decode diff --git a/dev-libs/libtpms/files/libtpms-0.9.6-libressl.patch b/dev-libs/libtpms/files/libtpms-0.9.6-libressl.patch new file mode 100644 index 0000000..8b7041c --- /dev/null +++ b/dev-libs/libtpms/files/libtpms-0.9.6-libressl.patch @@ -0,0 +1,29 @@ +https://github.com/stefanberger/libtpms/pull/407 + +From 96cf3dede02cbf58134115603209d863fc82a06c Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Wed, 13 Mar 2024 10:01:49 -0700 +Subject: [PATCH] tpm_crypto: add missing openssl includes + +This fixes the build with LibreSSL 3.9.0 where many implicit +declarations for BN_, EVP_ and RSA_ functions occur which were +implicitly included before. + +Signed-off-by: orbea <orbea@riseup.net> +--- + src/tpm12/tpm_crypto.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/tpm12/tpm_crypto.c b/src/tpm12/tpm_crypto.c +index bcbaa7fc2..628e27cc2 100644 +--- a/src/tpm12/tpm_crypto.c ++++ b/src/tpm12/tpm_crypto.c +@@ -48,6 +48,8 @@ + #include <openssl/rand.h> + #include <openssl/sha.h> + #include <openssl/engine.h> ++#include <openssl/evp.h> ++#include <openssl/rsa.h> + + #include "tpm_cryptoh.h" + #include "tpm_debug.h" diff --git a/dev-libs/libtpms/libtpms-0.9.6.ebuild b/dev-libs/libtpms/libtpms-0.9.6.ebuild new file mode 100644 index 0000000..10f0bf4 --- /dev/null +++ b/dev-libs/libtpms/libtpms-0.9.6.ebuild @@ -0,0 +1,49 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +DESCRIPTION="Library providing software emultion of a TPM" +HOMEPAGE="https://github.com/stefanberger/libtpms" +SRC_URI="https://github.com/stefanberger/libtpms/archive/v${PV}.tar.gz -> ${P}.tar.gz" +LICENSE="BSD" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv x86" + +DEPEND="dev-libs/openssl:=" +RDEPEND="${DEPEND}" +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}/${PN}-0.9.0-Remove-WError.patch" + "${FILESDIR}/${PN}-0.9.5-slibtool.patch" # 858671 + "${FILESDIR}/${PN}-0.9.6-libressl.patch" +) + +src_prepare() { + default + eautoreconf +} + +src_configure() { + econf \ + --with-openssl +} + +src_install() { + default + find "${ED}" -name '*.la' -delete || die +} + +pkg_postinst() { + if [[ ${REPLACING_VERSIONS} ]] && ver_test ${REPLACING_VERSIONS} -lt 0.8.0; then + elog "Versions of libtpms prior to 0.8.0 generate weaker than expected TPM 2.0 RSA" + elog "keys due to a flawed key creation algorithm. Because fixing this would render" + elog "existing sealed data inaccessible, to use the corrected algorithm, the old" + elog "TPM state file must be deleted and a new TPM state file created. Data still" + elog "sealed using the old state file will be permanently inaccessible. For the" + elog "details see https://github.com/stefanberger/libtpms/issues/183" + fi +} diff --git a/dev-libs/libtpms/metadata.xml b/dev-libs/libtpms/metadata.xml new file mode 100644 index 0000000..655ec18 --- /dev/null +++ b/dev-libs/libtpms/metadata.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>salah.coronya@gmail.com</email> + <name>Christopher Byrne</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <maintainer type="project"> + <email>virtualization@gentoo.org</email> + <name>Gentoo Virtualization Project</name> + </maintainer> + <upstream> + <remote-id type="github">stefanberger/libtpms</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-libs/openssl/metadata.xml b/dev-libs/openssl/metadata.xml new file mode 100644 index 0000000..4fef241 --- /dev/null +++ b/dev-libs/openssl/metadata.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>libressl@gentoo.org</email> + </maintainer> + <slots> + <subslots> + Reflect ABI of dev-libs/libressl libcrypto.so and libssl.so only, NOT libtls.so. + </subslots> + </slots> + <use> + <flag name="asm">Enables assembly</flag> + <flag name="sslv3">Support for the SSLv3 protocol</flag> + </use> +</pkgmetadata> + diff --git a/dev-libs/openssl/openssl-3.8.1.ebuild b/dev-libs/openssl/openssl-3.8.1.ebuild new file mode 100644 index 0000000..1ce6412 --- /dev/null +++ b/dev-libs/openssl/openssl-3.8.1.ebuild @@ -0,0 +1,20 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib-minimal + +DESCRIPTION="dummy package for dev-libs/libressl" +HOMEPAGE="https://wiki.gentoo.org/wiki/Project:LibreSSL" +LICENSE="metapackage" + +SLOT="0/55" # .so version of libssl/libcrypto +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~s390 ~sparc x86 ~amd64-linux ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="+asm sslv3 static-libs test" +REQUIRED_USE="!sslv3" +RESTRICT="!test? ( test )" + +DEPEND="dev-libs/libressl:${SLOT}[asm=,static-libs=,test=,${MULTILIB_USEDEP}]" + +S="${WORKDIR}" diff --git a/dev-libs/openssl/openssl-3.9.0.ebuild b/dev-libs/openssl/openssl-3.9.0.ebuild new file mode 100644 index 0000000..8e732e5 --- /dev/null +++ b/dev-libs/openssl/openssl-3.9.0.ebuild @@ -0,0 +1,20 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit multilib-minimal + +DESCRIPTION="dummy package for dev-libs/libressl" +HOMEPAGE="https://wiki.gentoo.org/wiki/Project:LibreSSL" +LICENSE="metapackage" + +SLOT="0/56" # .so version of libssl/libcrypto +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~s390 ~sparc x86 ~amd64-linux ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="+asm sslv3 static-libs test" +REQUIRED_USE="!sslv3" +RESTRICT="!test? ( test )" + +DEPEND="dev-libs/libressl:${SLOT}[asm=,static-libs=,test=,${MULTILIB_USEDEP}]" + +S="${WORKDIR}" diff --git a/dev-libs/softhsm/Manifest b/dev-libs/softhsm/Manifest new file mode 100644 index 0000000..ecf0dc9 --- /dev/null +++ b/dev-libs/softhsm/Manifest @@ -0,0 +1 @@ +DIST softhsm-2.6.1.tar.gz 1066766 BLAKE2B 0295c5f40235c8abd8879a8c6f7fbe8e8d686ee03355006e9c90c0f2f7135eaf6794a3d39febda1b1ed6e5d48dcacb1e14dae85fb0efb884d0d719bfc6624b92 SHA512 e77137096ff2ac2f5396971efbaa2007188855a8f723cb511182c6c5e5a353b3f98297442758e77a18c3a378c0ca3fce8abe090977f0f4f8d526de204fd523fb diff --git a/dev-libs/softhsm/metadata.xml b/dev-libs/softhsm/metadata.xml new file mode 100644 index 0000000..73e6a5d --- /dev/null +++ b/dev-libs/softhsm/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <!-- maintainer-needed --> + <use> + <flag name="gost">Enable gost algorithm</flag> + <flag name="migration-tool">Build db migration tool</flag> + </use> +</pkgmetadata> diff --git a/dev-libs/softhsm/softhsm-2.6.1-r2.ebuild b/dev-libs/softhsm/softhsm-2.6.1-r2.ebuild new file mode 100644 index 0000000..82506bb --- /dev/null +++ b/dev-libs/softhsm/softhsm-2.6.1-r2.ebuild @@ -0,0 +1,49 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DESCRIPTION="A software PKCS#11 implementation" +HOMEPAGE="https://www.opendnssec.org/" +SRC_URI="https://www.opendnssec.org/files/source/${P}.tar.gz" + +LICENSE="BSD" +SLOT="2" +KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86" +IUSE="gost migration-tool test" + +RESTRICT="!test? ( test )" + +RDEPEND=" + migration-tool? ( dev-db/sqlite:3= ) + dev-libs/botan + !~dev-libs/softhsm-2.0.0:0 +" +DEPEND="${RDEPEND}" +BDEPEND=" + sys-devel/gcc:=[cxx] + virtual/pkgconfig + test? ( dev-util/cppunit ) +" + +DOCS=( NEWS README.md ) + +src_configure() { + # Uses the botan crypto backend for libressl + econf \ + --disable-static \ + --with-crypto-backend=botan \ + --disable-p11-kit \ + --localstatedir="${EPREFIX}/var" \ + --enable-ecc \ + $(use_enable gost) \ + $(use_with migration-tool migrate) +} + +src_install() { + default + + find "${ED}" -name '*.la' -delete || die + + keepdir /var/lib/softhsm/tokens +} diff --git a/dev-libs/xmlsec/Manifest b/dev-libs/xmlsec/Manifest new file mode 100644 index 0000000..70f3200 --- /dev/null +++ b/dev-libs/xmlsec/Manifest @@ -0,0 +1 @@ +DIST xmlsec1-1.2.37.tar.gz 2009175 BLAKE2B 19f43ba6bf6eb49428b9c5563baecbab21476f326cceee13785ae16769afa258f100732831c0f3f7d160543bd075cdcfdc5cbf11b7406637ee6c2f0e27c07f30 SHA512 99220cb28a346ffac0023f9f177d6a7be3ddcea04bea434b7dc926c1f0aaa5564d75f74f92896ac100179c04d77e001f688ddf46fed4e0a0b4f20b7b87c24900 diff --git a/dev-libs/xmlsec/files/xmlsec-1.2.37-libressl.patch b/dev-libs/xmlsec/files/xmlsec-1.2.37-libressl.patch new file mode 100644 index 0000000..acdb535 --- /dev/null +++ b/dev-libs/xmlsec/files/xmlsec-1.2.37-libressl.patch @@ -0,0 +1,40 @@ +https://github.com/lsh123/xmlsec/pull/456 +https://github.com/lsh123/xmlsec/commit/c5469cfc8443c57a25a8783f0bd669f71e29bb04 +https://github.com/lsh123/xmlsec/pull/654 +https://github.com/lsh123/xmlsec/commit/dfdf981f3522e4059170b504fb6fd40b37c9d70f + +From c5469cfc8443c57a25a8783f0bd669f71e29bb04 Mon Sep 17 00:00:00 2001 +From: lsh123 <aleksey@aleksey.com> +Date: Mon, 12 Dec 2022 10:34:56 -0500 +Subject: [PATCH] fix libressl (#456) + +--- + src/openssl/openssl_compat.h | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +From d113d1e6355c4841fd03c6aa797d33bde1d064f3 Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Mon, 29 May 2023 07:46:58 -0700 +Subject: [PATCH] openssl_compat.h: Update LibreSSL UI_null() compat + +LibreSSL added UI_null() in 3.7.1. +--- + src/openssl/openssl_compat.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/src/openssl/openssl_compat.h ++++ b/src/openssl/openssl_compat.h +@@ -123,6 +123,13 @@ static inline int xmlSecOpenSSLCompatRand(unsigned char *buf, xmlSecSize size) { + * LibreSSL 2.7 compatibility (implements most of OpenSSL 1.1 API) + * + *****************************************************************************/ ++#if defined(LIBRESSL_VERSION_NUMBER) && (LIBRESSL_VERSION_NUMBER < 0x3070200fL) ++ ++/* Needed for Engine initialization */ ++#define UI_null() NULL ++ ++#endif /* defined(LIBRESSL_VERSION_NUMBER) */ ++ + #if defined(LIBRESSL_VERSION_NUMBER) && (LIBRESSL_VERSION_NUMBER < 0x30500000L) && defined(XMLSEC_OPENSSL_API_110) + /* EVP_CIPHER_CTX stuff */ + #define EVP_CIPHER_CTX_encrypting(x) ((x)->encrypt) diff --git a/dev-libs/xmlsec/files/xmlsec-1.3.0-optimisation.patch b/dev-libs/xmlsec/files/xmlsec-1.3.0-optimisation.patch new file mode 100644 index 0000000..2cd0401 --- /dev/null +++ b/dev-libs/xmlsec/files/xmlsec-1.3.0-optimisation.patch @@ -0,0 +1,11 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -2482,7 +2482,7 @@ AC_ARG_ENABLE([pedantic], [AS_HELP_STRING([--enable-pedantic],[enable pedantic c + if test "z$enable_pedantic" = "zno" ; then + AC_MSG_RESULT([disabled]) + else +- CFLAGS="$CFLAGS -O -std=c99 -pedantic -pedantic-errors -W -Wall -Wextra" ++ CFLAGS="$CFLAGS -std=c99 -pedantic -W -Wall -Wextra" + CFLAGS="$CFLAGS -fno-inline -Wnull-dereference -Wdouble-promotion" + CFLAGS="$CFLAGS -Wformat=2 -Wformat-security -Wformat-nonliteral" + CFLAGS="$CFLAGS -Wconversion -Wunused -Wshadow -Wpointer-arith -Wcast-align" diff --git a/dev-libs/xmlsec/metadata.xml b/dev-libs/xmlsec/metadata.xml new file mode 100644 index 0000000..0f981c3 --- /dev/null +++ b/dev-libs/xmlsec/metadata.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <!-- maintainer-needed --> + <use> + <flag name="gcrypt">Install xmlsec-gcrypt library</flag> + <flag name="gnutls">Install xmlsec-gnutls library</flag> + <flag name="http">Allow fetching over HTTP via libxml2.</flag> + <flag name="nss">Install xmlsec-nss library</flag> + <flag name="openssl">Install xmlsec-openssl library</flag> + </use> + <upstream> + <remote-id type="github">lsh123/xmlsec</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-libs/xmlsec/xmlsec-1.2.37.ebuild b/dev-libs/xmlsec/xmlsec-1.2.37.ebuild new file mode 100644 index 0000000..42695ac --- /dev/null +++ b/dev-libs/xmlsec/xmlsec-1.2.37.ebuild @@ -0,0 +1,64 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Command line tool for signing, verifying, encrypting and decrypting XML" +HOMEPAGE="https://www.aleksey.com/xmlsec" +SRC_URI="https://www.aleksey.com/xmlsec/download/${PN}1-${PV}.tar.gz" +S="${WORKDIR}/${PN}1-${PV}" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86" +IUSE="doc gcrypt gnutls nss +openssl static-libs test" +RESTRICT="!test? ( test )" +REQUIRED_USE="|| ( gcrypt gnutls nss openssl ) + gnutls? ( gcrypt )" + +RDEPEND=">=dev-libs/libxml2-2.7.4[ftp(+)] + >=dev-libs/libxslt-1.0.20 + dev-libs/libltdl + gcrypt? ( >=dev-libs/libgcrypt-1.4.0:= ) + gnutls? ( >=net-libs/gnutls-2.8.0:= ) + nss? ( + >=dev-libs/nspr-4.4.1 + >=dev-libs/nss-3.9 + ) + openssl? ( + dev-libs/openssl:= + )" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig + test? ( + nss? ( + >=dev-libs/nss-3.9[utils] + ) + )" + +PATCHES=( "${FILESDIR}"/${PN}-1.2.37-libressl.patch ) + +src_configure() { + # Bash because of bug #721128 + CONFIG_SHELL="${BROOT}"/bin/bash econf \ + $(use_enable doc docs) \ + $(use_enable static-libs static) \ + $(use_with gcrypt) \ + $(use_with gnutls) \ + $(use_with nss nspr) \ + $(use_with nss) \ + $(use_with openssl) \ + --enable-mans \ + --enable-pkgconfig +} + +src_test() { + # See https://github.com/lsh123/xmlsec/issues/280 for TZ=UTC + TZ=UTC SHELL="${BROOT}"/bin/bash emake TMPFOLDER="${T}" check +} + +src_install() { + default + + find "${ED}" -name '*.la' -delete || die +} diff --git a/dev-perl/Net-SSLeay/Manifest b/dev-perl/Net-SSLeay/Manifest new file mode 100644 index 0000000..5b509c1 --- /dev/null +++ b/dev-perl/Net-SSLeay/Manifest @@ -0,0 +1,2 @@ +DIST Net-SSLeay-1.92.tar.gz 555930 BLAKE2B 04d97860817b013a9680e0ef29b0004ddb98da2db859761a45612c4d25b6edd16bf92645293d1108d83352bce18665721c6df05455426b32a95a42b464119a3d SHA512 e9d9161ebeb7be90f4c7a0ea98f1034892ce6d33aa72872683177b19daa1f4c5819f85ea9a052a076ec8d7c21705f6c344aef64680bc881bf3218d38e8b7b173 +DIST Net-SSLeay-1.94.tar.gz 663948 BLAKE2B 97cef98bf3794ec992817e5ad91f8403ded95e29184512d9f23b5cbbd765912d2e7f8e835366b40aae9682dd13947cd79e2d9dcca2d10cd78e3c7869b1e197db SHA512 f1461667269f3da56ff7e1724b5511b95c34582250f8336e9f93d30f3b30d4a5360eb27622b9730bba11df75e00d717c7f0cea2120d20206723db136a8509375 diff --git a/dev-perl/Net-SSLeay/Net-SSLeay-1.920.0-r1.ebuild b/dev-perl/Net-SSLeay/Net-SSLeay-1.920.0-r1.ebuild new file mode 100644 index 0000000..8d1b393 --- /dev/null +++ b/dev-perl/Net-SSLeay/Net-SSLeay-1.920.0-r1.ebuild @@ -0,0 +1,67 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=CHRISN +DIST_VERSION=1.92 +DIST_EXAMPLES=("examples/*") +inherit perl-module + +DESCRIPTION="Perl extension for using OpenSSL" + +LICENSE="Artistic-2" +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="minimal examples" + +RDEPEND=" + dev-libs/openssl:= + virtual/perl-MIME-Base64 +" +DEPEND="${RDEPEND}" +BDEPEND="${RDEPEND} + virtual/perl-ExtUtils-MakeMaker + virtual/perl-File-Spec + test? ( + !minimal? ( + dev-perl/Test-Exception + dev-perl/Test-Warn + dev-perl/Test-NoWarnings + ) + virtual/perl-Test-Simple + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-1.88-fix-network-tests.patch" + "${FILESDIR}/${PN}-1.92-libressl.patch" #903001 + "${FILESDIR}/${PN}-1.92-libressl-3.9.0.patch" +) + +PERL_RM_FILES=( + # Hateful author tests + 't/local/01_pod.t' + 't/local/02_pod_coverage.t' + 't/local/kwalitee.t' +) + +src_configure() { + if use test && has network ${DIST_TEST_OVERRIDE:-${DIST_TEST:-do parallel}}; then + export NETWORK_TESTS=yes + else + use test && einfo "Network tests will be skipped without DIST_TEST_OVERRIDE=~network" + export NETWORK_TESTS=no + fi + export LIBDIR=$(get_libdir) + export OPENSSL_PREFIX="${ESYSROOT}/usr" + perl-module_src_configure +} + +src_compile() { + mymake=( + OPTIMIZE="${CFLAGS}" + OPENSSL_PREFIX="${ESYSROOT}"/usr + ) + perl-module_src_compile +} diff --git a/dev-perl/Net-SSLeay/Net-SSLeay-1.940.0.ebuild b/dev-perl/Net-SSLeay/Net-SSLeay-1.940.0.ebuild new file mode 100644 index 0000000..a2ad5d1 --- /dev/null +++ b/dev-perl/Net-SSLeay/Net-SSLeay-1.940.0.ebuild @@ -0,0 +1,67 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DIST_AUTHOR=CHRISN +DIST_VERSION=1.94 +DIST_EXAMPLES=("examples/*") +inherit perl-module + +DESCRIPTION="Perl extension for using OpenSSL" + +LICENSE="Artistic-2" +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="minimal examples" + +RDEPEND=" + dev-libs/openssl:= + virtual/perl-MIME-Base64 +" +DEPEND="${RDEPEND}" +BDEPEND=" + ${RDEPEND} + virtual/perl-ExtUtils-MakeMaker + virtual/perl-File-Spec + test? ( + !minimal? ( + dev-perl/Test-Exception + dev-perl/Test-Warn + dev-perl/Test-NoWarnings + ) + virtual/perl-Test-Simple + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-1.88-fix-network-tests.patch" + "${FILESDIR}/${PN}-1.94-libressl.patch" #903001 +) + +PERL_RM_FILES=( + # Author tests + 't/local/01_pod.t' + 't/local/02_pod_coverage.t' + 't/local/kwalitee.t' +) + +src_configure() { + if use test && has network ${DIST_TEST_OVERRIDE:-${DIST_TEST:-do parallel}}; then + export NETWORK_TESTS=yes + else + use test && einfo "Network tests will be skipped without DIST_TEST_OVERRIDE=~network" + export NETWORK_TESTS=no + fi + export LIBDIR=$(get_libdir) + export OPENSSL_PREFIX="${ESYSROOT}/usr" + perl-module_src_configure +} + +src_compile() { + mymake=( + OPTIMIZE="${CFLAGS}" + OPENSSL_PREFIX="${ESYSROOT}"/usr + ) + perl-module_src_compile +} diff --git a/dev-perl/Net-SSLeay/files/Net-SSLeay-1.88-fix-network-tests.patch b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.88-fix-network-tests.patch new file mode 100644 index 0000000..a98c4c8 --- /dev/null +++ b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.88-fix-network-tests.patch @@ -0,0 +1,17 @@ +diff --git a/Makefile.PL b/Makefile.PL +index 31d9c74..91ac2b4 100644 +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -12,11 +12,7 @@ use Symbol qw(gensym); + # the Net-SSLeay loadable object on Windows + my $win_link_statically = 0; + +-my $tests = prompt( +- "Do you want to run external tests?\n". +- "These tests *will* *fail* if you do not have network connectivity.", +- 'n', +-) =~ /^y/i ? 't/*/*.t t/*/*/*.t' : 't/local/*.t t/handle/local/*.t'; ++my $tests = ( 'yes' eq ( $ENV{NETWORK_TESTS} || '' ) ) ? 't/*/*.t t/*/*/*.t' : 't/local/*.t t/handle/local/*.t'; + + my %eumm_args = ( + NAME => 'Net::SSLeay', diff --git a/dev-perl/Net-SSLeay/files/Net-SSLeay-1.90-libressl.patch b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.90-libressl.patch new file mode 100644 index 0000000..5a253bc --- /dev/null +++ b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.90-libressl.patch @@ -0,0 +1,150 @@ +https://github.com/radiator-software/p5-net-ssleay/pull/285 +https://github.com/radiator-software/p5-net-ssleay/commit/b5143eaec1a59ee948e8d2bace246bbb2440f397 +https://github.com/radiator-software/p5-net-ssleay/pull/360 +https://github.com/radiator-software/p5-net-ssleay/commit/4a886e06c1cac80e7fb3f8d52146a27ce557ba8c +https://github.com/radiator-software/p5-net-ssleay/pull/362 +https://github.com/radiator-software/p5-net-ssleay/commit/88c3bbc45399c8ef2c8879aada8bfa91d8bc6c10 +https://github.com/radiator-software/p5-net-ssleay/pull/363 +https://github.com/radiator-software/p5-net-ssleay/commit/3dd2f101b8e15a59f66e22525b8d001d5ad6ce7d + +From b5143eaec1a59ee948e8d2bace246bbb2440f397 Mon Sep 17 00:00:00 2001 +From: Alexander Bluhm <alexander.bluhm@gmx.net> +Date: Wed, 1 Sep 2021 13:06:04 +0200 +Subject: [PATCH] Use SSL_SESSION_get_master_key() for LibreSSL. (#285) + +Since version 2.7 LibreSSL implements SSL_SESSION_get_master_key(). +Use this instead of accessing internal struct fields. +--- + SSLeay.xs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +From 4a886e06c1cac80e7fb3f8d52146a27ce557ba8c Mon Sep 17 00:00:00 2001 +From: Alexander Bluhm <alexander.bluhm@gmx.net> +Date: Wed, 19 Jan 2022 14:56:22 +0100 +Subject: [PATCH] Use X509_get0_tbs_sigalg() for LibreSSL. (#360) + +* Use X509_get0_tbs_sigalg() for LibreSSL. + +LibreSSL 3.5.0 has removed access to internal data structures. Use +X509_get0_tbs_sigalg() like in OpenSSL 1.1. + +* Start Changes for the next release. + +Co-authored-by: Heikki Vatiainen <hvn@radiatorsoftware.com> +--- + Changes | 5 +++++ + SSLeay.xs | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +From 88c3bbc45399c8ef2c8879aada8bfa91d8bc6c10 Mon Sep 17 00:00:00 2001 +From: Alexander Bluhm <alexander.bluhm@gmx.net> +Date: Wed, 19 Jan 2022 20:38:57 +0100 +Subject: [PATCH] Use OCSP_SINGLERESP_get0_id() for LibreSSL. (#362) + +LibreSSL 3.5.0 has removed access to internal ocsp data structures. +Use OCSP_SINGLERESP_get0_id() like in OpenSSL 1.1. +--- + SSLeay.xs | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +From 3dd2f101b8e15a59f66e22525b8d001d5ad6ce7d Mon Sep 17 00:00:00 2001 +From: Alexander Bluhm <alexander.bluhm@gmx.net> +Date: Thu, 20 Jan 2022 19:15:27 +0100 +Subject: [PATCH] Implement RSA_get_key_parameters() for newer LibreSSL. (#363) + +LibreSSL 3.5.0 has removed access to internal rsa data structures. +Use RSA_get0... functions to provide RSA_get_key_parameters(). +--- + SSLeay.xs | 25 +++++++++++++++++++++++-- + 1 file changed, 23 insertions(+), 2 deletions(-) + +diff --git a/SSLeay.xs b/SSLeay.xs +index 02b81e7..bffd72d 100644 +--- a/SSLeay.xs ++++ b/SSLeay.xs +@@ -1759,7 +1759,7 @@ X509 * find_issuer(X509 *cert,X509_STORE *store, STACK_OF(X509) *chain) { + return issuer; + } + +-SV* bn2sv(BIGNUM* p_bn) ++SV* bn2sv(const BIGNUM* p_bn) + { + return p_bn != NULL + ? sv_2mortal(newSViv((IV) BN_dup(p_bn))) +@@ -6006,8 +6006,28 @@ RSA_generate_key(bits,e,perl_cb=&PL_sv_undef,perl_data=&PL_sv_undef) + void + RSA_get_key_parameters(rsa) + RSA * rsa ++PREINIT: ++#if defined(LIBRESSL_VERSION_NUMBER) && (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) ++ const BIGNUM *n, *e, *d; ++ const BIGNUM *p, *q; ++ const BIGNUM *dmp1, *dmq1, *iqmp; ++#endif + PPCODE: + { ++#if defined(LIBRESSL_VERSION_NUMBER) && (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) ++ RSA_get0_key(rsa, &n, &e, &d); ++ RSA_get0_factors(rsa, &p, &q); ++ RSA_get0_crt_params(rsa, &dmp1, &dmq1, &iqmp); ++ /* Caution: returned list consists of SV pointers to BIGNUMs, which would need to be blessed as Crypt::OpenSSL::Bignum for further use */ ++ XPUSHs(bn2sv(n)); ++ XPUSHs(bn2sv(e)); ++ XPUSHs(bn2sv(d)); ++ XPUSHs(bn2sv(p)); ++ XPUSHs(bn2sv(q)); ++ XPUSHs(bn2sv(dmp1)); ++ XPUSHs(bn2sv(dmq1)); ++ XPUSHs(bn2sv(iqmp)); ++#else + /* Caution: returned list consists of SV pointers to BIGNUMs, which would need to be blessed as Crypt::OpenSSL::Bignum for further use */ + XPUSHs(bn2sv(rsa->n)); + XPUSHs(bn2sv(rsa->e)); +@@ -6017,9 +6037,10 @@ PPCODE: + XPUSHs(bn2sv(rsa->dmp1)); + XPUSHs(bn2sv(rsa->dmq1)); + XPUSHs(bn2sv(rsa->iqmp)); ++#endif + } + +-#endif ++#endif /* OpenSSL < 1.1 or LibreSSL */ + + void + RSA_free(r) +@@ -6172,7 +6193,7 @@ SSL_total_renegotiations(ssl) + OUTPUT: + RETVAL + +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x2070000fL) + void + SSL_SESSION_get_master_key(s) + SSL_SESSION * s +@@ -6920,7 +6941,7 @@ ASN1_OBJECT * + P_X509_get_signature_alg(x) + X509 * x + CODE: +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) + RETVAL = (X509_get0_tbs_sigalg(x)->algorithm); + #else + RETVAL = (x->cert_info->signature->algorithm); +@@ -7412,7 +7433,7 @@ OCSP_response_results(rsp,...) + if (!idsv) { + /* getall: create new SV with OCSP_CERTID */ + unsigned char *pi,*pc; +-#if OPENSSL_VERSION_NUMBER >= 0x10100003L && !defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER >= 0x10100003L && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) + int len = i2d_OCSP_CERTID(OCSP_SINGLERESP_get0_id(sir),NULL); + #else + int len = i2d_OCSP_CERTID(sir->certId,NULL); +@@ -7421,7 +7442,7 @@ OCSP_response_results(rsp,...) + Newx(pc,len,unsigned char); + if (!pc) croak("out of memory"); + pi = pc; +-#if OPENSSL_VERSION_NUMBER >= 0x10100003L && !defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER >= 0x10100003L && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) + i2d_OCSP_CERTID(OCSP_SINGLERESP_get0_id(sir),&pi); + #else + i2d_OCSP_CERTID(sir->certId,&pi); diff --git a/dev-perl/Net-SSLeay/files/Net-SSLeay-1.92-libressl-3.8.0.patch b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.92-libressl-3.8.0.patch new file mode 100644 index 0000000..d02333e --- /dev/null +++ b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.92-libressl-3.8.0.patch @@ -0,0 +1,34 @@ +https://github.com/radiator-software/p5-net-ssleay/pull/434 + +From 79a06ce5f9a77d8c65d51035f8edb6043864f342 Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Mon, 29 May 2023 10:16:33 -0700 +Subject: [PATCH] SSLeay.xs: Disable Policy Tree API for LibreSSL 3.8 and later + +This is taken from the OpenBSD ports tree. + +https://github.com/openbsd/ports/commit/f6567f938c9bd51bfd99f8426eba6a1590cc6384 +--- + SSLeay.xs | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/SSLeay.xs b/SSLeay.xs +index 102e89f..ae870c0 100644 +--- a/SSLeay.xs ++++ b/SSLeay.xs +@@ -7157,6 +7157,7 @@ X509_VERIFY_PARAM_get0_peername(param) + + #endif /* OpenSSL 1.0.2-beta2, LibreSSL 2.7.0 */ + ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER < 0x3080000fL) /* LibreSSL < 3.8.0 */ + void + X509_policy_tree_free(tree) + X509_POLICY_TREE *tree +@@ -7199,6 +7200,7 @@ const X509_POLICY_NODE * + X509_policy_node_get0_parent(node) + const X509_POLICY_NODE *node + ++#endif /* !(LibreSSL >= 3.7.0) */ + #endif + + ASN1_OBJECT * diff --git a/dev-perl/Net-SSLeay/files/Net-SSLeay-1.92-libressl-3.9.0.patch b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.92-libressl-3.9.0.patch new file mode 100644 index 0000000..4699989 --- /dev/null +++ b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.92-libressl-3.9.0.patch @@ -0,0 +1,44 @@ +#1 EVP_add_digest() was removed. +#2, #3 X509_ALGOR has an accessor, don't reach into it, so it can be made opaque. + +Index: SSLeay.xs +--- a/SSLeay.xs.orig ++++ b/SSLeay.xs +@@ -6451,10 +6451,14 @@ int EVP_add_digest(EVP_MD *digest) + + #else + ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER < 0x3090000fL) ++ + int EVP_add_digest(const EVP_MD *digest) + + #endif + ++#endif ++ + #ifndef OPENSSL_NO_SHA + + const EVP_MD *EVP_sha1() +@@ -6944,7 +6948,9 @@ P_X509_get_signature_alg(x) + X509 * x + CODE: + #if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) +- RETVAL = (X509_get0_tbs_sigalg(x)->algorithm); ++ const ASN1_OBJECT * obj; ++ X509_ALGOR_get0(&obj, NULL, NULL, X509_get0_tbs_sigalg(x)); ++ RETVAL = (ASN1_OBJECT *)obj; + #else + RETVAL = (x->cert_info->signature->algorithm); + #endif +@@ -6959,8 +6965,10 @@ P_X509_get_pubkey_alg(x) + #if OPENSSL_VERSION_NUMBER >= 0x10100000L + { + X509_ALGOR * algor; ++ const ASN1_OBJECT * obj; + X509_PUBKEY_get0_param(0, 0, 0, &algor, X509_get_X509_PUBKEY(x)); +- RETVAL = (algor->algorithm); ++ X509_ALGOR_get0(&obj, NULL, NULL, algor); ++ RETVAL = ((ASN1_OBJECT *)obj); + } + #else + RETVAL = (x->cert_info->key->algor->algorithm); diff --git a/dev-perl/Net-SSLeay/files/Net-SSLeay-1.92-libressl.patch b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.92-libressl.patch new file mode 100644 index 0000000..f3e1b4a --- /dev/null +++ b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.92-libressl.patch @@ -0,0 +1,158 @@ +https://bugs.gentoo.org/903001 +https://github.com/radiator-software/p5-net-ssleay/pull/360 +https://github.com/radiator-software/p5-net-ssleay/commit/4a886e06c1cac80e7fb3f8d52146a27ce557ba8c +https://github.com/radiator-software/p5-net-ssleay/pull/362 +https://github.com/radiator-software/p5-net-ssleay/commit/88c3bbc45399c8ef2c8879aada8bfa91d8bc6c10 +https://github.com/radiator-software/p5-net-ssleay/pull/363 +https://github.com/radiator-software/p5-net-ssleay/commit/3dd2f101b8e15a59f66e22525b8d001d5ad6ce7d +https://github.com/radiator-software/p5-net-ssleay/pull/434 +https://github.com/radiator-software/p5-net-ssleay/pull/435 +https://github.com/radiator-software/p5-net-ssleay/commit/fe9e49d220fa424c55fc436303b24f5bddae0b8d + +From 4a886e06c1cac80e7fb3f8d52146a27ce557ba8c Mon Sep 17 00:00:00 2001 +From: Alexander Bluhm <alexander.bluhm@gmx.net> +Date: Wed, 19 Jan 2022 14:56:22 +0100 +Subject: [PATCH] Use X509_get0_tbs_sigalg() for LibreSSL. (#360) + +* Use X509_get0_tbs_sigalg() for LibreSSL. + +LibreSSL 3.5.0 has removed access to internal data structures. Use +X509_get0_tbs_sigalg() like in OpenSSL 1.1. + +* Start Changes for the next release. + +Co-authored-by: Heikki Vatiainen <hvn@radiatorsoftware.com> +--- + Changes | 5 +++++ + SSLeay.xs | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +From 88c3bbc45399c8ef2c8879aada8bfa91d8bc6c10 Mon Sep 17 00:00:00 2001 +From: Alexander Bluhm <alexander.bluhm@gmx.net> +Date: Wed, 19 Jan 2022 20:38:57 +0100 +Subject: [PATCH] Use OCSP_SINGLERESP_get0_id() for LibreSSL. (#362) + +LibreSSL 3.5.0 has removed access to internal ocsp data structures. +Use OCSP_SINGLERESP_get0_id() like in OpenSSL 1.1. +--- + SSLeay.xs | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +From 3dd2f101b8e15a59f66e22525b8d001d5ad6ce7d Mon Sep 17 00:00:00 2001 +From: Alexander Bluhm <alexander.bluhm@gmx.net> +Date: Thu, 20 Jan 2022 19:15:27 +0100 +Subject: [PATCH] Implement RSA_get_key_parameters() for newer LibreSSL. (#363) + +LibreSSL 3.5.0 has removed access to internal rsa data structures. +Use RSA_get0... functions to provide RSA_get_key_parameters(). +--- + SSLeay.xs | 25 +++++++++++++++++++++++-- + 1 file changed, 23 insertions(+), 2 deletions(-) + +From fe9e49d220fa424c55fc436303b24f5bddae0b8d Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Mon, 29 May 2023 10:16:33 -0700 +Subject: [PATCH] SSLeay.xs: Disable Policy Tree API for LibreSSL 3.8 and later + +This is taken from the OpenBSD ports tree. + +https://github.com/openbsd/ports/commit/f6567f938c9bd51bfd99f8426eba6a1590cc6384 +--- + SSLeay.xs | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/SSLeay.xs ++++ b/SSLeay.xs +@@ -1914,7 +1914,7 @@ X509 * find_issuer(X509 *cert,X509_STORE *store, STACK_OF(X509) *chain) { + return issuer; + } + +-SV* bn2sv(BIGNUM* p_bn) ++SV* bn2sv(const BIGNUM* p_bn) + { + return p_bn != NULL + ? sv_2mortal(newSViv((IV) BN_dup(p_bn))) +@@ -6283,8 +6283,28 @@ RSA_generate_key(bits,e,perl_cb=&PL_sv_undef,perl_data=&PL_sv_undef) + void + RSA_get_key_parameters(rsa) + RSA * rsa ++PREINIT: ++#if defined(LIBRESSL_VERSION_NUMBER) && (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) ++ const BIGNUM *n, *e, *d; ++ const BIGNUM *p, *q; ++ const BIGNUM *dmp1, *dmq1, *iqmp; ++#endif + PPCODE: + { ++#if defined(LIBRESSL_VERSION_NUMBER) && (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) ++ RSA_get0_key(rsa, &n, &e, &d); ++ RSA_get0_factors(rsa, &p, &q); ++ RSA_get0_crt_params(rsa, &dmp1, &dmq1, &iqmp); ++ /* Caution: returned list consists of SV pointers to BIGNUMs, which would need to be blessed as Crypt::OpenSSL::Bignum for further use */ ++ XPUSHs(bn2sv(n)); ++ XPUSHs(bn2sv(e)); ++ XPUSHs(bn2sv(d)); ++ XPUSHs(bn2sv(p)); ++ XPUSHs(bn2sv(q)); ++ XPUSHs(bn2sv(dmp1)); ++ XPUSHs(bn2sv(dmq1)); ++ XPUSHs(bn2sv(iqmp)); ++#else + /* Caution: returned list consists of SV pointers to BIGNUMs, which would need to be blessed as Crypt::OpenSSL::Bignum for further use */ + XPUSHs(bn2sv(rsa->n)); + XPUSHs(bn2sv(rsa->e)); +@@ -6294,9 +6314,10 @@ PPCODE: + XPUSHs(bn2sv(rsa->dmp1)); + XPUSHs(bn2sv(rsa->dmq1)); + XPUSHs(bn2sv(rsa->iqmp)); ++#endif + } + +-#endif ++#endif /* OpenSSL < 1.1 or LibreSSL */ + + void + RSA_free(r) +@@ -7010,6 +7031,7 @@ X509_VERIFY_PARAM_get0_peername(param) + + #endif /* OpenSSL 1.0.2-beta2, LibreSSL 2.7.0 */ + ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER < 0x3080000fL) /* LibreSSL < 3.8.0 */ + void + X509_policy_tree_free(tree) + X509_POLICY_TREE *tree +@@ -7052,6 +7074,7 @@ const X509_POLICY_NODE * + X509_policy_node_get0_parent(node) + const X509_POLICY_NODE *node + ++#endif /* !(LibreSSL >= 3.7.0) */ + #endif + + ASN1_OBJECT * +@@ -7197,7 +7220,7 @@ ASN1_OBJECT * + P_X509_get_signature_alg(x) + X509 * x + CODE: +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) + RETVAL = (X509_get0_tbs_sigalg(x)->algorithm); + #else + RETVAL = (x->cert_info->signature->algorithm); +@@ -7690,7 +7713,7 @@ OCSP_response_results(rsp,...) + if (!idsv) { + /* getall: create new SV with OCSP_CERTID */ + unsigned char *pi,*pc; +-#if OPENSSL_VERSION_NUMBER >= 0x10100003L && !defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER >= 0x10100003L && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) + int len = i2d_OCSP_CERTID((OCSP_CERTID *)OCSP_SINGLERESP_get0_id(sir),NULL); + #else + int len = i2d_OCSP_CERTID(sir->certId,NULL); +@@ -7699,7 +7722,7 @@ OCSP_response_results(rsp,...) + Newx(pc,len,unsigned char); + if (!pc) croak("out of memory"); + pi = pc; +-#if OPENSSL_VERSION_NUMBER >= 0x10100003L && !defined(LIBRESSL_VERSION_NUMBER) ++#if (OPENSSL_VERSION_NUMBER >= 0x10100003L && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) + i2d_OCSP_CERTID((OCSP_CERTID *)OCSP_SINGLERESP_get0_id(sir),&pi); + #else + i2d_OCSP_CERTID(sir->certId,&pi); diff --git a/dev-perl/Net-SSLeay/files/Net-SSLeay-1.94-libressl.patch b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.94-libressl.patch new file mode 100644 index 0000000..1eae0b7 --- /dev/null +++ b/dev-perl/Net-SSLeay/files/Net-SSLeay-1.94-libressl.patch @@ -0,0 +1,42 @@ +#1 EVP_add_digest() was removed. +#2, #3 X509_ALGOR has an accessor, don't reach into it, so it can be made opaque. + +Index: SSLeay.xs +--- a/SSLeay.xs.orig ++++ b/SSLeay.xs +@@ -7493,8 +7493,12 @@ SSL_CTX_set_tlsext_ticket_getkey_cb(ctx,callback=&PL_s + + #endif + ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER < 0x3090000fL) ++ + int EVP_add_digest(const EVP_MD *digest) + ++#endif ++ + #ifndef OPENSSL_NO_SHA + + const EVP_MD *EVP_sha1() +@@ -7973,7 +7977,9 @@ P_X509_get_signature_alg(x) + X509 * x + CODE: + #if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) +- RETVAL = (X509_get0_tbs_sigalg(x)->algorithm); ++ const ASN1_OBJECT * obj; ++ X509_ALGOR_get0(&obj, NULL, NULL, X509_get0_tbs_sigalg(x)); ++ RETVAL = (ASN1_OBJECT *)obj; + #else + RETVAL = (x->cert_info->signature->algorithm); + #endif +@@ -7988,8 +7994,10 @@ P_X509_get_pubkey_alg(x) + #if OPENSSL_VERSION_NUMBER >= 0x10100000L + { + X509_ALGOR * algor; ++ const ASN1_OBJECT * obj; + X509_PUBKEY_get0_param(0, 0, 0, &algor, X509_get_X509_PUBKEY(x)); +- RETVAL = (algor->algorithm); ++ X509_ALGOR_get0(&obj, NULL, NULL, algor); ++ RETVAL = ((ASN1_OBJECT *)obj); + } + #else + RETVAL = (x->cert_info->key->algor->algorithm); diff --git a/dev-perl/Net-SSLeay/metadata.xml b/dev-perl/Net-SSLeay/metadata.xml new file mode 100644 index 0000000..963e912 --- /dev/null +++ b/dev-perl/Net-SSLeay/metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>perl@gentoo.org</email> + <name>Gentoo Perl Project</name> + </maintainer> + <upstream> + <remote-id type="cpan">Net-SSLeay</remote-id> + <remote-id type="cpan-module">Net::SSLeay</remote-id> + <remote-id type="cpan-module">Net::SSLeay::Handle</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-python/cryptography/Manifest b/dev-python/cryptography/Manifest new file mode 100644 index 0000000..8207fd6 --- /dev/null +++ b/dev-python/cryptography/Manifest @@ -0,0 +1,113 @@ +DIST Inflector-0.11.4.crate 17438 BLAKE2B eaf0c7f983b3186e9bc89353021a10592f2877e46585bd50b96db9b087343d1199c7b6cf3fa53cd274fb6d33de025a904b8aa31a7ac9599ae3689ecdbcec34cd SHA512 f1f6463e033b6d3c16c51dc1e1a3f5569954308b95b59058294b7f9310919bbda797e99e6a07529071bb83f0688867a243997d33795a7136b0af73977004296e +DIST aliasable-0.1.3.crate 6169 BLAKE2B c23840c7f1df86109e004aa1929d7355bd815c69ce8c5a316c9e2810851b7faf91c7480924d67cf83520e94b86dc0cc1b90b0dcc84b446a15ba5cccc1bae95ca SHA512 a60e4280335638b36a72e51514843229fdd0cc89cb670fcf159f882a687c04ecbddcc52a1dcc3cbe8647e5308af3939037934a157facdddcc4834dcd3cb16dc8 +DIST asn1-0.15.2.crate 34002 BLAKE2B 9b6bb21474474747b15c6df8895a68560e511a29795768a58d22142efaa70cdfee808c5edfd4b32ac2ea196f6e0f1e89595a8faf501a32d7c4743feea8f10375 SHA512 3584849573a6d29400565edea5254b5efc16d4b521d3f6d80602ffb6880a6be1fe2ced4eecf8422107d7d9c3c12c2d6cfa4ec4dcae20cb80f9b6b83ba8760f29 +DIST asn1-0.15.5.crate 34375 BLAKE2B c794bc89b21ed3543082873d065a22f72a1d3f422217bce2980b44ffab1584ecf7ee23808346794c1dd9eb1f413332b8a5fee5f2ba8d626f6200e6a0492b39ea SHA512 28ab871b4e011a91da38db4900b1fd907ef894b0eabc98d354f9288ae1564a3122b19748dcd49879a3e294d9e7dfe3b4b2b49ed0b0eeb723aac4567b2c0481bf +DIST asn1_derive-0.15.2.crate 6096 BLAKE2B 99a0f922363634472b774b7139366ba658d14b6868dd64cbe5f796e461c660e9746f9e883c50d0f4fc3914c975496e775c1698069b47ee986cdd87aec7daf6aa SHA512 3ea2585f9cacd5bf903e225614fc13f76fecd7e4bb00191e634a2ec838ab726c55056c95a00cb5d268b430d100570a3095c808b089af4ab8871a6055468cc20d +DIST asn1_derive-0.15.5.crate 6095 BLAKE2B 0b8b14796253b7ef29e0baada2ffaf363e69686bd8fa5760ed7cbba5299fb2c4cc1944e66cf559b0e136b0e8c436d63f823f143bf8d200c36ce36e3e9e6fe87a SHA512 6649cda49844db520b49a31cad671743842f22188cd1104eee29d1e59db2474c821bad8b00bcfb5491ff7117aff6e6c11e05186c17b02e63088c1d09f623b5dc +DIST autocfg-1.1.0.crate 13272 BLAKE2B 7724055c337d562103f191f4e36cab469e578f0c51cc24d33624dea155d108a07578703766341fd6a4cc1ef52acda406e7dba1650d59115f18261281e5b40203 SHA512 df972c09abbdc0b6cb6bb55b1e29c7fed706ece38a62613d9e275bac46a19574a7f96f0152cccb0239efea04ee90083a146b58b15307696c4c81878cd12de28f +DIST base64-0.13.1.crate 61002 BLAKE2B 3b3a5b26e2ef18e9b4f1ede72b1bd160a1494751878e8441d463f8a514e6cb9ac859231536989e19fb1261fd864617fe31440df1b5855a0ec625521fc6fcef91 SHA512 1eb76aff9a84057f2ccb7082e9c57b015c2d71a28173089b02e7aacd09a7d311bedf0a943529611ada29f8d7b536d7ae4de256d98eee8450003a3a9a652bda4b +DIST base64-0.21.7.crate 82576 BLAKE2B 25cc8761c14220981ff4ed332058f6179948080cbfa2b225ec1d1602e4af14cd470c969e8b7049117e6fc51a5a24e06b1d27bab844486ecb76409d12e0581d5d SHA512 c6986d88dd9aa081d914f35b4174be4ba874848657ac4b5e63b9b45af765d973289c548ccb5a01584edfc0d8d79ff5be25b51365295d6e7a311bd7f0ae3c0cb9 +DIST bitflags-1.3.2.crate 23021 BLAKE2B eb990bb27b2bdeb66fd7212ce582cb36e1c616debbac85df642d0c82b25439e6bf9b1e811fac76b59e58ea3c1bbea6170d03a61e8f9a395e4334a0e2e2987eda SHA512 3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 +DIST bitflags-2.4.1.crate 37043 BLAKE2B f61c45b142265e9c2944c7054e01704de47510735e9ee5351cd02b98676cc4eb42d68b1fc4849ad5f54654617a74f20cb533b4207c2fe76516b724ba9318b414 SHA512 d3fd7abc95acc1cb5bf16d6acc12dbb8eadd250f069268df13c2e8dc3d5f5c15a929cd17ca931c77393b64dce0516ef8674c469789ed32d78e315b5faada062b +DIST bitflags-2.4.2.crate 42602 BLAKE2B 768d4ca52aca73d8acf2f494a66957ed2603eefd5a04332ed0880d230c2cc6ef3bfdc0792fa6f288a0eb132913dbb256793e580bc34f4a40e8200e1fbafe97a9 SHA512 ef4c20e6e78a2ecee97e17189b7100a504d8176c7c15d7f17d62157a116d66f83f8b2bba472a4acf02cd3edbd94b20a7047af918c3f3b371e2e04f7474be0214 +DIST cc-1.0.79.crate 62624 BLAKE2B b3cbed3bd6fcac1c6ea258ec96cd107f859947a35dc89c3dc8f314741b0f668e61518f896ec32ce10c9a7eb20dd350bc177a71810d53ebea59fda062ed9d27db SHA512 cbf0a25f3a23fc540e9d638fabc23f761f1c240ebb4814e761e90437d71fc559cd155768ab9e78fc192220d8a605c66c3af342ed736b719181656170b98d7bf5 +DIST cc-1.0.83.crate 68343 BLAKE2B 33245b33fa845ea2f36da36e3830ec835f937e4319865b357ee9d5ea29a0f9f8392eadb38bf1d95e3c15ed201e561acaa87aedcef744f8db3dabff87a96c7f02 SHA512 742a248c3a7547bb220a0b9c97b67a831fab9b4ac21daa08c85a3966b9fe576088def33e16132fcabec9a2828a6fc437088bb045bfc98b2cea829df6742565a7 +DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff +DIST cryptography-41.0.7.tar.gz 630892 BLAKE2B a2786c999b8a3fa9e413a330eeaf1076574b8f49a91a91887a7976e7260aa4bd6c25354ff4656917c9e729cd12fc457ff708d904449d03b665965f775f8b7aaf SHA512 c678da6dfc02d84ca9a26bc42844da8ba356f5dc839fefa0b63636c99107b18415b5970d721b72075fc0f8aefc3785dbf143327ceb7f4ebd075df41291b63219 +DIST cryptography-42.0.0.tar.gz 671860 BLAKE2B 40452225cac2937603000a496fd95ea0734a6d055c44a4d385aff22cf943133e5a06c1efd4e401f4b43b56eb4c87af33b8b99d1aebd84e6768217887fd12a3bb SHA512 96a9eab6b23ed8a0789742e824429646ac6a038047dcc3ec092955b1308843d1686b012f7e12c64d8c40308049be98bbdb1af233e83c60b388a30035e50bb58d +DIST cryptography-42.0.1.tar.gz 672364 BLAKE2B 5e83c2dff17dc1ae03ca339766c91b28205694d73c9f2a08a169c4e41d63262a7f0180e0f4b92afd2a59d3226576b761c901341bdd4f2568111cfd9e6ffd3063 SHA512 978f21bb14dd15ab559af4c85cbc5c98b2ad047bedc980307d7fc91816ee50ace4b1259dac083eb03f03ce12db1eaae171405e33348ac3affd58c140b986dfbd +DIST cryptography-42.0.2.tar.gz 672761 BLAKE2B 9c97305adebb88127cc6e2e44affee6c9703638abb1b09e34da424a617aa9eaddd8498a2452711af998dbe7818a6148392be78106104d01f2106d8de2b65ac97 SHA512 100f604884cfe5335369d48eeb1d28ccd822f13ddd13c007f4a265c887362bda2b88646328ca570c9969897bd838df6c1f6b7fe4abaf36e82cdb93358694b12c +DIST cryptography-42.0.3.tar.gz 669589 BLAKE2B 328c297a989f96d10e92c92d5b84e147512498be7ad205b2f36fcdb6234b4c77ac7f20f3ba8f74d05a573e2eacc68e315a97fbc429b87b5da625d4cf359773bd SHA512 d3733d08afea1cb3ad5a01f241ea7f58aaf38334cd25e2b7f64686ffd697f20ec30133931af7fe6a439ba0cb365d63ea6ec0512c627b768891f9e82c15dc0cdd +DIST cryptography-42.0.4.tar.gz 670311 BLAKE2B 9dc906048bf3be1b457a528cebf8d947ef9088ac5bdcae18b43359412c793fa25fe66a1032d118d0a64924e20065e449977ace3027e508cb383381dd175119ce SHA512 e949672bbe5347c994e1217767c45b4a302830074ed404b65fdad5166f415c4d4c597c1b928eba3a61b338438a178c32302e001ffd6a2c34bbb51ba79ae2e938 +DIST cryptography-42.0.5.tar.gz 671025 BLAKE2B 0eb4b6722ffcbd8b1107afeff23ad72de8199b82923e82412176601aeda8eaf0fe53485ad0fb504be0e5d1898a4006d4bc2ecf5a406f818a69120df382d2ee87 SHA512 5524fd230b55580a2c647a0a78197a783e201fdfa8b3177b72c6d7b689afd76a689e4fe3593120d3adb7ee5cc4adf9211e8deedc8fab355e9ed70076db09f68b +DIST cryptography_vectors-41.0.7.tar.gz 35288159 BLAKE2B ef2e82f42bb4964a256e875bf3b7bcca549df11839893ac3b8d909d05308360bb0696774fd89bd8951bf4f13aaf752a7700bfde78e68cce450ffaf5117182958 SHA512 05a96cc8d1e3653e62c6822f202f6c25157b2a11bcc42fa8a9462ac1844c295147ed5f49315f0b297c689e244cf13d02948ff5e57c21a487f0210f87518c913f +DIST cryptography_vectors-42.0.0.tar.gz 35277565 BLAKE2B a770b13244633dc155f21c9179440d4f5d393c71801e44e374e38c183055b842f127090160fab6ba44748e68b2004c0d128980b89b1ae760e6148ba4784fecce SHA512 2d7a633ddf6b81bc3098a54dc61b801e7ea8117424d02db2b9baeb2a2a6da734e07b64f24f924fbf1ae45d65ce2f34db8cc76b1bfaed9dab00a69ef0332245e1 +DIST cryptography_vectors-42.0.1.tar.gz 35277715 BLAKE2B a1996ddd91eb5986c6ea72a3a163506ac60522eb459ce36b90ade44045d662ecbc6e2c2875a0437371885968524c43829e02bcbc094e6a1cb5ade5b743114cb4 SHA512 b7d4503f182e29d1d33bcd5ad2f4327a8deb3e11c640c843eab3b870780b7285323fa044f98dd052101e4926b2bbbbecdf5de00858df8fbedc25e7c69912b335 +DIST cryptography_vectors-42.0.2.tar.gz 35277730 BLAKE2B 63e2d1b707b66e13f8aecefeebe1474118f05fcc017635b4fe91bfbd73ac43db2923375a75e0725eb35fb37d4facc2e2dadef771c84563d08d13e85fd90c0dfe SHA512 8ebc90e26b1398c5315061f621c3364e0b1759ccedcc566e6420e730f7df65763741e2cb26a87f4004964f4fb57703be2009fc5443266e0bfd9b5620ced9d04d +DIST cryptography_vectors-42.0.3.tar.gz 35277759 BLAKE2B 4474fca84de99b025a8aa8c7414f5ead4c2c7e8098b80689229c133a8422b1aff034bcb54fcd840d9090230649ce26b52c10c1d4fb35e3ad7ec888952c809fb7 SHA512 35d0220b564c384458c0844c66d80f49af763e728ca59658964ebefcf0433197a72be0a896ce6007b183b761c49200a7b6bba3b84bc13390336ca2875e04f7f4 +DIST cryptography_vectors-42.0.4.tar.gz 35277611 BLAKE2B 84c998730505b5ac355b548cdd25dde876e43fc7fcb11feb5714ab9e21314d1a1fb519ba46ca5986e3f3522434a96a7803e7dcb6f303a61bb1fa2f8bab341ad1 SHA512 a1f324a43b0041733bb18f9e0b371ae7aab0786a0d5166ccde622946d5ee68c143a5b92a4c50bd8649b5b71962399994ec506250cdf6e691cd259d93f9910662 +DIST cryptography_vectors-42.0.5.tar.gz 35277812 BLAKE2B 3511f90a90816dbf48fb588e24e432844b51f9b969f03bf9f01e7cba55a8b7fc1aebf66409e137ccee14279535b366c54e1b3af6af026812cdfe92c3137106ec SHA512 38af39f8cb869af630d4b75d7a62ba9778fd59ceee2858504655d9065a82d2365644c9ab301c90f3ebd9f32f2e04867650b6d392c1f2b6880e3bb0c216e6a419 +DIST foreign-types-0.3.2.crate 7504 BLAKE2B 520818b702d990d296ecd31a8646850202509ccfa18edd0e1b260289619a6c351e758f317ec0824bd76eccb209b6f087057c25f1bd01a47897715013dd834867 SHA512 bf27b8243ed482c202d120383374f19ff09422535e24b9c1aebccc66529bf300ca17b8bbc76d67f98ac092e614497afe3add9dc68aa69c93074df05762f91232 +DIST foreign-types-shared-0.1.1.crate 5672 BLAKE2B d2e42e04b6657e7a69fe0bd20c672176629c743e49a55fd007bb30e289710b70045d445ae9cae0eeaa747ee708c90e8abd9b5fc39bad8ec0666befe1b696d4f1 SHA512 bafdb2143e136fb0818e2ffd90b5c862b7181647d6568947d4e4531012bbf7a57b597221ec7056c1b562dfc0c3b5dead26d1a4111ebc15e7863737a873518a4a +DIST heck-0.4.1.crate 11567 BLAKE2B 520aeea740cfa30b0cca12f73594ffa655f32959673b1c9caaca1ea0162e455546ae3033881394c0ba0516bcd5c9a997da02162e1585522d665813b9096eabd9 SHA512 8c80e959d2f10a2893f9a71994720f90747742bb5b61fc0a539eed3ea5679b140c48fd7f7690d7122cd6af5f7f20a19d412e3569fe741c6d31f6b2ce1e0b80e8 +DIST indoc-1.0.9.crate 13475 BLAKE2B a9696788574e56dd125c3371169fd59d6947d188f76e2669b21c0304692efd6709cd048920f7822e92c6a5620fb178e0e85c7776118cef8ccee0f58398e14abf SHA512 db8aef4a7bb606452dc8ed45aa29a255c7a135357a0bd586fb4429c5f56a1aa2ca9400d6fac39956aeb486a15d25cf5d1b9524967867f2c651d9d563e3e85be8 +DIST indoc-2.0.4.crate 14311 BLAKE2B 8d604e20825ae64530014081c627abe4ecec6447e1e214408743aca79ed217531baad4bd7021137ae6628555d769a248f06acc556cc3254d2626074aab110a44 SHA512 ef1b8d19d89d848c1133f2865247e0ce23cbe5552454805910ed0478ac4acb11b11629aa4a5ce8756d0ed5cbc0644abedeac0246f433166c68f47cf58cf4487a +DIST libc-0.2.144.crate 682092 BLAKE2B 1f699cb880a65baf9210527789abb35fe8be9565828d061e12b5c76330e21babab67b21e9a44be6a706f643f3c8b98503a3b40482183188b49f33f96a2489a68 SHA512 576da68e3845a7149f64bee425529ffec4bbb8df0272790182e49c8bad5b9744de21ffb5c1206753b57b7fe45af02c6c429e16522b72a77e5262482d64df5692 +DIST libc-0.2.152.crate 740278 BLAKE2B 8eecde477063207d77b6894d6f9194c8dd10e55b69585e3d66296eaa0b9d3f6e2d033e667207182bf4c3cf31f6d38820c9187b2006f4b5ebee898adafb4b2751 SHA512 1722f6f52077efab90026aae3d10306f8c38ebba95366593c3c1adf707fae121ab450064ad9e8be5a667caf6af0b90fad4d1ca1009db0f2220093c44e33c4b5c +DIST lock_api-0.4.11.crate 27487 BLAKE2B 87116cf908f7f1f9c300cedded989df305f855883e3df5a482de2c76814c48739582d3079d76a2bdd14a6999204b7fd31dcd8fd06d1dc7f9418f0e2f70a1450e SHA512 9946adf313a5c67a0dd87a1b679b7d9d16a86149fb95974d3f28aa57a9a1a3932e4a5ee1d332097559329c5e3b2295be2e4b655b115d9f75269f33a758b17fb3 +DIST lock_api-0.4.9.crate 25685 BLAKE2B 8adf5c3cccebdf6aff6ec977f230cd2a208b0b188ef57deacbbc6019431f0ede1a760b2384ba3cb49c96b8a589dc56c0f46a6359b3e62277e7ae1a1c3f586fa3 SHA512 9215381d9bb6b80d217c73a900db43df043b3e939b5bd7a292a02e9ab911cf0eacd8f883d35bdf72b3a0e78df8f1bc3e843ca4c775294c7a7a03091dc1a74990 +DIST memoffset-0.8.0.crate 8912 BLAKE2B 19ad3abed21fc39461b0382b15a8cc312378aba36f042b1e5335012115d31b350a4e3bc720f1eea300d7d19b9b317f75a28d4ccd78ff3b31defd9e4b3147899c SHA512 47adcae0848ff967035e10543ea599c7af9c5bad387023eb4dc77c9e8d875994ec8139b9941b3ecc4fc17214d80944a47a3be174a45b334661914a5a7382dfbe +DIST memoffset-0.9.0.crate 9033 BLAKE2B 19090c1af8b8cf54a2cf7593748aff4d3dc685ec7080aa476139c1721ef71555495e1bc513b1efaddc7e7702f83e0e1c2a8f71ff40009d266539484c9297e0ed SHA512 2f04f9b6fed31e94388c18162ad275897a835df7b9ac827f4df0f4b0ecf71064ef247f7ad11dbc27d7a6d448984a0f29d1c000e3c8d5fa6e121fa9571770ec55 +DIST once_cell-1.17.2.crate 33335 BLAKE2B 8f1bf825fd618fa1070c3497264085bd354c9b470aab08663179cf2eacd1778b6dde0c54247aa5c8091be97c40d3da20e56dd92981318a0c0ce85d41c3a740d0 SHA512 8a00338f5aabe766fe5cd741cafd8c2ff544d60d081e5706b0965db6c86e00cc7b5fa0f73d8aa54cd1f4506a0858de589ceb4bd32afa7046dd3a1fbcf52b69d7 +DIST once_cell-1.19.0.crate 33046 BLAKE2B c14b374eaf4ac0f60acc2e02f7bba270a0e8e0a6978d749cd3cb0ab3eb26907e4fbea70dd5132982f90290381ed18ff8a87fd530f1415fabffac864f157ea380 SHA512 4154876afd34a699ee650d1a8a1c5ee5a25f0ebd9388b8bef2564e33629fae68f113d7507488c68abbe7ea1acf9bbc41813cbbf3ef3e464e3f3b9cc7a51d870c +DIST openssl-0.10.60.crate 265736 BLAKE2B a5a2386470baa5bfecfd9bf32a9965babf1c222e6e35d8652846ac342f75dc6ff022d8344350adcbd42d3313cde3831664fa9e65affb8e3825d58d4a8f5b7418 SHA512 4341098b55136862b2206091e740801c165c42f30404e4224c9d5cf3e68b5b6b26f5c4c383495a4b5b6baef232fa698f80136b0c3e86dbc9d411d3bde0d59616 +DIST openssl-0.10.63.crate 270890 BLAKE2B 0571a214347f823c9079c1f6d204c62469235ced63cbfdb8494427aed8069f45bbb26b81d1edbddb3602c0bffd54d1ca96204aef8cb85aec041edf45d89889db SHA512 47baa5f2e34b622dff0cd475dbbf6772adf48abbcec5be1cbcafe2beb9060ae46a3d873896ee4b5d864da0b132f0efd956596c49f2afc650a44cff6af001aa56 +DIST openssl-macros-0.1.1.crate 5601 BLAKE2B 69dc1c1f3b7bc4f934cae0dce64c3efa501162e5279efd6af3b74f7a7716c04b6996b306b310f1c045cfa2eff2895314a47ecbb020a817e461c6d77d0bc11e92 SHA512 57e75c84f78fb83f884eeaedb0dd135ecb40192dad2facd908e6a575c9b65b38a2c93bca4630e09ea5a82c77d8bc8364cb2f5778cbfe9d8f484cafe3346b883c +DIST openssl-sys-0.9.96.crate 67743 BLAKE2B 0336ef48841d263c7c5883f0e2c3b7224c5561c521fc15d692b56fadac50681d18ecabbea8b0d5adcdad20f3d3ba60fa29950f04ed1ed35fa3b7b4816f556af8 SHA512 b5f0290fde2198e314b8e0d3fddfe0fd6d5ea88024cd1f2a70d99a0b78905568a82e63818cd58bae7f362d663e47202e6fba8cf4fc83354dc0253d78a9dafd76 +DIST openssl-sys-0.9.99.crate 68158 BLAKE2B 59995535bc24f0ca67ea204193aee4114f88538bbd74ade7c22bc2ea1b0d7e41a79118b6d22917bd1e305a43c16f8aea095c635d27a56fc0481a2baa3092dfa3 SHA512 b91197583135c22d34814e6382dc4ad4be9c3905c979addee8688dbc52ce627815e719b9d0b365195335d4d665eaa79a406f89e4c19cef73988938d51fe2f4ee +DIST ouroboros-0.15.6.crate 11257 BLAKE2B f7f8758a7456e4561279fbc88d0bf994bf97e93f9d42d2a3476d959d40a85d2d8f7910e36f96824cb0316193d42efeab608767ada00bde6803bf193405f51233 SHA512 ba777f29b26b1a934d7bcf5f456e2e6485dabfe7b8a25160b34feea438e1e7649fb45cb62d83cb1ba9262564b7b877d84f9c9419d877669b65869bed2df9c02c +DIST ouroboros_macro-0.15.6.crate 20751 BLAKE2B 79f78d819a5db2ba58dcdf3cd06d95570a71ba51b9ea6b55f19a975dd5aca5f3774697ae7ff009d42734add9e37e7b7380eabcabd31d14c37e09b029c32c24f2 SHA512 c79a7b9598a6048d392899707c3d0b942ed3a695803cf74620352f857341b04816fa1172bca6a5a5262a335e47c8a26786e67a3341f456fbefc335d056296bef +DIST parking_lot-0.12.1.crate 40967 BLAKE2B 940a112a066e3cbd15e2f6df89bfff37e4ece2194118618a96fa14871813c91798f93181ab0f768d3e1f3d60805508f216724013afb7e3da95678d0d951a42d4 SHA512 07327d3b737a913508dffb66023766348ce7f9d555c224a099cabb05baefd16a28e15fec638e3a148a5169dbd980c4541b0f8820ae9d06dfe0704482838fbd5c +DIST parking_lot_core-0.9.7.crate 32412 BLAKE2B fec3ed2cf28e6d5090aae6a7c0ad583acf3ce6e54e881b78a9cb6721ca1e7040d46c044d405852728e74baff6ff1feaee7a89a64c69d20531f29942dfaafcc72 SHA512 1f232f1a87ba9377621244ba49378663f3113da7192a399fdb70be971ff5e5ca0d0601e1210a3fd8ab75ef464dc8505e719f81902e3448cce5e7848ef4bdbef0 +DIST parking_lot_core-0.9.9.crate 32445 BLAKE2B 811d8de671bf6e0911cf0df7dcaee4fb03a3b223173a3bb8cee65a28724eeb7bac87f62aa7b1df5ea3fc93af3cee3ef30b83d06c6773d6b856a7e6fa5fa197ea SHA512 7f0df70f9f1ca8d3da0b9dcc96e49daf05d95c3a995289266b5333f68818d686d32b0c733dfe3a0f62da78fa45caa843a963923b2d0c80899c33413dc749c032 +DIST pem-1.1.1.crate 11352 BLAKE2B 2f21e56ab3e1c55aeab08a2d60b3e83b9b9520ed611de394141d65beaebb42b80505983b442edfb49902147b6e8672dbdda2c51faba07487cb37f2f1000c8676 SHA512 a61105cf968db35c0136e2da5575f1f2eefeb1849e15152d6d6bbaeedec8aaa6ed7e6fd86892a4094bfae2495065b090263b760ebf4ccbe131f536963d985bd2 +DIST pem-3.0.3.crate 13035 BLAKE2B a9a5b7f9860ad9ee7b355e54c7e885126790e5298715234cc8247ceef8b997311bd1f916d113358cdfb22cbaa3fdae2ed4e3ee139bb1eb969185dbf468148c86 SHA512 7bc100eb0494ef2a86fcc4ba67c328d0cd791718f0c4eb67e66ac998d13e5624dfb6a1919862f684052bf61c7169c5065bde23b30640fe56651cf377fa573b30 +DIST pkg-config-0.3.27.crate 18838 BLAKE2B 1295eb4f08751b3663cb2c7c2753f29bf2ccd80f4e5856909fe10b6f006c37fb9672c9518b9b416546469faa18821512673a66543c0bd1e848bddabc456d0a90 SHA512 41e9b8d4fce6b8244c2ac8566318a001b481bd42a182f1a832c81ce93c6a023e18af03aa3500b134c30195219d35080433bdba69b2594e9665081debfbb4533a +DIST pkg-config-0.3.29.crate 20563 BLAKE2B ed0559b0073890911fb47742743b2586123bf9e9b594aa0d5b2c419c6768cd37e25b546c21077ea6cc02823a679b302aeaaca6c7fcaf9aeec615dd08f53a1f6f SHA512 bac7dafc0e10bef40e427c1fc0271d1a26acb2f5b1cf7cc7a128f4d4f1f3110529e45057b71cea7b0f6ddff26945fe08962285ddeb22b54639e44a2e43af698f +DIST portable-atomic-1.6.0.crate 140689 BLAKE2B c91d06e04a87c9a207233d8a850859aa1f5cc43dda8aed34511c3fe9641c27412796539ed045a58e649d2a0c7d71100b6b2d78a0c662fc061fd961a652ae8722 SHA512 b27cf57655a2f1e2d6ea7b45d80b4f9920a836e462f132c50dc1e4d314e162444309de1baecf45dad2defc7a5b99759165e54da9fe759b24092f8cb8755c515c +DIST proc-macro-error-1.0.4.crate 25293 BLAKE2B ef918c5efaf2545ab38787c8d0c07315af00431139e4dff66346bf798e3a429f91d12a79776c150412fdda0b158a72badd5e1044ac4d6917f8482d4b5a7110b7 SHA512 8a47bc9d3e24e9561d1e384d8f5a633284c2cf9b5e6733c5f9d1dbfe1870ccc8e2152482852e50b551cecb68e009148585b910ffb0508a7b4875598eaf8657db +DIST proc-macro-error-attr-1.0.4.crate 7971 BLAKE2B 98e2925881c2be186e22c2c439697e91d43f807eb61a5d13e3b0b4321ed50a74f3d699942c04b89b6fea0f156bb5d19ebcf22f9cd4b98a7e6917c437600ed823 SHA512 2606afa9ec78d7dad4500c98d3a5ecbd02c6b53ab829c742bed7f57b322a95238ab4e01cf268746815f1424fd9b02eddfa30e72f98c66106f57765f3d3116495 +DIST proc-macro2-1.0.64.crate 44848 BLAKE2B 4422122d9299eff3bfbb4507c4a117fef7c0906cab5a680933d482b7f9b49480bcb9c8172b412e70bf87dd0737b8532e90c310bf083f144292cc72190059ba3b SHA512 884fd14ff23c19420692e35a38f88bb6a766a09da105759cd958c315b9360a2c49cfe61ceaa3122307d44040195ec9dffb12b6d0ce224fbac5d3701621a12b04 +DIST proc-macro2-1.0.78.crate 47158 BLAKE2B c56a24fce3faca9e04db7965cab552d2a976c3764df0a84179b5a89d1230ab355c777a82b4c982e3945414f1f0478473a88821dd176c32d6de394d73a26adb9a SHA512 11956fe03a2e77a925cdff2c3c8bc8804dffab4fa1de963a128fa23f4189976fd2e2102bd346b92c33524beae320b71dadaa5213695a3ec638404196e14fa769 +DIST pyo3-0.18.3.crate 420236 BLAKE2B bc00a825a67ed3590b31d3ea6bd77f6c4c927c0355d9d03ce64ca44e36ae3e29ab4d891bf2d94ca074b3bf858e077c516dc64e4620f875fe1e8fbffb5c9db1ec SHA512 39f044a19a42a5e2f46049431fbe3fe10c14d12a4741cc789b42de7cbf448bcbded7fe38a0f124d994ff9bcd3d95a19305dbfdc7462331fda3e6686cc4289be5 +DIST pyo3-0.20.2.crate 434326 BLAKE2B 3114fd6f3fb8ae7d1b35c9d2ac5ba6a49c5ac911ee3a5b941c5063263ca7cce47fa4b4f7ec34cbfe3083f3d1303fd7f061639fba833a04fedb9d5098f5784028 SHA512 cc5151a116179157046ec92677e5a72318b4cdb13a7d7e3bb83778739b5758040e5020f667dd83554a66b758581a08f5de05eb38e7b339813cec85e0712e6355 +DIST pyo3-0.20.3.crate 434673 BLAKE2B 1dcb881fd1fe5c76e9b4951f4d95fcd1daa1845c226a4ab1db4283cabe67bda822ff03e3cc85d797fe4665a1614229e7406dea65ec5e99ce4aac96b973a7f55d SHA512 77cce558fa60bbd8d9981ff5e62fdfa9bac94bd650b287fbf14ac93ef1c326c8ae7fda82d744e3582df03cab8adf490e0f2752fabd9ae3de044e7d80984e0350 +DIST pyo3-build-config-0.18.3.crate 29137 BLAKE2B 5fa645b64f50a078f38cc10a27ed52bd7e7aadd8a069c05ec2963f0b7c869b94d29eddda97cc31d200cf749ab8e2cd9cd1ea00e75620287e9187745ae0e100a5 SHA512 7ccad5f245e84895e147389f05270f32d12f81aba46bcd0dc184b8d62af2ea579efc50383502efda40601c981c4dbcf911aa7d8192364caa2e177ad939062cdb +DIST pyo3-build-config-0.20.2.crate 30029 BLAKE2B 846eb95d1417a658763417a2750dca1c55201105a3978d61b1db5e3962680ede188f8285dd7deec778ea9860d43e40513b88f5a54f0b1881b08416760bdbbedf SHA512 9dbc669ec69d38716c3909fa8f3b6c5be13c717b20bfd5dd11edab59b8eb35247d7996acd260fec88f92eb3e71248c86e9b40c1a700827889e2990bba20ecddf +DIST pyo3-build-config-0.20.3.crate 30060 BLAKE2B ef122b0b7d840d5362928bac76e1299b333775ec5c49a3bf23a19eccec074917931356bbf719c6d700999941bb6a396948ee7f8761e685c8e9251af07ba0cadc SHA512 70685415bba443787dabb9c61ca3702aefbcacb0705471b496b4f01efe34291735321d91243355b4be9aed8b243e393c09fb65556f1b926ac7f22f64560bd927 +DIST pyo3-ffi-0.18.3.crate 64474 BLAKE2B 32bedfb4c7d88e539e958af0dd48af311934a817282a01f860af7cd824fa1e3825c505463b78cda57541bea8ccbbedacdc0f67bef686e6775fab3787c26c6d2c SHA512 55240c7824ad1e5c69e05a31ec03e2064290c89c4c98f06c3ebc38c311a10b1690571c977a103790ddcc9623ac42fbf525fb028e910baedb9acafe39fd6e4a82 +DIST pyo3-ffi-0.20.2.crate 64601 BLAKE2B cf1141ad34a13dcb46de0d1e15dda192ca41a7441bfc92a9295861876dcc690d1d5d6d39dafa51cd70c4627353efa91563eaefee8c39f655d12818003f9524da SHA512 ee6386b6fdb80689d104f9cd5229f02e1893d00a52be710bd36882c47305abbe24ef2f3cdef8200fddc0bb97e29001fa3a2fd9d3d2673ecd9a104a070420d01e +DIST pyo3-ffi-0.20.3.crate 65024 BLAKE2B 33e79a02c7ab85f4767e02a39d8553ddc015c80d13bea674885ad8a18d89bd90f866cc39d81ecbf56270ebe87d29bca48f635c4e73ec99df02ce425f1427cb31 SHA512 3d1ced58e243be7cee4a3ca831dc08a1631fcd511c707dd3bada87d7662807dea2d88393d76e56ff19a6d1c2804d93b5b6b7b5efd36b9c275d66fa1bb1bfc384 +DIST pyo3-macros-0.18.3.crate 7175 BLAKE2B 424cda4d0d75c7d4df6aeab0a475fc744039c9a663215c633e62762083930eb6736348f431b6f00d11a093961433fb13fb4c9da8a18268d1904e933157255646 SHA512 2b643ec3451267e836076bd79d110826fa0a2407955543c8a6a46b0dd16c477eb3ad919d51b7beca90eca2938a59577b32e1e67169df67429fac4cfaae5bf5ab +DIST pyo3-macros-0.20.2.crate 7925 BLAKE2B 00fc60becfa39bf452786d8a612247785f1737cc3e627700d0d144ab2efaadfb34ce8a8f46e932382a1ea99caebfe1946fbc517b5c26fadb0822ecaa8b2e9df0 SHA512 dd9ea9acda95dfc53689a4c26d8c2139f8a90a05ab06737037f19b8bccd5e52b0da5f297a29194b958f5f8b59cbb566b5f409b3f17a863eddf855ecb755d2719 +DIST pyo3-macros-0.20.3.crate 7920 BLAKE2B 0510accf51cd83390cbb7b6ba4ec9f4610e3dbb7448d1213994013487ae81bb087df1ba0076a3862e5ecfd172b7846f9439a2d86950a93b016aae565ced4f03b SHA512 454f3c0c054aa131ffe955e4be1af061005b9c81b4d80702827e19b983224c118dfea474da515d5fc2c79cfd3fa21204ed4af2d9e81427123e0a78bd246a23f8 +DIST pyo3-macros-backend-0.18.3.crate 48922 BLAKE2B 4937f6d9459c6651f85fd520e4783c051f28932192d02aba5711fbf0294ed617f5b0b35ebbac74f3e6048a3fd3b75028518ebadf1277eefaa501015a91269c77 SHA512 1e607e4925486e1a48748ef3163666910a06f9a4f4a2fd7eb6a6af87ea37b5b7edb9d3ab4958e6fe907a55c5f4bcb702a251d836dc3b57c4ab1c5d9248b8cd35 +DIST pyo3-macros-backend-0.20.2.crate 49710 BLAKE2B 711b18984e61219555df4b62667f7f376951c6cb47e6dd947fc24618b923c4f4f790eb1aba1901abea4761632cdb58cfa81cce91f33586da3022e6c7d126bc9f SHA512 c6ca2a2cdae8630fba3f8e4122e81b60ef2ef0905ad2a3fbcfae134456d5ca9e73690b61590e391f3b9d82c24725809f18544c5dfa0b36ffdb1914844fe65d3a +DIST pyo3-macros-backend-0.20.3.crate 49797 BLAKE2B 59c55d482577ce105db3e19a1db794eaab8221d7de01197716b75d5d2602e0f27c86aaae527eae7098eafad311144550bd597efe8cd6560c82dc435021f3428f SHA512 e177ee0d6a538a555fbe9108e3e2c20102622b2c9b9696ae309189e5c4d068efad2132afd4a97d734ebabb4d7146980a26cb68dc05d5eb88f338be2ad0cd651f +DIST quote-1.0.28.crate 28382 BLAKE2B 9fb16c3bb2a7fec3d8138ffec1f58277061f4a643c9051e1f6525f9e347ed9de41a3797eb3140a6dd828526eb4114c1f7ca562151dc933f338d64b175ed35d9f SHA512 846d718153f78cbae6dc714caa9413a5d5964bcc5e032f5c6c5356c62c33bf22635955ebdff0dede69ba1c9657387e65d61de7c537f6f56f8060721dfa52d735 +DIST quote-1.0.35.crate 28136 BLAKE2B 81424245e1e2b94459df68bb3a9a866c6a364102b5e1d010ede9c5f8278f8406d7b651957d091c5914e936b494b0f6e9a6a1dd8b7d35cd7d7100f86dee4ec12e SHA512 f5314fb6af17cf36c228e1970c569c29ec248954a450a5f90ba9e2896d04f74904c9cec5a1f74325f2489295a94491eee4ce8fb461e22cd4b34e53f1f881efd2 +DIST redox_syscall-0.2.16.crate 24012 BLAKE2B 9497a52044458b1435ea16e86ee072e379b6b11ee31602ea72d6b6072a4a99426f409c2e58108a4e9c36dc193fa49c83951e71f4fd4e158eafff18c594dc01ad SHA512 63b5d876baaf99f5cf737679bc6ac7a9e3d8a41aa93f5c59416ce7e3841e2513bff678773553cfe62fb452707f82acc384ea63aec932a31bf94679cd1caddd27 +DIST redox_syscall-0.4.1.crate 24858 BLAKE2B c3301137a0b84e03b09d28dfa377ab3bea74d574a08cee21d35713b278d8b5b30ca2a1d73a0981baeb4644cbb88c86c8eb15ab3bb2692e38b93e6b35fab4e0da SHA512 073ed9d96090cf46eab9877742277a013c62d8da86d9caf2310b4fa868af306511936553579e01309f27067d344226cc8dc5e3aef01d9b900da2febd33848f8d +DIST scopeguard-1.1.0.crate 11470 BLAKE2B f774eb90b7d3ffb2efba47518e9d1dead4017ab4b38a4bd74914daa84a5af4bf9eb63da0496e3924499d79cd0439c37447aeda4a21226f95645bddcd6becfabe SHA512 368fa5726df8f42b599993681579a9ffd0196480ee3cd0f9f671e8493f3bedd1e1779bdf2beb329e77e0005fa09b816e3385f309490c0f2781568db275d4d17d +DIST scopeguard-1.2.0.crate 11619 BLAKE2B 8b7e9ed6cefef9ee55407fb9690d57a2a98bb93e5105aeebdb475a52485e9e185255249e1dce8f83cd80534e7402d485aac3efa7e8493b13135de27550cd4bc4 SHA512 6247719a15fe1e4e2d179127b9a934bd2f99367724f41175ed9522f58824b6bc69b35002eae66b35880375ff61d77ac43ddaa78cbde7160a35183a1da32d3fbb +DIST self_cell-1.0.3.crate 15147 BLAKE2B 9b53b0568dc4ce0c7372565eef14e593aa25e262d7501da6e4b8cd7807f5385977f9bd3563ed39a6fd4e07c824847d0c09a2a750024a800229c7a57ce5e8e325 SHA512 89a990f8a59cdbb99930ebbf9bb6566b77f03f1f551e49b207c865e7205541fd9f0342d284aca5f3d054a24520fd438b6c53baf48c43fa28dfbe8d79fe8c7e00 +DIST smallvec-1.10.0.crate 31564 BLAKE2B e3e46a0781d3a7892a739b001592d462d0704f010363984c439e3fe4f75aecb9720648aa1e9bcc56bb3be848dd40cee578212439f78f07a807c9441c3c3e0147 SHA512 a09110184582dcc01d7a0d3fa8f74c17bf726935126d3654667b8e9c4bc43ad16ccfd8fa94feae7d9b31913aa7ee030fe5936e4b44a36302b6ce5fe37372a7ae +DIST smallvec-1.13.1.crate 34952 BLAKE2B e0dcf1d26883564cd4f5d20a588562404e193075b1ae011f7f7542009a9466e5df3ade7768e1a8feb8806774b2cee5f15d31779928f83714e7d4b6ed46af9ab9 SHA512 1259ef947400470b8c9e74c5582dbc1a49753aa46420883c1f7d66f320f67bebe733a15a23cd57ba461020fad4ff337a5b298de82754602a78f5e6cec969652d +DIST syn-1.0.109.crate 237611 BLAKE2B e827445d00c79a8eeb91eacde472f1987addd6ce9e1df95d7abf6446a77ff4173a8006845f3ae71c1da47193cfb72e0ead9a6d6bad2573be12c17e90735d9ad9 SHA512 12816b9e8cf984024b2fbce9f0ae14cf94d4d2c06f08cc54fb793ce78770bb4cc1288eb7df0ba5e8e937756e1e8e295c53fe07a0c5dde1ea8ddba03b6203b37d +DIST syn-2.0.18.crate 240648 BLAKE2B 1e16f0936faf2656ee74cf9c75bdaec19589a4309d68b0cab37438061cfa29c66a1dcd624ad9247d63c85b3c1fdd8a484a65509d672cc6471f3c93f3ecce30d2 SHA512 2642eb35d52022c6d21bb893843beb9b737a267f620e1f5a6c9096d434fd1fab05fe007c8d8b6f1fe00a25007d6f55dbd4ec620b9f5c1154659bf34c246334dd +DIST syn-2.0.48.crate 250566 BLAKE2B e46b0863af76c3116c84d01b654a9820b7edc51f75c9c5301a7967d12284f78da602409f34fc40524728350dc6b998a4d738f08b8868f95236b3e5d24c460580 SHA512 926c0ad55cc743df20f9166b6d71fd44421aeb1f073fd86b6ddb53e13cd508b539c0360ce64b07b65597bb14639c8f33acf7e60951e1e9128624517aa3aee325 +DIST target-lexicon-0.12.13.crate 25424 BLAKE2B 5fcac231c270a59b6589adb79c90cd3bb15ce024e3c5fa3fd267b3226e5514ce77387c57c86ca765b43ee593a55ec99fdc8fbfd464dc01afaa91ad10337b6278 SHA512 323331857bd3db9877a6c7304392e39d378439462ae4f6d6939c02d28914ecddec52696c94ceebfe8a0e7e93ce25c900099bb3922d7783643162e55c7a8769b7 +DIST target-lexicon-0.12.7.crate 24402 BLAKE2B 3715b15649566b9f26fe02aad818325a43b54512008e4ea9fcda9ea15a87b8f4baf4ffd7343fc12456c97d8a6b1e121158c4cb61997de0e2d24d1bce93d86850 SHA512 0f3cdbd7515141315934b6ca61c5666f3bf60e259711f68ed3c33468e2bd400cedf824db7158a80fa07e78cc7ac2a0a1eed2df199352176148e9df34b06511a2 +DIST unicode-ident-1.0.12.crate 42168 BLAKE2B 4cede03c08758ccd6bf53a0d0057d7542dfdd0c93d342e89f3b90460be85518a9fd24958d8b1da2b5a09b5ddbee8a4263982194158e171c2bba3e394d88d6dac SHA512 bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920 +DIST unicode-ident-1.0.9.crate 41978 BLAKE2B 4e78cefb4e7d7f173f1826a5ab6c8ffde386fea67cf3227bd22e6a6e65d3348dc53c9438e6bde9af06fb5e04b0beac866209d2426e7f04cd10b2435db85df7e3 SHA512 4d8cffe699c6f15ee82ab5f5a73421a6bb8b1a476237aefefa6e932c45c30683a4fb015f138bce99d7cb27a27fb7972909c828e77daef091da84ec162315625a +DIST unindent-0.1.11.crate 7700 BLAKE2B d4d1dde410c4194acb51f74f374cf11fa872e49fad8f5f24b596d72476403e5e312fedf7b0bcb1027384d53c8de565368d63c30eaf70a6e6cd958b82e5288ca3 SHA512 f800d6c37fe72477908c91457a738a73d2b8085bb5ae303d6d954405d6ccd98833b5da16a12c3ad1ab75d32a68dedc706dfaacc0fcbb95571dd829cdc03a356a +DIST unindent-0.2.3.crate 7306 BLAKE2B a57407b117e99c230750c7d4a2a0899586c8271e4ba88ecb409c976905c014f42885372c234a75fbfbedf71dbed779f95f735975d150adacdcb61152a49db4c2 SHA512 2f1eb420ea3653b00d3e5fa0c2c105da8fd8a37cb3e699373c168604b799fccd5f0faf0cddce4212d119c2afb0c86b41efc3a50752b83ff7beda2bd84d360505 +DIST vcpkg-0.2.15.crate 228735 BLAKE2B 6b6bacd9a7fa38919241f45a97f58cae957e58d3aac99df208a26aa718e4f1644f4ccefa31b09151e5c1952288e0e5837c363918b98c7f55079a948a952c1c50 SHA512 7322a21e8811b2fe4e79e09dc321458068ecdf1953f05d36233f3278ecc0b1dfc64194db7010dd46fcf692285f42475beb090c6c6cac0c8f9fe0eb5c770e3172 +DIST version_check-0.9.4.crate 14895 BLAKE2B fa1fa4008af165bfc1fdbe560488afd9d232cfafee94104fbcc4cbc52f234849bff9ddfa88109a1ac682f6d9c1d86b0459893d223f64e65adc08966aaf93dc89 SHA512 b172dc9a3759a4a683ffc39b9a40b03b9974b626a088217de87090466cef695226557c226cf3e469b2b25ee7297b7eb0d7719878cab42457f80146a81943c0c8 +DIST windows-sys-0.45.0.crate 2568659 BLAKE2B 6f2d634d121a9bf41e2887e277a73f33aee69b04c7fcfc6ff973d21902787997f1e186f530e9226cddc003ffc3f85a179c069c8a8688de459f617df92d33f94f SHA512 f239346c0141b95aa76e0771e2f4e38b9a592f3cd92c6001de353637cd65cd73b94cbf9917a4eaa9b0c0b2e6e2af920b9cf6b3fccb52770df5160254cffc1c47 +DIST windows-targets-0.42.2.crate 5492 BLAKE2B 42fc4a7d3e287fe2a70637e890304b49737776596f4a94a6d216668247092135e84322bd04caddd19c83b7700b0f27278e600ce8ed326957fabc21bffcae89b0 SHA512 84fbaffcad9a80beca77506aac26d0c5cb75aa0f21a5a70bcd3f6a16e71e8753ae00d3b89da9262c99756624163dcc0d6074fa9f99dfaae0dc098018209025f9 +DIST windows-targets-0.48.5.crate 6904 BLAKE2B 7396bb210f37bd51da86f39fca3425c8f6610721d5c4e94f9fafa0a8a8046303b3fcc6979146bcfaa32f4406d242a0455f6cbb220f84c6ff84650e755acf5223 SHA512 e079eeef255a046be7f8e6a31c14f7b230254ebcf05eed2944827bb3d2a0dc30940d87593cf544d5e7ef35f6312b99430efcfb01421d91b02bb9c4bef7d98709 +DIST windows_aarch64_gnullvm-0.42.2.crate 364071 BLAKE2B 97c4e3b2a2dd3f936f9bfcdad23639c9c4c499eed220aec361d26d6013d798efa118e6b298f9cf841ac149d2ae5d58ca653731718450fcf2910bb5f6fa39159f SHA512 75cd7eb1def8ce9d0ff3d7468d2b1cc31cc76c08f981a2460c3d1eb09cff7100d7442863a3591621c1f5f3b3f4badf0b5c95285b6ed583e37283a8403f1095f1 +DIST windows_aarch64_gnullvm-0.48.5.crate 418492 BLAKE2B 5c6f7d73ad05740f0bac304ed1ef9b2ea63b0d6ca8f875552ae299a0b73b1557e8fe996f1c2b69be9f2df350c9288690f49ee62239a2896991364331d6c55462 SHA512 20158d31454488f6053d3ad7b97d7fc6eae6cf37e4ba0e50c28bd29b368505eed64199ae31104d5f97b66846be54e5ed25c0ad31ea850819205c573a31ac0996 +DIST windows_aarch64_msvc-0.42.2.crate 666981 BLAKE2B 9f3cc5592cdede08bcdc1e7c455325279e3b763d96942695e10dccf1dfc37a81c749b69a7d6de883d4c0fa6e8a0d2f578fe2a8d6c42ad8ef6282590bf8fc87b7 SHA512 d2dafa8c94d01c1b65ca1bd631d31f2ef842f1db7accb132ff78c3f8483221b991afd3391563e03dcec42bbc9cbdc0ebdab47b991d25af85b5ba2ac1bbf8db63 +DIST windows_aarch64_msvc-0.48.5.crate 798483 BLAKE2B 60c466d6536426425a34b5ca20da97c8127ebeb4fb9b1363911165bada484f8913fcd50e90410b5661e0c27dbfe8f4eeaa62fb17d1f3566bfc82b6255e11619b SHA512 223f016c6f1a44dbc5c8a8428b39438f75380ea06951b7c26ed0877b19d79410c6fde5e4c7f2c839b6e76159131f39a1230e0e3a208dfc425ba9117e3665c4ff +DIST windows_i686_gnu-0.42.2.crate 736236 BLAKE2B 4ef0496462afc73d9d72af7e5da1e6d3506a92f8172930e88ae64ab97596ffd31c4f97fb969e9b677e30159c27f00a8e756deb006b630fb98ce83f03c8b762e2 SHA512 ad09d650a05cb91cb6b40f59025c023a4c286bc1194586697c506016df2b9b0d5b02606b81687bc634795a0d9a9b8a73e486599328ae09c853e8e5ba662fc59c +DIST windows_i686_gnu-0.48.5.crate 844891 BLAKE2B fdc37cd74a4982056bf22fdb7b84e1c55dc838f3cb19ff3648730a77e673ef4ecc0380b3e4277bb8df2fcfa25f57b69014713d9e3ed27c28e19b25b3ea2ab774 SHA512 931ba5c1e4eb8ae73248e00d9611298d1c4b4b0dae719fdeb9243930cd420a103a7bc2738e0a4887c42c8f25728d6c5d64ad141dc092bc3f1d0f35dbe37d303a +DIST windows_i686_msvc-0.42.2.crate 724951 BLAKE2B b084286cd4927efd2889b149abf8a9fe9d3d777130db9e592982660dbf9a96a0f5e723ca121465787aa11877d2d29a5a7d7cf066cdc8fa7e90d7ca7dcb7677f1 SHA512 c1706fc36d4b157c020744a11b3eb5d7dfbf05a0b56775bc717e94b7fd725816b20154fdbcd69ac08dbfb8b8bbfa74fab72d7a9c10399aad6a1cc54cf597e804 +DIST windows_i686_msvc-0.48.5.crate 864300 BLAKE2B 3d3ea8be55e2d6ced0eeda18abe1dffb925a1a78f456d683e4450d9f2fd287ad2e8494d65b2b770c677a12b3a60d10f0435e16c61880e3867c3657fd44892442 SHA512 70e2fb4fdb006a4cbd43ab2c7e940b277a15fb1790dfa2d1fc1f1fd18bead4886f6dc046e44326603e4894d988578917b8932aba5d9a6a4cc8424911cad9dc7e +DIST windows_x86_64_gnu-0.42.2.crate 699373 BLAKE2B 01c70809d564b16b268656e47295e99c992d8f9839fac8a51338a0e7c3b9cdcd0429c456ca8c1c139a8c687ed7ed6c43a82250889d881aadaa65bd037223e0a6 SHA512 5767af3c86e717f93137a89d442230e6b60a649057edb3ab104b1f82c0bcd64fe089dcdf2f4fd486a799bece1ddb5f0449641536b678211945e749ae24f35c1f +DIST windows_x86_64_gnu-0.48.5.crate 801619 BLAKE2B aa7e7e6a6ff9f9553ada3a0a39a9aa798e9d995a8eef36e0b6fdb2a0db93ddecee5548970575271fe43aec74797a420d0ee231d503b5bad1bd999059261e0e33 SHA512 1d6056fae430b3d042bdff3c6217c76be4b8b9f5dada9bad06beaac2db7d7ab9b0a82e44f498ec88e61afa73e99f56d84d445dc3847732b9ce5d947e08485f74 +DIST windows_x86_64_gnullvm-0.42.2.crate 364068 BLAKE2B 64bc53e98eb3fc649c9b43a6e734de4e65088e41edacabd49f7afcc5dc6e1065c563ecfc682747dda05978dea2dba4f45c16fcc18c3b00684c3d93681e5a7deb SHA512 d39a8bc948110fe612d3f8d6628b3f0d56620df11d8a49e0fabb6c90389ad407582b3af10e4eab46c79b3d11d2e10753d73d9e55963fbeac085f41e9749bdba3 +DIST windows_x86_64_gnullvm-0.48.5.crate 418486 BLAKE2B 12a2199d434617c1df1a839e9f435620ad64b40c579f6d0c3677553ad7a48e5765d12c266b04946402e15c92cff2e4ac4979ce2130750ef426e2672119680284 SHA512 c016d5b5e73832b61ff67929d92fa8c16e154656294357266ad29ce1f44db4ca2d2935dba31a6b571187dc838b1d22f1e3b41fefffd1d719a338439adf1646aa +DIST windows_x86_64_msvc-0.42.2.crate 666936 BLAKE2B bc3a456e7f8bc272f8978ec69506ec9d89f97b7582ebbe05d8bd57bdf8156ef62d0d2dc6137a97e81d54059d70db97a24af9a038adff357f5dfd28805d6193b5 SHA512 53a35f438903fceb59e36bd2ac331773fb8e6c8c5a6d984e79021761f91b3b4a23efe49d219667a4d0d23dcdbf906da9c24e74fb1cff93395b5c55ff524e3788 +DIST windows_x86_64_msvc-0.48.5.crate 798412 BLAKE2B 8abc0721e2fb337fe17c91d278947d36122d9045b839ba0cf3e690202d242265b676f23cc301da5f9d98c56ca4ecb76f7d6f072ee71bf986a1deca87020b90e5 SHA512 fa1c5cd14ca2ff0082e2504cf59d317dc4dc6f7138d35c12f95d4476a9c13d8b7f5537d0ee251eee7c99411ad31b22263171b7fbd391daa5d3ea3488ceaa61a0 diff --git a/dev-python/cryptography/cryptography-41.0.7.ebuild b/dev-python/cryptography/cryptography-41.0.7.ebuild new file mode 100644 index 0000000..a04f604 --- /dev/null +++ b/dev-python/cryptography/cryptography-41.0.7.ebuild @@ -0,0 +1,157 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CARGO_OPTIONAL=yes +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} pypy3 ) +PYTHON_REQ_USE="threads(+)" + +CRATES=" + Inflector@0.11.4 + aliasable@0.1.3 + asn1@0.15.2 + asn1_derive@0.15.2 + autocfg@1.1.0 + base64@0.13.1 + bitflags@1.3.2 + bitflags@2.4.1 + cc@1.0.79 + cfg-if@1.0.0 + foreign-types-shared@0.1.1 + foreign-types@0.3.2 + indoc@1.0.9 + libc@0.2.144 + lock_api@0.4.9 + memoffset@0.8.0 + once_cell@1.17.2 + openssl-macros@0.1.1 + openssl-sys@0.9.96 + openssl@0.10.60 + ouroboros@0.15.6 + ouroboros_macro@0.15.6 + parking_lot@0.12.1 + parking_lot_core@0.9.7 + pem@1.1.1 + pkg-config@0.3.27 + proc-macro-error-attr@1.0.4 + proc-macro-error@1.0.4 + proc-macro2@1.0.64 + pyo3-build-config@0.18.3 + pyo3-ffi@0.18.3 + pyo3-macros-backend@0.18.3 + pyo3-macros@0.18.3 + pyo3@0.18.3 + quote@1.0.28 + redox_syscall@0.2.16 + scopeguard@1.1.0 + smallvec@1.10.0 + syn@1.0.109 + syn@2.0.18 + target-lexicon@0.12.7 + unicode-ident@1.0.9 + unindent@0.1.11 + vcpkg@0.2.15 + version_check@0.9.4 + windows-sys@0.45.0 + windows-targets@0.42.2 + windows_aarch64_gnullvm@0.42.2 + windows_aarch64_msvc@0.42.2 + windows_i686_gnu@0.42.2 + windows_i686_msvc@0.42.2 + windows_x86_64_gnu@0.42.2 + windows_x86_64_gnullvm@0.42.2 + windows_x86_64_msvc@0.42.2 +" + +inherit cargo distutils-r1 flag-o-matic multiprocessing pypi + +VEC_P=cryptography_vectors-$(ver_cut 1-3) +DESCRIPTION="Library providing cryptographic recipes and primitives" +HOMEPAGE=" + https://github.com/pyca/cryptography/ + https://pypi.org/project/cryptography/ +" +SRC_URI+=" + ${CARGO_CRATE_URIS} + test? ( + $(pypi_sdist_url cryptography_vectors "$(ver_cut 1-3)") + ) +" + +LICENSE="|| ( Apache-2.0 BSD ) PSF-2" +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD MIT + Unicode-DFS-2016 +" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86" + +RDEPEND=" + >=dev-libs/openssl-1.0.2o-r6:0= + $(python_gen_cond_dep ' + >=dev-python/cffi-1.8:=[${PYTHON_USEDEP}] + ' 'python*') +" +DEPEND=" + ${RDEPEND} +" +# XXX: Drop explicit >=virtual/rust-1.56.0 dep once that's the minimum in cargo.eclass +# and replace it with ${RUST_DEPEND} +BDEPEND=" + dev-python/setuptools-rust[${PYTHON_USEDEP}] + >=virtual/rust-1.56.0 + test? ( + >=dev-python/hypothesis-1.11.4[${PYTHON_USEDEP}] + dev-python/iso8601[${PYTHON_USEDEP}] + dev-python/pretend[${PYTHON_USEDEP}] + dev-python/pyasn1-modules[${PYTHON_USEDEP}] + dev-python/pytest-subtests[${PYTHON_USEDEP}] + dev-python/pytest-xdist[${PYTHON_USEDEP}] + dev-python/pytz[${PYTHON_USEDEP}] + ) +" + +# Files built without CFLAGS/LDFLAGS, acceptable for rust +QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/cryptography/hazmat/bindings/_rust.*.so" + +distutils_enable_tests pytest + +src_unpack() { + cargo_src_unpack +} + +src_prepare() { + default + + pushd "${ECARGO_HOME}"/gentoo/openssl-sys-0.9.96 > /dev/null || die + eapply "${FILESDIR}/${PN}-42.0.5-libressl-openssl-sys.patch" + popd > /dev/null || die + + sed -i -e 's:--benchmark-disable::' pyproject.toml || die + + # work around availability macros not supported in GCC (yet) + if [[ ${CHOST} == *-darwin* ]] ; then + local darwinok=0 + if [[ ${CHOST##*-darwin} -ge 16 ]] ; then + darwinok=1 + fi + sed -i -e 's/__builtin_available(macOS 10\.12, \*)/'"${darwinok}"'/' \ + src/_cffi_src/openssl/src/osrandom_engine.c || die + fi +} + +python_configure_all() { + filter-lto # bug #903908 +} + +python_test() { + local -x PYTHONPATH="${PYTHONPATH}:${WORKDIR}/cryptography_vectors-${PV}" + local EPYTEST_IGNORE=( + tests/bench + ) + epytest -n "$(makeopts_jobs)" +} diff --git a/dev-python/cryptography/cryptography-42.0.0.ebuild b/dev-python/cryptography/cryptography-42.0.0.ebuild new file mode 100644 index 0000000..f0c630f --- /dev/null +++ b/dev-python/cryptography/cryptography-42.0.0.ebuild @@ -0,0 +1,150 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CARGO_OPTIONAL=yes +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} pypy3 ) +PYTHON_REQ_USE="threads(+)" + +CRATES=" + asn1@0.15.5 + asn1_derive@0.15.5 + autocfg@1.1.0 + base64@0.21.7 + bitflags@1.3.2 + bitflags@2.4.2 + cc@1.0.83 + cfg-if@1.0.0 + foreign-types-shared@0.1.1 + foreign-types@0.3.2 + heck@0.4.1 + indoc@2.0.4 + libc@0.2.152 + lock_api@0.4.11 + memoffset@0.9.0 + once_cell@1.19.0 + openssl-macros@0.1.1 + openssl-sys@0.9.99 + openssl@0.10.63 + parking_lot@0.12.1 + parking_lot_core@0.9.9 + pem@3.0.3 + pkg-config@0.3.29 + proc-macro2@1.0.78 + pyo3-build-config@0.20.2 + pyo3-ffi@0.20.2 + pyo3-macros-backend@0.20.2 + pyo3-macros@0.20.2 + pyo3@0.20.2 + quote@1.0.35 + redox_syscall@0.4.1 + scopeguard@1.2.0 + self_cell@1.0.3 + smallvec@1.13.1 + syn@2.0.48 + target-lexicon@0.12.13 + unicode-ident@1.0.12 + unindent@0.2.3 + vcpkg@0.2.15 + windows-targets@0.48.5 + windows_aarch64_gnullvm@0.48.5 + windows_aarch64_msvc@0.48.5 + windows_i686_gnu@0.48.5 + windows_i686_msvc@0.48.5 + windows_x86_64_gnu@0.48.5 + windows_x86_64_gnullvm@0.48.5 + windows_x86_64_msvc@0.48.5 +" + +inherit cargo distutils-r1 flag-o-matic multiprocessing pypi + +VEC_P=cryptography_vectors-$(ver_cut 1-3) +DESCRIPTION="Library providing cryptographic recipes and primitives" +HOMEPAGE=" + https://github.com/pyca/cryptography/ + https://pypi.org/project/cryptography/ +" +SRC_URI+=" + ${CARGO_CRATE_URIS} + test? ( + $(pypi_sdist_url cryptography_vectors "$(ver_cut 1-3)") + ) +" + +LICENSE="|| ( Apache-2.0 BSD ) PSF-2" +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD MIT Unicode-DFS-2016 +" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + +RDEPEND=" + >=dev-libs/openssl-1.0.2o-r6:0= + $(python_gen_cond_dep ' + >=dev-python/cffi-1.8:=[${PYTHON_USEDEP}] + ' 'python*') +" +DEPEND=" + ${RDEPEND} +" +# XXX: Drop explicit >=virtual/rust-1.56.0 dep once that's the minimum in cargo.eclass +# and replace it with ${RUST_DEPEND} +BDEPEND=" + >=dev-python/setuptools-rust-1.7.0[${PYTHON_USEDEP}] + >=virtual/rust-1.56.0 + test? ( + dev-python/certifi[${PYTHON_USEDEP}] + >=dev-python/hypothesis-1.11.4[${PYTHON_USEDEP}] + dev-python/iso8601[${PYTHON_USEDEP}] + dev-python/pretend[${PYTHON_USEDEP}] + dev-python/pyasn1-modules[${PYTHON_USEDEP}] + dev-python/pytest-subtests[${PYTHON_USEDEP}] + dev-python/pytest-xdist[${PYTHON_USEDEP}] + dev-python/pytz[${PYTHON_USEDEP}] + ) +" + +# Files built without CFLAGS/LDFLAGS, acceptable for rust +QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/cryptography/hazmat/bindings/_rust.*.so" + +distutils_enable_tests pytest + +src_unpack() { + cargo_src_unpack +} + +src_prepare() { + default + + pushd "${ECARGO_HOME}"/gentoo/openssl-sys-0.9.99 > /dev/null || die + eapply "${FILESDIR}/${PN}-42.0.5-libressl-openssl-sys.patch" + popd > /dev/null || die + + sed -i -e 's:--benchmark-disable::' pyproject.toml || die + + # work around availability macros not supported in GCC (yet) + if [[ ${CHOST} == *-darwin* ]] ; then + local darwinok=0 + if [[ ${CHOST##*-darwin} -ge 16 ]] ; then + darwinok=1 + fi + sed -i -e 's/__builtin_available(macOS 10\.12, \*)/'"${darwinok}"'/' \ + src/_cffi_src/openssl/src/osrandom_engine.c || die + fi +} + +python_configure_all() { + filter-lto # bug #903908 +} + +python_test() { + local -x PYTHONPATH="${PYTHONPATH}:${WORKDIR}/cryptography_vectors-${PV}" + local EPYTEST_IGNORE=( + tests/bench + ) + epytest -n "$(makeopts_jobs)" +} diff --git a/dev-python/cryptography/cryptography-42.0.1.ebuild b/dev-python/cryptography/cryptography-42.0.1.ebuild new file mode 100644 index 0000000..f0c630f --- /dev/null +++ b/dev-python/cryptography/cryptography-42.0.1.ebuild @@ -0,0 +1,150 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CARGO_OPTIONAL=yes +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} pypy3 ) +PYTHON_REQ_USE="threads(+)" + +CRATES=" + asn1@0.15.5 + asn1_derive@0.15.5 + autocfg@1.1.0 + base64@0.21.7 + bitflags@1.3.2 + bitflags@2.4.2 + cc@1.0.83 + cfg-if@1.0.0 + foreign-types-shared@0.1.1 + foreign-types@0.3.2 + heck@0.4.1 + indoc@2.0.4 + libc@0.2.152 + lock_api@0.4.11 + memoffset@0.9.0 + once_cell@1.19.0 + openssl-macros@0.1.1 + openssl-sys@0.9.99 + openssl@0.10.63 + parking_lot@0.12.1 + parking_lot_core@0.9.9 + pem@3.0.3 + pkg-config@0.3.29 + proc-macro2@1.0.78 + pyo3-build-config@0.20.2 + pyo3-ffi@0.20.2 + pyo3-macros-backend@0.20.2 + pyo3-macros@0.20.2 + pyo3@0.20.2 + quote@1.0.35 + redox_syscall@0.4.1 + scopeguard@1.2.0 + self_cell@1.0.3 + smallvec@1.13.1 + syn@2.0.48 + target-lexicon@0.12.13 + unicode-ident@1.0.12 + unindent@0.2.3 + vcpkg@0.2.15 + windows-targets@0.48.5 + windows_aarch64_gnullvm@0.48.5 + windows_aarch64_msvc@0.48.5 + windows_i686_gnu@0.48.5 + windows_i686_msvc@0.48.5 + windows_x86_64_gnu@0.48.5 + windows_x86_64_gnullvm@0.48.5 + windows_x86_64_msvc@0.48.5 +" + +inherit cargo distutils-r1 flag-o-matic multiprocessing pypi + +VEC_P=cryptography_vectors-$(ver_cut 1-3) +DESCRIPTION="Library providing cryptographic recipes and primitives" +HOMEPAGE=" + https://github.com/pyca/cryptography/ + https://pypi.org/project/cryptography/ +" +SRC_URI+=" + ${CARGO_CRATE_URIS} + test? ( + $(pypi_sdist_url cryptography_vectors "$(ver_cut 1-3)") + ) +" + +LICENSE="|| ( Apache-2.0 BSD ) PSF-2" +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD MIT Unicode-DFS-2016 +" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + +RDEPEND=" + >=dev-libs/openssl-1.0.2o-r6:0= + $(python_gen_cond_dep ' + >=dev-python/cffi-1.8:=[${PYTHON_USEDEP}] + ' 'python*') +" +DEPEND=" + ${RDEPEND} +" +# XXX: Drop explicit >=virtual/rust-1.56.0 dep once that's the minimum in cargo.eclass +# and replace it with ${RUST_DEPEND} +BDEPEND=" + >=dev-python/setuptools-rust-1.7.0[${PYTHON_USEDEP}] + >=virtual/rust-1.56.0 + test? ( + dev-python/certifi[${PYTHON_USEDEP}] + >=dev-python/hypothesis-1.11.4[${PYTHON_USEDEP}] + dev-python/iso8601[${PYTHON_USEDEP}] + dev-python/pretend[${PYTHON_USEDEP}] + dev-python/pyasn1-modules[${PYTHON_USEDEP}] + dev-python/pytest-subtests[${PYTHON_USEDEP}] + dev-python/pytest-xdist[${PYTHON_USEDEP}] + dev-python/pytz[${PYTHON_USEDEP}] + ) +" + +# Files built without CFLAGS/LDFLAGS, acceptable for rust +QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/cryptography/hazmat/bindings/_rust.*.so" + +distutils_enable_tests pytest + +src_unpack() { + cargo_src_unpack +} + +src_prepare() { + default + + pushd "${ECARGO_HOME}"/gentoo/openssl-sys-0.9.99 > /dev/null || die + eapply "${FILESDIR}/${PN}-42.0.5-libressl-openssl-sys.patch" + popd > /dev/null || die + + sed -i -e 's:--benchmark-disable::' pyproject.toml || die + + # work around availability macros not supported in GCC (yet) + if [[ ${CHOST} == *-darwin* ]] ; then + local darwinok=0 + if [[ ${CHOST##*-darwin} -ge 16 ]] ; then + darwinok=1 + fi + sed -i -e 's/__builtin_available(macOS 10\.12, \*)/'"${darwinok}"'/' \ + src/_cffi_src/openssl/src/osrandom_engine.c || die + fi +} + +python_configure_all() { + filter-lto # bug #903908 +} + +python_test() { + local -x PYTHONPATH="${PYTHONPATH}:${WORKDIR}/cryptography_vectors-${PV}" + local EPYTEST_IGNORE=( + tests/bench + ) + epytest -n "$(makeopts_jobs)" +} diff --git a/dev-python/cryptography/cryptography-42.0.2.ebuild b/dev-python/cryptography/cryptography-42.0.2.ebuild new file mode 100644 index 0000000..f0c630f --- /dev/null +++ b/dev-python/cryptography/cryptography-42.0.2.ebuild @@ -0,0 +1,150 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CARGO_OPTIONAL=yes +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} pypy3 ) +PYTHON_REQ_USE="threads(+)" + +CRATES=" + asn1@0.15.5 + asn1_derive@0.15.5 + autocfg@1.1.0 + base64@0.21.7 + bitflags@1.3.2 + bitflags@2.4.2 + cc@1.0.83 + cfg-if@1.0.0 + foreign-types-shared@0.1.1 + foreign-types@0.3.2 + heck@0.4.1 + indoc@2.0.4 + libc@0.2.152 + lock_api@0.4.11 + memoffset@0.9.0 + once_cell@1.19.0 + openssl-macros@0.1.1 + openssl-sys@0.9.99 + openssl@0.10.63 + parking_lot@0.12.1 + parking_lot_core@0.9.9 + pem@3.0.3 + pkg-config@0.3.29 + proc-macro2@1.0.78 + pyo3-build-config@0.20.2 + pyo3-ffi@0.20.2 + pyo3-macros-backend@0.20.2 + pyo3-macros@0.20.2 + pyo3@0.20.2 + quote@1.0.35 + redox_syscall@0.4.1 + scopeguard@1.2.0 + self_cell@1.0.3 + smallvec@1.13.1 + syn@2.0.48 + target-lexicon@0.12.13 + unicode-ident@1.0.12 + unindent@0.2.3 + vcpkg@0.2.15 + windows-targets@0.48.5 + windows_aarch64_gnullvm@0.48.5 + windows_aarch64_msvc@0.48.5 + windows_i686_gnu@0.48.5 + windows_i686_msvc@0.48.5 + windows_x86_64_gnu@0.48.5 + windows_x86_64_gnullvm@0.48.5 + windows_x86_64_msvc@0.48.5 +" + +inherit cargo distutils-r1 flag-o-matic multiprocessing pypi + +VEC_P=cryptography_vectors-$(ver_cut 1-3) +DESCRIPTION="Library providing cryptographic recipes and primitives" +HOMEPAGE=" + https://github.com/pyca/cryptography/ + https://pypi.org/project/cryptography/ +" +SRC_URI+=" + ${CARGO_CRATE_URIS} + test? ( + $(pypi_sdist_url cryptography_vectors "$(ver_cut 1-3)") + ) +" + +LICENSE="|| ( Apache-2.0 BSD ) PSF-2" +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD MIT Unicode-DFS-2016 +" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + +RDEPEND=" + >=dev-libs/openssl-1.0.2o-r6:0= + $(python_gen_cond_dep ' + >=dev-python/cffi-1.8:=[${PYTHON_USEDEP}] + ' 'python*') +" +DEPEND=" + ${RDEPEND} +" +# XXX: Drop explicit >=virtual/rust-1.56.0 dep once that's the minimum in cargo.eclass +# and replace it with ${RUST_DEPEND} +BDEPEND=" + >=dev-python/setuptools-rust-1.7.0[${PYTHON_USEDEP}] + >=virtual/rust-1.56.0 + test? ( + dev-python/certifi[${PYTHON_USEDEP}] + >=dev-python/hypothesis-1.11.4[${PYTHON_USEDEP}] + dev-python/iso8601[${PYTHON_USEDEP}] + dev-python/pretend[${PYTHON_USEDEP}] + dev-python/pyasn1-modules[${PYTHON_USEDEP}] + dev-python/pytest-subtests[${PYTHON_USEDEP}] + dev-python/pytest-xdist[${PYTHON_USEDEP}] + dev-python/pytz[${PYTHON_USEDEP}] + ) +" + +# Files built without CFLAGS/LDFLAGS, acceptable for rust +QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/cryptography/hazmat/bindings/_rust.*.so" + +distutils_enable_tests pytest + +src_unpack() { + cargo_src_unpack +} + +src_prepare() { + default + + pushd "${ECARGO_HOME}"/gentoo/openssl-sys-0.9.99 > /dev/null || die + eapply "${FILESDIR}/${PN}-42.0.5-libressl-openssl-sys.patch" + popd > /dev/null || die + + sed -i -e 's:--benchmark-disable::' pyproject.toml || die + + # work around availability macros not supported in GCC (yet) + if [[ ${CHOST} == *-darwin* ]] ; then + local darwinok=0 + if [[ ${CHOST##*-darwin} -ge 16 ]] ; then + darwinok=1 + fi + sed -i -e 's/__builtin_available(macOS 10\.12, \*)/'"${darwinok}"'/' \ + src/_cffi_src/openssl/src/osrandom_engine.c || die + fi +} + +python_configure_all() { + filter-lto # bug #903908 +} + +python_test() { + local -x PYTHONPATH="${PYTHONPATH}:${WORKDIR}/cryptography_vectors-${PV}" + local EPYTEST_IGNORE=( + tests/bench + ) + epytest -n "$(makeopts_jobs)" +} diff --git a/dev-python/cryptography/cryptography-42.0.3.ebuild b/dev-python/cryptography/cryptography-42.0.3.ebuild new file mode 100644 index 0000000..f0c630f --- /dev/null +++ b/dev-python/cryptography/cryptography-42.0.3.ebuild @@ -0,0 +1,150 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CARGO_OPTIONAL=yes +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} pypy3 ) +PYTHON_REQ_USE="threads(+)" + +CRATES=" + asn1@0.15.5 + asn1_derive@0.15.5 + autocfg@1.1.0 + base64@0.21.7 + bitflags@1.3.2 + bitflags@2.4.2 + cc@1.0.83 + cfg-if@1.0.0 + foreign-types-shared@0.1.1 + foreign-types@0.3.2 + heck@0.4.1 + indoc@2.0.4 + libc@0.2.152 + lock_api@0.4.11 + memoffset@0.9.0 + once_cell@1.19.0 + openssl-macros@0.1.1 + openssl-sys@0.9.99 + openssl@0.10.63 + parking_lot@0.12.1 + parking_lot_core@0.9.9 + pem@3.0.3 + pkg-config@0.3.29 + proc-macro2@1.0.78 + pyo3-build-config@0.20.2 + pyo3-ffi@0.20.2 + pyo3-macros-backend@0.20.2 + pyo3-macros@0.20.2 + pyo3@0.20.2 + quote@1.0.35 + redox_syscall@0.4.1 + scopeguard@1.2.0 + self_cell@1.0.3 + smallvec@1.13.1 + syn@2.0.48 + target-lexicon@0.12.13 + unicode-ident@1.0.12 + unindent@0.2.3 + vcpkg@0.2.15 + windows-targets@0.48.5 + windows_aarch64_gnullvm@0.48.5 + windows_aarch64_msvc@0.48.5 + windows_i686_gnu@0.48.5 + windows_i686_msvc@0.48.5 + windows_x86_64_gnu@0.48.5 + windows_x86_64_gnullvm@0.48.5 + windows_x86_64_msvc@0.48.5 +" + +inherit cargo distutils-r1 flag-o-matic multiprocessing pypi + +VEC_P=cryptography_vectors-$(ver_cut 1-3) +DESCRIPTION="Library providing cryptographic recipes and primitives" +HOMEPAGE=" + https://github.com/pyca/cryptography/ + https://pypi.org/project/cryptography/ +" +SRC_URI+=" + ${CARGO_CRATE_URIS} + test? ( + $(pypi_sdist_url cryptography_vectors "$(ver_cut 1-3)") + ) +" + +LICENSE="|| ( Apache-2.0 BSD ) PSF-2" +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD MIT Unicode-DFS-2016 +" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + +RDEPEND=" + >=dev-libs/openssl-1.0.2o-r6:0= + $(python_gen_cond_dep ' + >=dev-python/cffi-1.8:=[${PYTHON_USEDEP}] + ' 'python*') +" +DEPEND=" + ${RDEPEND} +" +# XXX: Drop explicit >=virtual/rust-1.56.0 dep once that's the minimum in cargo.eclass +# and replace it with ${RUST_DEPEND} +BDEPEND=" + >=dev-python/setuptools-rust-1.7.0[${PYTHON_USEDEP}] + >=virtual/rust-1.56.0 + test? ( + dev-python/certifi[${PYTHON_USEDEP}] + >=dev-python/hypothesis-1.11.4[${PYTHON_USEDEP}] + dev-python/iso8601[${PYTHON_USEDEP}] + dev-python/pretend[${PYTHON_USEDEP}] + dev-python/pyasn1-modules[${PYTHON_USEDEP}] + dev-python/pytest-subtests[${PYTHON_USEDEP}] + dev-python/pytest-xdist[${PYTHON_USEDEP}] + dev-python/pytz[${PYTHON_USEDEP}] + ) +" + +# Files built without CFLAGS/LDFLAGS, acceptable for rust +QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/cryptography/hazmat/bindings/_rust.*.so" + +distutils_enable_tests pytest + +src_unpack() { + cargo_src_unpack +} + +src_prepare() { + default + + pushd "${ECARGO_HOME}"/gentoo/openssl-sys-0.9.99 > /dev/null || die + eapply "${FILESDIR}/${PN}-42.0.5-libressl-openssl-sys.patch" + popd > /dev/null || die + + sed -i -e 's:--benchmark-disable::' pyproject.toml || die + + # work around availability macros not supported in GCC (yet) + if [[ ${CHOST} == *-darwin* ]] ; then + local darwinok=0 + if [[ ${CHOST##*-darwin} -ge 16 ]] ; then + darwinok=1 + fi + sed -i -e 's/__builtin_available(macOS 10\.12, \*)/'"${darwinok}"'/' \ + src/_cffi_src/openssl/src/osrandom_engine.c || die + fi +} + +python_configure_all() { + filter-lto # bug #903908 +} + +python_test() { + local -x PYTHONPATH="${PYTHONPATH}:${WORKDIR}/cryptography_vectors-${PV}" + local EPYTEST_IGNORE=( + tests/bench + ) + epytest -n "$(makeopts_jobs)" +} diff --git a/dev-python/cryptography/cryptography-42.0.4.ebuild b/dev-python/cryptography/cryptography-42.0.4.ebuild new file mode 100644 index 0000000..316ccaf --- /dev/null +++ b/dev-python/cryptography/cryptography-42.0.4.ebuild @@ -0,0 +1,150 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CARGO_OPTIONAL=yes +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} pypy3 ) +PYTHON_REQ_USE="threads(+)" + +CRATES=" + asn1@0.15.5 + asn1_derive@0.15.5 + autocfg@1.1.0 + base64@0.21.7 + bitflags@1.3.2 + bitflags@2.4.2 + cc@1.0.83 + cfg-if@1.0.0 + foreign-types-shared@0.1.1 + foreign-types@0.3.2 + heck@0.4.1 + indoc@2.0.4 + libc@0.2.152 + lock_api@0.4.11 + memoffset@0.9.0 + once_cell@1.19.0 + openssl-macros@0.1.1 + openssl-sys@0.9.99 + openssl@0.10.63 + parking_lot@0.12.1 + parking_lot_core@0.9.9 + pem@3.0.3 + pkg-config@0.3.29 + proc-macro2@1.0.78 + pyo3-build-config@0.20.2 + pyo3-ffi@0.20.2 + pyo3-macros-backend@0.20.2 + pyo3-macros@0.20.2 + pyo3@0.20.2 + quote@1.0.35 + redox_syscall@0.4.1 + scopeguard@1.2.0 + self_cell@1.0.3 + smallvec@1.13.1 + syn@2.0.48 + target-lexicon@0.12.13 + unicode-ident@1.0.12 + unindent@0.2.3 + vcpkg@0.2.15 + windows-targets@0.48.5 + windows_aarch64_gnullvm@0.48.5 + windows_aarch64_msvc@0.48.5 + windows_i686_gnu@0.48.5 + windows_i686_msvc@0.48.5 + windows_x86_64_gnu@0.48.5 + windows_x86_64_gnullvm@0.48.5 + windows_x86_64_msvc@0.48.5 +" + +inherit cargo distutils-r1 flag-o-matic multiprocessing pypi + +VEC_P=cryptography_vectors-$(ver_cut 1-3) +DESCRIPTION="Library providing cryptographic recipes and primitives" +HOMEPAGE=" + https://github.com/pyca/cryptography/ + https://pypi.org/project/cryptography/ +" +SRC_URI+=" + ${CARGO_CRATE_URIS} + test? ( + $(pypi_sdist_url cryptography_vectors "$(ver_cut 1-3)") + ) +" + +LICENSE="|| ( Apache-2.0 BSD ) PSF-2" +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD MIT Unicode-DFS-2016 +" +SLOT="0" +KEYWORDS="amd64 ~arm ~arm64 ~loong ~ppc ppc64 ~riscv ~s390 ~sparc ~x86" + +RDEPEND=" + >=dev-libs/openssl-1.0.2o-r6:0= + $(python_gen_cond_dep ' + >=dev-python/cffi-1.8:=[${PYTHON_USEDEP}] + ' 'python*') +" +DEPEND=" + ${RDEPEND} +" +# XXX: Drop explicit >=virtual/rust-1.56.0 dep once that's the minimum in cargo.eclass +# and replace it with ${RUST_DEPEND} +BDEPEND=" + >=dev-python/setuptools-rust-1.7.0[${PYTHON_USEDEP}] + >=virtual/rust-1.56.0 + test? ( + dev-python/certifi[${PYTHON_USEDEP}] + >=dev-python/hypothesis-1.11.4[${PYTHON_USEDEP}] + dev-python/iso8601[${PYTHON_USEDEP}] + dev-python/pretend[${PYTHON_USEDEP}] + dev-python/pyasn1-modules[${PYTHON_USEDEP}] + dev-python/pytest-subtests[${PYTHON_USEDEP}] + dev-python/pytest-xdist[${PYTHON_USEDEP}] + dev-python/pytz[${PYTHON_USEDEP}] + ) +" + +# Files built without CFLAGS/LDFLAGS, acceptable for rust +QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/cryptography/hazmat/bindings/_rust.*.so" + +distutils_enable_tests pytest + +src_unpack() { + cargo_src_unpack +} + +src_prepare() { + default + + pushd "${ECARGO_HOME}"/gentoo/openssl-sys-0.9.99 > /dev/null || die + eapply "${FILESDIR}/${PN}-42.0.5-libressl-openssl-sys.patch" + popd > /dev/null || die + + sed -i -e 's:--benchmark-disable::' pyproject.toml || die + + # work around availability macros not supported in GCC (yet) + if [[ ${CHOST} == *-darwin* ]] ; then + local darwinok=0 + if [[ ${CHOST##*-darwin} -ge 16 ]] ; then + darwinok=1 + fi + sed -i -e 's/__builtin_available(macOS 10\.12, \*)/'"${darwinok}"'/' \ + src/_cffi_src/openssl/src/osrandom_engine.c || die + fi +} + +python_configure_all() { + filter-lto # bug #903908 +} + +python_test() { + local -x PYTHONPATH="${PYTHONPATH}:${WORKDIR}/cryptography_vectors-${PV}" + local EPYTEST_IGNORE=( + tests/bench + ) + epytest -n "$(makeopts_jobs)" +} diff --git a/dev-python/cryptography/cryptography-42.0.5.ebuild b/dev-python/cryptography/cryptography-42.0.5.ebuild new file mode 100644 index 0000000..37f1782 --- /dev/null +++ b/dev-python/cryptography/cryptography-42.0.5.ebuild @@ -0,0 +1,151 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CARGO_OPTIONAL=yes +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} pypy3 ) +PYTHON_REQ_USE="threads(+)" + +CRATES=" + asn1@0.15.5 + asn1_derive@0.15.5 + autocfg@1.1.0 + base64@0.21.7 + bitflags@1.3.2 + bitflags@2.4.2 + cc@1.0.83 + cfg-if@1.0.0 + foreign-types-shared@0.1.1 + foreign-types@0.3.2 + heck@0.4.1 + indoc@2.0.4 + libc@0.2.152 + lock_api@0.4.11 + memoffset@0.9.0 + once_cell@1.19.0 + openssl-macros@0.1.1 + openssl-sys@0.9.99 + openssl@0.10.63 + parking_lot@0.12.1 + parking_lot_core@0.9.9 + pem@3.0.3 + pkg-config@0.3.29 + portable-atomic@1.6.0 + proc-macro2@1.0.78 + pyo3-build-config@0.20.3 + pyo3-ffi@0.20.3 + pyo3-macros-backend@0.20.3 + pyo3-macros@0.20.3 + pyo3@0.20.3 + quote@1.0.35 + redox_syscall@0.4.1 + scopeguard@1.2.0 + self_cell@1.0.3 + smallvec@1.13.1 + syn@2.0.48 + target-lexicon@0.12.13 + unicode-ident@1.0.12 + unindent@0.2.3 + vcpkg@0.2.15 + windows-targets@0.48.5 + windows_aarch64_gnullvm@0.48.5 + windows_aarch64_msvc@0.48.5 + windows_i686_gnu@0.48.5 + windows_i686_msvc@0.48.5 + windows_x86_64_gnu@0.48.5 + windows_x86_64_gnullvm@0.48.5 + windows_x86_64_msvc@0.48.5 +" + +inherit cargo distutils-r1 flag-o-matic multiprocessing pypi + +VEC_P=cryptography_vectors-$(ver_cut 1-3) +DESCRIPTION="Library providing cryptographic recipes and primitives" +HOMEPAGE=" + https://github.com/pyca/cryptography/ + https://pypi.org/project/cryptography/ +" +SRC_URI+=" + ${CARGO_CRATE_URIS} + test? ( + $(pypi_sdist_url cryptography_vectors "$(ver_cut 1-3)") + ) +" + +LICENSE="|| ( Apache-2.0 BSD ) PSF-2" +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD MIT Unicode-DFS-2016 +" +SLOT="0" +KEYWORDS="amd64 ~arm arm64 ~loong ~ppc ppc64 ~riscv ~s390 sparc ~x86" + +RDEPEND=" + >=dev-libs/openssl-1.0.2o-r6:0= + $(python_gen_cond_dep ' + >=dev-python/cffi-1.8:=[${PYTHON_USEDEP}] + ' 'python*') +" +DEPEND=" + ${RDEPEND} +" +# XXX: Drop explicit >=virtual/rust-1.56.0 dep once that's the minimum in cargo.eclass +# and replace it with ${RUST_DEPEND} +BDEPEND=" + >=dev-python/setuptools-rust-1.7.0[${PYTHON_USEDEP}] + >=virtual/rust-1.56.0 + test? ( + dev-python/certifi[${PYTHON_USEDEP}] + >=dev-python/hypothesis-1.11.4[${PYTHON_USEDEP}] + dev-python/iso8601[${PYTHON_USEDEP}] + dev-python/pretend[${PYTHON_USEDEP}] + dev-python/pyasn1-modules[${PYTHON_USEDEP}] + dev-python/pytest-subtests[${PYTHON_USEDEP}] + dev-python/pytest-xdist[${PYTHON_USEDEP}] + dev-python/pytz[${PYTHON_USEDEP}] + ) +" + +# Files built without CFLAGS/LDFLAGS, acceptable for rust +QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/cryptography/hazmat/bindings/_rust.*.so" + +distutils_enable_tests pytest + +src_unpack() { + cargo_src_unpack +} + +src_prepare() { + default + + pushd "${ECARGO_HOME}"/gentoo/openssl-sys-0.9.99 > /dev/null || die + eapply "${FILESDIR}/${PN}-42.0.5-libressl-openssl-sys.patch" + popd > /dev/null || die + + sed -i -e 's:--benchmark-disable::' pyproject.toml || die + + # work around availability macros not supported in GCC (yet) + if [[ ${CHOST} == *-darwin* ]] ; then + local darwinok=0 + if [[ ${CHOST##*-darwin} -ge 16 ]] ; then + darwinok=1 + fi + sed -i -e 's/__builtin_available(macOS 10\.12, \*)/'"${darwinok}"'/' \ + src/_cffi_src/openssl/src/osrandom_engine.c || die + fi +} + +python_configure_all() { + filter-lto # bug #903908 +} + +python_test() { + local -x PYTHONPATH="${PYTHONPATH}:${WORKDIR}/cryptography_vectors-${PV}" + local EPYTEST_IGNORE=( + tests/bench + ) + epytest -n "$(makeopts_jobs)" +} diff --git a/dev-python/cryptography/files/cryptography-42.0.5-libressl-openssl-sys.patch b/dev-python/cryptography/files/cryptography-42.0.5-libressl-openssl-sys.patch new file mode 100644 index 0000000..c3ba287 --- /dev/null +++ b/dev-python/cryptography/files/cryptography-42.0.5-libressl-openssl-sys.patch @@ -0,0 +1,10 @@ +--- a/build/main.rs.orig ++++ b/build/main.rs +@@ -293,6 +293,7 @@ + (3, 8, 0) => ('3', '8', '0'), + (3, 8, 1) => ('3', '8', '1'), + (3, 8, _) => ('3', '8', 'x'), ++ (_, _, _) => ('x', 'x', 'x'), + _ => version_error(), + }; + diff --git a/dev-python/cryptography/metadata.xml b/dev-python/cryptography/metadata.xml new file mode 100644 index 0000000..e334e10 --- /dev/null +++ b/dev-python/cryptography/metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>python@gentoo.org</email> + <name>Python</name> + </maintainer> + <upstream> + <remote-id type="cpe">cpe:/a:cryptography_project:cryptography</remote-id> + <remote-id type="pypi">cryptography</remote-id> + <remote-id type="github">pyca/cryptography</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-python/m2crypto/Manifest b/dev-python/m2crypto/Manifest new file mode 100644 index 0000000..3574714 --- /dev/null +++ b/dev-python/m2crypto/Manifest @@ -0,0 +1 @@ +DIST M2Crypto-0.41.0.tar.gz 1151680 BLAKE2B 6c5294294fd62ca69eec8222324ce8a1012c999aab241eba2e5b0085c0d7b598fd62f26e106bea95bfad3199abb2db9876547f521b34f45930b00540a6ecc24a SHA512 50ca5e32ae999b9ecdc7f3bbd35221b4a7523ef29e54eb4bc266457723117718955f99b9e7ac42a4cb982f0e22a94e5c852d6886d7dfb157d040ad86c17660fb diff --git a/dev-python/m2crypto/files/m2crypto-libressl-0.38.0.patch b/dev-python/m2crypto/files/m2crypto-libressl-0.38.0.patch new file mode 100644 index 0000000..e125fc6 --- /dev/null +++ b/dev-python/m2crypto/files/m2crypto-libressl-0.38.0.patch @@ -0,0 +1,185 @@ +$OpenBSD: patch-src_M2Crypto_BIO_py,v 1.1 2021/07/24 20:02:04 sthen Exp $ + +Partially revert https://gitlab.com/m2crypto/m2crypto/commit/738cd0bf3dc2ee619f598290d5bf4c2190987f16: + + * Fix BIO.File ... return type of BIO.readline() and close properly. + That is, flush BIO.File() before closing and close also underlying + system file. + +For Python 2 this results in: + +python2 -c "import M2Crypto; M2Crypto.BIO.openfile('/etc/ssl/cert.pem')" +Traceback (most recent call last): + File "<string>", line 1, in <module> + File "/usr/local/lib/python2.7/site-packages/M2Crypto/BIO.py", line 284, in openfile + return File(f) + File "/usr/local/lib/python2.7/site-packages/M2Crypto/BIO.py", line 239, in __init__ + pyfile.flush() +IOError: [Errno 9] Bad file descriptor + +https://gitlab.com/m2crypto/m2crypto/issues/211 + +Index: src/M2Crypto/BIO.py +--- a/src/M2Crypto/BIO.py.orig ++++ b/src/M2Crypto/BIO.py +@@ -235,8 +235,9 @@ class File(BIO): + # + # https://docs.python.org/3.3/c-api/file.html + # +- pyfile.flush() +- self.fname = pyfile.name ++ if six.PY3: ++ pyfile.flush() ++ self.fname = pyfile.name + self.pyfile = pyfile + # Be wary of https://github.com/openssl/openssl/pull/1925 + # BIO_new_fd is NEVER to be used before OpenSSL 1.1.1 +@@ -246,7 +247,8 @@ class File(BIO): + self.bio = m2.bio_new_pyfile(pyfile, m2.bio_noclose) + + self.close_pyfile = close_pyfile +- self.closed = False ++ if six.PY3: ++ self.closed = False + + def flush(self): + # type: () -> None +@@ -255,8 +257,9 @@ class File(BIO): + + def close(self): + # type: () -> None +- self.flush() +- super(File, self).close() ++ if six.PY3: ++ self.flush() ++ super(File, self).close() + if self.close_pyfile: + self.pyfile.close() + +$OpenBSD: patch-src_SWIG__lib11_compat_i,v 1.2 2021/10/07 22:32:54 tb Exp $ + +Provide CRYPTO_zalloc to fix build with LibreSSL + +Index: src/SWIG/_lib11_compat.i +--- a/src/SWIG/_lib11_compat.i.orig ++++ b/src/SWIG/_lib11_compat.i +@@ -8,7 +8,7 @@ + */ + + %{ +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + + #include <string.h> + #include <openssl/engine.h> +@@ -24,6 +24,8 @@ static void *CRYPTO_zalloc(size_t num, const char *fil + return ret; + } + ++#endif ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + #include <openssl/bn.h> + + #ifndef BN_F_BN_GENCB_NEW +$OpenBSD: patch-src_SWIG__lib_i,v 1.2 2021/10/07 22:32:54 tb Exp $ + +Fix build with LibreSSL + +Index: src/SWIG/_lib.i +--- a/src/SWIG/_lib.i.orig ++++ b/src/SWIG/_lib.i +@@ -21,7 +21,7 @@ + + %{ + /* OpenSSL 1.0.2 copmatbility shim */ +-#if OPENSSL_VERSION_NUMBER < 0x10002000L ++#if OPENSSL_VERSION_NUMBER < 0x10002000L || defined(LIBRESSL_VERSION_NUMBER) + typedef void (*OPENSSL_sk_freefunc)(void *); + typedef void *(*OPENSSL_sk_copyfunc)(const void *); + typedef struct stack_st OPENSSL_STACK; +$OpenBSD: patch-src_SWIG__threads_i,v 1.1 2021/07/24 20:02:04 sthen Exp $ + +Fix build with LibreSSL + +Index: src/SWIG/_threads.i +--- a/src/SWIG/_threads.i.orig ++++ b/src/SWIG/_threads.i +@@ -5,7 +5,7 @@ + #include <pythread.h> + #include <openssl/crypto.h> + +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + #define CRYPTO_num_locks() (CRYPTO_NUM_LOCKS) + static PyThread_type_lock lock_cs[CRYPTO_num_locks()]; + static long lock_count[CRYPTO_num_locks()]; +@@ -13,7 +13,7 @@ static int thread_mode = 0; + #endif + + void threading_locking_callback(int mode, int type, const char *file, int line) { +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + if (mode & CRYPTO_LOCK) { + PyThread_acquire_lock(lock_cs[type], WAIT_LOCK); + lock_count[type]++; +@@ -25,7 +25,7 @@ void threading_locking_callback(int mode, int type, co + } + + unsigned long threading_id_callback(void) { +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + return (unsigned long)PyThread_get_thread_ident(); + #else + return (unsigned long)0; +@@ -35,7 +35,7 @@ unsigned long threading_id_callback(void) { + + %inline %{ + void threading_init(void) { +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + int i; + if (!thread_mode) { + for (i=0; i<CRYPTO_num_locks(); i++) { +@@ -50,7 +50,7 @@ void threading_init(void) { + } + + void threading_cleanup(void) { +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + int i; + if (thread_mode) { + CRYPTO_set_locking_callback(NULL); +$OpenBSD: patch-SWIG__bio_i,v 1.4 2018/04/25 16:51:05 jasper Exp $ + +BIO_meth_new() and BIO_meth_free() are non-static in LibreSSL + +Index: SWIG/_bio.i +--- a/src/SWIG/_bio.i.orig ++++ a/src/SWIG/_bio.i +@@ -293,8 +293,12 @@ int bio_should_write(BIO* a) { + } + + /* Macros for things not defined before 1.1.0 */ +-#if OPENSSL_VERSION_NUMBER < 0x10100000L +-static BIO_METHOD * ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x3050000fL) ++ ++#if !defined(LIBRESSL_VERSION_NUMBER) ++static ++#endif ++BIO_METHOD * + BIO_meth_new( int type, const char *name ) + { + BIO_METHOD *method = malloc( sizeof(BIO_METHOD) ); +@@ -306,7 +310,10 @@ BIO_meth_new( int type, const char *name ) + return method; + } + +-static void ++#if !defined(LIBRESSL_VERSION_NUMBER) ++static ++#endif ++void + BIO_meth_free( BIO_METHOD *meth ) + { + if ( meth == NULL ) { diff --git a/dev-python/m2crypto/m2crypto-0.41.0.ebuild b/dev-python/m2crypto/m2crypto-0.41.0.ebuild new file mode 100644 index 0000000..3870a7f --- /dev/null +++ b/dev-python/m2crypto/m2crypto-0.41.0.ebuild @@ -0,0 +1,75 @@ +# Copyright 2018-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} ) +PYPI_NO_NORMALIZE=1 +PYPI_PN="M2Crypto" +PYTHON_REQ_USE="threads(+)" + +inherit distutils-r1 toolchain-funcs pypi + +DESCRIPTION="A Python crypto and SSL toolkit" +HOMEPAGE=" + https://gitlab.com/m2crypto/m2crypto/ + https://pypi.org/project/M2Crypto/ +" + +# openssl via src/SWIG/_lib11_compat.i +LICENSE="MIT openssl" +SLOT="0" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos" +IUSE="abi_mips_n32 abi_mips_n64 abi_mips_o32" + +DEPEND=" + dev-libs/openssl:= +" +RDEPEND=" + ${DEPEND} +" +BDEPEND=" + >=dev-lang/swig-2.0.9 +" + +PATCHES=( + "${FILESDIR}"/${PN}-libressl-0.38.0.patch +) + +swig_define() { + local x + for x; do + if tc-cpp-is-true "defined(${x})"; then + SWIG_FEATURES+=" -D${x}" + fi + done +} + +src_prepare() { + # relies on very exact clock behavior which apparently fails + # with inconvenient CONFIG_HZ* + sed -e 's:test_server_simple_timeouts:_&:' \ + -i tests/test_ssl.py || die + distutils-r1_src_prepare +} + +python_compile() { + # setup.py looks at platform.machine() to determine swig options. + # For exotic ABIs, we need to give swig a hint. + local -x SWIG_FEATURES= + + # https://bugs.gentoo.org/617946 + swig_define __ILP32__ + + # https://bugs.gentoo.org/674112 + swig_define __ARM_PCS_VFP + + distutils-r1_python_compile +} + +python_test() { + "${EPYTHON}" -m unittest -b -v tests.alltests.suite || + die "Tests failed for ${EPYTHON}" +} diff --git a/dev-python/m2crypto/metadata.xml b/dev-python/m2crypto/metadata.xml new file mode 100644 index 0000000..8458196 --- /dev/null +++ b/dev-python/m2crypto/metadata.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>python@gentoo.org</email> + <name>Python</name> + </maintainer> + <upstream> + <remote-id type="pypi">M2Crypto</remote-id> + <remote-id type="gitlab">m2crypto/m2crypto</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-qt/qtbase/Manifest b/dev-qt/qtbase/Manifest new file mode 100644 index 0000000..339951b --- /dev/null +++ b/dev-qt/qtbase/Manifest @@ -0,0 +1 @@ +DIST qtbase-everywhere-src-6.7.0.tar.xz 49314276 BLAKE2B f4ec35fd3c15d56a28e1608dec927eaf34d84c2250405d921adadc16d90ec148f4983024dcf9be1832de91381d18e33fd7578d60d8654469e23530a210618e11 SHA512 72896cc5a677361779f49d60dbdfc33a21d77bd479e0586b0beb03eee2016d613aee56e798143a489431a07a5e7a7db4c7c046105a11b63dd178768f3a7f195a diff --git a/dev-qt/qtbase/files/qtbase-6.5.2-hppa-forkfd-grow-stack.patch b/dev-qt/qtbase/files/qtbase-6.5.2-hppa-forkfd-grow-stack.patch new file mode 100644 index 0000000..ccada9f --- /dev/null +++ b/dev-qt/qtbase/files/qtbase-6.5.2-hppa-forkfd-grow-stack.patch @@ -0,0 +1,28 @@ +Patch taken from Debian[1], largely broken on HPPA without and several +tests give segmentation faults[2]. + +Needs upstreaming if someone familiar with HPPA wants to give this +attention. Note forkfd is essentially maintained in qtbase's repo[3] +rather than truly third party. + +[1] https://bugs.debian.org/1042018 +[2] https://bugs.gentoo.org/914371 +[3] https://code.qt.io/cgit/qt/qtbase.git/tree/src/3rdparty/forkfd + +Description: Change how stack grows on HPPA. + On HPPA stack grows upwards. This patch introduces this change for + this 3rd party code. +Author: John David Anglin <dave.anglin@bell.net> +--- a/src/3rdparty/forkfd/forkfd_linux.c ++++ b/src/3rdparty/forkfd/forkfd_linux.c +@@ -170,5 +170,10 @@ + *system = 1; + ++#if defined(__hppa__) ++ /* Stack grows up */ ++ pid = clone(childFn, childStack, cloneflags, token, &pidfd, NULL, NULL); ++#else + pid = clone(childFn, childStack + sizeof(childStack), cloneflags, token, &pidfd, NULL, NULL); ++#endif + if (pid < 0) + return pid; diff --git a/dev-qt/qtbase/files/qtbase-6.5.2-no-symlink-check.patch b/dev-qt/qtbase/files/qtbase-6.5.2-no-symlink-check.patch new file mode 100644 index 0000000..815fd39 --- /dev/null +++ b/dev-qt/qtbase/files/qtbase-6.5.2-no-symlink-check.patch @@ -0,0 +1,5 @@ +https://bugs.gentoo.org/914195 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -65 +64,0 @@ +-qt_internal_check_if_path_has_symlinks("${CMAKE_BINARY_DIR}") diff --git a/dev-qt/qtbase/files/qtbase-6.6.0-libressl.patch b/dev-qt/qtbase/files/qtbase-6.6.0-libressl.patch new file mode 100644 index 0000000..5531519 --- /dev/null +++ b/dev-qt/qtbase/files/qtbase-6.6.0-libressl.patch @@ -0,0 +1,353 @@ +Fixes Qt6 build on LibreSSL. + +http://cvsweb.openbsd.org/ports/x11/qt6/qtbase/patches/patch-src_network_ssl_qsslsocket_openssl_symbols_cpp?rev=1.8 +http://cvsweb.openbsd.org/ports/x11/qt6/qtbase/patches/patch-src_plugins_tls_openssl_qopenssl_p_h?rev=1.2 +http://cvsweb.openbsd.org/ports/x11/qt6/qtbase/patches/patch-src_plugins_tls_openssl_qsslcontext_openssl_cpp?rev=1.2 +http://cvsweb.openbsd.org/ports/x11/qt6/qtbase/patches/patch-src_plugins_tls_openssl_qsslsocket_openssl_symbols_p_h?rev=1.2 +http://cvsweb.openbsd.org/ports/x11/qt6/qtbase/patches/patch-src_plugins_tls_openssl_qtls_openssl_cpp?rev=1.2 +http://cvsweb.openbsd.org/ports/x11/qt6/qtbase/patches/patch-src_plugins_tls_openssl_qx509_openssl_cpp?rev=1.3 + +--- a/src/plugins/tls/openssl/qopenssl_p.h ++++ b/src/plugins/tls/openssl/qopenssl_p.h +@@ -70,6 +70,13 @@ + + QT_BEGIN_NAMESPACE + ++#ifndef DTLS_ANY_VERSION ++#define DTLS_ANY_VERSION 0x1FFFF ++#endif ++#ifndef TLS_ANY_VERSION ++#define TLS_ANY_VERSION 0x10000 ++#endif ++ + struct QSslErrorEntry { + int code = 0; + int depth = 0; +--- a/src/plugins/tls/openssl/qsslcontext_openssl.cpp ++++ b/src/plugins/tls/openssl/qsslcontext_openssl.cpp +@@ -49,9 +49,9 @@ extern "C" int q_verify_cookie_callback(SSL *ssl, const unsigned char *cookie, + } + #endif // dtls + +-#ifdef TLS1_3_VERSION ++#if defined(TLS1_3_VERSION) && !defined(LIBRESSL_VERSION_NUMBER) + extern "C" int q_ssl_sess_set_new_cb(SSL *context, SSL_SESSION *session); +-#endif // TLS1_3_VERSION ++#endif // TLS1_3_VERSION && LIBRESSL_VERSION_NUMBE + + static inline QString msgErrorSettingBackendConfig(const QString &why) + { +@@ -370,9 +370,11 @@ QT_WARNING_POP + return; + } + ++#ifndef LIBRESSL_VERSION_NUMBER + // A nasty hacked OpenSSL using a level that will make our auto-tests fail: + if (q_SSL_CTX_get_security_level(sslContext->ctx) > 1 && *forceSecurityLevel()) + q_SSL_CTX_set_security_level(sslContext->ctx, 1); ++#endif // LIBRESSL_VERSION_NUMBER + + const long anyVersion = + #if QT_CONFIG(dtls) +@@ -663,14 +665,14 @@ QT_WARNING_POP + q_SSL_CTX_set_verify(sslContext->ctx, verificationMode, verificationCallback); + } + +-#ifdef TLS1_3_VERSION ++#if defined(TLS1_3_VERSION) && !defined(LIBRESSL_VERSION_NUMBER) + // NewSessionTicket callback: + if (mode == QSslSocket::SslClientMode && !isDtls) { + q_SSL_CTX_sess_set_new_cb(sslContext->ctx, q_ssl_sess_set_new_cb); + q_SSL_CTX_set_session_cache_mode(sslContext->ctx, SSL_SESS_CACHE_CLIENT); + } + +-#endif // TLS1_3_VERSION ++#endif // TLS1_3_VERSION && LIBRESSL_VERSION_NUMBER + + #if QT_CONFIG(dtls) + // DTLS cookies: +@@ -758,6 +760,7 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext) + } + #endif // ocsp + ++#ifndef LIBRESSL_VERSION_NUMBER + QSharedPointer<SSL_CONF_CTX> cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free); + if (cctx) { + q_SSL_CONF_CTX_set_ssl_ctx(cctx.data(), sslContext->ctx); +@@ -804,7 +807,9 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext) + sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_finish() failed")); + sslContext->errorCode = QSslError::UnspecifiedError; + } +- } else { ++ } else ++#endif // LIBRESSL_VERSION_NUMBER ++ { + sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_CTX_new() failed")); + sslContext->errorCode = QSslError::UnspecifiedError; + } +--- a/src/plugins/tls/openssl/qsslsocket_openssl_symbols.cpp ++++ b/src/plugins/tls/openssl/qsslsocket_openssl_symbols.cpp +@@ -113,14 +113,25 @@ DEFINEFUNC2(int, BN_is_word, BIGNUM *a, a, BN_ULONG w, w, return 0, return) + DEFINEFUNC(int, EVP_CIPHER_CTX_reset, EVP_CIPHER_CTX *c, c, return 0, return) + DEFINEFUNC(int, EVP_PKEY_up_ref, EVP_PKEY *a, a, return 0, return) + DEFINEFUNC2(EVP_PKEY_CTX *, EVP_PKEY_CTX_new, EVP_PKEY *pkey, pkey, ENGINE *e, e, return nullptr, return) ++#ifndef LIBRESSL_VERSION_NUMBER + DEFINEFUNC(int, EVP_PKEY_param_check, EVP_PKEY_CTX *ctx, ctx, return 0, return) ++#endif + DEFINEFUNC(void, EVP_PKEY_CTX_free, EVP_PKEY_CTX *ctx, ctx, return, return) ++#ifndef LIBRESSL_VERSION_NUMBER + DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return) + DEFINEFUNC2(void, OPENSSL_sk_pop_free, OPENSSL_STACK *a, a, void (*b)(void*), b, return, DUMMYARG) + DEFINEFUNC(OPENSSL_STACK *, OPENSSL_sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return) + DEFINEFUNC2(void, OPENSSL_sk_push, OPENSSL_STACK *a, a, void *b, b, return, DUMMYARG) + DEFINEFUNC(void, OPENSSL_sk_free, OPENSSL_STACK *a, a, return, DUMMYARG) + DEFINEFUNC2(void *, OPENSSL_sk_value, OPENSSL_STACK *a, a, int b, b, return nullptr, return) ++#else ++DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return) ++DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG) ++DEFINEFUNC(_STACK *, sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return) ++DEFINEFUNC2(void, sk_push, _STACK *a, a, void *b, b, return, DUMMYARG) ++DEFINEFUNC(void, sk_free, _STACK *a, a, return, DUMMYARG) ++DEFINEFUNC2(void *, sk_value, STACK *a, a, int b, b, return nullptr, return) ++#endif // LIBRESSL_VERSION_NUMBER + DEFINEFUNC(int, SSL_session_reused, SSL *a, a, return 0, return) + DEFINEFUNC2(qssloptions, SSL_CTX_set_options, SSL_CTX *ctx, ctx, qssloptions op, op, return 0, return) + using info_callback = void (*) (const SSL *ssl, int type, int val); +@@ -154,7 +165,11 @@ DEFINEFUNC2(void, X509_STORE_set_verify_cb, X509_STORE *a, a, X509_STORE_CTX_ver + DEFINEFUNC3(int, X509_STORE_set_ex_data, X509_STORE *a, a, int idx, idx, void *data, data, return 0, return) + DEFINEFUNC2(void *, X509_STORE_get_ex_data, X509_STORE *r, r, int idx, idx, return nullptr, return) + DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get0_chain, X509_STORE_CTX *a, a, return nullptr, return) ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER >= 0x3090000fL) + DEFINEFUNC3(void, CRYPTO_free, void *str, str, const char *file, file, int line, line, return, DUMMYARG) ++#else ++DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG) ++#endif + DEFINEFUNC3(int, CRYPTO_memcmp, const void * in_a, in_a, const void * in_b, in_b, size_t len, len, return 1, return); + DEFINEFUNC(long, OpenSSL_version_num, void, DUMMYARG, return 0, return) + DEFINEFUNC(const char *, OpenSSL_version, int a, a, return nullptr, return) +@@ -289,12 +304,14 @@ DEFINEFUNC3(int, SSL_CTX_use_certificate_file, SSL_CTX *a, a, const char *b, b, + DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a, EVP_PKEY *b, b, return -1, return) + DEFINEFUNC3(int, SSL_CTX_use_PrivateKey_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return) + DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *a, a, return nullptr, return) ++#ifndef LIBRESSL_VERSION_NUMBER + DEFINEFUNC(SSL_CONF_CTX *, SSL_CONF_CTX_new, DUMMYARG, DUMMYARG, return nullptr, return); + DEFINEFUNC(void, SSL_CONF_CTX_free, SSL_CONF_CTX *a, a, return ,return); + DEFINEFUNC2(void, SSL_CONF_CTX_set_ssl_ctx, SSL_CONF_CTX *a, a, SSL_CTX *b, b, return, return); + DEFINEFUNC2(unsigned int, SSL_CONF_CTX_set_flags, SSL_CONF_CTX *a, a, unsigned int b, b, return 0, return); + DEFINEFUNC(int, SSL_CONF_CTX_finish, SSL_CONF_CTX *a, a, return 0, return); + DEFINEFUNC3(int, SSL_CONF_cmd, SSL_CONF_CTX *a, a, const char *b, b, const char *c, c, return 0, return); ++#endif + DEFINEFUNC(void, SSL_free, SSL *a, a, return, DUMMYARG) + DEFINEFUNC(STACK_OF(SSL_CIPHER) *, SSL_get_ciphers, const SSL *a, a, return nullptr, return) + DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr, return) +@@ -866,14 +883,25 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(AUTHORITY_INFO_ACCESS_free) + RESOLVEFUNC(EVP_PKEY_up_ref) + RESOLVEFUNC(EVP_PKEY_CTX_new) ++#ifndef LIBRESSL_VERSION_NUMBER + RESOLVEFUNC(EVP_PKEY_param_check) ++#endif + RESOLVEFUNC(EVP_PKEY_CTX_free) ++#ifndef LIBRESSL_VERSION_NUMBER + RESOLVEFUNC(OPENSSL_sk_new_null) + RESOLVEFUNC(OPENSSL_sk_push) + RESOLVEFUNC(OPENSSL_sk_free) + RESOLVEFUNC(OPENSSL_sk_num) + RESOLVEFUNC(OPENSSL_sk_pop_free) + RESOLVEFUNC(OPENSSL_sk_value) ++#else ++ RESOLVEFUNC(sk_new_null) ++ RESOLVEFUNC(sk_push) ++ RESOLVEFUNC(sk_free) ++ RESOLVEFUNC(sk_num) ++ RESOLVEFUNC(sk_pop_free) ++ RESOLVEFUNC(sk_value) ++#endif + RESOLVEFUNC(SSL_CTX_set_options) + RESOLVEFUNC(SSL_set_info_callback) + RESOLVEFUNC(SSL_alert_type_string) +@@ -1056,12 +1084,14 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(SSL_CTX_use_PrivateKey) + RESOLVEFUNC(SSL_CTX_use_PrivateKey_file) + RESOLVEFUNC(SSL_CTX_get_cert_store); ++#ifndef LIBRESSL_VERSION_NUMBER + RESOLVEFUNC(SSL_CONF_CTX_new); + RESOLVEFUNC(SSL_CONF_CTX_free); + RESOLVEFUNC(SSL_CONF_CTX_set_ssl_ctx); + RESOLVEFUNC(SSL_CONF_CTX_set_flags); + RESOLVEFUNC(SSL_CONF_CTX_finish); + RESOLVEFUNC(SSL_CONF_cmd); ++#endif + RESOLVEFUNC(SSL_accept) + RESOLVEFUNC(SSL_clear) + RESOLVEFUNC(SSL_connect) +--- a/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h ++++ b/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h +@@ -46,6 +46,12 @@ QT_BEGIN_NAMESPACE + + #define DUMMYARG + ++#ifdef LIBRESSL_VERSION_NUMBER ++typedef _STACK STACK; ++typedef STACK OPENSSL_STACK; ++typedef void OPENSSL_INIT_SETTINGS; ++#endif ++ + #if !defined QT_LINKED_OPENSSL + // **************** Shared declarations ****************** + // ret func(arg) +@@ -205,6 +211,7 @@ int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); + int q_EVP_PKEY_up_ref(EVP_PKEY *a); + EVP_PKEY_CTX *q_EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); + void q_EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); ++#ifndef LIBRESSL_VERSION_NUMBER + int q_EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); + int q_OPENSSL_sk_num(OPENSSL_STACK *a); + void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *)); +@@ -212,6 +219,20 @@ OPENSSL_STACK *q_OPENSSL_sk_new_null(); + void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data); + void q_OPENSSL_sk_free(OPENSSL_STACK *a); + void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b); ++#else // LIBRESSL_VERSION_NUMBER ++int q_sk_num(STACK *a); ++#define q_OPENSSL_sk_num(a) q_sk_num(a) ++void q_sk_pop_free(STACK *a, void (*b)(void *)); ++#define q_OPENSSL_sk_pop_free(a, b) q_sk_pop_free(a, b) ++STACK *q_sk_new_null(); ++#define q_OPENSSL_sk_new_null() q_sk_new_null() ++void q_sk_push(STACK *st, void *data); ++#define q_OPENSSL_sk_push(st, data) q_sk_push(st, data) ++void q_sk_free(STACK *a); ++#define q_OPENSSL_sk_free q_sk_free ++void * q_sk_value(STACK *a, int b); ++#define q_OPENSSL_sk_value(a, b) q_sk_value(a, b) ++#endif // LIBRESSL_VERSION_NUMBER + int q_SSL_session_reused(SSL *a); + qssloptions q_SSL_CTX_set_options(SSL_CTX *ctx, qssloptions op); + int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); +@@ -237,8 +258,13 @@ STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx); + # define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) + ++#ifndef LIBRESSL_VERSION_NUMBER + #define q_SKM_sk_num(st) q_OPENSSL_sk_num((OPENSSL_STACK *)st) + #define q_SKM_sk_value(type, st,i) (type *)q_OPENSSL_sk_value((OPENSSL_STACK *)st, i) ++#else // LIBRESSL_VERSION_NUMBER ++#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st) ++#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i) ++#endif // LIBRESSL_VERSION_NUMBER + + #define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ +@@ -423,12 +449,14 @@ int q_SSL_CTX_use_certificate_file(SSL_CTX *a, const char *b, int c); + int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b); + int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c); + X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a); ++#ifndef LIBRESSL_VERSION_NUMBER + SSL_CONF_CTX *q_SSL_CONF_CTX_new(); + void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a); + void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b); + unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b); + int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a); + int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c); ++#endif // LIBRESSL_VERSION_NUMBER + void q_SSL_free(SSL *a); + STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(const SSL *a); + const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a); +@@ -536,14 +564,26 @@ void q_PKCS12_free(PKCS12 *pkcs12); + #define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) + #define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) + #define q_SSL_CTX_set_mode(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) ++#ifndef LIBRESSL_VERSION_NUMBER + #define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num((st)) ++#else ++#define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st)) ++#endif + #define q_sk_GENERAL_NAME_value(st, i) q_SKM_sk_value(GENERAL_NAME, (st), (i)) + + void q_GENERAL_NAME_free(GENERAL_NAME *a); + ++#ifndef LIBRESSL_VERSION_NUMBER + #define q_sk_X509_num(st) q_SKM_sk_num((st)) ++#else ++#define q_sk_X509_num(st) q_SKM_sk_num(X509, (st)) ++#endif + #define q_sk_X509_value(st, i) q_SKM_sk_value(X509, (st), (i)) ++#ifndef LIBRESSL_VERSION_NUMBER + #define q_sk_SSL_CIPHER_num(st) q_SKM_sk_num((st)) ++#else ++#define q_sk_SSL_CIPHER_num(st) q_SKM_sk_num(SSL_CIPHER, (st)) ++#endif + #define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i)) + #define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \ + q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) +@@ -664,8 +704,13 @@ int q_OCSP_id_cmp(OCSP_CERTID *a, OCSP_CERTID *b); + + void *q_CRYPTO_malloc(size_t num, const char *file, int line); + #define q_OPENSSL_malloc(num) q_CRYPTO_malloc(num, "", 0) ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER >= 0x3090000fL) + void q_CRYPTO_free(void *str, const char *file, int line); + # define q_OPENSSL_free(addr) q_CRYPTO_free(addr, "", 0) ++#else ++void q_CRYPTO_free(void *a); ++# define q_OPENSSL_free(addr) q_CRYPTO_free(addr) ++#endif + int q_CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len); + + void q_SSL_set_info_callback(SSL *ssl, void (*cb) (const SSL *ssl, int type, int val)); +--- a/src/plugins/tls/openssl/qtls_openssl.cpp ++++ b/src/plugins/tls/openssl/qtls_openssl.cpp +@@ -1438,13 +1438,13 @@ bool TlsCryptographOpenSSL::initSslContext() + else if (mode == QSslSocket::SslServerMode) + q_SSL_set_psk_server_callback(ssl, &q_ssl_psk_server_callback); + +-#if OPENSSL_VERSION_NUMBER >= 0x10101006L ++#if OPENSSL_VERSION_NUMBER >= 0x10101006L && !defined(LIBRESSL_VERSION_NUMBER) + // Set the client callback for TLSv1.3 PSK + if (mode == QSslSocket::SslClientMode + && QSslSocket::sslLibraryBuildVersionNumber() >= 0x10101006L) { + q_SSL_set_psk_use_session_callback(ssl, &q_ssl_psk_use_session_callback); + } +-#endif // openssl version >= 0x10101006L ++#endif // OPENSSL_VERSION_NUMBER >= 0x10101006L && !defined(LIBRESSL_VERSION_NUMBER) + + #endif // OPENSSL_NO_PSK + +--- a/src/plugins/tls/openssl/qx509_openssl.cpp ++++ b/src/plugins/tls/openssl/qx509_openssl.cpp +@@ -64,7 +64,11 @@ QMultiMap<QByteArray, QString> mapFromX509Name(X509_NAME *name) + unsigned char *data = nullptr; + int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e)); + info.insert(name, QString::fromUtf8((char*)data, size)); ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER >= 0x3090000fL) + q_CRYPTO_free(data, nullptr, 0); ++#else ++ q_CRYPTO_free(data); ++#endif + } + + return info; +@@ -190,7 +194,11 @@ QVariant x509UnknownExtensionToValue(X509_EXTENSION *ext) + QVariantList list; + bool isMap = false; + ++#if defined(LIBRESSL_VERSION_NUMBER) ++ for (int j = 0; j < q_SKM_sk_num(CONF_VALUE, val); j++) { ++#else + for (int j = 0; j < q_SKM_sk_num(val); j++) { ++#endif + CONF_VALUE *nval = q_SKM_sk_value(CONF_VALUE, val, j); + if (nval->name && nval->value) { + isMap = true; +@@ -286,7 +294,11 @@ QVariant x509ExtensionToValue(X509_EXTENSION *ext) + if (!info) + return {}; + QVariantMap result; ++#if defined(LIBRESSL_VERSION_NUMBER) ++ for (int i=0; i < q_SKM_sk_num(ACCESS_DESCRIPTION, info); i++) { ++#else + for (int i=0; i < q_SKM_sk_num(info); i++) { ++#endif + ACCESS_DESCRIPTION *ad = q_SKM_sk_value(ACCESS_DESCRIPTION, info, i); + + GENERAL_NAME *name = ad->location; diff --git a/dev-qt/qtbase/files/qtbase-6.6.1-forkfd-childstack-size.patch b/dev-qt/qtbase/files/qtbase-6.6.1-forkfd-childstack-size.patch new file mode 100644 index 0000000..3b9df41 --- /dev/null +++ b/dev-qt/qtbase/files/qtbase-6.6.1-forkfd-childstack-size.patch @@ -0,0 +1,27 @@ +Avoid crash that happens for some users in qsb, qmake, and +potentially other Qt tools when ran under sandbox leading +to build failures for qtdeclarative and other packages. + +Former fix involved replacing 4096 by SIGSTKSZ but +bug #918664 shown that this may be insufficient so this +tries 32k instead. + +Update: after https://bugs.gentoo.org/923013 and a fixed +sandbox been stabilized for some time, it should in theory +be possible to drop this + +https://bugs.gentoo.org/908809 +https://bugs.gentoo.org/908816 +https://bugs.gentoo.org/913493 +https://bugs.gentoo.org/915695 +https://bugs.gentoo.org/918664 +https://codereview.qt-project.org/c/qt/qtbase/+/513140 +--- a/src/3rdparty/forkfd/forkfd_linux.c ++++ b/src/3rdparty/forkfd/forkfd_linux.c +@@ -158,5 +158,5 @@ + int system_vforkfd(int flags, pid_t *ppid, int (*childFn)(void *), void *token, int *system) + { +- __attribute__((aligned(64))) char childStack[SIGSTKSZ]; ++ __attribute__((aligned(64))) char childStack[32768]; + pid_t pid; + int pidfd; diff --git a/dev-qt/qtbase/files/qtbase-6.6.3-gcc14-avx512fp16.patch b/dev-qt/qtbase/files/qtbase-6.6.3-gcc14-avx512fp16.patch new file mode 100644 index 0000000..e7eb9dc --- /dev/null +++ b/dev-qt/qtbase/files/qtbase-6.6.3-gcc14-avx512fp16.patch @@ -0,0 +1,15 @@ +Simply disable the broken path rather than worry about it for now. + +Likely an easy fix but would rather this be handled upstream and +reported by someone that is affected and can test. + +https://bugs.gentoo.org/926287 +--- a/src/gui/painting/qrgbafloat.h ++++ b/src/gui/painting/qrgbafloat.h +@@ -20,5 +20,5 @@ + public: + using Type = F; +-#if defined(__AVX512FP16__) && QFLOAT16_IS_NATIVE ++#if 0 + // AVX512FP16 has multiplication instructions + using FastType = F; diff --git a/dev-qt/qtbase/files/qtbase-6.6.3-pkgconf-deps.patch b/dev-qt/qtbase/files/qtbase-6.6.3-pkgconf-deps.patch new file mode 100644 index 0000000..965dade --- /dev/null +++ b/dev-qt/qtbase/files/qtbase-6.6.3-pkgconf-deps.patch @@ -0,0 +1,35 @@ +https://bugs.gentoo.org/928299 +https://bugreports.qt.io/browse/QTBUG-124135 +https://codereview.qt-project.org/c/qt/qtbase/+/553372 +From: Alexey Edelev <alexey.edelev@qt.io> +Date: Fri, 05 Apr 2024 14:50:37 +0200 +Subject: [PATCH] Prefer the versioned targets over the namespaceless one when collecting deps + +Change the way we collect dependencies in __qt_internal_walk_libs. +Prefer the versioned Qt targets over the namespaceless. This fixes the +generating of the pkg-config configs. + +Pick-to: 6.5 6.6 6.7 +Task-number: QTBUG-124135 +Change-Id: I660376e122a99b5bc0874f2bc6ccd4d80c9ad453 +--- a/cmake/QtPublicWalkLibsHelpers.cmake ++++ b/cmake/QtPublicWalkLibsHelpers.cmake +@@ -184,13 +184,13 @@ + if(lib_target MATCHES "^::@") + continue() + elseif(TARGET ${lib_target}) +- if ("${lib_target}" MATCHES "^Qt::(.*)") +- # If both, Qt::Foo and Foo targets exist, prefer the target name without ++ if(NOT "${lib_target}" MATCHES "^(Qt|${QT_CMAKE_EXPORT_NAMESPACE})::.+") ++ # If both, Qt::Foo and Foo targets exist, prefer the target name with versioned + # namespace. Which one is preferred doesn't really matter. This code exists to + # avoid ending up with both, Qt::Foo and Foo in our dependencies. +- set(namespaceless_lib_target "${CMAKE_MATCH_1}") +- if(TARGET "${namespaceless_lib_target}") +- set(lib_target ${namespaceless_lib_target}) ++ set(versioned_qt_target "${QT_CMAKE_EXPORT_NAMESPACE}::${lib_target}") ++ if(TARGET "${versioned_qt_target}") ++ set(lib_target ${versioned_qt_target}) + endif() + endif() + get_target_property(lib_target_type ${lib_target} TYPE) diff --git a/dev-qt/qtbase/files/qtbase-6.7.0-qspan-ifdef.patch b/dev-qt/qtbase/files/qtbase-6.7.0-qspan-ifdef.patch new file mode 100644 index 0000000..4c2a37c --- /dev/null +++ b/dev-qt/qtbase/files/qtbase-6.7.0-qspan-ifdef.patch @@ -0,0 +1,29 @@ +https://bugreports.qt.io/browse/QTBUG-123937 +From 6810220218cbbf2854ecdedb291f7e4a84b31e54 Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid <aacid@kde.org> +Date: Wed, 3 Apr 2024 00:47:01 +0200 +Subject: [PATCH] Use ifdef instead of if for __cpp_lib_span + +Like the other times it's used in this file + +This is causing compilation errors in projects that use -Werror=undef + +Fixes: QTBUG-123937 +Change-Id: I0cdd2910755dc9079890011dd8dbc27a6e64793e +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(cherry picked from commit 699ddcb15b5e981d32ea65d1c1a12f8fa0b06e0d) +Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> +--- a/src/corelib/tools/qspan.h ++++ b/src/corelib/tools/qspan.h +@@ -297,7 +297,7 @@ public: + : QSpanBase(il.begin(), il.size()) + {} + +-#if __cpp_lib_span ++#ifdef __cpp_lib_span + template <typename S, size_t N, if_qualification_conversion<S> = true> + Q_IMPLICIT constexpr QSpanBase(std::span<S, N> other) noexcept + : QSpanBase(other.data(), other.size()) +-- +2.44.0 + diff --git a/dev-qt/qtbase/metadata.xml b/dev-qt/qtbase/metadata.xml new file mode 100644 index 0000000..6156479 --- /dev/null +++ b/dev-qt/qtbase/metadata.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>qt@gentoo.org</email> + <name>Gentoo Qt Project</name> + </maintainer> + <use> + <flag name="X">Build the XCB platform plugin and enable X11 integration</flag> + <flag name="concurrent">Build Qt6Concurrent module</flag> + <flag name="dbus">Build Qt6DBus module</flag> + <flag name="eglfs">Build the EGL Full Screen/Single Surface platform plugin</flag> + <flag name="evdev">Enable support for input devices via evdev</flag> + <flag name="gssapi">Enable support for GSSAPI (<pkg>virtual/krb5</pkg>)</flag> + <flag name="gtk">Build the GTK platform theme plugin</flag> + <flag name="gui">Build Qt6Gui module</flag> + <flag name="libinput">Enable support for input devices via <pkg>dev-libs/libinput</pkg></flag> + <flag name="libproxy">Use <pkg>net-libs/libproxy</pkg> for automatic HTTP/SOCKS proxy configuration</flag> + <flag name="network">Build Qt6Network module</flag> + <flag name="renderdoc">Enable support for capturing graphic's API calls using <pkg>media-gfx/renderdoc</pkg></flag> + <flag name="sql">Build Qt6Sql module</flag> + <flag name="tslib">Enable support for touchscreen devices via <pkg>x11-libs/tslib</pkg></flag> + <flag name="widgets">Build Qt6Widgets module</flag> + </use> + <upstream> + <bugs-to>https://bugreports.qt.io/</bugs-to> + <doc>https://doc.qt.io/</doc> + <remote-id type="github">qt/qtbase</remote-id> + </upstream> + <slots> + <subslots> + Must only be used by packages that are known to use private parts of the Qt API. + </subslots> + </slots> +</pkgmetadata> diff --git a/dev-qt/qtbase/qtbase-6.7.0-r1.ebuild b/dev-qt/qtbase/qtbase-6.7.0-r1.ebuild new file mode 100644 index 0000000..fb2a882 --- /dev/null +++ b/dev-qt/qtbase/qtbase-6.7.0-r1.ebuild @@ -0,0 +1,383 @@ +# Copyright 2021-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic qt6-build toolchain-funcs + +DESCRIPTION="Cross-platform application development framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +declare -A QT6_IUSE=( + [global]="+ssl +udev zstd" + [core]="icu" + [modules]="+concurrent +dbus +gui +network +sql +xml" + + [gui]=" + +X accessibility eglfs evdev gles2-only +libinput + opengl renderdoc tslib vulkan wayland +widgets + " + [network]="brotli gssapi libproxy sctp" + [sql]="mysql oci8 odbc postgres +sqlite" + [widgets]="cups gtk" + + [optfeature]="nls" #810802 +) +IUSE="${QT6_IUSE[*]}" +REQUIRED_USE=" + $( + printf '%s? ( gui ) ' ${QT6_IUSE[gui]//+/} + printf '%s? ( network ) ' ${QT6_IUSE[network]//+/} + printf '%s? ( sql ) ' ${QT6_IUSE[sql]//+/} + printf '%s? ( gui widgets ) ' ${QT6_IUSE[widgets]//+/} + ) + accessibility? ( dbus ) + eglfs? ( opengl ) + gles2-only? ( opengl ) + gui? ( || ( X eglfs wayland ) ) + libinput? ( udev ) + sql? ( || ( ${QT6_IUSE[sql]//+/} ) ) + test? ( icu sql? ( sqlite ) ) +" + +# groups: +# - global (configure.cmake) +# - qtcore (src/corelib/configure.cmake) +# - qtgui (src/gui/configure.cmake) +# - qtnetwork (src/network/configure.cmake) +# - qtprintsupport (src/printsupport/configure.cmake) [gui+widgets] +# - qtsql (src/plugins/sqldrivers/configure.cmake) +# dlopen: renderdoc +RDEPEND=" + sys-libs/zlib:= + ssl? ( dev-libs/openssl:= ) + udev? ( virtual/libudev:= ) + zstd? ( app-arch/zstd:= ) + + app-crypt/libb2 + dev-libs/double-conversion:= + dev-libs/glib:2 + dev-libs/libpcre2:=[pcre16,unicode(+)] + icu? ( dev-libs/icu:= ) + + dbus? ( sys-apps/dbus ) + gui? ( + media-libs/fontconfig + media-libs/freetype:2 + media-libs/harfbuzz:= + media-libs/libjpeg-turbo:= + media-libs/libpng:= + x11-libs/libdrm + x11-libs/libxkbcommon[X?] + X? ( + x11-libs/libICE + x11-libs/libSM + x11-libs/libX11 + x11-libs/libxcb:= + x11-libs/xcb-util-cursor + x11-libs/xcb-util-image + x11-libs/xcb-util-keysyms + x11-libs/xcb-util-renderutil + x11-libs/xcb-util-wm + ) + accessibility? ( app-accessibility/at-spi2-core:2 ) + eglfs? ( media-libs/mesa[gbm(+)] ) + evdev? ( sys-libs/mtdev ) + libinput? ( dev-libs/libinput:= ) + opengl? ( + gles2-only? ( media-libs/libglvnd ) + !gles2-only? ( media-libs/libglvnd[X?] ) + ) + renderdoc? ( media-gfx/renderdoc ) + tslib? ( x11-libs/tslib ) + widgets? ( + cups? ( net-print/cups ) + gtk? ( + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3 + x11-libs/pango + ) + ) + ) + network? ( + brotli? ( app-arch/brotli:= ) + gssapi? ( virtual/krb5 ) + libproxy? ( net-libs/libproxy ) + ) + sql? ( + mysql? ( dev-db/mysql-connector-c:= ) + oci8? ( dev-db/oracle-instantclient:=[sdk] ) + odbc? ( dev-db/unixODBC ) + postgres? ( dev-db/postgresql:* ) + sqlite? ( dev-db/sqlite:3 ) + ) +" +DEPEND=" + ${RDEPEND} + X? ( x11-base/xorg-proto ) + gui? ( + vulkan? ( dev-util/vulkan-headers ) + ) + network? ( + sctp? ( net-misc/lksctp-tools ) + ) + test? ( + elibc_musl? ( sys-libs/timezone-data ) + ) +" +BDEPEND="zstd? ( app-arch/libarchive[zstd] )" #910392 +PDEPEND=" + nls? ( ~dev-qt/qttranslations-${PV}:6 ) + wayland? ( ~dev-qt/qtwayland-${PV}:6 ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-6.6.0-libressl.patch + "${FILESDIR}"/${PN}-6.5.2-hppa-forkfd-grow-stack.patch + "${FILESDIR}"/${PN}-6.5.2-no-symlink-check.patch + "${FILESDIR}"/${PN}-6.6.1-forkfd-childstack-size.patch + "${FILESDIR}"/${PN}-6.6.3-gcc14-avx512fp16.patch + "${FILESDIR}"/${PN}-6.6.3-pkgconf-deps.patch + "${FILESDIR}"/${PN}-6.7.0-qspan-ifdef.patch +) + +src_prepare() { + qt6-build_src_prepare + + if use test; then + # test itself has -Werror=strict-aliasing issues, drop for simplicity + sed -e '/add_subdirectory(qsharedpointer)/d' \ + -i tests/auto/corelib/tools/CMakeLists.txt || die + + # workaround for __extendhfxf2 being used for tst_qfloat16.cpp + # which is unavailable with compiler-rt (assume used if clang) + if tc-is-clang; then + sed -e '/add_subdirectory(qfloat16)/d' \ + -i tests/auto/corelib/global/CMakeLists.txt || die + fi + fi +} + +src_configure() { + local mycmakeargs=( + -DBUILD_WITH_PCH=OFF + + -DINSTALL_ARCHDATADIR="${QT6_ARCHDATADIR}" + -DINSTALL_BINDIR="${QT6_BINDIR}" + -DINSTALL_DATADIR="${QT6_DATADIR}" + -DINSTALL_DOCDIR="${QT6_DOCDIR}" + -DINSTALL_EXAMPLESDIR="${QT6_EXAMPLESDIR}" + -DINSTALL_INCLUDEDIR="${QT6_HEADERDIR}" + -DINSTALL_LIBDIR="${QT6_LIBDIR}" + -DINSTALL_LIBEXECDIR="${QT6_LIBEXECDIR}" + -DINSTALL_MKSPECSDIR="${QT6_MKSPECSDIR}" + -DINSTALL_PLUGINSDIR="${QT6_PLUGINDIR}" + -DINSTALL_QMLDIR="${QT6_QMLDIR}" + -DINSTALL_SYSCONFDIR="${QT6_SYSCONFDIR}" + -DINSTALL_TRANSLATIONSDIR="${QT6_TRANSLATIONDIR}" + + -DQT_UNITY_BUILD=ON # ~30% faster build, affects other dev-qt/* too + + -DQT_FEATURE_relocatable=OFF #927691 + $(qt_feature ssl openssl) + $(qt_feature ssl openssl_linked) + $(qt_feature udev libudev) + $(qt_feature zstd) + + # qtcore + $(qt_feature icu) + + # tools + -DQT_FEATURE_androiddeployqt=OFF + + # modules + $(qt_feature concurrent) + $(qt_feature dbus) + $(qt_feature gui) + $(qt_feature network) + $(qt_feature sql) + # trivial, and is often needed (sometimes even when not building tests) + -DQT_FEATURE_testlib=ON + $(qt_feature xml) + ) + + use gui && mycmakeargs+=( + $(qt_feature X xcb) + $(qt_feature X system_xcb_xinput) + $(qt_feature X xkbcommon_x11) + $(cmake_use_find_package X X11) # needed for truly no automagic + $(qt_feature accessibility accessibility_atspi_bridge) + $(qt_feature eglfs) + $(qt_feature evdev) + $(qt_feature evdev mtdev) + $(qt_feature libinput) + $(qt_feature renderdoc graphicsframecapture) + $(qt_feature tslib) + $(qt_feature vulkan) + $(qt_feature wayland) + $(qt_feature widgets) + -DINPUT_opengl=$(usex opengl $(usex gles2-only es2 desktop) no) + -DQT_FEATURE_system_textmarkdownreader=OFF # TODO?: package md4c + ) && use widgets && mycmakeargs+=( + # note: qtprintsupport is enabled w/ gui+widgets regardless of USE=cups + $(qt_feature cups) + $(qt_feature gtk gtk3) + ) + + use network && mycmakeargs+=( + $(qt_feature brotli) + $(qt_feature gssapi) + $(qt_feature libproxy) + $(qt_feature sctp) + $(usev test -DQT_SKIP_DOCKER_COMPOSE=ON) + -DQT_FEATURE_dtls=OFF # Required for LibreSSL + ) + + use sql && mycmakeargs+=( + -DQT_FEATURE_sql_db2=OFF # unpackaged + -DQT_FEATURE_sql_ibase=OFF # unpackaged + -DQT_FEATURE_sql_mimer=OFF # unpackaged + $(qt_feature mysql sql_mysql) + $(qt_feature oci8 sql_oci) + $(usev oci8 -DOracle_ROOT="${ESYSROOT}"/usr/$(get_libdir)/oracle/client) + $(qt_feature odbc sql_odbc) + $(qt_feature postgres sql_psql) + $(qt_feature sqlite sql_sqlite) + $(qt_feature sqlite system_sqlite) + ) + + if use amd64 || use x86; then + # see bug #913400 for explanations + local cpufeats=( + # list of checked cpu features in configure.cmake + avx avx2 avx512{bw,cd,dq,er,f,ifma,pf,vbmi,vbmi2,vl} + f16c rdrnd rdseed sse2 sse3 sse4_1 sse4_2 ssse3 vaes + ) + # handle odd ones out not matching -m* and macros (keep same order) + local cpuflags=( "${cpufeats[@]}" aes sha ) + local cpufeats+=( aesni shani ) + + local -a intrins + IFS=' ' read -ra intrins < <( + : "$(test-flags-CXX "${cpuflags[@]/#/-m}")" + $(tc-getCXX) -E -P ${_} ${CXXFLAGS} ${CPPFLAGS} - <<-EOF | tail -n 1 + $(printf '__%s__ ' "${cpuflags[@]^^}") + EOF + assert + ) + + # do nothing and leave to qtbase if no macros expanded (test failed?) + if [[ \ ${intrins[*]} == *\ [^_\ ]* ]]; then + local -i i + for ((i=0; i<${#cpufeats[@]}; i++)); do + [[ ${intrins[i]} == __* ]] && + mycmakeargs+=( -DQT_FEATURE_${cpufeats[i]}=OFF ) + done + mycmakeargs+=( -DTEST_x86intrin=ON ) + fi + fi + + qt6-build_src_configure +} + +src_test() { + local -x TZ=UTC + local -x LC_TIME=C + + local CMAKE_SKIP_TESTS=( + # broken with out-of-source + if qtbase is not already installed + tst_moc + tst_qmake + # similarly broken when relocatable=OFF (bug #927691) + tst_qapplication + tst_qt_cmake_create + tst_uic + # needs x11/opengl, we *could* run these but tend to be flaky + # when opengl rendering is involved (even if software-only) + tst_qopengl{,config,widget,window} + tst_qgraphicsview + tst_qx11info + # fails with network sandbox + tst_qdnslookup + # fails with sandbox + tst_qsharedmemory + # typical to lack SCTP support on non-generic kernels + tst_qsctpsocket + # randomly fails without -j1, and not worth it over this (bug #916181) + tst_qfiledialog{,2} + # may randomly hang+timeout, perhaps related to -j as well + tst_qtimer + # these can be flaky depending on the environment/toolchain + tst_qlogging # backtrace log test can easily vary + tst_q{,raw}font # affected by available fonts / settings (bug #914737) + tst_qprinter # checks system's printers (bug #916216) + tst_qstorageinfo # checks mounted filesystems + # flaky due to using different test framework and fails with USE=-gui + tst_selftests + # known failing when using clang+glibc+stdc++, needs looking into + tst_qthread + # partially failing on x86 chroots and seemingly(?) harmless (dev-qt + # revdeps tests pass), skip globally to avoid keywording flakiness + tst_json + tst_qcolorspace + tst_qdoublevalidator + tst_qglobal + tst_qglyphrun + tst_qvectornd + tst_rcc + # similarly, but on armv7 and potentially others (bug #914028) + tst_qlineedit + tst_qpainter + # likewise, known failing on BE arches (bug #914033,914371,918878) + tst_qimagereader + tst_qimagewriter + tst_qpluginloader + tst_quuid # >=6.6.2 had related fixes, needs retesting + # partially broken on llvm-musl, needs looking into but skip to have + # a baseline for regressions (rest of dev-qt still passes with musl) + $(usev elibc_musl ' + tst_qicoimageformat + tst_qimagereader + tst_qimage + tst_qprocess + ') + # fails due to hppa's NaN handling, needs looking into (bug #914371) + $(usev hppa ' + tst_qcborvalue + tst_qnumeric + ') + # bug #914033 + $(usev sparc ' + tst_qbuffer + tst_qprocess + tst_qtconcurrentiteratekernel + ') + # note: for linux, upstream only really runs+maintains tests for amd64 + # https://doc.qt.io/qt-6/supported-platforms.html + ) + + qt6-build_src_test +} + +src_install() { + qt6-build_src_install + + if use test; then + local delete_bins=( # need a better way to handle this + clientserver copier crashingServer desktopsettingsaware_helper + echo fileWriterProcess modal_helper nospace 'one space' + paster qcommandlineparser_test_helper qfileopeneventexternal + socketprocess syslocaleapp tst_qhashseed_helper 'two space s' + write-read-write + ) + local delete=( # sigh + "${D}${QT6_BINDIR}"/test* + "${delete_bins[@]/#/${D}${QT6_BINDIR}/}" + ) + # using -f given not tracking which tests may be skipped or not + rm -rf -- "${delete[@]}" || die + fi +} diff --git a/dev-qt/qtnetwork/Manifest b/dev-qt/qtnetwork/Manifest index f458c94..945cf51 100644 --- a/dev-qt/qtnetwork/Manifest +++ b/dev-qt/qtnetwork/Manifest @@ -1,2 +1,3 @@ -DIST qtbase-everywhere-src-5.14.2.tar.xz 49865752 BLAKE2B ed8eb18dfc79e9983248655eb62e8305ef8b79f96c7880c88533250fef8f0d187cf576082d41df08314711b4c007b94686486abd77bf9bc201336caa02ced300 SHA512 8c83e06d58b56e9f288e83d6c3dd4ad6cc9f1eb1a32c7b44fb912fda34ed7255766fd9fa60cd740ee001df7d6172f25df05f1f95e986c3e793fbcd9bf4f18de9 -DIST qtbase-everywhere-src-5.15.0.tar.xz 49931940 BLAKE2B f6675ddb8c6fcfe4d12f92b0c93d09ec160e65bb214694550c82c1ba1acea41c86064910cf76267815bd860b071a322bbbad19e994be52f0bf1450a73d09a1bf SHA512 c584d69e49f4959d9b8541f820f5ff1e6d1599697ad16976b47cbaaa902fc83e1ca4ae57d56d13574e42e5f602d4420245ad7fcfc13e224e10d4bbad6a537d1a +DIST qtbase-5.15-gentoo-patchset-5.tar.xz 9116 BLAKE2B b6318fc7c3ccdbfe85d56797ffaa3b275ce3f324731caca5efb497494837ca00c020494e9f811c0d5e9a460a4d70f16291c637409e7ad72325a36bc55e113c8c SHA512 f0343bf475a86f3f73b98b166ee48b1c5c9200aac9212ad977befe05679d0c351167618b16ae958e6403f33eecdc465b26a0df5d0b83d5d57a8c85ddb8a41c9b +DIST qtbase-5.15.13-gentoo-kde-1.tar.xz 331952 BLAKE2B 6fb7314f03e99d8d2f5e8486ea805164f7e42a14c29a46519bae200364ad3798d26fd09bbd9381030b816f0a68c45d98581a76b80ca3fff8ae4c0121c77fc6ae SHA512 2c049f451eaa4a5087bb39283a66e7bbef89b9e3235ae930c48a405aeaaa999e863857c5074de6ad282708c756b8acab40fbb68f2a4a8b45ef7ade72b12bb98d +DIST qtbase-everywhere-opensource-src-5.15.13.tar.xz 50862768 BLAKE2B d96d4d6b11aae3c471d5f24ed1030004394dfb89d399d5cddc868f39d0a4851a75ed0d59fdc79ef354c21a354eae0f23df1cfb8c30290d5c080b5fad507ce29a SHA512 565632646b04eed525530a50f1228dd1aa3b8f1318485fa7cf6ad96eabdc2208ed1522b3fc174bd4797b7d51edff18ea1f91a82dd701379407b880f1dd0d16ef diff --git a/dev-qt/qtnetwork/files/qtnetwork-5.12.1-libressl.patch b/dev-qt/qtnetwork/files/qtnetwork-5.12.1-libressl.patch deleted file mode 100644 index bd86269..0000000 --- a/dev-qt/qtnetwork/files/qtnetwork-5.12.1-libressl.patch +++ /dev/null @@ -1,93 +0,0 @@ -diff --git a/src/network/configure.json b/src/network/configure.json -index f3e18662aa..8990763756 100644 ---- a/src/network/configure.json -+++ b/src/network/configure.json -@@ -165,7 +165,7 @@ - "test": { - "include": "openssl/opensslv.h", - "tail": [ -- "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10100000L", -+ "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)", - "# error OpenSSL >= 1.1 is required", - "#endif" - ] -diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp -index 35cca9f01a..03afdc5945 100644 ---- a/src/network/ssl/qsslcontext_openssl.cpp -+++ b/src/network/ssl/qsslcontext_openssl.cpp -@@ -249,7 +249,7 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext) - if (sslContext->sslConfiguration.backendConfiguration().isEmpty()) - return; - --#if OPENSSL_VERSION_NUMBER >= 0x10002000L -+#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) - if (QSslSocket::sslLibraryVersionNumber() >= 0x10002000L) { - QSharedPointer<SSL_CONF_CTX> cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free); - if (cctx) { -diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp -index 299df6b685..670314d7e5 100644 ---- a/src/network/ssl/qsslsocket_openssl_symbols.cpp -+++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp -@@ -216,8 +216,13 @@ DEFINEFUNC3(void *, ASN1_dup, i2d_of_void *a, a, d2i_of_void *b, b, char *c, c, - #endif - DEFINEFUNC2(BIO *, BIO_new_file, const char *filename, filename, const char *mode, mode, return nullptr, return) - DEFINEFUNC(void, ERR_clear_error, DUMMYARG, DUMMYARG, return, DUMMYARG) -+#ifdef LIBRESSL_VERSION_NUMBER -+DEFINEFUNC(BIO *, BIO_new, const BIO_METHOD *a, a, return nullptr, return) -+DEFINEFUNC(const BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return nullptr, return) -+#else - DEFINEFUNC(BIO *, BIO_new, BIO_METHOD *a, a, return nullptr, return) - DEFINEFUNC(BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return nullptr, return) -+#endif - DEFINEFUNC(int, CRYPTO_num_locks, DUMMYARG, DUMMYARG, return 0, return) - DEFINEFUNC(void, CRYPTO_set_locking_callback, void (*a)(int, int, const char *, int), a, return, DUMMYARG) - DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYARG) -@@ -443,7 +448,7 @@ DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a, EVP_PKEY *b, b, return - - DEFINEFUNC2(int, SSL_CTX_use_RSAPrivateKey, SSL_CTX *a, a, RSA *b, b, return -1, return) - DEFINEFUNC3(int, SSL_CTX_use_PrivateKey_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return) - DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *a, a, return nullptr, return) --#if OPENSSL_VERSION_NUMBER >= 0x10002000L -+#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) - DEFINEFUNC(SSL_CONF_CTX *, SSL_CONF_CTX_new, DUMMYARG, DUMMYARG, return nullptr, return); - DEFINEFUNC(void, SSL_CONF_CTX_free, SSL_CONF_CTX *a, a, return ,return); - DEFINEFUNC2(void, SSL_CONF_CTX_set_ssl_ctx, SSL_CONF_CTX *a, a, SSL_CTX *b, b, return, return); -@@ -1246,7 +1251,7 @@ bool q_resolveOpenSslSymbols() - RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey) - RESOLVEFUNC(SSL_CTX_use_PrivateKey_file) - RESOLVEFUNC(SSL_CTX_get_cert_store); --#if OPENSSL_VERSION_NUMBER >= 0x10002000L -+#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) - RESOLVEFUNC(SSL_CONF_CTX_new); - RESOLVEFUNC(SSL_CONF_CTX_free); - RESOLVEFUNC(SSL_CONF_CTX_set_ssl_ctx); -diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h -index bfdfbf0efc..ad2bd4056b 100644 ---- a/src/network/ssl/qsslsocket_openssl_symbols_p.h -+++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h -@@ -359,7 +359,7 @@ int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b); - int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b); - int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c); - X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a); --#if OPENSSL_VERSION_NUMBER >= 0x10002000L -+#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) - SSL_CONF_CTX *q_SSL_CONF_CTX_new(); - void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a); - void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b); -diff --git a/src/network/ssl/qsslsocket_opensslpre11_symbols_p.h b/src/network/ssl/qsslsocket_opensslpre11_symbols_p.h -index b7bac5d2a2..9a1a89b0e4 100644 ---- a/src/network/ssl/qsslsocket_opensslpre11_symbols_p.h -+++ b/src/network/ssl/qsslsocket_opensslpre11_symbols_p.h -@@ -78,8 +78,13 @@ - unsigned char * q_ASN1_STRING_data(ASN1_STRING *a); - BIO *q_BIO_new_file(const char *filename, const char *mode); - void q_ERR_clear_error(); -+#ifdef LIBRESSL_VERSION_NUMBER -+Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a); -+Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem(); -+#else - Q_AUTOTEST_EXPORT BIO *q_BIO_new(BIO_METHOD *a); - Q_AUTOTEST_EXPORT BIO_METHOD *q_BIO_s_mem(); -+#endif - int q_CRYPTO_num_locks(); - void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int)); - void q_CRYPTO_set_id_callback(unsigned long (*a)()); diff --git a/dev-qt/qtnetwork/files/qtnetwork-5.12.4-libressl.patch b/dev-qt/qtnetwork/files/qtnetwork-5.12.4-libressl.patch deleted file mode 100644 index b200efa..0000000 --- a/dev-qt/qtnetwork/files/qtnetwork-5.12.4-libressl.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp -index c8bc6e06..76324ea5 100644 ---- a/src/network/ssl/qsslsocket_openssl.cpp -+++ b/src/network/ssl/qsslsocket_openssl.cpp -@@ -460,7 +460,7 @@ bool QSslSocketBackendPrivate::initSslContext() - q_SSL_set_psk_server_callback(ssl, &q_ssl_psk_server_callback); - } - #endif --#if OPENSSL_VERSION_NUMBER >= 0x10101006L -+#if OPENSSL_VERSION_NUMBER >= 0x10101006L && !defined(LIBRESSL_VERSION_NUMBER) - // Set the client callback for TLSv1.3 PSK - if (mode == QSslSocket::SslClientMode - && QSslSocket::sslLibraryBuildVersionNumber() >= 0x10101006L) { - diff --git a/dev-qt/qtnetwork/files/qtnetwork-5.15.10-ssl-upgr-default-DH-params.patch b/dev-qt/qtnetwork/files/qtnetwork-5.15.10-ssl-upgr-default-DH-params.patch new file mode 100644 index 0000000..94f1325 --- /dev/null +++ b/dev-qt/qtnetwork/files/qtnetwork-5.15.10-ssl-upgr-default-DH-params.patch @@ -0,0 +1,101 @@ +From 05406c3f5f516d3148254c8294e8883c28a2c95a Mon Sep 17 00:00:00 2001 +From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> +Date: Wed, 21 Jun 2023 13:30:35 +0200 +Subject: [PATCH] SSL: upgrade the default DH parameters + +We have been using as default DH parameters the 1024-bit MODP group. +This is now considered insecure, and applications should use the +2048-bit at a minimum [1]. This commit therefore replaces the parameters +with the 2048-bit MODP group from [2]. + +To double check the data, use openssl asn1parse to verify that the prime +matches. For instance: + +1) put the encoded string in a `encoded.txt` file (c&p from the source, + removing the double quotes) +2) put the hexadecimal value of the 2048-bit group in a `reference.txt` + file (c&p from [2]) +3) compare the output of openssl asn1parse with the reference. For + instance like this: + + $ diff <(openssl asn1parse < encoded.txt | grep -m 1 INTEGER | perl -pe 's/.*://; s/\n//') <(perl -0777 -pe 's/\s//g' reference.txt) && echo OK + OK + +[1] https://datatracker.ietf.org/doc/html/rfc8247#section-2.4 +[2] https://datatracker.ietf.org/doc/html/rfc3526#section-3 + +[ChangeLog][QtNetwork][QSslDiffieHellmanParameters] The default +Diffie-Hellman parameters are now using the 2048-bit MODP group from +RFC 3526. + +Pick-to: 6.6 6.5 6.2 5.15 +Change-Id: I47133cd78ba0e954b8f93a3da09fa2c760c9f7a8 +Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> +(cherry picked from commit 3ec24e329c9ef6802786a37f30ddd8982e903480) +--- + src/network/ssl/qsslconfiguration.cpp | 12 ++++++++++-- + src/network/ssl/qssldiffiehellmanparameters.cpp | 13 +++++++------ + 2 files changed, 17 insertions(+), 8 deletions(-) + +diff --git a/src/network/ssl/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp +index f5ce02807f..84a9187334 100644 +--- a/src/network/ssl/qsslconfiguration.cpp ++++ b/src/network/ssl/qsslconfiguration.cpp +@@ -929,7 +929,11 @@ void QSslConfiguration::setPreSharedKeyIdentityHint(const QByteArray &hint) + Retrieves the current set of Diffie-Hellman parameters. + + If no Diffie-Hellman parameters have been set, the QSslConfiguration object +- defaults to using the 1024-bit MODP group from RFC 2409. ++ defaults to using the 2048-bit MODP group from RFC 3526. ++ ++ \note The default parameters may change in future Qt versions. ++ Please check the documentation of the \e{exact Qt version} that you ++ are using in order to know what defaults that version uses. + */ + QSslDiffieHellmanParameters QSslConfiguration::diffieHellmanParameters() const + { +@@ -943,7 +947,11 @@ QSslDiffieHellmanParameters QSslConfiguration::diffieHellmanParameters() const + a server to \a dhparams. + + If no Diffie-Hellman parameters have been set, the QSslConfiguration object +- defaults to using the 1024-bit MODP group from RFC 2409. ++ defaults to using the 2048-bit MODP group from RFC 3526. ++ ++ \note The default parameters may change in future Qt versions. ++ Please check the documentation of the \e{exact Qt version} that you ++ are using in order to know what defaults that version uses. + */ + void QSslConfiguration::setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams) + { +diff --git a/src/network/ssl/qssldiffiehellmanparameters.cpp b/src/network/ssl/qssldiffiehellmanparameters.cpp +index 7807afaa30..7c2505a0be 100644 +--- a/src/network/ssl/qssldiffiehellmanparameters.cpp ++++ b/src/network/ssl/qssldiffiehellmanparameters.cpp +@@ -68,17 +68,18 @@ + + QT_BEGIN_NAMESPACE + +-// The 1024-bit MODP group from RFC 2459 (Second Oakley Group) ++// The 2048-bit MODP group from RFC 3526 + Q_AUTOTEST_EXPORT const char *qssl_dhparams_default_base64 = +- "MIGHAoGBAP//////////yQ/aoiFowjTExmKLgNwc0SkCTgiKZ8x0Agu+pjsTmyJR" +- "Sgh5jjQE3e+VGbPNOkMbMCsKbfJfFDdP4TVtbVHCReSFtXZiXn7G9ExC6aY37WsL" +- "/1y29Aa37e44a/taiZ+lrp8kEXxLH+ZJKGZR7OZTgf//////////AgEC"; ++ "MIIBCAKCAQEA///////////JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxObIlFKCHmO" ++ "NATd75UZs806QxswKwpt8l8UN0/hNW1tUcJF5IW1dmJefsb0TELppjftawv/XLb0Brft7jhr" ++ "+1qJn6WunyQRfEsf5kkoZlHs5Fs9wgB8uKFjvwWY2kg2HFXTmmkWP6j9JM9fg2VdI9yjrZYc" ++ "YvNWIIVSu57VKQdwlpZtZww1Tkq8mATxdGwIyhghfDKQXkYuNs474553LBgOhgObJ4Oi7Aei" ++ "j7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq5RXSJhiY+gUQFXKOWoqsqmj//////////wIBAg=="; + + /*! + Returns the default QSslDiffieHellmanParameters used by QSslSocket. + +- This is currently the 1024-bit MODP group from RFC 2459, also +- known as the Second Oakley Group. ++ This is currently the 2048-bit MODP group from RFC 3526. + */ + QSslDiffieHellmanParameters QSslDiffieHellmanParameters::defaultParameters() + { +-- +2.41.0 + diff --git a/dev-qt/qtnetwork/files/qtnetwork-5.15.0-libressl.patch b/dev-qt/qtnetwork/files/qtnetwork-5.15.7-libressl.patch index d0a4796..c2ab857 100644 --- a/dev-qt/qtnetwork/files/qtnetwork-5.15.0-libressl.patch +++ b/dev-qt/qtnetwork/files/qtnetwork-5.15.7-libressl.patch @@ -1,67 +1,70 @@ -From 4774fcd31a49f6f193bf10990601ad494fab2013 Mon Sep 17 00:00:00 2001 +From 282db75a652b230c83b3d99954b7a3fc2f6ae64c Mon Sep 17 00:00:00 2001 From: Stefan Strogin <steils@gentoo.org> -Date: Wed, 5 Feb 2020 03:49:35 +0200 -Subject: [PATCH] QSslSocket - add LibreSSL support +Date: Wed, 30 Nov 2022 10:58:50 -0800 +Subject: [PATCH] QSslSocket: add LibreSSL support Upstream-Status: Inappropriate [Upstream is not willing to accept any patches for LibreSSL support] -Signed-off-by: Stefan Strogin <steils@gentoo.org> ---- - src/network/ssl/qsslcertificate_openssl.cpp | 2 +- - src/network/ssl/qsslcontext_openssl.cpp | 17 +++++++- - src/network/ssl/qsslcontext_openssl_p.h | 7 +++ - src/network/ssl/qsslsocket_openssl.cpp | 2 +- - .../ssl/qsslsocket_openssl_symbols.cpp | 25 +++++++++++ - .../ssl/qsslsocket_openssl_symbols_p.h | 43 +++++++++++++++++++ - 6 files changed, 93 insertions(+), 3 deletions(-) diff --git a/src/network/ssl/qsslcertificate_openssl.cpp b/src/network/ssl/qsslcertificate_openssl.cpp -index 6f1fb26a..eba5a729 100644 +index d1794d4d..1f1aa5ed 100644 --- a/src/network/ssl/qsslcertificate_openssl.cpp +++ b/src/network/ssl/qsslcertificate_openssl.cpp -@@ -658,7 +658,7 @@ static QMultiMap<QByteArray, QString> _q_mapFromX509Name(X509_NAME *name) +@@ -727,7 +727,7 @@ static QMultiMap<QByteArray, QString> _q_mapFromX509Name(X509_NAME *name) unsigned char *data = nullptr; int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e)); info.insert(name, QString::fromUtf8((char*)data, size)); -#if QT_CONFIG(opensslv11) -+#if QT_CONFIG(opensslv11) && !defined(LIBRESSL_VERSION_NUMBER) ++#if QT_CONFIG(opensslv11) && (!defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER >= 0x3090000fL)) q_CRYPTO_free(data, nullptr, 0); #else q_CRYPTO_free(data); diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp -index 0aa8a4f4..f161af8a 100644 +index c992da9d..f659255a 100644 --- a/src/network/ssl/qsslcontext_openssl.cpp +++ b/src/network/ssl/qsslcontext_openssl.cpp -@@ -397,16 +397,28 @@ init_context: - maxVersion = DTLS1_VERSION; - break; - case QSsl::DtlsV1_0OrLater: -+#ifdef DTLS_MAX_VERSION - minVersion = DTLS1_VERSION; - maxVersion = DTLS_MAX_VERSION; -+#else -+ Q_UNREACHABLE(); -+#endif // DTLS_MAX_VERSION - break; - case QSsl::DtlsV1_2: -+#ifdef DTLS1_2_VERSION - minVersion = DTLS1_2_VERSION; - maxVersion = DTLS1_2_VERSION; -+#else -+ Q_UNREACHABLE(); -+#endif // DTLS1_2_VERSION - break; - case QSsl::DtlsV1_2OrLater: -+#if defined(DTLS1_2_VERSION) && defined(DTLS_MAX_VERSION) - minVersion = DTLS1_2_VERSION; - maxVersion = DTLS_MAX_VERSION; -+#else -+ Q_UNREACHABLE(); -+#endif // DTLS1_2_VERSION && DTLS_MAX_VERSION - break; - case QSsl::TlsV1_3OrLater: - #ifdef TLS1_3_VERSION -@@ -696,6 +708,7 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext) +@@ -77,9 +77,9 @@ extern "C" int q_verify_cookie_callback(SSL *ssl, const unsigned char *cookie, + } + #endif // dtls + +-#ifdef TLS1_3_VERSION ++#if defined(TLS1_3_VERSION) && !defined(LIBRESSL_VERSION_NUMBER) + extern "C" int q_ssl_sess_set_new_cb(SSL *context, SSL_SESSION *session); +-#endif // TLS1_3_VERSION ++#endif // TLS1_3_VERSION && LIBRESSL_VERSION_NUMBER + + // Defined in qsslsocket.cpp + QList<QSslCipher> q_getDefaultDtlsCiphers(); +@@ -351,9 +351,11 @@ init_context: + return; + } + ++#ifndef LIBRESSL_VERSION_NUMBER + // A nasty hacked OpenSSL using a level that will make our auto-tests fail: + if (q_SSL_CTX_get_security_level(sslContext->ctx) > 1 && *forceSecurityLevel()) + q_SSL_CTX_set_security_level(sslContext->ctx, 1); ++#endif // LIBRESSL_VERSION_NUMBER + + const long anyVersion = + #if QT_CONFIG(dtls) +@@ -627,14 +629,14 @@ init_context: + q_X509Callback); + } + +-#ifdef TLS1_3_VERSION ++#if defined(TLS1_3_VERSION) && !defined(LIBRESSL_VERSION_NUMBER) + // NewSessionTicket callback: + if (mode == QSslSocket::SslClientMode && !isDtls) { + q_SSL_CTX_sess_set_new_cb(sslContext->ctx, q_ssl_sess_set_new_cb); + q_SSL_CTX_set_session_cache_mode(sslContext->ctx, SSL_SESS_CACHE_CLIENT); + } + +-#endif // TLS1_3_VERSION ++#endif // TLS1_3_VERSION && LIBRESSL_VERSION_NUMBER + + #if QT_CONFIG(dtls) + // DTLS cookies: +@@ -722,6 +724,7 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext) } #endif // ocsp @@ -69,7 +72,7 @@ index 0aa8a4f4..f161af8a 100644 QSharedPointer<SSL_CONF_CTX> cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free); if (cctx) { q_SSL_CONF_CTX_set_ssl_ctx(cctx.data(), sslContext->ctx); -@@ -742,7 +755,9 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext) +@@ -768,7 +771,9 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext) sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_finish() failed")); sslContext->errorCode = QSslError::UnspecifiedError; } @@ -98,32 +101,18 @@ index 70cb97aa..01a61cf5 100644 #ifndef QT_NO_SSL class QSslContextPrivate; -diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp -index 4be27aff..1f33911e 100644 ---- a/src/network/ssl/qsslsocket_openssl.cpp -+++ b/src/network/ssl/qsslsocket_openssl.cpp -@@ -598,7 +598,7 @@ bool QSslSocketBackendPrivate::initSslContext() - else if (mode == QSslSocket::SslServerMode) - q_SSL_set_psk_server_callback(ssl, &q_ssl_psk_server_callback); - --#if OPENSSL_VERSION_NUMBER >= 0x10101006L -+#if OPENSSL_VERSION_NUMBER >= 0x10101006L && !defined(LIBRESSL_VERSION_NUMBER) - // Set the client callback for TLSv1.3 PSK - if (mode == QSslSocket::SslClientMode - && QSslSocket::sslLibraryBuildVersionNumber() >= 0x10101006L) { diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp -index 71a268ae..8a43035b 100644 +index d9742fd6..fac28b5c 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols.cpp +++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp -@@ -147,6 +147,7 @@ DEFINEFUNC(int, EVP_CIPHER_CTX_reset, EVP_CIPHER_CTX *c, c, return 0, return) - DEFINEFUNC(int, EVP_PKEY_up_ref, EVP_PKEY *a, a, return 0, return) - DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return) +@@ -150,16 +150,27 @@ DEFINEFUNC(int, EVP_PKEY_param_check, EVP_PKEY_CTX *ctx, ctx, return 0, return) + DEFINEFUNC(void, EVP_PKEY_CTX_free, EVP_PKEY_CTX *ctx, ctx, return, return) DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return) -+#ifndef LIBRESSL_VERSION_NUMBER DEFINEFUNC(int, DSA_bits, DSA *a, a, return 0, return) ++#ifndef LIBRESSL_VERSION_NUMBER DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return) DEFINEFUNC2(void, OPENSSL_sk_pop_free, OPENSSL_STACK *a, a, void (*b)(void*), b, return, DUMMYARG) -@@ -154,6 +155,14 @@ DEFINEFUNC(OPENSSL_STACK *, OPENSSL_sk_new_null, DUMMYARG, DUMMYARG, return null + DEFINEFUNC(OPENSSL_STACK *, OPENSSL_sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return) DEFINEFUNC2(void, OPENSSL_sk_push, OPENSSL_STACK *a, a, void *b, b, return, DUMMYARG) DEFINEFUNC(void, OPENSSL_sk_free, OPENSSL_STACK *a, a, return, DUMMYARG) DEFINEFUNC2(void *, OPENSSL_sk_value, OPENSSL_STACK *a, a, int b, b, return nullptr, return) @@ -136,13 +125,19 @@ index 71a268ae..8a43035b 100644 +DEFINEFUNC2(void *, sk_value, STACK *a, a, int b, b, return nullptr, return) +#endif // LIBRESSL_VERSION_NUMBER DEFINEFUNC(int, SSL_session_reused, SSL *a, a, return 0, return) - DEFINEFUNC2(unsigned long, SSL_CTX_set_options, SSL_CTX *ctx, ctx, unsigned long op, op, return 0, return) + DEFINEFUNC2(qssloptions, SSL_CTX_set_options, SSL_CTX *ctx, ctx, qssloptions op, op, return 0, return) ++#ifndef LIBRESSL_VERSION_NUMBER + DEFINEFUNC(int, SSL_CTX_get_security_level, const SSL_CTX *ctx, ctx, return -1, return) + DEFINEFUNC2(void, SSL_CTX_set_security_level, SSL_CTX *ctx, ctx, int level, level, return, return) ++#endif // LIBRESSL_VERSION_NUMBER #ifdef TLS1_3_VERSION -@@ -179,7 +188,11 @@ DEFINEFUNC2(void, X509_STORE_set_verify_cb, X509_STORE *a, a, X509_STORE_CTX_ver + DEFINEFUNC2(int, SSL_CTX_set_ciphersuites, SSL_CTX *ctx, ctx, const char *str, str, return 0, return) + DEFINEFUNC2(void, SSL_set_psk_use_session_callback, SSL *ssl, ssl, q_SSL_psk_use_session_cb_func_t callback, callback, return, DUMMYARG) +@@ -185,7 +196,11 @@ DEFINEFUNC2(void, X509_STORE_set_verify_cb, X509_STORE *a, a, X509_STORE_CTX_ver DEFINEFUNC3(int, X509_STORE_set_ex_data, X509_STORE *a, a, int idx, idx, void *data, data, return 0, return) DEFINEFUNC2(void *, X509_STORE_get_ex_data, X509_STORE *r, r, int idx, idx, return nullptr, return) DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get0_chain, X509_STORE_CTX *a, a, return nullptr, return) -+#ifndef LIBRESSL_VERSION_NUMBER ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER >= 0x3090000fL) DEFINEFUNC3(void, CRYPTO_free, void *str, str, const char *file, file, int line, line, return, DUMMYARG) +#else +DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG) @@ -150,17 +145,7 @@ index 71a268ae..8a43035b 100644 DEFINEFUNC(long, OpenSSL_version_num, void, DUMMYARG, return 0, return) DEFINEFUNC(const char *, OpenSSL_version, int a, a, return nullptr, return) DEFINEFUNC(unsigned long, SSL_SESSION_get_ticket_lifetime_hint, const SSL_SESSION *session, session, return 0, return) -@@ -219,7 +232,9 @@ DEFINEFUNC5(int, OCSP_id_get0_info, ASN1_OCTET_STRING **piNameHash, piNameHash, - ASN1_OCTET_STRING **piKeyHash, piKeyHash, ASN1_INTEGER **pserial, pserial, OCSP_CERTID *cid, cid, - return 0, return) - DEFINEFUNC2(OCSP_RESPONSE *, OCSP_response_create, int status, status, OCSP_BASICRESP *bs, bs, return nullptr, return) -+#ifndef LIBRESSL_VERSION_NUMBER - DEFINEFUNC(const STACK_OF(X509) *, OCSP_resp_get0_certs, const OCSP_BASICRESP *bs, bs, return nullptr, return) -+#endif - DEFINEFUNC2(int, OCSP_id_cmp, OCSP_CERTID *a, a, OCSP_CERTID *b, b, return -1, return) - DEFINEFUNC7(OCSP_SINGLERESP *, OCSP_basic_add1_status, OCSP_BASICRESP *r, r, OCSP_CERTID *c, c, int s, s, - int re, re, ASN1_TIME *rt, rt, ASN1_TIME *t, t, ASN1_TIME *n, n, return nullptr, return) -@@ -351,12 +366,14 @@ DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a, EVP_PKEY *b, b, return - +@@ -358,12 +373,14 @@ DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a, EVP_PKEY *b, b, return - DEFINEFUNC2(int, SSL_CTX_use_RSAPrivateKey, SSL_CTX *a, a, RSA *b, b, return -1, return) DEFINEFUNC3(int, SSL_CTX_use_PrivateKey_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return) DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *a, a, return nullptr, return) @@ -175,42 +160,7 @@ index 71a268ae..8a43035b 100644 DEFINEFUNC(void, SSL_free, SSL *a, a, return, DUMMYARG) DEFINEFUNC(STACK_OF(SSL_CIPHER) *, SSL_get_ciphers, const SSL *a, a, return nullptr, return) DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr, return) -@@ -833,12 +850,14 @@ bool q_resolveOpenSslSymbols() - RESOLVEFUNC(EVP_PKEY_up_ref) - RESOLVEFUNC(EVP_PKEY_base_id) - RESOLVEFUNC(RSA_bits) -+#ifndef LIBRESSL_VERSION_NUMBER - RESOLVEFUNC(OPENSSL_sk_new_null) - RESOLVEFUNC(OPENSSL_sk_push) - RESOLVEFUNC(OPENSSL_sk_free) - RESOLVEFUNC(OPENSSL_sk_num) - RESOLVEFUNC(OPENSSL_sk_pop_free) - RESOLVEFUNC(OPENSSL_sk_value) -+#endif - RESOLVEFUNC(DH_get0_pqg) - RESOLVEFUNC(SSL_CTX_set_options) - -@@ -880,7 +899,9 @@ bool q_resolveOpenSslSymbols() - - RESOLVEFUNC(SSL_SESSION_get_ticket_lifetime_hint) - RESOLVEFUNC(DH_bits) -+#ifndef LIBRESSL_VERSION_NUMBER - RESOLVEFUNC(DSA_bits) -+#endif - - #if QT_CONFIG(dtls) - RESOLVEFUNC(DTLSv1_listen) -@@ -910,7 +931,9 @@ bool q_resolveOpenSslSymbols() - RESOLVEFUNC(OCSP_check_validity) - RESOLVEFUNC(OCSP_cert_to_id) - RESOLVEFUNC(OCSP_id_get0_info) -+#ifndef LIBRESSL_VERSION_NUMBER - RESOLVEFUNC(OCSP_resp_get0_certs) -+#endif - RESOLVEFUNC(OCSP_basic_sign) - RESOLVEFUNC(OCSP_response_create) - RESOLVEFUNC(i2d_OCSP_RESPONSE) -@@ -1040,12 +1063,14 @@ bool q_resolveOpenSslSymbols() +@@ -1089,12 +1106,14 @@ bool q_resolveOpenSslSymbols() RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey) RESOLVEFUNC(SSL_CTX_use_PrivateKey_file) RESOLVEFUNC(SSL_CTX_get_cert_store); @@ -226,7 +176,7 @@ index 71a268ae..8a43035b 100644 RESOLVEFUNC(SSL_clear) RESOLVEFUNC(SSL_connect) diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h -index f35e0ba2..30097317 100644 +index 27aeffa1..32a21221 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols_p.h +++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h @@ -80,6 +80,13 @@ QT_BEGIN_NAMESPACE @@ -243,20 +193,10 @@ index f35e0ba2..30097317 100644 #if !defined QT_LINKED_OPENSSL // **************** Shared declarations ****************** // ret func(arg) -@@ -230,17 +237,38 @@ const unsigned char * q_ASN1_STRING_get0_data(const ASN1_STRING *x); - Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a); - Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem(); - -+#ifndef LIBRESSL_VERSION_NUMBER - int q_DSA_bits(DSA *a); -+#else -+#define q_DSA_bits(dsa) q_BN_num_bits((dsa)->p) -+#endif - int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); - Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a); - int q_EVP_PKEY_base_id(EVP_PKEY *a); +@@ -238,12 +245,28 @@ EVP_PKEY_CTX *q_EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); + void q_EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); + int q_EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); int q_RSA_bits(RSA *a); -+ +#ifndef LIBRESSL_VERSION_NUMBER Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a); Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *)); @@ -280,35 +220,9 @@ index f35e0ba2..30097317 100644 +#endif // LIBRESSL_VERSION_NUMBER + int q_SSL_session_reused(SSL *a); - unsigned long q_SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op); + qssloptions q_SSL_CTX_set_options(SSL_CTX *ctx, qssloptions op); int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); -@@ -266,8 +294,13 @@ int q_DH_bits(DH *dh); - # define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ - | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) - -+#ifndef LIBRESSL_VERSION_NUMBER - #define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st) - #define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i) -+#else -+#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st) -+#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i) -+#endif // LIBRESSL_VERSION_NUMBER - - #define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ - | OPENSSL_INIT_ADD_ALL_DIGESTS \ -@@ -276,7 +309,11 @@ int q_DH_bits(DH *dh); - | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) - - int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); -+#ifndef LIBRESSL_VERSION_NUMBER - void q_CRYPTO_free(void *str, const char *file, int line); -+#else -+void q_CRYPTO_free(void *a); -+#endif - - long q_OpenSSL_version_num(); - const char *q_OpenSSL_version(int type); -@@ -494,12 +531,14 @@ int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b); +@@ -497,12 +520,14 @@ int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b); int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b); int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c); X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a); @@ -319,22 +233,21 @@ index f35e0ba2..30097317 100644 unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b); int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a); int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c); -+#endif ++#endif // LIBRESSL_VERSION_NUMBER void q_SSL_free(SSL *a); STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(const SSL *a); const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a); -@@ -715,7 +754,11 @@ int q_OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, ASN1_GENERALIZEDTIME *n - int q_OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, ASN1_OCTET_STRING **pikeyHash, - ASN1_INTEGER **pserial, OCSP_CERTID *cid); +@@ -743,8 +768,13 @@ int q_OCSP_id_cmp(OCSP_CERTID *a, OCSP_CERTID *b); -+#ifndef LIBRESSL_VERSION_NUMBER - const STACK_OF(X509) *q_OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); -+#else -+#define q_OCSP_resp_get0_certs(bs) ((bs)->certs) -+#endif - Q_AUTOTEST_EXPORT OCSP_CERTID *q_OCSP_cert_to_id(const EVP_MD *dgst, X509 *subject, X509 *issuer); - Q_AUTOTEST_EXPORT void q_OCSP_CERTID_free(OCSP_CERTID *cid); - int q_OCSP_id_cmp(OCSP_CERTID *a, OCSP_CERTID *b); --- -2.25.0 - + void *q_CRYPTO_malloc(size_t num, const char *file, int line); + #define q_OPENSSL_malloc(num) q_CRYPTO_malloc(num, "", 0) ++#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER >= 0x3090000fL) + void q_CRYPTO_free(void *str, const char *file, int line); + #define q_OPENSSL_free(addr) q_CRYPTO_free(addr, "", 0) ++#else // LIBRESSL_VERSION_NUMBER ++void q_CRYPTO_free(void *a); ++#define q_OPENSSL_free(addr) q_CRYPTO_free(addr) ++#endif // LIBRESSL_VERSION_NUMBER + + int q_SSL_CTX_get_security_level(const SSL_CTX *ctx); + void q_SSL_CTX_set_security_level(SSL_CTX *ctx, int level); diff --git a/dev-qt/qtnetwork/metadata.xml b/dev-qt/qtnetwork/metadata.xml index 19a09a6..dfe9a54 100644 --- a/dev-qt/qtnetwork/metadata.xml +++ b/dev-qt/qtnetwork/metadata.xml @@ -1,18 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> <maintainer type="project"> <email>qt@gentoo.org</email> <name>Gentoo Qt Project</name> </maintainer> <use> - <flag name="bindist">Disable EC support via <pkg>dev-libs/openssl</pkg></flag> - <flag name="connman">Enable <pkg>net-misc/connman</pkg>-based bearer plugin</flag> <flag name="gssapi">Enable support for GSSAPI (<pkg>virtual/krb5</pkg>)</flag> <flag name="libproxy">Use <pkg>net-libs/libproxy</pkg> for automatic HTTP/SOCKS proxy configuration</flag> - <flag name="networkmanager">Enable <pkg>net-misc/networkmanager</pkg>-based - bearer plugin</flag> </use> <upstream> <bugs-to>https://bugreports.qt.io/</bugs-to> diff --git a/dev-qt/qtnetwork/qtnetwork-5.14.2.ebuild b/dev-qt/qtnetwork/qtnetwork-5.14.2.ebuild deleted file mode 100644 index b470bcd..0000000 --- a/dev-qt/qtnetwork/qtnetwork-5.14.2.ebuild +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -QT5_MODULE="qtbase" -inherit qt5-build - -DESCRIPTION="Network abstraction library for the Qt5 framework" - -if [[ ${QT5_BUILD_TYPE} == release ]]; then - KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~sparc x86" -fi - -IUSE="bindist connman gssapi libproxy libressl networkmanager sctp +ssl" - -DEPEND=" - ~dev-qt/qtcore-${PV}:5= - sys-libs/zlib:= - connman? ( ~dev-qt/qtdbus-${PV} ) - gssapi? ( virtual/krb5 ) - libproxy? ( net-libs/libproxy ) - networkmanager? ( ~dev-qt/qtdbus-${PV} ) - sctp? ( kernel_linux? ( net-misc/lksctp-tools ) ) - ssl? ( - !libressl? ( dev-libs/openssl:0=[bindist=] ) - libressl? ( dev-libs/libressl:0= ) - ) -" -RDEPEND="${DEPEND} - connman? ( net-misc/connman ) - networkmanager? ( net-misc/networkmanager ) -" - -PATCHES=( - "${FILESDIR}"/${PN}-5.12.1-libressl.patch - "${FILESDIR}"/${PN}-5.12.4-libressl.patch -) - -QT5_TARGET_SUBDIRS=( - src/network - src/plugins/bearer/generic -) - -QT5_GENTOO_CONFIG=( - libproxy:libproxy: - ssl::SSL - ssl::OPENSSL - ssl:openssl-linked:LINKED_OPENSSL -) - -QT5_GENTOO_PRIVATE_CONFIG=( - :network -) - -pkg_setup() { - use connman && QT5_TARGET_SUBDIRS+=(src/plugins/bearer/connman) - use networkmanager && QT5_TARGET_SUBDIRS+=(src/plugins/bearer/networkmanager) -} - -src_configure() { - local myconf=( - $(usex connman -dbus-linked '') - $(usex gssapi -feature-gssapi -no-feature-gssapi) - $(qt_use libproxy) - $(usex networkmanager -dbus-linked '') - $(qt_use sctp) - $(usex ssl -openssl-linked '') - ) - qt5-build_src_configure -} diff --git a/dev-qt/qtnetwork/qtnetwork-5.15.0.ebuild b/dev-qt/qtnetwork/qtnetwork-5.15.0.ebuild deleted file mode 100644 index c203b98..0000000 --- a/dev-qt/qtnetwork/qtnetwork-5.15.0.ebuild +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -QT5_MODULE="qtbase" -inherit qt5-build - -DESCRIPTION="Network abstraction library for the Qt5 framework" - -if [[ ${QT5_BUILD_TYPE} == release ]]; then - KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86" -fi - -IUSE="bindist connman gssapi libproxy libressl networkmanager sctp +ssl" - -DEPEND=" - ~dev-qt/qtcore-${PV}:5= - sys-libs/zlib:= - connman? ( ~dev-qt/qtdbus-${PV} ) - gssapi? ( virtual/krb5 ) - libproxy? ( net-libs/libproxy ) - networkmanager? ( ~dev-qt/qtdbus-${PV} ) - sctp? ( kernel_linux? ( net-misc/lksctp-tools ) ) - ssl? ( - !libressl? ( dev-libs/openssl:0=[bindist=] ) - libressl? ( dev-libs/libressl:0= ) - ) -" -RDEPEND="${DEPEND} - connman? ( net-misc/connman ) - networkmanager? ( net-misc/networkmanager ) -" - -PATCHES=( "${FILESDIR}"/${PN}-5.15.0-libressl.patch ) - -QT5_TARGET_SUBDIRS=( - src/network - src/plugins/bearer/generic -) - -QT5_GENTOO_CONFIG=( - libproxy:libproxy: - ssl::SSL - ssl::OPENSSL - ssl:openssl-linked:LINKED_OPENSSL -) - -QT5_GENTOO_PRIVATE_CONFIG=( - :network -) - -pkg_setup() { - use connman && QT5_TARGET_SUBDIRS+=(src/plugins/bearer/connman) - use networkmanager && QT5_TARGET_SUBDIRS+=(src/plugins/bearer/networkmanager) -} - -src_configure() { - local myconf=( - $(usex connman -dbus-linked '') - $(usex gssapi -feature-gssapi -no-feature-gssapi) - $(qt_use libproxy) - $(usex networkmanager -dbus-linked '') - $(qt_use sctp) - $(usex ssl -openssl-linked '') - ) - qt5-build_src_configure -} diff --git a/dev-qt/qtnetwork/qtnetwork-5.15.13.ebuild b/dev-qt/qtnetwork/qtnetwork-5.15.13.ebuild new file mode 100644 index 0000000..d4da090 --- /dev/null +++ b/dev-qt/qtnetwork/qtnetwork-5.15.13.ebuild @@ -0,0 +1,67 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +if [[ ${PV} != *9999* ]]; then + QT5_KDEPATCHSET_REV=1 + KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86" +fi + +QT5_MODULE="qtbase" +inherit qt5-build + +DESCRIPTION="Network abstraction library for the Qt5 framework" + +IUSE="gssapi libproxy sctp +ssl" + +DEPEND=" + =dev-qt/qtcore-${QT5_PV}*:5= + sys-libs/zlib:= + gssapi? ( virtual/krb5 ) + libproxy? ( net-libs/libproxy ) + sctp? ( kernel_linux? ( net-misc/lksctp-tools ) ) + ssl? ( >=dev-libs/openssl-1.1.1:0= ) +" +RDEPEND="${DEPEND}" + +QT5_TARGET_SUBDIRS=( + src/network + src/plugins/bearer/generic +) + +QT5_GENTOO_CONFIG=( + libproxy:libproxy: + ssl::SSL + ssl::OPENSSL + ssl:openssl-linked:LINKED_OPENSSL +) + +QT5_GENTOO_PRIVATE_CONFIG=( + :network +) + +PATCHES=( + "${FILESDIR}/${PN}-5.15.7-libressl.patch" #562050 +) + +src_configure() { + local myconf=( + $(qt_use gssapi feature-gssapi) + $(qt_use libproxy) + $(qt_use sctp) + $(usev ssl -openssl-linked) + -no-dtls # Required for libressl + ) + qt5-build_src_configure +} + +src_install() { + qt5-build_src_install + + # workaround for bug 652650 + if use ssl; then + sed -e "/^#define QT_LINKED_OPENSSL/s/$/ true/" \ + -i "${D}${QT5_HEADERDIR}"/Gentoo/${PN}-qconfig.h || die + fi +} diff --git a/dev-util/cargo-audit/Manifest b/dev-util/cargo-audit/Manifest new file mode 100644 index 0000000..3aa518f --- /dev/null +++ b/dev-util/cargo-audit/Manifest @@ -0,0 +1,270 @@ +DIST abscissa_core-0.6.0.crate 30041 BLAKE2B 5f3dbe484ff17990deebb71aa745ae9dba1d33665a7da9a68064f002884d0886c6b1a8578dda5630b8317e3e57fbf731c7dd0b69395b2199dfafeb3da90ecaea SHA512 72d5ec5cd45a5f2a50f8de659a6de3665dfd256586a49ae2c3b8e5ce8e8216d18fdd7864e365caf2ebb124e1d0d13b54943eb46cc81f9589570c9c09fd7d3423 +DIST abscissa_derive-0.6.0.crate 4812 BLAKE2B f638d515bbe1b8b8fb84c508864c7a473533a3a872b192642c4f6f0efa2a957c565e343a226596f03fdd7eaf6c6329a09825c833092325b1aec9d01c4f00aa5c SHA512 648573cf467a087e43668f21e44d84155e2bd2824300f4359a1d725a1a1ef822f4bcc2911747931d60c0f3878147a44b87a3fe36424dc8d8c78358649e6350c6 +DIST addr2line-0.19.0.crate 33210 BLAKE2B a6b393dcddfa0f858297efb6b261d3a23f118be45a3211ee15f6c58808f241dbcf5282f4a86be579360513f23ac4035819e923f2587b7499110af42e9ac3ab88 SHA512 18da72e412bb89028e2ccb838192330535e45300f6fd8edc7d1d64397792a3db12418aa24a3312730c5414e2a1b1d65e6b9d5691ba234c9142b5d885523a5e94 +DIST adler-1.0.2.crate 12778 BLAKE2B a1dc17786adae945ac09d3525e609ed944e6465690787bbb831a1b9d53793cba1989793d0a5606d5d23ee20d36457923d451b1b3530c9ec7072a487aa3e55bbd SHA512 7ab190d31890fc05b0b55d8e2c6527a505e06793d5496be0b3831e0513412f9ba97f8148f6f68ed0770fa9cd980a5092d885e058becf1d5506b7c74b82674aa1 +DIST aho-corasick-1.0.1.crate 167320 BLAKE2B f148004140d4f705e93f448020b97c434b93fea6ae34fd74b1f394b076c2727a87f5ec54542a0f52822d716c10ada3c68ae8f50a46c455fc6e828b10b5650ecc SHA512 7cea5b2305b90aebc54f78446cfc91f275b1be8489d2d80c3baa9ff8b913f9b2296adbdf4aefb0d8fce8f57812963fb9450b200d133a9d61e100cef324068070 +DIST android_system_properties-0.1.5.crate 5243 BLAKE2B 86f68ec3bdabf8c6ec47881d794970f08a9eefc7417fc8a2bf4fe9faf9bdd2a2024a94adb0cbf96673409f5fbbd4d0111a1ac371339e7a90a277b6cd5003524e SHA512 b09f51339f9772c0e2e4241b36cf51573c6b96b19ffc1fbbc94b1c1d1d2fdfe8eac3134af54174a675ab05d18ef4f6bcb2c7fcc20114bbeef6e17e3692202191 +DIST anyhow-1.0.70.crate 43803 BLAKE2B 574da0e447592c12051deef171850b00ac2347dd336f71915dd21f45cc03439fbcdbaffe261097d53cc11fa0db75b1e3b21ba667f26c08db7125b1c6264973de SHA512 6fd1338e4cbe915cb01fcc5e05e7e0c051868701eeb27f03577a7cfdd59057493922b36e2308f7050608a851112d4d24cff2826456160ac8930fe961640e809b +DIST arc-swap-1.6.0.crate 67342 BLAKE2B 6afd6570c3cef4ae722d4168c3320be1343c4f6043892e5e5b52879b8210a896e083d720797b41a41db04a08eefdcfbacbfdee1a7f2180e9755c868d6fded872 SHA512 5e09cef9fa12d1204db24f3397158a3f45d12dd0fa61eadd691bba120a43fdaa916ab09997e7a63d61a3fb7dada4e3266181f4ef413850c4bc5e59d2c6c5b9df +DIST askama-0.11.1.crate 8182 BLAKE2B 5cfa6a0cf5679e271c1d35500b5ae40eb4fe1f955f4356d913ae38d7dc6fa9137ff6e250b7f0ff2a3aadb747d4abc8456a6990c99908e602521ba28014d81ca9 SHA512 d75507a43d2ab12b046854e33308eeabbac6825282588554a678742a71f2521a33637b89d3b24088643d18e84cefa538031264c587896e6e1eb16cc15c93afb7 +DIST askama_derive-0.11.2.crate 7097 BLAKE2B 395811d68825531552ac9bedc30c1d59e15ade43b3818576212456974799c0713df8eb099970affed54397c800f62310d5f6f201bc2275f5168cd805f2330257 SHA512 c9b4c2b444c9c9f9054403b25a62e0415d87f0c8a0cd1ac9fc1cdd341c94c15eb91249006e59504a34a18703dd3b9bc5a4012804a4ce3d9401126b66c3632e65 +DIST askama_escape-0.10.3.crate 8875 BLAKE2B 6bb88f18aa0bd05a36e7bf5cfcaed3138ddb96ed366e7da9b9a64c4e0345fba384cfa3e9bfab3674c1697a7722bd59a9428438b78d44bcac78740d4c53c3d3e8 SHA512 1978add567021fac7f086b6091c97de81919877726455828164642c55607d5b5f6f01c0187f8a8a3371c9b3a1ef41f4c3c9e14d9068826c38ee8a6efe2eeb5a2 +DIST askama_shared-0.12.2.crate 38015 BLAKE2B 7f1f461abc5e1a6c692b254b939309be986435d8c7fe1adb8f3590478e0b0bfcd9c98b68f1f5cd72ea5b72afdc17f79927cbcc86500502965d5e2a8ff41236cc SHA512 05d9bbd47ed09700ea2ee32b5b27801c7b8ea3953a186ede54570a68e2541dcc07f49858cf55ff61c86e129c5d84ff1d92d555514064fd43b5fa2160bc24bb32 +DIST atom_syndication-0.12.1.crate 25450 BLAKE2B 919a6ee37e25e46b598b4e722f4a9dc0fc9322768642ea2770afa4e5ffc9d4e53c9c830b981ccdd74f7a9ca9ae7333e7aa33b7cdfa9edd17685ef8a588279750 SHA512 6c11444280988ad16c12cafe7ef44f662844a2f105d03340ee5792193f2795f2361a6385000fe0acbe58541394d87101cc19c90761576188e84653ef8b27f4a2 +DIST atty-0.2.14.crate 5470 BLAKE2B 2db856a9e898a430258f059aeaf7c844a153293e8856d90ac81f7d91a888c89198768ad5cb09303c23241fe85c560a55148fa56a303651a82b0edb895616bfab SHA512 d7b6c4b9a0f898d91ddbc41a5ee45bbf45d1d269508c8cc87ee3e3990500e41e0ec387afb1f3bc7db55bedac396dd86c6509f4bf9e5148d809c3802edcc5e1d9 +DIST auditable-extract-0.3.2.crate 2576 BLAKE2B cff86a005edbc36bd48eb95a1b8da39d72d0d6d249fd7d7ed11f5de3e9e77872661a5c5f5b8b223f56fad2e59aab4281a1f2e59e3a29c746635d6d7c4f5fdbcd SHA512 2f5747934d3ff600194cbdf4b6c614026a7ea3df56acce5634be7ff5a6f7859c96555619f3d2631e53d505e8ad289a753978982034654d868a64d8a6acbeee44 +DIST auditable-info-0.7.0.crate 4854 BLAKE2B 46d16f545908d9df489a5d7766c4bf1c8dff70a7e9197ac1337fa6b34bacd1cd8e37ea1287136d239001897f2f52c508bd992864cf48718f4a206dfea711a528 SHA512 226e8eb2229f3d8bf8c0eff37ef328df130e3ddc079d6efd58d463ba09188e10b68c2c252885644cfde7b8969b0c71ef089eb20c522d3e74f6e64b59ea531ea8 +DIST auditable-serde-0.6.0.crate 11802 BLAKE2B a136bf7fcf15380f1bcc2c38e895c615ce7bb5c1343c2e35679aeab97b4e0d03f7effe4f2fee7dd96b999bdd42028a2292d2dfb07dcca21dfe4035d5fe7357f6 SHA512 53ffc0ba4a4d03dd31592e3c6e16c462520446cd7c40b40ce0fee4444d1e301ea80031d87bb11e076628ee2bfe478fbe6c14ac2d0fa5b66bb03434d90cd0a257 +DIST autocfg-1.1.0.crate 13272 BLAKE2B 7724055c337d562103f191f4e36cab469e578f0c51cc24d33624dea155d108a07578703766341fd6a4cc1ef52acda406e7dba1650d59115f18261281e5b40203 SHA512 df972c09abbdc0b6cb6bb55b1e29c7fed706ece38a62613d9e275bac46a19574a7f96f0152cccb0239efea04ee90083a146b58b15307696c4c81878cd12de28f +DIST backtrace-0.3.67.crate 78564 BLAKE2B 8c77d3d182c7e1ec3840fd6c7f4214322e473ba79a71b2d11d98696f8ae4440350f3c84a891b2ec79fffde107fb2ebb99fffca202d6ed235d3abd68215a1089b SHA512 8603a3b63f4f08be315176908134243680bf1a4b0e6cb26ed81f5fc1060279126ca0ef28f209a10289e1a85214b35db6b496affd71ad21524094f3ee3acd31b6 +DIST base64-0.13.1.crate 61002 BLAKE2B 3b3a5b26e2ef18e9b4f1ede72b1bd160a1494751878e8441d463f8a514e6cb9ac859231536989e19fb1261fd864617fe31440df1b5855a0ec625521fc6fcef91 SHA512 1eb76aff9a84057f2ccb7082e9c57b015c2d71a28173089b02e7aacd09a7d311bedf0a943529611ada29f8d7b536d7ae4de256d98eee8450003a3a9a652bda4b +DIST binfarce-0.2.1.crate 22233 BLAKE2B efd2411f045241eae60fa76cfc29116485832807394b3a8c0a76b43e840448a2911fec9e4de412e06844a5b8098f77f7af1a5a944f7312ee74ece779c190d4ad SHA512 ffbffaa1f45d62f13537a4402ba7a3b20432c80c652c337be7dcc9df253e143585d531a7406de77ca0f08a4cb7889b85b5a82901765d952c5604ecf4e09ddb91 +DIST bitflags-1.3.2.crate 23021 BLAKE2B eb990bb27b2bdeb66fd7212ce582cb36e1c616debbac85df642d0c82b25439e6bf9b1e811fac76b59e58ea3c1bbea6170d03a61e8f9a395e4334a0e2e2987eda SHA512 3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 +DIST block-buffer-0.10.4.crate 10538 BLAKE2B d819c4f9c4be85868e8b105fb7e479d2e58d3ed85c3339bd677a3e111f85cb1ff624a54d7802ab79a6e1d9221115f66388568340480fe83eae1cb448f19f5b11 SHA512 b7d436d8e627e16e6ddc300ee8f706a6cef28ff6f09eff848eedee46f84bdcd03601303c92ab8996042e55922866a59259948177c0a4496eed723523e77f6fdb +DIST bumpalo-3.12.1.crate 81653 BLAKE2B 26ca1df07c8f55a4362e844bb80cabf1efb6627ed0f489f280178e03d0c8bb600303529c05e5c2a9bab79115510eddddf446f4baa717352babd68b6a3200b7bb SHA512 1f57591bddd5d4c856d5ad1ae71f9306d8c37681a72172b6be35b4d6fffa7f30b086d88b37d8f512e2256cb7d37dc992ee83bd071e4ff84182e5e226dc92e4bd +DIST byteorder-1.4.3.crate 22512 BLAKE2B d39c546ba7346df315297fc53da4bfc77ecb1f38567ddb788549ee31cae2719a8bc0b7d1f1705abb3cff033aa57af004987d90748f5a31765273b3223a011c0d SHA512 8c8000eb8ecf40351c9ce36a3a8acd7a02f81786d1b11aab85adfeffa0f2267ed74df29b2ca5d1d38128484d1d3cad2b673aa0d0441dcd0620dfd3934bb888fa +DIST bytes-1.4.0.crate 58080 BLAKE2B 99a9d343424e04649bd209bf2a6c3a089a6cc9fdb799968f8c3a711189328e4499df2e09cc6a2a8ce05d2cc668149b364cf30cb3b09e96e21d50a39519c2f49f SHA512 502c63b9fdcd36ed28ede55a63cd359dc7b28658ecd43020511d17d48d7c34e45aa8ff7e4b17770f12197451040c2b724fe68d2aa3ab4f81c9171d052f2aa000 +DIST camino-1.1.4.crate 32290 BLAKE2B 92180b753e799513ecf4dd29c8635fdce56b246ddc172b41d54e06b21b0eebf72325a3f8120ceb32dc0697498a21058193dd1df99e9c1913fdec92253677c422 SHA512 87e260ceae0c155790756101db8d282bb6ca990579ea31b12668d2d4025f93c680fd9c62a45dc454f76109ee8a331d0a862f0653fc53e3f34fa9229588f9960d +DIST canonical-path-2.0.2.crate 5536 BLAKE2B 63de79c5f5ce832c6c4db05c812a9f2dacd939e73140137ecd20d57d3cf08b4c8ed87e04691681cf4284669a0321f9eee7b7bc01b95e18b25ed229932601404a SHA512 8d7bc999da230d3ebc8b6434c0cb2aced6ff2a77bef7225a060af79b9ab169bbf8720c9efe76e5fc2fb8af82a859b9e79b79e17c3c11bce523b4baafdf522877 +DIST cargo-audit-0.17.6.tar.gz 981150 BLAKE2B eda1d94a0819e34bb743c8c909ee27a8cd3988ad0e5731d61446c956e97d4158f385374f0c7280c04a587b7ae757f3a17158653407d851fed1073c69dc2d5a40 SHA512 effbcf5662e834911e9bac4041846bc5c2eedd9f7d7ef17cab2423831f11472a2075f6ed1511900fac706c6087f5a161bd4d7ac929fdad1791b7f39d293edd57 +DIST cargo-edit-9-0.9.3.crate 64196 BLAKE2B 48627ff64f79a7cac347f1cb6965ba878f1b8ebdc8446c3a1d1b330413745e3c6a445a855f10adac44f5887c1b0d7732d46ff39071e170e538c70e637515e4be SHA512 961c0b3d98dae9c94d56d6148b95a732b595680e310d3e841266e67b295041319425f7ac7b74daae53a7e801e1b902c39971d8ba878ee3b6c80133c958fa979b +DIST cargo-platform-0.1.2.crate 11645 BLAKE2B 7770acb90e299f71c60bbadceaf894a3100916b7f7458f9c949b683b39157d3e1ec17d850f16dfb04017b01d7734d41872d48cf9f4e1ea7414439cd7031c2330 SHA512 c716bf3a4e0942160dbf7be114d1621e1fccc23511e7b0a2b99852b99a851910bfcf8640c2d0d0a03d5a324e1a59fb5d4264ca81bca24e3f1a1ca653bdf2956f +DIST cargo_metadata-0.14.2.crate 17469 BLAKE2B 4e64bff7710c51d95944faac60b4881b5a43d5edd07ef87c8f4b9826e63dd708719cab27542fdf82cfe869d8781c1a6918a050aa0de71086316bd2f480aad947 SHA512 16e6bb3ddcfd4c6d48ba3415780518428f771c393ffe10ce15e1f3c026a6f3bf40ea9f25214049841b1d7d51f2208ed032961a75cb641c5afc52e02cb84d3262 +DIST cc-1.0.79.crate 62624 BLAKE2B b3cbed3bd6fcac1c6ea258ec96cd107f859947a35dc89c3dc8f314741b0f668e61518f896ec32ce10c9a7eb20dd350bc177a71810d53ebea59fda062ed9d27db SHA512 cbf0a25f3a23fc540e9d638fabc23f761f1c240ebb4814e761e90437d71fc559cd155768ab9e78fc192220d8a605c66c3af342ed736b719181656170b98d7bf5 +DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff +DIST chrono-0.4.24.crate 191330 BLAKE2B 492a5f1a458db9d6eaf244ac6ee750fee5b4e2586b7c675f87f2515143080774f13f9c163bcfc84b08ec70b90c7fab2ffa438f9b2b8b4ec1e691fbf9a104ad50 SHA512 1a9121870aa4d76448a1b118a2e135a145a55c7784c4f5a4f25732f8597b8655f32cbce174bdd65c2dc7b17dcc3a608454d0e3dc29b86338e42a839f8be1e4fd +DIST clap-3.2.24.crate 219389 BLAKE2B fcd17461cab1a72262b4ccb08fd3a8082c997f24f41814a3ed930c6d6c615d1c8ae0b94dd8143eb9171aeaf5026424e9142e964ea3972c7e87902b909986c237 SHA512 a61a67ea6d4877d7933563464770476b4ff00b78d1419cb6706e0b158454790c8af9ea70ae2011e6f72e86dacedb07811f62ba2a68ecd1f4d318cdb7428eba73 +DIST clap_derive-3.2.24.crate 28184 BLAKE2B 9fc8649aee1b600da4723a26355031cb69113732df5dac3c59b52f3ed295a697cad9556548f6a3704a29a048760c9f629a54a7018c492c3be827db98f0c305ba SHA512 74fd56e48146732b40af23230a831dd49ced426c80198e18d527d76e038fdf4a28463b82e4173d1955d704fa8ac1fe09e1ad49e790011d2764561f2761831a51 +DIST clap_lex-0.2.4.crate 9652 BLAKE2B 5120b508dedf52507068c0c369a45ddfbe0369e5c05b65bc5a78c422b2a4bf488f9ef1e0bed4e335450f2c08b80148eb5f7efed678039b5a94b5bd666385939f SHA512 6c05e5fd850befd45be9005af7252385f2304aa28a107413bbe329d97aea835f7acfd0bd169c99f69f466ab93d6e1c35d73a4e48343457a06fe2d6be5bedde0f +DIST codespan-reporting-0.11.1.crate 48963 BLAKE2B 39deb717a853ffbe3585e20a67fd7a75b62e2d796a66b5004876501fd7476acde9f126804f2ef6220ebab66821a3ccf058d544d689a2705eae44285f34b510cb SHA512 0869789f5c50d3523d3ee16a8fe64756498a13704efbe82bb0845eaa87c7b6b1d075b3b6b80567cd9fce6cb09c5179e9c07e485fd17ce56c8139ade0f8bc6844 +DIST color-eyre-0.6.2.crate 635042 BLAKE2B ab35f335a29d5698322b44d144f307ae5968e56622dfa89c6d438071026c9bdd79f2033c8849acb3aef86d3590561386e02c7571b079abc4e928bc966fcbc233 SHA512 b7e83c8fc196d0c163b64d0165e10c70f15ff7e64fa8b1547f45d696f45f8a8ce7140e04901c4fa4caf15d868334253db64be2bd201ee964eb4dd5f494549435 +DIST combine-4.6.6.crate 132428 BLAKE2B fb52e724a52f1a551255591fedc134178080ea5efc0c488efbc369e6272f7f2b87dd7d0ce63361754d8ff0cf1b0a59bbc7b0396c50c53210f3e2c28ac965e0e6 SHA512 ff9ef9329de2cfc103271a25ad1fcb7e478f3328843bd8a65653e80b74112728ad4a33326a58ed7ef8cf39eec7c3b797fc287295ba149ee0dccb1de9721b5819 +DIST comrak-0.18.0.crate 118506 BLAKE2B c6c360acad3a2adf4f8c83c0982fe8867b6e7d15cb70f42077181b8f3b4eb7de592c6b55981cad9995897aabccdfee4a3391b8e3628f22c31e9c29e37ba1f0f0 SHA512 e79af88940302295654deb3d3bbca950e82be15d2660c5f4d208d9538323742e4e9da5f81ab90539534a76426bb80802698cff9f397dce0203d0ec2aee40d42b +DIST concolor-control-0.0.7.crate 6314 BLAKE2B 1de3c19cdd66536ba2ce1949fe6ce75961df75407669c0716e0698b0c2135f423d19804af001eb40d78a7fb42cbad142d80df579e761fe7418bf23b68de18c48 SHA512 2f7739d21fb989a369314898fccd32fb6eb5cd7876a1e8770fb5b106e72d104536c4a626b41f7de2f255efbc92dc47d40030b2764f3395e8d11a924b28acdb1a +DIST concolor-query-0.0.4.crate 3095 BLAKE2B 215e1a03d5136631715da2ea01e6f0c041b9ba58e8b09077d6e6391ee91a504cc02099093f9027da12672d9300359e2873ab418eebd68dc426a31ab781fd4c32 SHA512 1ab671533353028e49af78a113512ca3980a49817660a0c75e0f3d2da64880da4c0659cdc13e96de7474214411f4b2dbacca7b12e05fef0e63fe5fac25508e4e +DIST core-foundation-0.9.3.crate 27059 BLAKE2B d94fec51b1b1055c285609f4bba45c5169a8cc775e251eac7fbf0da7ef894e1be9ca9f4236b82b67be0610bdf811366e0c6fd3cdb671a1e83c49717e2c5b2d03 SHA512 de07967c4f5e2d2e730b6f21984c228dad2cb2f55187f13074a2200f4ce9f906763ee818267a9c67ea560229db7363473b230670a6dbd224fc335f32ba03d072 +DIST core-foundation-sys-0.8.4.crate 17725 BLAKE2B 8afe47838dc91c8848c0d6a96a604149e5f0762228dbc10c17b85e4e9cd2c3928712bd0b28e1071f5fd6fd76d4ef972cb86c6c929246fb6e84577776933a8ac7 SHA512 15da472316d6decc213e4e5f08ecd22a108ebefe427b890741de4f9199614f19123e64329da76de5e8b4c9ff74ffc31738fd929acc1460fc757b4aa1fd3fdbb6 +DIST cpufeatures-0.2.7.crate 11563 BLAKE2B 917f8ce2675519b4d5d89fe09b02e147f00a915d195158a690b292376bcc2937dee8f76778506556ecde0187c74ca8c046973f44e1f34e4c8bb6809d2d4347b7 SHA512 46988efd895b88751200dd9693a1040f698c8b2ecd5d3d4ae1d8055e719aff262afea764083dabf1d8202a51e7e16b4f51adcffc8a2424c841b58840b6669490 +DIST crates-index-0.19.8.crate 22701 BLAKE2B e0e2eba2251cb1b819d3fc787db010689a056491d3667d7fa21150a2c517edeebc6d0e5a5162e6aa3209d7cf7c135415d66c3082a3d191b3bcdd1568a818f09e SHA512 81ca418f0ce6e08614c36550525221ff5b8193a084adc5dbfcddc46008df59720c4e5a3e77c6518a162cfbabfbfcfa079039a7e6e52d707fd75af03d094d2993 +DIST crossbeam-channel-0.5.8.crate 90455 BLAKE2B 017132056f1b40e55fbc7a09b75509d72b0a6123a0e5ea5d6104fe822f73b3ccce670d711d3b84b5ce743dcab5f10445297a6701b71213b77c0d56e2c3fd7160 SHA512 47677d6fe63050c51393e4a0537a3c65d7055c9eae118ebe60c5d716b4f47f23c2b1947b1e1b66bfb34a57c4db3a44631d323e996dd545565fe4f58c25863ff4 +DIST crossbeam-deque-0.8.3.crate 21746 BLAKE2B c24025c65d7c1c98e442af95491749dd4f777af0509636ed66886dcf656359ec50dc2a5e26327559c6659f6b355d2b0b992dafa691a36571c99637cb47372d0f SHA512 f3201c9afef7d2d119702696f7e5e7997a104b8f7d67c7adebd1cbed84d3a3415636ff674f1ccdfd95d0dc162384e46c6138c8203ede69577b0d5359a4b44672 +DIST crossbeam-epoch-0.9.14.crate 48524 BLAKE2B 439eec7e5e0364af0fe0a34ffc9354ae289798ffa7480bc656d4a610101e1ef2d5f484d84f82c87f961bd622434c36adfb7a87f7fbd2c71077b732cc7cc765ad SHA512 543cb60cff7c0823733f6ace191b137a04025a2b40fe4fea5eb273772009627fb705aecf742bc59e01367d4c15a14aca73aa2caf7f4b509f4b25947e14fd1e19 +DIST crossbeam-utils-0.8.15.crate 42326 BLAKE2B 23e6bd2a6535c6fccf7b7d17487fdd4095c92a3f3ae383a72dd6d90c1c49c2ec8d96dc01a94c7127b2681bfaef843585b3ae8665ecbc43b2e7db8434e31c6c8b SHA512 adb9ce1886396bc637299cb8122d102bcc9e561f25d67ef73e98c9ed8a8b13b78bc0f5bbacab19d015e1a7690bc0201f08b3d8e82393ec347e7f2933eb622533 +DIST crypto-common-0.1.6.crate 8760 BLAKE2B f2422bfb89c15d47a8f91c8f6695e05eb56990a922e3cdf3d426044736f9932324c0d899a151a6df4d6683e6a6b21659c657d3988734014c02cd854bb4b924e7 SHA512 471dbc43f517089d2cfe0868e29510c6ca579875b3bb5d013c70796db969b609b6c4bb35c9a07b9a2917012dc5708b717d48e317a20038adbe7e7039bf3ada6f +DIST cxx-1.0.94.crate 196058 BLAKE2B f504685292650a076c3689540cbb5906721fcba1cda0391e855d75b9b1270249805986b501291d91c947c124ba8affa1659e43e040bb264d3ab3aa23b98d9718 SHA512 fb66c3d53dfa1fdfe8fa31ffb6ffe0f53fc87d5f56038b5d2f588fc56668f96954e75db1fc7304d183ebae2735f0c7297b396936d588242556f40557854f22be +DIST cxx-build-1.0.94.crate 84842 BLAKE2B 39b8a11b925244410ac2dca3be5a27576ea67f5386588e768d9ac1041336170834c7c2d0cd0a61b3e6eadea4d6364e98bf4dca64204126ef815235a17f1edef3 SHA512 4e2b7ccb8ca2ba35d14fda222595528d3e7abf6b4bf5b8e23f19f9668377103808151ddf63bc1c5f725fa362dc3f33a827b026edab176cc99a36e0f890c13adf +DIST cxxbridge-flags-1.0.94.crate 5253 BLAKE2B f7746ca703e95f8b6197655aae08b88509132b89d035c62420e3d0cc4857687171063e2da69a787938188dc5e40fccd2b50713ed929f3f097efbc5b5956b5263 SHA512 9d577cf6bd2afa2301e8c227f201c138a379457624833c3cad4e75c7ed046544b363ac4bd0f7a1a2142ab1c9d879b56ccfd681a3962be917099db5ee4c63fb02 +DIST cxxbridge-macro-1.0.94.crate 59873 BLAKE2B 9a29a2818cdd6047b49002c10542e2d04702ceb41823a12e27b151bcc524a05377390c65164e53062630d7ad9f849ec71070118de5eb348c98072e301dbd1416 SHA512 59120f8d0f498539a16921d18e0e53a745f4ee58f4ed40465b13722188d28975820adc3c632a4592c6813771056fe084674daee6c56940e50f6e9c492c4fd90d +DIST darling-0.14.4.crate 25168 BLAKE2B bc48b27823a1a85a01a5daea47d87c2ac4b3ea48079249606aec912a4f417b72516004f17765e38f06048543708b758bf68afa63dc5e7415906de7940f02726d SHA512 1f236976cd291502229a49c2317fbcad94df54e2d7fbedebd9ac3173f9e51620ce8f2e37c78e86a63db8d9cd089e3eaedb990e58cc97847baa2cbaae58526aa6 +DIST darling_core-0.14.4.crate 57485 BLAKE2B 3d284d6a5100f45228aef5e42f9de63b6cfe2b5d42f1224bb19ff5d262b0c293931ee99f3aaf1f0eb24e55bb7e04ae790389d73c624c5f00f17a280a4a496ebc SHA512 6df7e911a543e9cadd0810cd8bf6563e2f000b52bab875f7a34d229bb6c4fb7beb6ebbc4fb0e12b97f23616280a20f306210abdfd1dd094c53da35f97be27b96 +DIST darling_macro-0.14.4.crate 1896 BLAKE2B e537b384c4c05103a962ff03be3da6c6c31d1c0cc25dedf5df1522c524e744446274a1696093d6f4479c0b6ddf02d27941fe959f517ede4b203bff3e20eeb294 SHA512 819fb85d8e324f4848669d32b2eecb2c2945a9891fa098eb9ca61d84588d26f0e0d1c7c482956935c7188e9c6feea0db5ae4c81bfe3d014f74fcebde80a204cf +DIST derive_builder-0.12.0.crate 35456 BLAKE2B c190003a65fa22faaa977bd22beaaddccde90aa9817d28e0940da27c71b50d1b77435029eeddb552c0451303340edae41d857678316b5e1deb36a233929b0943 SHA512 3ba06c1d53f69ffca5a56edcd1173e9b5d67b9a5b00025c36fef04fa06a3046188ed503e1c0c8d56b26411b5199c3a152f284965f13ad8b346b6750ca9e00f0f +DIST derive_builder_core-0.12.0.crate 31438 BLAKE2B dba84c7354018e509171767aacacb2be8e3ff566799ff693e2c4473b29f4ff93e2e785a0ac68c6b5ec4daa2f6c98c0da693b574d39184e038053589ac43b6c8e SHA512 f2e3cd5afd603273a1785fcef32b8cafbc89c422bc7754c46a9dade42f7351e3d6fcd00a5717e2617618f1bf71d5ce94abe043b19b4b6092d484955f1578d7fe +DIST derive_builder_macro-0.12.0.crate 6288 BLAKE2B ee0046658aca482c8d6141d4b12c9529277236a98119a5c776f4e759ba63e16b5d25045e25a9b1f008ce257663504e26cb90c2e7417edb69c2cad38f123f93f3 SHA512 cb4a71f49c66ff91dc5a459053102e1aab7956d6003998270ac9bc94c2259b824a77689f209ff0104261ff829e54dd0900ec76c2cc1b8d3c52092961ffd072e8 +DIST deunicode-0.4.3.crate 109535 BLAKE2B e71874d5983659ce8324cc671a5b7ed86a960a9618ec4d1085d052f8e4b2c9ac92997cd425d7969abcc35c6905f1d54ef371452c899319a39d245a5b36e156c8 SHA512 f3b9ca2055cd64d2f3035799f809976a0909e59b38ebec62b56e9037f32582f5cc99b72b1774dfbcc72e4d978570946cec46eb034fe71145c67e2241b9f84cd5 +DIST digest-0.10.6.crate 19527 BLAKE2B 402009105a6ac055be062769dd4f162aabb977b9afe29f451eeb3e6b5dd1a579c371c5ec996b9c1bdba3b4ded83830ed2e1934a0505480bffba1e0d16775a8f7 SHA512 21d3c1dc64e640300c51e8a009af464d6e3cd2b10aa67c87a038165c11409d6e5faad1967236724a9a4cab8fdd88826cac1db4798245fd53ac2ff1a9b2b68b76 +DIST diligent-date-parser-0.1.4.crate 8019 BLAKE2B 9455de0f3bc8928809740947942be1f287099767e058b8ee5886234a11a29e09a1590eb8f6cb7afeae3126404ad28231f9d6dc313ee81d1ba850eab65ceb375c SHA512 2040e7f1f0b33ee0404627387cb4a897937a949be82ab11aecb6daaacfe3784bc68ecb561d4ec1bd31d210a028e435ff3bc4ae791c3d6a46d4cd2094b2c908b7 +DIST dirs-next-2.0.0.crate 11689 BLAKE2B f5022bc51dd50bad4ad0fd05b159a4117aca47afbea66dc42c8306ca58f3a550165afbcf9f5f721ef5ad8d357eaff305c6f6e42789354a910d5f1d05d3b7b7c6 SHA512 6ccb732da8ccf7bf35952c22a3b0caa8238319feb0a6cd3b0957e6be12548a2ce507c69cb6d3cbd2adfb37e13e6521c6229da5999edb0e47a292a41c3ea1a766 +DIST dirs-sys-next-0.1.2.crate 10681 BLAKE2B 71431533dbfd6016cc309c14a842ac8d43577abe768e69bd2caaf7d19d743f3ca95b9b0be1747077282089c64485f3d4e24bec8e56d4d883f25e494d328fbf3a SHA512 b3c40a8e93d4f9f4a890718076e14779aedd67a79da61b466788268c1eaea19aa493f043a7e410f5023a23d5509e639a6fc6681fbee30e252a601091cfffa2d5 +DIST dunce-1.0.4.crate 8034 BLAKE2B e1e7ffbcf1e3632036c03303ab46fc37b2b0a991598790b2dc65d7a61341a78bf555230ccded8fbb87d6288282af3ed2a8641212a0f1fab929bf99298e878b6b SHA512 f57d9c53c177bac8e10a4b56ae421c604085aef0f264b8d6871abb7e1ff713b55f396c5c5f24422763319c504c6ea6a774416af1c2ba23ba7b67b2282f6731f8 +DIST either-1.8.1.crate 16027 BLAKE2B 2fad54b5f20bb8540fff5959ca7b2f9021c814ee610895d770f7081b12ebe2c93ce754c462df9d81824d479ca75e07f4a9e398c07a655f4abe2740b9c9de9c62 SHA512 5e4da301a605e0bc1ee3a269fe449aef044df05b5e833940c7f79bed61bbff4fc248e9c82b45dab92b2688d578ada000b271aaf67f2f4f7c82b35f05663cfe7e +DIST encoding_rs-0.8.32.crate 1370046 BLAKE2B ca9c15eb521434daef94de5eecefb487e2b4053ac002f0fa24e3ad101b89fd4a19cbc05b2e52a85599a45d50869a5671dca0786254138b7a5e9d5dddd2be712e SHA512 8a695aedf388dc90b039277fb8a88cd0fe157002554ef478b820e962b6fb19f3fecd5940d0720cc820d07c77e64f7415271a119c87b72c740e6e370ee8cc418a +DIST entities-1.0.1.crate 24795 BLAKE2B a439872225eb6d453684dde8aee707289434c35823c91e588fea3fa5b94eac75f0456ad24f96795f377d26a7bbce475ea755a3425da03f64327bc44f7dc129eb SHA512 12796a00fba3bfdbfeed6984dce0b175630809f92817e620fcadc3c1eeed9fe9a260ee64560d8e1dbcac2297a06091507a1ef19e940bfe55c437477950bb3a0d +DIST env_proxy-0.4.1.crate 11256 BLAKE2B a8e3e4f8366a9a578da09903c1b1e9ba2c4e37700ec5600814c8a1dbff740a20dd6147bc1fbeed385137ce734477c734ba370fd6a824c64d571da374554370e5 SHA512 333232b0217eab986b4616061b1419e24fa95b55d6f58cbd3e6a8a280b1f8b6587ce5ae30cfad570e7cebb2327352c18b6a8ab27007dd870073308127d2cfe00 +DIST errno-0.3.1.crate 10348 BLAKE2B 72831d0b69f95884a69918249cc0e814eb5eade3205331bec6d2021f8b01a42c4c9b494f2717033d65a4c5230c8490b6ce250d349c1e8e177b20e7e84a860020 SHA512 00d64157d066f1e7601c522c0f4e777eb662ca5cce64682f616de0734857765c343396f7161ac2908c3db0c474995ae157bfe9d8a9880743724d9bd428dfdf54 +DIST errno-dragonfly-0.1.2.crate 1810 BLAKE2B 781fc26dce5c33d83b9a1fd9be2b2ce9ac2559aaa858957ba6777e143b1e44cdfee48e1b47e3c91a95075a51921d1a421d0b45eb3d8de827cf4dd0ad744a7d8c SHA512 f853f1e1b8dd0f359a8f9a0399b3384c1103cd090d96e2b2204f91a40d40a9eb99383d4aa6a11e5470c51557afacf452d4be2049600d4235d27f59870fa3b916 +DIST eyre-0.6.8.crate 41587 BLAKE2B 3ffaf2e55b55212ef60b440b4ceb9a4500e91d59ecbf7f477ba0b6ae601a73db95956adeef0279483fed6514335826f21c3538efb14ee8c30277cfbb1693b705 SHA512 0a54e2ce9d58e80596ab7d55f0f913fe3d9bad6cdc5f56b9aa4683732e2d409e288a579e89b300e35a822f56017524b2ebbc0e60860b9dd6e479080f7cb14324 +DIST fastrand-1.9.0.crate 11910 BLAKE2B 570c66ec1d4ace08b9790299759e3b6f0394aca52c4ec2e02258229c198846cba7c0627807548bac3ef1f86c7e512c4bd105f1e18e35ac0ea6934f76a6838e1f SHA512 321567b5fad8552c0efc4393b1e77d1bce288b0a88c475d432f79e91b3457ee6eb5db9e4d65ac6381b9990c9916f4651b6a76250df44d51ea3e25bd8184bdc52 +DIST fixedbitset-0.4.2.crate 15954 BLAKE2B 91270883db5ad0e999ebbca1123d8729d3040eb936034ab8da3cda72a830e45fcb977b3fe3c2b94e870c1fbc366ee8602357bb77e8b9a40cc41a04afad1b266b SHA512 57c5d756b0a202b2506270f0d5e890f7617a1e0c015b6059ea23fab49cf7af47fd06927eb56feb03b37cb2b6c467e326b3f0da1e32cfcb6339cf11a130a3ccab +DIST fnv-1.0.7.crate 11266 BLAKE2B 81da85889c91b6567e0f555e37dd915f1bd919719d1ca10c31a6861d7aec29a49ae9c1e8bc500791bf9d6b8dbb318c096d04872c5872a4b1f7d45fbd8e12842d SHA512 2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334 +DIST foreign-types-0.3.2.crate 7504 BLAKE2B 520818b702d990d296ecd31a8646850202509ccfa18edd0e1b260289619a6c351e758f317ec0824bd76eccb209b6f087057c25f1bd01a47897715013dd834867 SHA512 bf27b8243ed482c202d120383374f19ff09422535e24b9c1aebccc66529bf300ca17b8bbc76d67f98ac092e614497afe3add9dc68aa69c93074df05762f91232 +DIST foreign-types-shared-0.1.1.crate 5672 BLAKE2B d2e42e04b6657e7a69fe0bd20c672176629c743e49a55fd007bb30e289710b70045d445ae9cae0eeaa747ee708c90e8abd9b5fc39bad8ec0666befe1b696d4f1 SHA512 bafdb2143e136fb0818e2ffd90b5c862b7181647d6568947d4e4531012bbf7a57b597221ec7056c1b562dfc0c3b5dead26d1a4111ebc15e7863737a873518a4a +DIST form_urlencoded-1.1.0.crate 8734 BLAKE2B eaca73d73d16242f3fa3e38e23531c67c01404697bc7b7eb7c64fa04167dcb403a41818487fc46c5d9118842818472d549a2f5fcef5e4d962461e1c103d895d1 SHA512 9e245495dbf235b147e4216b313f2e6a96357d2782a66d71c08c2902c6a065701ca8ecdbb6b2035983a83c44cf36c921b5c71d63af0e02dd39bf5f8347117e11 +DIST fs-err-2.9.0.crate 17662 BLAKE2B 9919c253ff98280eb3ae8d700ba3f878e2ffacec1d3ea69f0445921dd4084c67f3309cddfc2c4e9ba42cc9f64e201fc88313f517185e47f62c3f3023bed62e96 SHA512 b0fe36a1158a1267a10f6ca66f987448c2fe05dbc26af67cf92e2fff5af210312494823c201156f1029e3d81ec4b075a63a51770e153dad3867fdc6ee1d29126 +DIST generic-array-0.14.7.crate 15950 BLAKE2B e74c785e3127095625951da192a018281ea9976aaeb11019f9088c3f27748c5fed1ef25d577150864486dc48b5138d6892e42f99979339f711a66fc70756c82b SHA512 363a7b04e4102f9ca63d429721c1ada6272be6bf0a2e97da681faf76381f73f0e3acb86623b9ce2dae441de9fda704088391779b9769ec02b3c8c9f9f35f897d +DIST getrandom-0.2.9.crate 34457 BLAKE2B ccf7232ece1047000140ed6bb9a1afa784be87b5cf83e2f58dff77abcd79e34120b45336cb05e47fbfde36407957fe9da8b04971092ec05f67b321fde9142d29 SHA512 48e341125223945d1c02c4dfc54df303ae27d3ceca0d5a30b42065f5e40da600cb2010bb59e88af6b990d54b5eb4bf83ae5bbd27e13e56363f5f68be03ea9082 +DIST gimli-0.27.2.crate 721636 BLAKE2B 61a202545529618b44035450c696b52559d5aa8af091dccc613d62b21733dadde0da467d40595aab71f4532d1fc2f2a6b3744e0aefe89f244e54b9eebf422d99 SHA512 1c0bf53754db2503033c17988e1cfa824af4e01f43c874b02fa61a475467185b13657c7ddf891e06f5984db3ef6b1e37586b184443716dbe45db1aa8bd082ba2 +DIST git2-0.16.1.crate 199956 BLAKE2B bf187855d683b13ec8ec0e103f6536fc2d8321d2a023eebca907a15f0bba760f833cce4a4b0958804675aeae1ee9d2dc0270edf02c66cc2d7231980ba7ab15d1 SHA512 4963798b6d9fc087a4394515b0f6da0a9e01fcbc220dc3d1880a277ea0487083ac05c0bc3a52a537885eb065a9b2209658a199835457b38c94e45395ad8d6252 +DIST gumdrop-0.8.1.crate 17522 BLAKE2B 62f299718cd4445d736d036276f6f695031d61b52d001d411dc3847b98a8046be4818bc1bfaed94170afa65da52dccb55f049c2f3db917e666063ed69f9820b5 SHA512 167a5cdb73f8edb8c912f9de1bbdbcba24be03a74d449cceef384f46a581cc9f635585fd783427120408e9c6096dfdb0a7722e664186490a315729df708f0299 +DIST gumdrop_derive-0.8.1.crate 11657 BLAKE2B 90c23e6ab1dc7bc481a38ed7d8fad32bdf6ab70486e454fd0707c371d214fc5939a9a8b2569ab91e8ead14efd10fac56c18203fb8d98a02d64d1a1000a0941d1 SHA512 8a42c1d0ef8b921b91c1710fbebbe9d3ce109cc9556444e729d781d0ac932043cbb931651b47c502ef63e45ff7453c6660929d8b4d81f85d7fba20efe7be8fe3 +DIST hashbrown-0.12.3.crate 102968 BLAKE2B 492072f27eaec45abd2c5d7405c614c0c6a8221425e901bb6174bfa1688ee524408a618650126d6c683b7285b9bf0a21dcdbff7347e4d8f97bf7111defa1b7e5 SHA512 b3700fcd659a21a6b9b3777c18b37a83bf25542b4e8f2b963779a122f5d22e1742c064cfc03e649583e7dd5c6e90ca8407f8c51a0e8755f6a108682853022f76 +DIST heck-0.4.1.crate 11567 BLAKE2B 520aeea740cfa30b0cca12f73594ffa655f32959673b1c9caaca1ea0162e455546ae3033881394c0ba0516bcd5c9a997da02162e1585522d665813b9096eabd9 SHA512 8c80e959d2f10a2893f9a71994720f90747742bb5b61fc0a539eed3ea5679b140c48fd7f7690d7122cd6af5f7f20a19d412e3569fe741c6d31f6b2ce1e0b80e8 +DIST hermit-abi-0.1.19.crate 9979 BLAKE2B 801e8052b85341cca388ada9db4b06bb1bd7b64474185b2ad06c0256b9e597639bd3dd4ba0053ea010f922e53969a4ab47b90d451fd9b94c8f2324055d151ea1 SHA512 1c877fcd562b15d2de9c151fd6c5f3ea4bf48abcb799e6139a180ffad5d64b632f0000d5707bbd92ff23a0e5f349157b9e0f5be8b50f03680b0fa47315dbb78a +DIST hermit-abi-0.2.6.crate 13027 BLAKE2B 4df5306639511a5f69594e903f8ce62482cbbfbfe272a91a12f407483dbac4e87c2d7e5668cc06ca5c0fc149ca93a3152fe6ad4bb3b96cacf56a22cb635e5b7f SHA512 bad8442bb822a9c99f6536db16523c80f5139af6a139bcc359c03725c59ff935816e2ecc5c491dc362ac75ab2dff41ab1e9dd29431f5e9a109b60eb9b7a8dc28 +DIST hermit-abi-0.3.1.crate 13793 BLAKE2B ece7865a09f566a95bfba5f1fba380bf12836c3761fc6d5a3d5543d3e50ca0eac81bb567d50b5643849cf1a752aa651a0db4c053c60faa8f1c74fe2f12819d71 SHA512 a55fe9230e4e8fef63284befff74108f206e76067257439d334d33068875368902dc690926a1feea15611f14123073867d7e9cd21397bc484cef849d6e1dfbf9 +DIST hex-0.4.3.crate 13299 BLAKE2B deab49bf3d97f6fd7c0a0855b50232422443b226362bc7a4a19e57c2e662fff2cb046d4c5bd7618ddd523045f3d8c78754508f862f9a8ca29ca9247da6d6ec79 SHA512 fd8ff33b68eea2d6f2c6b02a6d82a2807cbcdc209ca5a76e3e3e5d006917ee151f236b6d18e2646cc9a9674bcdda1d6ce6ee363a89cadd99bef00d0eea9989e6 +DIST home-0.5.5.crate 8557 BLAKE2B b14225f6e967ccd37fa734f50991a50065047f3814c4e526f3b4605ceb9206d4d12e189b4033ab85792ffea34a30f2b0267b10b9b0ed88df52c37f6ae1ecea4d SHA512 4ba97149d8f70e9b6eefc930292c7e62fab6ad03d5e4e6bf93d40209d3a65e40932c6f3d14ca579ed19ba33195977c60fc52b3d3788629fc760f41ce90fa1e58 +DIST humansize-1.1.1.crate 9131 BLAKE2B 9a9717af2c61c724f1eb224eb351c7819cbc5a8f7d53e57a1ab37ff12f886095c321099a4d269e48a90475c1243c6366ead7b19e4d5b698cfbe5c9e2357cd562 SHA512 90b25500014d7ff541b6feb496ebb25ffbf0bbdfc3ea80ce3b3a1597d08c2cea9b967c674e261d3c8c3587d3481da8d899cc5e3fb05b22c55f90e178508ebeff +DIST humantime-2.1.0.crate 16749 BLAKE2B e2ae8325b037fb175b9200cc5c1944ce579056c6662cce307beb6701894552362a25e371aad65f8fb9384945b48815ca74bb8b544a32e0a5845b7edd30b918c9 SHA512 3bf29ddd1391d82897c22baa0ff3ed58ef6d6959859f1f8ed54d324caba5b6fb4422e56790511ce82f902cd11467f93c8ab7fc7b0e0bdb719308a4d0a446ae0c +DIST humantime-serde-1.1.1.crate 7886 BLAKE2B 4c66a483276e0cc5f4bd82fd49cfa0ee40c8ceda753919cfb7a8c794d098e9e4e851643fbc42a209d6ab00c5c62d9edc81c3bb1f6da218a09eafc96da9b566f6 SHA512 0bd72554e700f89506d2d1c8191832aed0065ea02aacb99e27139a60c883d3dbabb1fc3d60f499f5aeb20bd155fdcf21dc671aec1ca68d4041bf98ddf324248d +DIST iana-time-zone-0.1.56.crate 19517 BLAKE2B 88a83a65b2e17afff6491953c1ec508168e3cb0d720992c7958aa98ffec263d3b32f4ad07664703b1e429d96faa211a50c557d5a1398a849c45ab9df796f8e4c SHA512 d1bc3ccc17c6d3abc44f8662a15b5c84f5381f90dceb5e14a826595706178ba0f8cbf7cfa86d3b7e967a51ef75a27cb868fda7a3531be9bd6e77e813580131e8 +DIST iana-time-zone-haiku-0.1.1.crate 7200 BLAKE2B 9e748694423cadd6edebc1daef2aa4126904f5597202874d68066a15580cade77f48f1e6f2a77e17c7de0fae5204ef1262ad5b6f30bd95f4faec77748aa2ae0a SHA512 daa7570aaf5a07c990b07fdc2153b63d947598ed35aa9c35c4773772a6c67997143b120a18ff4c7c13474d296e81a92975ebf5b9aa9d204c1820e9629cb2e369 +DIST ident_case-1.0.1.crate 3492 BLAKE2B bc79ebeefbb7e3ed1139e3f41d8d20fb175786bb123bdb9c1a92ea70effb4a0e5e798f24b068cd66a1bf20d53eea4bf24de495b5568c2d649ea804389a1327ab SHA512 81003a43f18da5997d644319274502e2066af9f9fd1400afda7cf2986b3ae0b7355b932302723cd3bda2d46b264340434d9279dea58425bad13785698d5808a9 +DIST idna-0.3.0.crate 271128 BLAKE2B cf8a2c43760f03e94953c6692423a12f28fe763aabea8785b93cd247b3aedd2aeef2cd99978a027186290016ed924db39d19fe7d397da1ab570be9646bbb630a SHA512 9b7cee27811ee52ed9bb39fe82f724742eef2e5370642b6c756bd134c8cbc20bb6faa9f296053672dba8a66f7356a08b2ca99f176407b173e2d566d85d066441 +DIST indenter-0.3.3.crate 6587 BLAKE2B dc4a73eb90bf05ec939634d3f1543f57c8b612e44e0fb3b38329ed2b9bdedcaedce84eb3f542f71c726b00c7cd273c3c390f827da170b5ba361cf669de4d1d3f SHA512 6585964939ee84739cdd19576faef467703415777e159ab2ff8b0f2a371fb2cd6c7a83dff4df954e9bea35844a43b72d93131dd4d23d328e9f365950ad831a71 +DIST indexmap-1.9.3.crate 54653 BLAKE2B 7bc1768589e74020dc15d3dd064009edaaef39b7aeb682d0ca8e49944e3f020b9c04d64feb102e88b22feb40863479dfaf4722d6a77b5d19e7ca553f4bf64c1b SHA512 2aa8069eb07a814c8fa3e11296c9f032ef60963520d7786ad20cca5cb7e73b8f76d97722a994d65295bb713020aadce5008cd3df5e99d8bd968ef1979f910a37 +DIST instant-0.1.12.crate 6128 BLAKE2B 728923f757c1ee4e4a7afb90e460eed81392068961240a538e5c6468e15a0b6491f590fb5f6cc46e6d78901ca232351f65abb9f2f230d8f4983c5e58c4011902 SHA512 fae494c00111c51c840f9dd6a10febe403e27ebb933dd16633a213e9c20f2bc11adeb431c71f8a6713bf88f270a010941e15d83df294e658791934f83a5d2407 +DIST io-lifetimes-1.0.10.crate 37294 BLAKE2B 9b8836c4bf30e6d102fd9973ac66f067c3ff8bc2806e55f26368ebdc9854f2e9cc6eecc8014f9a0b22a968a6eea8be243fcb7a641d2d0dfc747ee08a6a1450bb SHA512 4b2cde9522780a408c5d4e6406286bc5dd3a0de1a99675129e9856e5d889498a127fd5dd7c937a7542135abc2213b60bfb6258b7871b8709dcdd79d60455bea9 +DIST itertools-0.10.5.crate 115354 BLAKE2B f24734bdfedf1dba48554e39b43669efcd4a43656eeb2c511096060daeaf049e1ad3eab232e757057750ce94aabad9fc8a0cf29a997edc6c4b167301c3443391 SHA512 d03c3cfba9841776913bbb6daad0c8945830c155f32ae4b48872e0f937c75a443f0ac9a0355f43b359ff75232f38b15f4f6d446b4be30b00b4209cf66ef770c3 +DIST itoa-1.0.6.crate 10410 BLAKE2B 8b1dc9ae9d55a006bb2abe3b0282e5e77397814b692a87b9becdc2bb74deabf5db09e3d5a2f604964cbff046148025988a5d916480e0402b2b80646fbed32875 SHA512 e1fb82fe16e1248141d48de9e05e7abed0c6fef58f2ff8b77b52aca5f16f3600c46707ff4c7a0f0307047610f29775bda74948d6d1efceb74b37cdd22e1fcf31 +DIST jobserver-0.1.26.crate 22645 BLAKE2B 44bcc15330268ea29650e58605c7f21c35108eb64b790c005968955238e948d27b3d12e6bb06bfc0eb4a3fe5f9e5322bc0657200212bf87e08d9e043e008a5a8 SHA512 ad3ebb693018928daf399e918ce35ed0d4e643cfb5c78bde04697e41dc8adf2861023ea1cf2c5033a3026048ca0ebeb7f2f57a966ba8e420558e42dde8d494f7 +DIST js-sys-0.3.61.crate 80158 BLAKE2B 07980db627a1f4f385586ad0609b5daf30d590931d2ca0c123f2d84f6c97be0ea935aaae3ccd082440c7e7da1adb4eccfd054a3598d99351fafdfa748f567b5b SHA512 f97bb546af2111fe072a23cbdc71e4fbfd39fbfc6be37132b306853d5737175d4c9c0c4661096012f7fce3612f81509e62a97df8bcb21d7cc796a8084e5b2e16 +DIST kstring-1.0.6.crate 20728 BLAKE2B 28d5fc4553d44658bcc0eb06e79ac08aa3b2e86971e354ea50e51f349d8e5e74edda491c5c3cfadf9111dbcd19ecc42d73a44f7f3fe0590225342f8f4517ff84 SHA512 e1920ab6da39e414e0f89e0728a1993a516d201149a922e58a326c5392891919746891a61847f0c56b67d9ef5d3bc346cb00b2da1325191dff7d9661a5a12ba4 +DIST lazy_static-1.4.0.crate 10443 BLAKE2B 25b2e61bbac48f0dcbc79c81d7bf01f2403d8269ecb6be3ea6147bd00f7a588df15a91f44dfc18ada19b21faa71de4637c7d493a8628cbecd0e547d74e616a23 SHA512 e124c0521ec7c950f3c4a066821918da7a9c6e711115d98009ae7c351928fdddead852e7596fea5937a9c30e4e4ce8eee7099b20248b5d6e3b2494b6a6d88cb8 +DIST libc-0.2.142.crate 679343 BLAKE2B 4168a8c3766bbc4f5adbd4babd84757cb81bb3c8cc806b8b5c1381a88ddccbb8bf55ae84f2879ab26adda09a3d44d21e2708dc9bce5d4868663fad8dd0f0e086 SHA512 8eb465fea8bfa865aa592185ea2dd89a6d89252b0e44fb7398ae82c9fa031d501fc3a1c37e50d1971be528c6e1a4ca416da224ba82e5a8766ec598464593afdd +DIST libgit2-sys-0.14.2+1.5.1.crate 1742257 BLAKE2B 028e6bf6980d7a54b76c918fcd499684869f14cb160e821d6657e59925d142655dae6e018c9f29389de304ef6109197fd71e6e6752d0d0a53152f2c4820ea1a3 SHA512 eb9602706036ea62ecbc08250f297119a1c51ea09ea86ae8630dc6d0521b74db96d8eccc4106343572eb70d9a156415c017c6a91fb5529100fbed091ff8e7921 +DIST libssh2-sys-0.2.23.crate 493516 BLAKE2B 00c0c1396f3d6723ad750112e7af8c8ac098af7b3d11e3fafbb4dc3b90c0defeb8184e007de3c740bf1111e12a53b71c355d697c4567deb3a30ebe3fee2e0caa SHA512 9617fb1d5826dacce23658b42e3eb3f8427b33db1b5a4424081e148bd90a3f776aa50ef66183c93ae19086d64321fc10b19b1a496c3feb12a669c7313cdf39cf +DIST libz-sys-1.1.8.crate 2481844 BLAKE2B e890a3850aed5348afe7558168c7571564687d6a7d3567a4d53ffdf79444d38c4d70d35891e16f496f31169bf73b669534f5fc584f9ec520b518dda05e80b882 SHA512 0766ab72cc1414160ccefe4812e6204cbed1341607e5d17607f24fd4ff81dca68d8f2cf43e1d27f332a508d602bff0ad340c4c647a5d5f85acc120c19cfb4100 +DIST link-cplusplus-1.0.8.crate 7674 BLAKE2B cbb93184d9deadd4912f6e03dfb7bb9d37f01b6d8d47dc9744724c848f297adb9cafb1599c2bbaffbff336f883e9a24c3cb4f11745ec4716a9a2c8cfa05f6305 SHA512 690afe063eb9726faa03443bfd01789a559aa10ded4bb3714ef7b13095005c817ad019fcc62b5f7b286c974a81e387ca3342d238e60ed7ab237c3628383a661e +DIST linux-raw-sys-0.3.4.crate 1007150 BLAKE2B c13475f95b539992e3675b9c59a46f649501ef19a7c83342c4b6195d4444d34c3861d677f40720fe17a362469c9065bbfa5c0fc884c48da45edfe35bc26cdc10 SHA512 fa058a39be583baf32f0425e7f3ed2a2f51dced89af7f9864ac3f172c1dd5708f75f5a4ca4e124c9b4fb78025417a4c119234c5493a59ebf76c05314594f1a84 +DIST log-0.4.17.crate 38028 BLAKE2B b46be3719fc0a53e50b1f342762e188587e9f1ceb692c72473ce2663edfb8253742d30024e68c1444780ab7fc0e2d5b0601b8ea7228dc3405a9342a57548e605 SHA512 2477d88db42b1d92c30708d88823212e236f613b3465e85eb425f83f8d16fadfaf0352f06c2999a1852102edd2f6ffb10ecb539d8a3b6c48f552a25622ccffa2 +DIST matchers-0.1.0.crate 6948 BLAKE2B ec3a5d01d2fedbb4dbf5bb185afbb9401410463a61f51674e0df6a571db352b2bbabfb99cdbdcfb4e511ae783165bf0258f5163f240a229b9087f9edbd0df41a SHA512 84214c1a84952d85631aa1ab5115df7cda223ac64e2acf055b6129ba1aa26ddc87615a8b51ca890ce3fee0419053fa7fe1599ae128f1d211b58c07b0c4af3b19 +DIST memchr-2.5.0.crate 65812 BLAKE2B 57966413a1f933dcb2d2d4ccb29c247070f65a83299b2a9f5aa83f5a48a5c5f1c4c7c632fa63bd19f9508e9291e7258db2f16e2813a56fd84e0856f70f1e67ab SHA512 444a163b484c233e78c0e2e4d51f01ce2da93d7d29f516a95e4b0866b20bdfd3f34137653abed53eb70387991ee3e2b5937d8d4360a85bbcb50a93005a75defa +DIST memoffset-0.8.0.crate 8912 BLAKE2B 19ad3abed21fc39461b0382b15a8cc312378aba36f042b1e5335012115d31b350a4e3bc720f1eea300d7d19b9b317f75a28d4ccd78ff3b31defd9e4b3147899c SHA512 47adcae0848ff967035e10543ea599c7af9c5bad387023eb4dc77c9e8d875994ec8139b9941b3ecc4fc17214d80944a47a3be174a45b334661914a5a7382dfbe +DIST mime-0.3.17.crate 15712 BLAKE2B abb892b75b40657d356b6b53b9a45b2c822a05873453e919f2bbfeed9e5c06104f24db9cef2716f302198020870eaf96b2c62aff55cc11d8ca4f4f614d7c8e17 SHA512 e6d2ca92bb58fc747c1bb65a7f9023e5dbf4b94966003a72e4913bcaaeccdd6752725cdbd5081e0fd69d9e8f364d79664fcbe70061737d5c39e5b3e3a154a0d1 +DIST mime_guess-2.0.4.crate 26399 BLAKE2B 667f9b8009bac2e1d8b835ae8825afaaa2ea6eddd4cebbf18de8f8fcde9318eacaeeb08066bdd611883bef5f8a53fa2506b57dffff543c3a57316e07b525f7f5 SHA512 acfbbfdc5bd725edde43e4915858b8d016e90a5b483664f0bcd5e8d2b0b3684bf0f6020aea147b5bf429f218a7af8080761cea4c5c04b68fa66fd6a676376908 +DIST minimal-lexical-0.2.1.crate 94841 BLAKE2B e6b8919b80d938d0b98d60d4f5f29ce43d77ebfcf8b18bde08909141915c6ef4f0d07a543538d4f3ba8527a9f55926d4a8e83473248469d087e80b274d701d61 SHA512 385fab51884bdcc7b0f2728a219ab164d0dc8efe42160b918f2c09f79ecf853fb12bda006d11e649f097bae1499dcd41ddf2a8784ee7d178cf2c28059e46078c +DIST miniz_oxide-0.6.2.crate 54536 BLAKE2B 8127ebec5a2cee1c2101d9533da573e01ef1a0fcb169bb0fb1419973ddd2e6953d8dfe85f9509a5d1226643ad290f0ee1479fc68f1788ade7ddf9633d90bfe1e SHA512 250782e214572acdd11df87c2788cd5f78e8388d9b285d0a850918219678e262e8b9905cc88728f5b70d13920ef9d19c43d243dad8fbcc18f8c8462662ce1419 +DIST native-tls-0.2.11.crate 29008 BLAKE2B 594511c364e639e309f32f37ae20ecfc5ddeeb39c3f7180c5f3f2cf304d8c323b977af933ffe70cce696a5a63e17c5fa7ddb119d46fc3db819a28e31a388640b SHA512 7e77959932f2859757f1aeb37b78fdd459b7b6fd02424f4b7399525b94c21d1f499a718775503b8f3dfe3b4b740e1cfbee77052a2ebd0994468addb3fa665e6c +DIST never-0.1.0.crate 2176 BLAKE2B 084ac97a94d0cbb2e6d12553d2a24d5b8fdab7fbe5414628d2becf6566cf5819f1eb00fcb78a57d7293f31b667091162b4139752e8a1c462983ba92d740a9a87 SHA512 58940993cc8abafc1a89e34068777997f5aef493c46c5f3093bac70595a20a2c81b20ee1a0e5f917a90050219cd21b80df81634e4e5929a2ffe2bf1491b41885 +DIST nom-7.1.3.crate 117570 BLAKE2B 5643b67990b7305e101b16b8cd27c447e162a7adc6d0dfac00920b0cb50fea98c9d4edca63c34f6845cba05f8d0acb407cf3045cf64a4cb28e53c8b6bc9090cf SHA512 1ffce08dde299bc0e0367ad59c7b6a83e23decfa11115ee076ab91ec53cdd9ef37e4c2103c96eff23a7b6b8b5c3f67c83ce1917928c7d4c6462083bdfa0c9cad +DIST nu-ansi-term-0.46.0.crate 24311 BLAKE2B d2e678e0eab5ad48534e686b1a4af344996d1b07a0fa40839072df3061bd7e5bc9341363403ea3ef8d19c7725ba3b7a8ed540c63e2209123b1b93f69418288b6 SHA512 b4f37786dc85e0596e2b7b261a5a9fe0265bf1651c39efb358dd649b926b12c3093f307b98bf0c4df3899f0a7cb1854f2596bd5c3e22fbbef42f912ab2eb5043 +DIST num-integer-0.1.45.crate 22529 BLAKE2B 4da3e801f71ba8f92c692497e200bfc8d32183c94eaad91260683b09f4697c03175fec7cff5a9ff3782d5db5d514d74f22f7a61a102c0f0d2e67a7a4b4f29222 SHA512 731bdc09c3af7f9d8b171041f2957aa60facef93b06886000d8ba60d410aabbbee358d700bf31b2588b2e077464f290f24a0b712df7bb7f12972675b6c9bd735 +DIST num-traits-0.2.15.crate 49262 BLAKE2B 942ab170b2acce1cb40e6847f766bf810a79edd293d34f3a27864f464c16fe2b99fb13171ba429cc6d584248de879434beaadf1b231a4001b0e8389ed6c1be04 SHA512 5228498af0f15daeac3c9210f3e6e71cfaaeb30beea81dd37f8eb06b9592c8bf3226a47597cd8592ad4c513964a9a40f1ab2c33102ef3dfe3800d22c8d4528e8 +DIST num_cpus-1.15.0.crate 15680 BLAKE2B a4d98b29ad534de9bc262f58f615ec06bde5d5a2f5252f09b5a0a6ecb06a9daf9709ad9045eb08f7cb744d8a838854b9095aa73918e06624a84efbc11a9a5c1d SHA512 fd4772868def9460a6ee17ef6fc00b0bc74115eec891bb3fdb07ba5b5fe4057a2ac69eb31ba8beddbd3189c7be4545888e5724879f3a89132fbc9b32aa7bb10f +DIST object-0.30.3.crate 258901 BLAKE2B 73e190fcbf7c47950ac036306ca8e6e03bd1772466cd580fc51e246868cc69c4e49c712601759533ea650c806a8363d0d77582e1363ce2b5f92d4b7439fde91b SHA512 61414475d3fcc7c4c3ad8c1316f6ada7801e28590d98bd425fa246f091d464de4eff7eba7cd74904517dee95ae0673e3d581400adb971306955a0aefa814172c +DIST once_cell-1.17.1.crate 32856 BLAKE2B 8bde2aaaf9ef45d1f6b8458686179f1fe9295ee8faea269e9b49779583ce26ab9dafe988c3584e841a9e5d05e28430ca967ef3b25e755f48f0120d9c99cdb7bc SHA512 1302d51801e38bfee23e74c0046f1ecb1d3c27309b5fe11c2b6c99553b357db502ce1718695602f9d8b10429e8ff03f91c016d5d604957083728293824c05904 +DIST openssl-0.10.52.crate 257165 BLAKE2B b4accd62f52caa549b3d89109ed3a1e8a9916d30c63f4f0b7574b64855d0fe5a009648ba423de389778bf2c9f11171bb31389a3fb15fc26e548d886f271f6fef SHA512 92ba2341c5cfa42ccd1e537ff222e560fe3246eba35523575f6d3d6891aff6a88a07ee8836e2d192f6b1ef32dbb4385d5ba67777e6ce72b9c04800476e92aa11 +DIST openssl-macros-0.1.1.crate 5601 BLAKE2B 69dc1c1f3b7bc4f934cae0dce64c3efa501162e5279efd6af3b74f7a7716c04b6996b306b310f1c045cfa2eff2895314a47ecbb020a817e461c6d77d0bc11e92 SHA512 57e75c84f78fb83f884eeaedb0dd135ecb40192dad2facd908e6a575c9b65b38a2c93bca4630e09ea5a82c77d8bc8364cb2f5778cbfe9d8f484cafe3346b883c +DIST openssl-probe-0.1.5.crate 7227 BLAKE2B d1fd6a9498b3ab7f25b228f19043067604bf20790530fd0ab6fe3d4d3bc27f13e6e94d1e7ef49314c3663477d8916b8790b90427f74976143b54b95350895165 SHA512 7e560314150709a34520472698060c4f29689d4e608dc4dde146140aa690350d3603279c693367deeb0f21ab34ef61956143a3447827a2b7a3d578b9ccd6552c +DIST openssl-src-111.25.3+1.1.1t.crate 5112603 BLAKE2B 0e25c69d84b400307073faee901d9f7a17692a607d571e5bcf21702bf6fc5489c0895768d4a9accdfcbd312a576d87b678c7b21c628aac92253e70565b71419c SHA512 76fa700677687087308e8db6234fc7e37bd3fdab1a7f963da1fa79cf9d3eb4d2b4fd7d45a78c9d0d1adf13a94facbfd4e9f8b65e410d2a1a62acb502ac0cda0f +DIST openssl-sys-0.9.87.crate 65702 BLAKE2B 578cab5b9bb3cb4dde866f3492aa3ca36fef7eb5d367ca46f3f93f388121ce131cd85b0b59a703e9bf989a7b891784fb54270027acc00f217356b3d2d9a60bd6 SHA512 b2f8fdd679aac50b2f830db32ca09e203c7d40a6bc0d83dcf66efe641a38a65e86d8ba9881b4fb073069fa54a7ff206e24d28b29788a2cce0c60e5e1e3d3ac39 +DIST os_str_bytes-6.5.0.crate 23166 BLAKE2B 60f5beced502b7bcf165dd2bca2989f9039fc22cda80bbb09d2ed0eb115831c6e0f80292e656f4bf9c0b0635ad10210c88c1b23bcbb59b8d2729b6cda473ecd7 SHA512 cde7779ba24304256cc57de78208af4d26bc91dae7fbb9c85e3f67c3e35cb6268caf3fc9eef530a8d3cbdc951ec3534223f3559d2a013561912231ebdb1801b2 +DIST overload-0.1.1.crate 24439 BLAKE2B acb2dfa6c6c22ea95cf58079f6ec56a2bb5e297a055ce717d40633b789b0d005be2bfd6616448cac61bd032e74aa6eed212f1677461907cea2f7f7cf536c157f SHA512 f79bc3321f45df5e3d0e5fa9c4e60524e4e28dd3729a09956766738adcf99ca42c187a01d48701ebe23d39aee00a19d4a07da798edc781b942e866b339613532 +DIST owo-colors-3.5.0.crate 30310 BLAKE2B 6fa9d00cd72d149748e5280360e1f0b0ad8c78c5678dde6e72daeb7975a182b4d06d835cba1ac307428e0e638456cf219b8d979c24649623bcb7403095cadccc SHA512 1718f03d9f3296ffe3145161e038ebdb8dc40b69c0e2cb80a51866b519cf857b6573aedb7704895401e10cea11ca422a384c3594b8762be29eaa90908e24f7aa +DIST pathdiff-0.2.1.crate 7142 BLAKE2B 7f9a162c2add4acd69a81171fdb31aa9a67beb4e1be0fe93d76dc46b320729257240fca5d65dee38901f6b6ed1e536e3fff09c93cf3482859e6ba27e7206fc5b SHA512 a646f271ce81d5f6d4a8e0d98a2c802a8796a961cf8fe8177911e7757bdaecd8b156ff22046f1663a9efcd5fef1e6f000e5509d3949dbaeb494126b7e8a546b7 +DIST percent-encoding-2.2.0.crate 10075 BLAKE2B 397e59acc3953868c709244b89a2e0db3304c0b574ecba761026b570a485f2cb5b0b2a0159586d1f342ec395ef02ace536da3bc1c72093e1cf93f8b37b26b0ec SHA512 890a5256d2b4290e12e04a02c3529f3a017faa2b6016a4dd0f08b36509f0b1107eacfcb4702024d6a21ff8852a11f263c1adc096b16ef8d12c45a734c087fe68 +DIST petgraph-0.6.3.crate 185740 BLAKE2B dc3d4a0c29662f761bfc107d9654619a3443b07890e0caea5851a6dfab2f071181ab94c521d641197e159098885363d7ed4e1c9c34333fd1339c7484c2237c4e SHA512 9b624ab93ebd06fcda716b1e79dd82c5594a11c71ea0ad806b6b708fee3f432ee174ac292c5af3bb0c84b411c26564ad11436624a52ac4e74ed40432778c21e8 +DIST pin-project-lite-0.2.9.crate 27713 BLAKE2B d6985b5add432fb6287d1b0c9fb0cc91a195f82c5a748a9ea430e4ba884717ec7b16d730b5ea62de5b2bfead1771da2d115b3776e12e605f70f2538f374a28fa SHA512 cef0b77233adca712db1183f780732ea577cf1b27c2643de221d54c837c75ce749f907e24a967be7474812c7682cba613a3fc5d553a9578a1b80569da0e562e4 +DIST pkg-config-0.3.26.crate 18662 BLAKE2B 2ad92dfdc8ac0414b12a61dd30ea4ac5f142bbb55d0555ecfa3a53e750367e1b11766a693ef11f8cbe5a2ddb978327632458b2bcf75be7aa8f973262033349ee SHA512 509c4d1494cccc20de6a62d9d037c63ff77ebee8d907747c57ba0926d177b08fcac0231ccdda14511b453deb0b76ddd10f8fbdf63ff94257d72a12a889546435 +DIST proc-macro-error-1.0.4.crate 25293 BLAKE2B ef918c5efaf2545ab38787c8d0c07315af00431139e4dff66346bf798e3a429f91d12a79776c150412fdda0b158a72badd5e1044ac4d6917f8482d4b5a7110b7 SHA512 8a47bc9d3e24e9561d1e384d8f5a633284c2cf9b5e6733c5f9d1dbfe1870ccc8e2152482852e50b551cecb68e009148585b910ffb0508a7b4875598eaf8657db +DIST proc-macro-error-attr-1.0.4.crate 7971 BLAKE2B 98e2925881c2be186e22c2c439697e91d43f807eb61a5d13e3b0b4321ed50a74f3d699942c04b89b6fea0f156bb5d19ebcf22f9cd4b98a7e6917c437600ed823 SHA512 2606afa9ec78d7dad4500c98d3a5ecbd02c6b53ab829c742bed7f57b322a95238ab4e01cf268746815f1424fd9b02eddfa30e72f98c66106f57765f3d3116495 +DIST proc-macro2-1.0.56.crate 44454 BLAKE2B b2a1f28979245a784a4b3a0af8cb04bd01ef3e7aba32c45122fc05a6cceddb1b7303890827f1a2cb99b0b2ae013cd772bffd6e94ea226f0030cde867d6c22aad SHA512 511fd8332eca47ed834736d405e18d53d83642cf528bebb8fd67fa5561e19b0a43c359b3e8020ecd28f9fafdb065c484ca360abc0287a0f97e94d4f779145f03 +DIST quick-xml-0.28.2.crate 156462 BLAKE2B 45fe1846ab93fd16f9afdc60e119918b3c50b7eddddc4ff1ff14c6a767ad0b18624b1ff1a251fbc58f58c50585b875eb73f0aafcf0fe8a8ac3bb58da27c55ac0 SHA512 24913a45e962c144c82f13a6ab4877ab7c91fd51f34becc6412a47dd91e75436590a646f85c346236ed2729d480242b20781ccfdd1d42bc2a510bc883966a0a0 +DIST quote-1.0.26.crate 28397 BLAKE2B b468a5e9350843ea81e540d17c9fcb302b46fbd450e10280c5fff6fd7c98a439df8c3d3d47e551bc6d67ed02052b5b5c65d215d5ff8ee34f045747e75c1ba37e SHA512 6fcfe4d31f601aa60beb858c25df217421b0a184d185eebc7a4cb9fbf97c687992b77bebd8671a9e6193716387c3e926fed9b75a08684eb2d9a5b155fbc321a5 +DIST rayon-1.7.0.crate 169488 BLAKE2B 518f0eda1fcbd1b1b230587ea18cab0023a699e796c819bf35a6492b7edb051137446bfbc49aaab0a68aef8280c970ad14301a9f8f7461d537af119a65b33a38 SHA512 d999c811b701d0aa4e547234bdc20a7df56728e142c4aa882bae081b7b057e8c3a72f4a62fb35535e57501e8c2ba7ff072068b59d6b5374e9ca6bb66cc0984d3 +DIST rayon-core-1.11.0.crate 73118 BLAKE2B 313d65bb6e3a010569b317b32ac91c72e38282f4fcddbcb56ffa97de42d88c0d34f35f76b62e1ad60ee96b596aa681caf2071a8d5dfdca085fb1fbafb07c3ee4 SHA512 00ac782f49d688da90e823980e83b5ccd858f93769e2d801061fdef78728cff37d3a9fa4fd47a5cddb058f28f3289de349f8c8fdd94fa2f8c400d73bc4529800 +DIST redox_syscall-0.2.16.crate 24012 BLAKE2B 9497a52044458b1435ea16e86ee072e379b6b11ee31602ea72d6b6072a4a99426f409c2e58108a4e9c36dc193fa49c83951e71f4fd4e158eafff18c594dc01ad SHA512 63b5d876baaf99f5cf737679bc6ac7a9e3d8a41aa93f5c59416ce7e3841e2513bff678773553cfe62fb452707f82acc384ea63aec932a31bf94679cd1caddd27 +DIST redox_syscall-0.3.5.crate 23404 BLAKE2B 85aa4299d9816666bf576f523da5cdeae87b3c8fbb2af103e82258d23f73303c068a4b6c3ef4117ad67958cb31e41f836a9f59f2ce1bc52c23605e34399afcf1 SHA512 16f8f4766932bb54e4740cfdb4f0802f76246c0bf88c1d76c69c115949b124b625d8c3b85d8947073c2e9544f425aa16c10f71fabe3c03d29e424c47fe4ccdde +DIST redox_users-0.4.3.crate 15353 BLAKE2B 5e3b4e902566620cee8856c092cac193366ddcd2f5aef787b1d485353a0da11486ae1359dc60f3c87a198cb68f93ef99ac7551cc2315412b93b10ffb10540633 SHA512 0d3366e23cf93e1b0e025a29025eaebfcd1145bd158e2663b94fd952dc2d8a25566819e3a03c4136ca16a6408d37396e2ead0814c3f0c2bb10334dfd0b838fda +DIST regex-1.8.1.crate 248412 BLAKE2B 4f1355104def09ec8f7a7d604fb08d0a39af36cdbb5160c63329e8c06ef2d2ad1063fc7280c90ba3748e1766b65f52fd6da24e439d5262209a6137bcbe2eda9c SHA512 fe83c2497b786314cbd9ead0d85a39ca87ae92225e444a41ba381fe80aa381a88806e2c20e1c468b8b59503fdf1c2b7e5bf6eaae0ddf9f14a70c1ca2773e8830 +DIST regex-automata-0.1.10.crate 114533 BLAKE2B 0e357229f6825f14339b1d7c40730b83e62bba12115d01ed20313320766e769a653a2fcd2c9d19af51a82c38e9e42c1a31d005e1f44f5b6fbb3ead7c9c74027f SHA512 56d64da361afce82c6cb49e70b99ce1fca3e1969c54bba5f9971db135f8544c65f49feb8827789947b3d1dcefc9c49a7a434a7ffe0d09c5900345a1733723c5f +DIST regex-syntax-0.6.29.crate 299752 BLAKE2B 2408ebfe5f0dd6578c33f18e8ea9a0a7a84388420c5b67adcaedde477f3f67fb3e39ba9fab1f6892c7ae7fff754c4aca51314601529cabc6a8fc43af38a11f88 SHA512 28a58950d15df1f0ac4ff4185c05b535e8f5bf0b75f79fad24e40e17a02570d1c9bd9cfc919eed8756a1069bc489c5fdccfd04f6b8266c83e3412b7b4bdc262e +DIST regex-syntax-0.7.1.crate 339705 BLAKE2B 59dcdb9e0f5a2008db491756fb353745bf4dbaba0d3a8a6782960c990065e1870cc120d7a7e220991b78f89053aa63b1a9c326f5ae3526d47679e4ae30ae5e66 SHA512 ff61e4a075550fce3a16e516f8222a489dfe2bdf9431220c98c33b1f9e6b19da7bc1ca6bf34031235d6f1ad06882b63d606874a14d2e27c615701ecc2f4cdd9a +DIST ring-0.16.20.crate 5082615 BLAKE2B 6011eb7148c2d2ab410e564a06604f4350e07ea030e4d7dcb30574b977f0b0c7e53e09f6e6dbb2d068cdf110262876c48dfaeeef1b691932a056fe149916d934 SHA512 d97d1b08eb796d4c107426ff2c015ab1f221612500c8a57fca8e3f064e8c0f5ae2a5e6071d013313cd9f4be8fed4ba03beae84bd446f56b2b2ca5d483c328191 +DIST rust-embed-6.6.1.crate 901441 BLAKE2B 9f2970f857b0d12c82e0a26473d4393bf85213fd5613253674021eb0a5f4b8571532364373f466cf9aa4cf7aebcec31178b2fd6ccb494632e3d578beb56194fc SHA512 050d74e27952cffe6f54e34b8b166c74870cbe2c16f450224d4c88b9fd9deb381e42927841945c596bb30c771e32adaad0eb0a2cb94f09abeed786c540bdf404 +DIST rust-embed-impl-6.5.0.crate 4737 BLAKE2B 8f0911c560e8b649620476e0d9ff7a4044acc6714c0d32fd5d0e2020acc647544b709dfc18c2b27659d8258979d18cb1fd8a16c35fb8fcfd80e64281f146b869 SHA512 20f9f04adeca4ffed70a9c42d4df149887b2e3418f3b88dcb6f03ff240108d5a313923932f21c47a1ce85cf8ea2b64c806389a185287ec009f7f8eeb349b97a2 +DIST rust-embed-utils-7.5.0.crate 3321 BLAKE2B f2761c85ebae5991a8ff55d7140bd489adeed9d7e163c416bcb63b4a7bb3f706cea927fa894ef80d89aeb3f8f4496ed3f6c024a4b8c8b008c6dd088c7414fcdb SHA512 82183b7d4a5344633cf1baa0d1d48c37942ed34791331573621cb6771c289a7345112284ca5512bda63b4cec330ddfb923a75243f1baed297a7c3315d1bdfa9f +DIST rustc-demangle-0.1.23.crate 28970 BLAKE2B 611d2e41a8a9799db2f8bcb8fc8fefcda361d055a417d2bfaaf2dedcce9d6f388c69d905a28c65e6691b4d408d7922ccdc97ce524c87c3cccb8467e314bc87b9 SHA512 8cd29800254b1305ad50f1fc008838c52d9659f97a51a68e9f2bd6d0a60126f3ebdd1c79760f96445b3bf998d0773526ddf663b174acca81babdc0b423247247 +DIST rustc-hash-1.1.0.crate 9331 BLAKE2B 16ac56622897f47a06b661fb59a196b08d48e782ab87549c8bd5c6fe92f374c9bfd44dcb36588512bd9b6125c2fd79a12d648aaa308fd9694bcca3a7c1b49ac9 SHA512 84e673ea9b046f7b989d47f2c4505557fbd5de991e6fc9f56a03605d40e0b4ba5427cd566954890153cc033ccbec6c984306634571935bfe0d4cdfbe56f39544 +DIST rustix-0.37.15.crate 315957 BLAKE2B 5408272b771078203261aaad4c3329e3f1eb7631c239beb0bac5d884ad74867629a690fe841d31d79e7b4939abacdd979af26dae7aa91989ca4f9f430624145d SHA512 cad1f85061670cc391226a93a387439f2ea8cde9279297105efe2961dac53d1ca4941ae57b5b1eeda897f19e7ebd12a9f84c243516a1d68205552309dc20efae +DIST rustls-0.20.8.crate 270142 BLAKE2B 0d9563e302eac78871eb8346c72fde2a05618dc8a966198cb4d607b41930dd54487d9f4d9c8ebbdf943b4593d4cbb75543c3aea9dddc61a06500b4b322aa726f SHA512 4f56494987cd3a56f47dd07d31c7f73d262a4d003cf9cc11e0bce5fa85c87f18124b1c364186501736f0d40a1f193a24d5d73f37a491ff81ca8eff568559e547 +DIST ryu-1.0.13.crate 46823 BLAKE2B c6d661cbff5e7b273da5a6bb704bb1910b897c55d854b05bd417f53853a832791afc351e5a5aeaa94ba99a8fe64c8a930221c52a8784519728da748371a4ae04 SHA512 25f60216d91e68cb47695ce4e966fae674d5b3e4b0cf33e740248c1605fdcf0c963acd278a485c5b4bb0a1c1144002e73173592222af4989df7a4ba402508c13 +DIST same-file-1.0.6.crate 10183 BLAKE2B a320c8343e0b38078ba81c4f0159d886bf47764c74efe0d7cd2b3218426e8341b51e523c00a9e5fbc2ee1057618296bd70b576c68751bd55d6ddb352defaca15 SHA512 3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c +DIST schannel-0.1.21.crate 41719 BLAKE2B 8e3ce88c460b44839a46304c5ce6c02ec518a1f094165ae8589107cd32b79553e1c7aab581cb07fed4ef5935822ae4af8141f63d70e1f898a10e75377b1a057c SHA512 7457d4accd0096c791240aa19970307c6448486a22303e3b20b7fb25c326e50edb8564781e3d81ecb4a7626796ef78233c224f9baccc0de03f0eae2086624880 +DIST scopeguard-1.1.0.crate 11470 BLAKE2B f774eb90b7d3ffb2efba47518e9d1dead4017ab4b38a4bd74914daa84a5af4bf9eb63da0496e3924499d79cd0439c37447aeda4a21226f95645bddcd6becfabe SHA512 368fa5726df8f42b599993681579a9ffd0196480ee3cd0f9f671e8493f3bedd1e1779bdf2beb329e77e0005fa09b816e3385f309490c0f2781568db275d4d17d +DIST scratch-1.0.5.crate 8013 BLAKE2B 64bad5081da3765fab34b582c679fdb345d592adbdba09071357dd3306eaa55d885a4f282732972b6f856ef9cfbcf73a18e9f5b2591ab05ef9104119299d4159 SHA512 522e24868568e9e3c4c6a9b0af4e1890d5ca6753ea68660e13bdc95b98c30576058dc949d20a5df95a6313378083ca138c7bfbde5c60916a011cf9697180692d +DIST sct-0.7.0.crate 27502 BLAKE2B 93912044e47473d72d7415e01cbe2545f84d7d087e7a7fb210be7524d44f69daaa58edf487ea6f8e5f06cbe25ec02062b1b55978e7cb4761b8bfd79a32d4fcc7 SHA512 175d2a912e3f35dcb110991a066d7d9b0d47a0febe4e92ab7d92a27c886a7eb9abf203c9080b3e2cbda9bedbc816bd138476363c2a0c7367d3abc7e6bce83046 +DIST secrecy-0.8.0.crate 11916 BLAKE2B 910d2c27d0adf3758dd6315260512d74e11829c68fd9f81242895cd207b9c8cf48f988e129a6875bb361f945c4c9dcd4975d419ee2f5359b3cf3a3d003138630 SHA512 184da6fe91bfc108514ee726cf3b1ef41a2d8ce54587fa3733041a7e406471f28b7f99f6beb503ef8af07d36ab1c819bb8c59502379032bb933d3524abc88e0c +DIST security-framework-2.8.2.crate 77045 BLAKE2B 8581e0056fc0422aef0122e4948d6244eebdad0935c73ac1b01fe31de19f730325f11446dc3dbf5f1ec4400de099eed1d61caef5b8e318365c4dbf9dabab3be3 SHA512 6abaf2129cff62220f152786a36fd4728c72fb2b55f3f75b396ffdf4344902077c8c0784eaaf07e2a4d9311f833298b46372a968b798dd838ea495668fde1be3 +DIST security-framework-sys-2.8.0.crate 17911 BLAKE2B ed066e2cb8986930bdcf55060fcb5a34f826aa27d51ba4236f8a8e56de8fe3a2b33be8da14c64c0809f46c0dce02a20729e6863af2261a04006ac65a291ddea7 SHA512 5e670f5f5d54f2bc11e05435b975d5d26d990d6f7446613dcd5be88c3cd52baeb702931cfc663fd5018c8c99f4619c23e57f31eea60b15d3a5e7ce01a291886c +DIST semver-1.0.17.crate 29685 BLAKE2B b9beb685eb9f6cffe557d1185997e1a93d0e50ecd8e9719d9855347f12dd430ed1020df81839b7924a984596437ae7fb2951e7ae44c5540692a7f37b591bee2e SHA512 5199923757e675506d68c252182b10f55955e47054880492e5471a0a0f9ad13ef25d552d2ab9bd68fba37121b8026d9989bf15db67e95265b3aa53d06377fda7 +DIST serde-1.0.160.crate 77010 BLAKE2B 45d2585bd7e5dcd368b72c29046bd595c577826da4aea6d019adaf07d23adc096db7aba952037dfdac9dbf08a1e92ababd44cc784ace557fe2cfe83beca446cf SHA512 b03eb453ac01a483843829952462de4e8f6d0fa4a244d38a6f476a911e2e991a508121265befd108134ae7cce8a7a40c4d217f80f3e025f9a612a0bf80862306 +DIST serde_derive-1.0.160.crate 55081 BLAKE2B 851cbd173bd758d46c9f545f05a17f65f7b0a2cd353cc75a985072e3772ca6d8395b63208d845dfba231d7cb5fcee97ec0df0bd0df010096577d618fad8bffb0 SHA512 14b2a2ad7131efa7ec95d5a6e7633a9d1e991b046c0b00cce9c3681edd73cb53ff477aa52a430d8465aa8b362696244ea80f12ffbf0e6f98e35605fe4c60f407 +DIST serde_json-1.0.96.crate 144652 BLAKE2B 2754e63479aa07507015dcb0f989d6447f5b2c01e5f02cf8a843d90c90c6fd0acd3ecb68d80d76c249efdabe0bd0670649a9e576269928d2276ba00a3153131d SHA512 39779419900e1d395d81e70cff0e7a688564a66124b08e74da54ac30f389c912707f4bf5e29afab6fa106faf4bf4e0b841f42fef125cf7bec185482ff6bbba0e +DIST serde_spanned-0.6.1.crate 7828 BLAKE2B 78d39bca0850b78f0835167ca7786c0bf356d668389aaaf3ace946e91d9a7db8dcba895e833d87e88502b2ba969cac9aad6c1a053c5ecb37f845ebb3b0bb5b32 SHA512 6271aa2af243021002a10cdbd16cb081bf10ab53a61cace104182eb4f28e0c0d7c447b7dcedb350ce78debf5ed6ce6502cb823ae9177d98c5288310094eb22d9 +DIST sha2-0.10.6.crate 20558 BLAKE2B ceae6f1e28606371f93f5e4fd617b2cb057ed9aa4aa2d81bf4c6af4ca47d639a51f50d0fe4fa77667022c770056d6d711beb4835b2341ae0a8d667f11a4a51a3 SHA512 38dea4c300ea8dee22587ab0af6d66dbde824e1cb071e02e7790bf978efff6bdb6d4076d61c5acb38e86e69261a65811a7bd0182299d53ef053202ee54d2b05c +DIST sharded-slab-0.1.4.crate 52479 BLAKE2B 766d81761909006ac740cce13e8361734c3c7072cd07c8c8f611f09772e16f11aa93cabdc5273b9446f5da391b26b7e7d619be523488d8b3558c64c18f20d591 SHA512 123a9ddb126d1adf41a30a632604264d66a06bacc497db6373e9dd36164197f8321f2fc826a16247674f0f69d9f6e30aca37810f787693c4a5c2cee8c5887c55 +DIST slug-0.1.4.crate 6640 BLAKE2B 7ea78865af7de57fdfea3f861da655f9f191bd6048c57655da2fa90675a46263a5d4c085ed4c206b5cbe4595b86d79466765138f0167c141c4ce6580de637422 SHA512 2c85dabcca9400c5e2a3b409997403a6acb17357449df4ef9a7b27511c5a979bfcb1a4d80b7e7c36122233ee6d47e59507631dd6ac9e93d1610f54b9b160ee96 +DIST smallvec-1.10.0.crate 31564 BLAKE2B e3e46a0781d3a7892a739b001592d462d0704f010363984c439e3fe4f75aecb9720648aa1e9bcc56bb3be848dd40cee578212439f78f07a807c9441c3c3e0147 SHA512 a09110184582dcc01d7a0d3fa8f74c17bf726935126d3654667b8e9c4bc43ad16ccfd8fa94feae7d9b31913aa7ee030fe5936e4b44a36302b6ce5fe37372a7ae +DIST smol_str-0.2.0.crate 13467 BLAKE2B b3f598b10aa30bcc58b8eb6b8677ce9d71ed79e81f656ce4a4b808205a53d1ead2def376114f4731fead8a9fe94006f54f8489717b4dabe951237214956bce02 SHA512 a0cc82d782c0fcbf3fec89dd7644bfcbe88a59c715f31e214712dce8baee0294f9200accb3e7a56deb284b746ead7fc716a8534cd8c445fbb3c3269a27f6bc42 +DIST socks-0.3.4.crate 13172 BLAKE2B 02fa5e950aae0ae6fadb11f27c455da2ca3ce5db3b63f27ea720bb748e03652038a599c036941240edba0286b61a35699bef8db07716ada851c1077b0592b7dc SHA512 531ab43f277e2dfc6aaefcb584c5fdf910cba51cc5fee73256ef00dae714ace844251cb53ca090fd3e8258115cebbcf65843476913fadba8535cb44166294eb8 +DIST spin-0.5.2.crate 12004 BLAKE2B d67d9156ca6dbcf4022711cce797cd423a4977115abac4cafaa507aa2e1071b637275637a20934d4d0d6d2bf82c98c74a4506720326d1804952aa0fd5fc4895c SHA512 fc57f7906da2b7a298c5f89215e881e8827b4d9f934dbf138338e0ee30122d8459483be566268fa374b41d63d8dbf65d42e0b322535ba35c827d7edb2176f267 +DIST strsim-0.10.0.crate 11355 BLAKE2B bcb25ad0a7284e24e4f17ebe0ccb621bdc4118e499b50b094d98aa7e8fcc0b96716c9953c3516ce7ea78309d41d424892ded595259696a5bbffdcb07802b5c2f SHA512 78b318532addfcf5c1ccc1e14539e258aab9d3cd893cc45d82342549bde838c177d90f13c560671f8f32929af47d0b467db35e6876bd7697d8b3f9e055aeeac1 +DIST subprocess-0.2.9.crate 46463 BLAKE2B db082824bc0b71a73f134161ad1bfd3a3f922405edc582554a42aad9d6871740b2657e3567b6abc5198f5555ac2ffda1da976cd59b71592c2dbab27c01b685df SHA512 eb9757450737ec76912e7c474923c661c2b7dcfead1b4cd83691902dffafe7fc4edafc4b3f560c5f8f30ee8a8fad18bf089d084af7b453ede7c92d1435526886 +DIST syn-1.0.109.crate 237611 BLAKE2B e827445d00c79a8eeb91eacde472f1987addd6ce9e1df95d7abf6446a77ff4173a8006845f3ae71c1da47193cfb72e0ead9a6d6bad2573be12c17e90735d9ad9 SHA512 12816b9e8cf984024b2fbce9f0ae14cf94d4d2c06f08cc54fb793ce78770bb4cc1288eb7df0ba5e8e937756e1e8e295c53fe07a0c5dde1ea8ddba03b6203b37d +DIST syn-2.0.15.crate 240785 BLAKE2B ee2a2250e7083770f8fcb5ac0b387a28bab041e56dc9a835bdc366d39830cbd464aec156b47947331864220d78856f74e94c24061bd0c4fc908584efd355bce6 SHA512 19520d13b417ad2cabaf7e31f45271d41f26158607d0ab21e76a04e824133c64f4acba0f8c044c675028832563ed7cc73fd88d519520ef3834008dbb3d04663b +DIST synstructure-0.12.6.crate 18429 BLAKE2B 7666cd83f82910e036e5b57600dec9a1c2e559453ccc2f1201e2ee4ba64f2ee62cfc1046ded5cae64dd183967b9d71cbfe4b60a88bcb93706eedd0c4ab69be4f SHA512 6ec5dd7ade904fb6d79c2be595886289846e064b8c4100f780d8adfcbb41e6ca67f4b1d682212f4673c2169f889a042049b31161ec3cebc3f399751124f01f9c +DIST tempfile-3.5.0.crate 31129 BLAKE2B 6d32584819794dbbb1f30970577ca2c82cf79979f94b070327285ae8bca6f8e3ea2402d2034290472f284ce039a3a578bfdfa81a53b5c49b587dbdb40960f6fe SHA512 8e8775a9727e32f6931b3289d2b8aefa5ede7b224ae2e1937da3aff371ef5f6078587f060eb36793e9779249992a97acc39c02c6095c41467929e39ada12c7db +DIST termcolor-1.2.0.crate 17917 BLAKE2B 5ca7802b0bd29495bcd2deaddcdb4c3ff964073a373eaf39964a24ed91a48c5c33e192d676099e2837064df3149fdd73aba7d241e9aeaad9887bf1bcae9d38f0 SHA512 cf1896523353390b2f90b2a8bf30f47da5fc7c2daa635bd0cd8059bdc73feb243e46e4279562fe45d5726f2840833b1e967c7de19ffc0c853592d9f86c0c1be7 +DIST terminal_size-0.2.6.crate 10585 BLAKE2B 8696b9046c717eec8bf7246346af84a5d0cb740ac6e1335a4d8c20476628f4c0dd7c6106cde33513681466e9701d4b05d73f22a3bd2dfabc4d22045a69d31345 SHA512 95f38bc00f8c5e1a6913bb2a0a7c46d96e02a4f3234af1623ad3d7be41eae677e77f1b5d5d005d1e9d778fcc6c87196f67a51ab37caab5b4d299da79c85d06ed +DIST textwrap-0.16.0.crate 53722 BLAKE2B 44140aa2dfd5076005749449a56e920418e71e34cb92f1d697eb3f3e7f6fe87b0a3861c8a4050a4a62e03187b6cadc4495e4200bee52ee183541431c73e47209 SHA512 97ae8acece5663e1a6b08b827179e96d5ad0ee67d635888cc3d83454b52cf48fce97eb0eba374ba4747834099c74f43d66d9fec868e84be45369a42c1aaec2c3 +DIST thiserror-1.0.40.crate 18709 BLAKE2B 8057ebcd11546f8b3ae5d760c1dd1764386f3c29dc43bc7a4aef20604970c65356daef137734e80260051d41e39979943bfda496459696b924a95f455159704c SHA512 db1b1fab3aa61dc6bbc672670eb70cee2f838fa713d3a927022900eddde253108d123bded1aa6df8d314e1aa2f8ff37bc72fc9b0803fe3a56447a64290ab2a91 +DIST thiserror-impl-1.0.40.crate 15138 BLAKE2B 7590428b5a97efde6a823440a9c91e1d1835b20df4ad8a700c1eeddd98516f1203605853fc6dc65528c5fd92480d04f9a8412aa7c20a524cb94435b0a0032f1d SHA512 9027f2d4127864c34d2d92ad3b2753a95893d26f5b2dcdec869884a98232c5304db1700a38112ced258e5f3832218cdea3a4bb21223098e1b20d06af1fd7edd2 +DIST thread_local-1.1.7.crate 13585 BLAKE2B f497dbcdfaf7dbc8b4b0dd97f77ba93df15b63303e7894c9032c9822a5b8111e0a21db2fa8cfdce5a503f70959ac9cdf48c840b925bdd850dc15e8436ba72379 SHA512 3772452c2a349fb564d29bb06e13c8ae64807db27c3ee217fa04fd0e9847e94adeea582b82ffc2d9116f31ff478eb088550caf1346c263de49b55fa17b431c31 +DIST tinyvec-1.6.0.crate 45991 BLAKE2B e9699d4d80a78978f0ebfd049f5b33d7f23d401cf4f4439ccb168e8c0e322473ad0ea7e2ff0ff69e9aac3e5c4c9ae5a7102185533bfbf96dbe77b3526e700bc9 SHA512 e5acaf353c58c60ae5556130a934f1048abb79cf6668ae467d308bac44b689d8a9997227ea879f4b5fe50f29cde8761801b088d7149bcd063b973056c381921c +DIST tinyvec_macros-0.1.1.crate 5865 BLAKE2B 2bf4f68ca11dc19c72232951605a4c809b34ff38ee365ee4f592a3c41360e23c9330cfba961e2692a0ad568fef4aaaac51c40808d491178cf7a0c4b5a1c5d484 SHA512 10008c7b3a3d50c94b9c370015b76ee082f5dfb6dcacf014dc2f2dbe92f903618d10d0202b21f48fcf98a94ae76fb712db55a5e8ad353645d378cf0e6ec74f7e +DIST toml-0.5.11.crate 54910 BLAKE2B 9ecd5103b33ab47d4be23c897c7095ca381cb79bedcaac4918cddc36fc7cf5d34ab664da52c2273d935f04486e9325241d6b66785d50aac78453c219aab49e1e SHA512 eddb82aeb8fdeb5436579292c6f7a64a90a2c7bb54070beb437bc7890b99795d0505faa8d6451a99e8bcf440f78db8a1b273a697c8ad44275cc4163a9ee49317 +DIST toml-0.7.3.crate 47227 BLAKE2B 8e0709bfe7c26e15b0c5ed4f3f908977242a52cf813e6175195b662792baa91f104da357876b711158d4b55b2426228e278cb9a2057de26d9b167d99208d7d04 SHA512 4f3f7534d07e4f5bc14310c4030b89ae3d42c9e6d7a5d3aefa33ff9bab3d73625367fe9c74fd1ccb8350b7bb3a78f1181654e69736cb7280b89e632c29aa81b5 +DIST toml_datetime-0.6.1.crate 10765 BLAKE2B d31627732a1a70dce5142ecf6dafa2b52e56b7df7d865b64dc477affbb2cdf148fe4acdba84373c4fa1b8bb8de06380e2a105c10fe34e7591683697d78b17c78 SHA512 024fc32f5c3b8efa764bc3fc59af710627513ba2e536f01f227d36661eaee099ed78320ea65b15a15e39c0fc30ff2b44c501f96d5a2618034daeb290524694e0 +DIST toml_edit-0.13.4.crate 104817 BLAKE2B 7a75d97b84012795dea220c457c713d03420432ea76d5dcef8b597793c6ae5216a1cfa13958f50929fcf2850c907b09a84a1f0103ae1e62020c6747e0996bf2c SHA512 7a1c915eb4e916d976882f64f5956c1a1ac2a1842882fd307b2a6044d644b25058be7c559b276b4632238b1d24418ed79c68ea4d7af0a13a47fef45d4338a328 +DIST toml_edit-0.19.8.crate 94457 BLAKE2B 8fb45302a44f48a5a75db4dd6e3c7c2b3e4cbc357d67e247da36fe631ba66ee64a6786c8a2f9d915a260aa15bafe986ea8085f9dbce5e03fce92330c782b8b65 SHA512 467454b0b55514e039e8049bfe41ffbee7677a0c4fed4cacd96cd8d91d14cbbb2ce77ba3f356d486ddd8deee9b9939ebf519dcb087aa3d5413eb709f7f003ff6 +DIST topological-sort-0.2.2.crate 10566 BLAKE2B 4b806d2ac1267104f921c80290dd55227209eea099a30f314a88738f95823221918a5097f4c0e694498e641bce3205c6c6cf5317fe37185de301a2a11bd101b0 SHA512 1334300f1022126138355ce1c4b33f60297765f9dab6888242e78be76b0df9e83560be693eabaaf10f9aea2dfdb90e248b02b0cee89dca495a1e365d9b6e87dc +DIST tracing-0.1.38.crate 75832 BLAKE2B a137f5c9453d0dea73832cb4d75a7130d4e3aaedb6a7a6e16254fbe02349ac84dedb0c2eff0c480d352cbf3cce7a364c0f33a960dbfac49e6d566ae2088ab9ee SHA512 e73a5b31e767815d623d4cae0dc0bb18fbb7ea8cf0c378151c949c2b7e261fb9203a34acc25493237fa49e9eb8a53d313f61eb865b5ca8d7908e96f6912c76cf +DIST tracing-attributes-0.1.24.crate 31841 BLAKE2B 8473fcad6bfd2f7df0fc4db41a5f71c4c128f4a0b485d21803aa421119afb3d9d5782515332c8c3349c24324c97449a80041a7f6d185c9dc48650b5b9182d585 SHA512 925bb3840ccb093dea2625802e5ee3a5f4bc3eafe2a8715670b1f14d2f4a01eff0c50f11368507247bcade02748eee8585975d156f5d2c932231c6e2ed89c0f5 +DIST tracing-core-0.1.30.crate 60351 BLAKE2B eadd1ad68830f4fa9972d207fac3b5be6b0f6d3d2ee4299f2fcd6d03313db6850ae0bb278ae618615e0bc2cd83ffbde0928857fe8e01dd9591a9e80114e0ff88 SHA512 9a14edf6338eff6636473f4ea844dfe337e434c14f40e7b9af6d7e6cf25f745f37bbe372bc63c01043667bea2f5b248b8afa8d6aae4cac3dc5193e3383ef1c65 +DIST tracing-log-0.1.3.crate 20549 BLAKE2B 1e2b5f1d96983b0dcf3e61f71132536e21dc19af0d532dcff7cc91db45e60cbdc1f8b5b7a7b2c13214dda4e3becd4f3d62262def1b608a99fa330ccf1d716323 SHA512 440cb8ddd5823cd0d86b68bbbf29f6886d5800f95d0aaa9477f98f188013fd009c2b9bc982b17efd08abd071bc70ca511f988b9db8c21d8e3d323fb67614d289 +DIST tracing-subscriber-0.3.17.crate 191711 BLAKE2B f55c8e8c70ca67f57cb3c8a411519f317b9961620e3f7db3a3933d549cb64a5871624c21231bd6a0974c94ecaee2904d2304ac9fde3aa8463f0fcbf99f94b5f9 SHA512 53a2a760d833f729e042b4f76b56c93ff7c50ddba968dfa9294f24425fe9a3dfc6c3b95a526ebd78df852b48b76c85d2f4f7be9170d75a6eea8734f77218e727 +DIST typed-arena-2.0.2.crate 11848 BLAKE2B 1d2821519c959b8e5f32942fb106f836a9aa753a43058cad6898588f8e0d9abcbe7a94a91ec8d30c62e59833563df48229c6aeec8bf7a396de20895e39571d11 SHA512 33f43488ff63ab763e4330d124e3290ece41e50ab78b6f12dae3a2be4d7f5bdf6ec876ab3b1f8cd81874e335fc41f3a2254994f250d3d6aba682fce557a6a399 +DIST typenum-1.16.0.crate 42477 BLAKE2B acc6dcd4521493c438a8a3d997ab0456fdbff3db66aee9b81ba219714d47522c3ca8fe26f8ce84edfda416ff9a22747caf3ecc9cc4bcd1e7647ac351d5aef407 SHA512 93da3ed62573acbc9d5d31257fb72ae9cfc7d59e4040c1f32d93e8fec94795e1aa20a3bf76ddc64c4b383184306bb2a66e51fd61b64dd4ce46a1bca8238b57b2 +DIST unicase-2.6.0.crate 23478 BLAKE2B 6e580108ac81b1cbee70e5bd331f43b12f266dae4f4f758bb8f5f073bd1af61943ee0de34cc27769525b19da8c24f8dea4941d0f5454594ab0cc8b78071ff053 SHA512 7e76a5f344e32c56cf87223585d87a56c79627b52bba0b29eb6de82de874b2964accededa8e9b5741f57944b6750fba5c61e679a50d4fd5a5646f431e2f4f188 +DIST unicode-bidi-0.3.13.crate 44477 BLAKE2B 90d80e7c57e93aa9aaa83e7c3c1a93bb6e4d51047803e61ed3f7c80361987947b2029a2b679bd301e8a0766ee8ea7f080e9b9b6ebcbb4354e19813a0f7da2abc SHA512 fb094fcfd907d90fa7232432aca0143209446e4c5c73d8a0fe6d2dc44b9dbb5b8b926c59b5e3f9a5a0a36f91c04613509b6e430c9c4adf526e7445e6e8d7a3d9 +DIST unicode-ident-1.0.8.crate 41962 BLAKE2B 3e3394a421460b0cdd56f96e1149b3816651ffd7064f9ec85c12050917d0b271eeee4bc3f6d3f0a3c1596635df3dac54bd610243d34e459743fe29b3b931a237 SHA512 8104999c6fff002c5aa109e2ca75ce3eaf772155d31dff87bcf39e3eb3da58b6cb543717be7b55acdb0cb1a4bd2a3d2e9c9974f7f75b6528668f5ef665ef4088 +DIST unicode-normalization-0.1.22.crate 122604 BLAKE2B 3f3430b279cc0ce1595392c869442ce676ab097154c688779ebcf726e10c497df59be2cd7bb2f84f99499a9df0654760a10ac92224c17d74775aeebe291241e1 SHA512 a5810d5e9cd93dbb80e013997aa9d38e60834619483a6623eb2859ec5d59a5aec3fc4db123dc7f4e2fe9f2b8799cf6af48bdff22d69a00a23707240e8bf3bb3c +DIST unicode-width-0.1.10.crate 18968 BLAKE2B 6174e307fd3ee290d0a5d1d31233baaa5315cdb73f19b8580718e9f9eb04cfd3aeaeb474af1e50c4b9fecc6fc777937dedc527c9dc9ed14ccf42af099e591f31 SHA512 9836a8d489d18ea1ecfe1957ed6d5da7dce825e138cd1848aef093fa8d2eb83fcf01eabb1a2446df4f5ede4e67316e9e81b5d58b59d4e8c5d67870e8fa5dca3b +DIST unicode-xid-0.2.4.crate 15352 BLAKE2B 80c327b39f3b8f2cdb5747cde968cfa1efe7b65b6bee9136adc881fa19f66aa5b1010d9d08de55a61b322d665b5b0cb0395e9ac471f6333c40d8dca5d97e123c SHA512 e67bd1258e1961807d9d5fe583a89ab5b82b2a529ecd32cadfc79aa5331380eb4a2db9fd96b74c8eace47f2f29021587d69bcdbf79f7e2650e92a25f7839d03c +DIST unicode_categories-0.1.1.crate 87298 BLAKE2B f52b83d204b90ce0ec26e0500bc80b0547610f3417616603c4e837fbec0a41a6a715de19f88432f4c15ddb6b2ba55ee75a472fb7e2c888accfc77e1ef1d85fee SHA512 2d15499ee9318ee54910d657339820acfa88183e4f9aa146ac655129d2c4d76d3fd0550b601702ad2ccac4c8647dd2f26528d8003f39181e09b8ef480351a3cb +DIST untrusted-0.7.1.crate 7924 BLAKE2B e0152791e781a4805120e3437b7e0219db3aa0282af4faaf2cfb15718421ff26abc56021c546f6aebb411f5abd27020273ba0f785e012a4b0089e96c2db4faa6 SHA512 5ebe3266912e4e78fdfdd13f9fcc07e9cf489d19d5e9ff346486f47aa58a0aca35278d561612c49eb3cab5a6759ac974d3b92bfabc399e1bc0808428dc347be0 +DIST ureq-2.6.2.crate 105924 BLAKE2B b055cf00473a6d67d181fe6ffc9d960ee9c1ef4bc346f30466e9d8c129b82abc908344fe61957e6840b1d1cf302df12c94b0c74b49daf0e978173e36899f3c4f SHA512 712922b21d321932b6e4d8602903d92fac93549200cd10d66052f404e7734a5aab2ebfe78e14cc443df3320530454a6585aa8005fc39471cb1aa95e54dcb951c +DIST url-2.3.1.crate 72777 BLAKE2B 6ca0e537baf373b92269b2531945c1cdf360f1566cae4734dfb96f05a605e5c6c82e3192a1b9dde0ff22b92b87aba2d56e32a1bf17882b4de15efd7cdf52bc76 SHA512 8224010bef067574481e5d84100d944782d52b49db7c396ae2b4dfc145ed58769c15440d97a0fed4d2f9857592a8601417cc5b1bdea959c47a3e7a1f7182ed0d +DIST valuable-0.1.0.crate 27718 BLAKE2B ef5ded994c9a6dd302bed27f0d757447b0c86dfefa499c1ef0d25c3a6745ce61cfa2c926826534c9f605f9b89b4a19f91f06f94ae7c03f1ddc4c58fab3ae58bb SHA512 a97f65db1f1c5049a276dbb0e45e25c6fc6ce9d27ac1fcd77c945324cd8216ef60344065c79799ca04e338455e4f7422c44078eea32d5fc359dd0211ee7eb387 +DIST vcpkg-0.2.15.crate 228735 BLAKE2B 6b6bacd9a7fa38919241f45a97f58cae957e58d3aac99df208a26aa718e4f1644f4ccefa31b09151e5c1952288e0e5837c363918b98c7f55079a948a952c1c50 SHA512 7322a21e8811b2fe4e79e09dc321458068ecdf1953f05d36233f3278ecc0b1dfc64194db7010dd46fcf692285f42475beb090c6c6cac0c8f9fe0eb5c770e3172 +DIST version_check-0.9.4.crate 14895 BLAKE2B fa1fa4008af165bfc1fdbe560488afd9d232cfafee94104fbcc4cbc52f234849bff9ddfa88109a1ac682f6d9c1d86b0459893d223f64e65adc08966aaf93dc89 SHA512 b172dc9a3759a4a683ffc39b9a40b03b9974b626a088217de87090466cef695226557c226cf3e469b2b25ee7297b7eb0d7719878cab42457f80146a81943c0c8 +DIST wait-timeout-0.2.0.crate 12441 BLAKE2B a99d3f57bc6e784ac06167f98b2dc2841f730dfab4fb9772b15e67707f756d6ba7daeb3e992d32291bed3daa85eaa8a8ddde64db5e1acf1cc4031fc9bdc82212 SHA512 db3b7aa2acfd44e64451042b8ba98eecab77a82aa5c58ed08dadb119ab36dee4e26d62baad7978ed56d5ad03019c96be5021455362290f56043981137bac8066 +DIST walkdir-2.3.3.crate 23125 BLAKE2B 3bd354b9796a31bd4c8f4ca695514101a7837ae2134fa1ffec20df1cc946a67b38c6b50affbc2cb79ffee0934474d8269378dab5ac49a4943ccf8c7aaa51db11 SHA512 2b6e1e27c16e310f636eb1c9ee58435509fb8f7a6c5beba4dd13d87aa1d91599a593bfe720a675d536ce63e217c31e240a57122455d8e18de1282a9e7fc3defe +DIST wasi-0.11.0+wasi-snapshot-preview1.crate 28131 BLAKE2B fe501889f25d65e2d032f885cc50c4f8bf7dd70fd5cbc438de349838370d8699e9627b0a4fc76030ea9fe6d508f41d0c9928a875fdbc47e73bfb17241cf7b155 SHA512 043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f +DIST wasm-bindgen-0.2.84.crate 172947 BLAKE2B 90c9b846bcea9d099a394b42f126990db82d1dcbe247f8b63f8c91cdfbb5e2d184d36daedaf8fcee58c34afe89bf9a30454063693d64806ead3427680a87e7af SHA512 20f8c9e4f8d81c66e34d9ca2b266fabaae30da9015d139cd4eba3f314c67c17cb562c6eec5127c41302c11c2f314237add2524a8b9a4d5346b8822a37e467b2d +DIST wasm-bindgen-backend-0.2.84.crate 26344 BLAKE2B 5686a252082afe128ded295584d972fe4af11a30fe37a80e142d213eb2e4bca567182bfc5addf1571696bd12e68e029148cffaa9af088d1269a1201af72e64d1 SHA512 afb06e21d916cf1af137159ac86924fbee3a958ef73725bdf6bf205e15465857791070c721e0fc0164eb6e37d195bbb6a3f03661c81e1e5a9ab8502bc3704058 +DIST wasm-bindgen-macro-0.2.84.crate 12857 BLAKE2B 23ae9963cc2cf9bc589f5d77c8d3819aeb9d671f0bddd17093b2df096cc800d2130bd2a994b786a5f446e9194947199b3f0cdf1c16f15e7283a4ae319ca849a1 SHA512 23b69ff601c149909d81200bc2902018ec71efad8aec9cd84a0653025aaf852cc86d93e28c5f60144ba6ce5aeff04b90d23761e263e3783d45097316525d6f43 +DIST wasm-bindgen-macro-support-0.2.84.crate 19076 BLAKE2B 4f779d7d0a406f376092ea8193851dbc86e9dbb822464db66a2022274665b03b9bf6552f79263014510cfaf4284847e98e8173263a6565f1af0c29054bd33fff SHA512 f2a8b6e0170dcea0d2f4a50361f036ad6604c499a89f0cf602578d0958d47c193aecebbd98e63310f592b08f8fe53da6c3d7a124b433ee384aa22371d9c963e5 +DIST wasm-bindgen-shared-0.2.84.crate 7219 BLAKE2B 4910158ed884dd9dbb32b1539b0c89a583f98df05cb29654487a26db063c973d44cb086dad4b466f9bc63104e3d4da72fe9feed32618f8243151dfb9ccfaff29 SHA512 fc4bf134a33c71852b91d09fbf1e1801e2b97b5c2756e2680d0c1f8701da30b22b56777d8e806e13602beb040775824966e378f7b9805e131a385e7816ddd010 +DIST web-sys-0.3.61.crate 706333 BLAKE2B f57cb14032e2ea01b5e0ffcef0988ee3e8227c1da7d27ef8799583f64cddb4bcfbbb145f5ea1889006fc9ff61d42b1c02d4b278d67371c9d914827113f5e4128 SHA512 dd8c93a92295a9cd94a4a4cac4a81d9fa41c2c0bc885c1861eae5cc317a0d55e1a9d34b97b91999bf617a071f7f8acc39bb0d4a684b40543519f0cad6b82a25c +DIST webpki-0.22.0.crate 58663 BLAKE2B 4fff91a8ce3d46a9daa9e39c50755f79574c91faddead2f6c879f6e9bc2189b76c4951cbc36e607e099ab8a870b422e1afcd4bcbecc14e96555c26c8cbefeb84 SHA512 7c2916d47f2232587e3ccaa8fefc8b576addaf84b55166011032e471f91ce54a79d2fca7fcc1144552c254f5baead708fba2b0ce76a1c34286838a8744b0f570 +DIST webpki-roots-0.22.6.crate 242386 BLAKE2B b7c4ca7b372effa1cab48d890e468a272e0bfb7109900c4077906d088e85448c058a6be420eca24ed42bc9c0a0f1922c08c5ae6b0cfd85aa71662a5f7157791a SHA512 00413a8354e2277f50c29851ed49a97f76bacb2017d61b10333981d15bcee13eceef8711e87d2aef1ed4f8a85763c6b1e7e21d61a57e7f689fe4aa6e67f4c140 +DIST winapi-0.3.9.crate 1200382 BLAKE2B cb5799749ccd935ea2d7068d953cecf19f543d9db7dc16ad4584bb7005373ada34937a3ced7225544d8bc765da599911c7a3190efefb3a25b7c1bb7123b4f673 SHA512 ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 +DIST winapi-i686-pc-windows-gnu-0.4.0.crate 2918815 BLAKE2B 4d357e4d30f9552972170d65b9a5358b69c46a3e772fe05efc22f3d4ffc1caeeaad7aacdc7abd503a7ad0545f8bd7d22bf351dcb6df76f812fa4d45c34d65df0 SHA512 a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 +DIST winapi-util-0.1.5.crate 10164 BLAKE2B fc800aceae5249a858c806c3e969ef2545766099872d856ebee51c883d9acf1122278db9607d50ca53eac351502b700fd2463900932d342240f97f683d517963 SHA512 7baeb661f397c4693dfa001fdc774b323c51a7c55caad40f2de5112a1cefd1d6151e3df41fa4ee193460a5905917c83d2b1de5fa10b4bd014ad96690af95c0fd +DIST winapi-x86_64-pc-windows-gnu-0.4.0.crate 2947998 BLAKE2B 2ad1ea8b5fa07d544e910ccba043ae925269b76b26c9da356305b34b86741dd8b9aff0b9ffe3d562db4fcd7d7c46a11ce9e3168b782b1d89ae6881742b7ede82 SHA512 4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 +DIST windows-0.48.0.crate 11864177 BLAKE2B 39c0e4f058f68a829ee08721818a0b04287af20dfe6e03a125b75566b4c8a58b56557d685600f1f9c215811154f9782f12368d42848445d54dcf9bfd6471349d SHA512 7c906f885fa0a730f1cb1ef4e62f5b602a49d44343febe1d38fcd4cbc28e0342766983796042585fe457aa229333558715b6270e378946faa8f398a7ecc2af8c +DIST windows-sys-0.42.0.crate 3006791 BLAKE2B 7a0962364ecc416cf0ae7e49cce1298a12d819003e488f6e77aff1a52710f00378638b6a05db5557a031e1b75659587657971ddc63eaab35495133762f99a7b2 SHA512 b07b119688f3e3ad234d36979947f34e8e19988fb62101afbe18ec8afc9c8a4261128939df8bbb849d5c5982422cb4c50dbcba70f2bf401fbb7c605df1b2b354 +DIST windows-sys-0.45.0.crate 2568659 BLAKE2B 6f2d634d121a9bf41e2887e277a73f33aee69b04c7fcfc6ff973d21902787997f1e186f530e9226cddc003ffc3f85a179c069c8a8688de459f617df92d33f94f SHA512 f239346c0141b95aa76e0771e2f4e38b9a592f3cd92c6001de353637cd65cd73b94cbf9917a4eaa9b0c0b2e6e2af920b9cf6b3fccb52770df5160254cffc1c47 +DIST windows-sys-0.48.0.crate 2628884 BLAKE2B 551e900de4f67187ef034b60df9fd0e0d8f82a3100ef28e1eabd543ac129d882dc86ffcc1714071aba09e4cb2ae2d2f07ace1a32b99fd989ce525cf05991edab SHA512 bdf534bcf3face31e9ebe11427a911a53f89f4ff5eaea8cccd094e139bfe14b2aec602b1cab1df774794d999477439d9adc6b627a8e33c20334fc348ba2c47ed +DIST windows-targets-0.42.2.crate 5492 BLAKE2B 42fc4a7d3e287fe2a70637e890304b49737776596f4a94a6d216668247092135e84322bd04caddd19c83b7700b0f27278e600ce8ed326957fabc21bffcae89b0 SHA512 84fbaffcad9a80beca77506aac26d0c5cb75aa0f21a5a70bcd3f6a16e71e8753ae00d3b89da9262c99756624163dcc0d6074fa9f99dfaae0dc098018209025f9 +DIST windows-targets-0.48.0.crate 7466 BLAKE2B 4ef6d89ad5b1acf26a1a24348122b86d3943bd95935499bc9032fbc7aa01c04999c723df7fecb4989854cb6b7cceffe141537dfb05a9eaf3902c4cb490533116 SHA512 1d2a29602a1e0846c8577ec9167c5f9972091998a5df449d67b13ad918bf37680e7f97247baf5e3010c166d0b3182418c2925470998b92893ee9469939b91e22 +DIST windows_aarch64_gnullvm-0.42.2.crate 364071 BLAKE2B 97c4e3b2a2dd3f936f9bfcdad23639c9c4c499eed220aec361d26d6013d798efa118e6b298f9cf841ac149d2ae5d58ca653731718450fcf2910bb5f6fa39159f SHA512 75cd7eb1def8ce9d0ff3d7468d2b1cc31cc76c08f981a2460c3d1eb09cff7100d7442863a3591621c1f5f3b3f4badf0b5c95285b6ed583e37283a8403f1095f1 +DIST windows_aarch64_gnullvm-0.48.0.crate 366543 BLAKE2B 9b10f65089fe6da3ff38a1061783f635644ae84f567f891eaced280af68f7ff3919b34289e8850aa34554bb0346903273ff0a7fa743ca8794c2d23a9f1b0185f SHA512 80c5aa74c5669f7acff3882a8e7575f15e8d7cc58c11a1cb731ff423eb9cc9ba43cc6b80e52803c0d44e6a9001655ba87de6f43a9fe858da6d6e3a5c983a2711 +DIST windows_aarch64_msvc-0.42.2.crate 666981 BLAKE2B 9f3cc5592cdede08bcdc1e7c455325279e3b763d96942695e10dccf1dfc37a81c749b69a7d6de883d4c0fa6e8a0d2f578fe2a8d6c42ad8ef6282590bf8fc87b7 SHA512 d2dafa8c94d01c1b65ca1bd631d31f2ef842f1db7accb132ff78c3f8483221b991afd3391563e03dcec42bbc9cbdc0ebdab47b991d25af85b5ba2ac1bbf8db63 +DIST windows_aarch64_msvc-0.48.0.crate 671479 BLAKE2B 0c80f210437628e1d878d1d14e884fea532c7539b3030aa76d46f27d02372c715c6e33d7efdbbd770666472b44a66c30711a33d819ede9cdcd51c96355802d45 SHA512 617e47a7202f1db4dbd3ecea509682135ccd85e3a458c0331b9bc7aa1d84e5756b59c881cb098d5c6d4c951248d13c8253a8e8a50938e1997bd19ceba77262df +DIST windows_i686_gnu-0.42.2.crate 736236 BLAKE2B 4ef0496462afc73d9d72af7e5da1e6d3506a92f8172930e88ae64ab97596ffd31c4f97fb969e9b677e30159c27f00a8e756deb006b630fb98ce83f03c8b762e2 SHA512 ad09d650a05cb91cb6b40f59025c023a4c286bc1194586697c506016df2b9b0d5b02606b81687bc634795a0d9a9b8a73e486599328ae09c853e8e5ba662fc59c +DIST windows_i686_gnu-0.48.0.crate 741490 BLAKE2B 5a4a584f8d8ee5bbd2d4c5b6749a66f2d43fc9e4ef90faab2227709b270f0d46fc26578c029edd96877c71309316ddb32d91c39f46d88f9a484c614f866e3dbe SHA512 15149fdd48b61b6d993acd392dbd353d0280d984ea88745217e4207937174bb90cdd9701f69ff0fe06a842f03607cbb57937d20d79ab577181e605a8a8fadc68 +DIST windows_i686_msvc-0.42.2.crate 724951 BLAKE2B b084286cd4927efd2889b149abf8a9fe9d3d777130db9e592982660dbf9a96a0f5e723ca121465787aa11877d2d29a5a7d7cf066cdc8fa7e90d7ca7dcb7677f1 SHA512 c1706fc36d4b157c020744a11b3eb5d7dfbf05a0b56775bc717e94b7fd725816b20154fdbcd69ac08dbfb8b8bbfa74fab72d7a9c10399aad6a1cc54cf597e804 +DIST windows_i686_msvc-0.48.0.crate 730056 BLAKE2B 4e4ad6ed94948145199c2ed50fc65e4af08455a0fd058bb0f763d481f30b029f99a2b8dbac087b29e762500a19270f6683baf62ba99d141eb002a5b0b5c8ea05 SHA512 11a50800e709712dbea907275bc0faa46d2eb2969118445ed5b932d9c5957a09592a5b26a40e554c1f5fd56c6d074a07637e6f88eedd2224e1001e62df7b469b +DIST windows_x86_64_gnu-0.42.2.crate 699373 BLAKE2B 01c70809d564b16b268656e47295e99c992d8f9839fac8a51338a0e7c3b9cdcd0429c456ca8c1c139a8c687ed7ed6c43a82250889d881aadaa65bd037223e0a6 SHA512 5767af3c86e717f93137a89d442230e6b60a649057edb3ab104b1f82c0bcd64fe089dcdf2f4fd486a799bece1ddb5f0449641536b678211945e749ae24f35c1f +DIST windows_x86_64_gnu-0.48.0.crate 703595 BLAKE2B b227efb78a99c43d0538cceadada3fa1840df29adc665787fdcf845b73e77d782da8a9f9aa602e1da61401b550d0107176feb6c397c922a6240b38cc8f04a180 SHA512 38eff1164fb37dbd2bbe53404b20cba92de84cbbd5e4eb9ad60d51fb43d6fdb8b87a1488e2c88ebd4b3ff3b708f93fdc05df4b14a285d3ff11c33ff0d9828602 +DIST windows_x86_64_gnullvm-0.42.2.crate 364068 BLAKE2B 64bc53e98eb3fc649c9b43a6e734de4e65088e41edacabd49f7afcc5dc6e1065c563ecfc682747dda05978dea2dba4f45c16fcc18c3b00684c3d93681e5a7deb SHA512 d39a8bc948110fe612d3f8d6628b3f0d56620df11d8a49e0fabb6c90389ad407582b3af10e4eab46c79b3d11d2e10753d73d9e55963fbeac085f41e9749bdba3 +DIST windows_x86_64_gnullvm-0.48.0.crate 366536 BLAKE2B 295dc3aef18c604d1579978045f4058b1a315083a8ab842bddf5800ec3460b1530ad88c3464acab712a229290aca235810de8a3b6a253859a354d9fa97277e58 SHA512 8d82fad4c8445030844708aa026a62f1ca43362b8e15f14b0d226c7e9cda04ffa0715087b6a025dbb738e8891de24fcc4a2df071a532917cf03c4a46f934f396 +DIST windows_x86_64_msvc-0.42.2.crate 666936 BLAKE2B bc3a456e7f8bc272f8978ec69506ec9d89f97b7582ebbe05d8bd57bdf8156ef62d0d2dc6137a97e81d54059d70db97a24af9a038adff357f5dfd28805d6193b5 SHA512 53a35f438903fceb59e36bd2ac331773fb8e6c8c5a6d984e79021761f91b3b4a23efe49d219667a4d0d23dcdbf906da9c24e74fb1cff93395b5c55ff524e3788 +DIST windows_x86_64_msvc-0.48.0.crate 671422 BLAKE2B abb063610dcc38581657133182b7d9efeed5553df67bd2bd6f30f1668a645186e4824f9ef556a5abc84ace10b1b437b6325bbda6df5a64ce880d7dcb743ac786 SHA512 6e598b8e3ac54912a8ebac01b0dd2c58fd282072527d7fedc7f6ebecdfb7dcb09ae46c22293bc0117849437f8b053db5e90406e7a38276f0f0afd06be3966795 +DIST winnow-0.4.1.crate 138177 BLAKE2B 9fb55dc5dbca2250c5921aebc42fd8dff7da6fc70656d5690475cf9d81d569b01e68c5134401f70759a9edbe1704cf76727efe5442961b1d220827130497b735 SHA512 390b3da6688d61d90d9bb221d95c7243968209b692737999b13326204954d1e916b390ac8a3a0e0864695ad9a073ed8a79e592ca565be374cc6e909b4166d52a +DIST xml-rs-0.8.4.crate 52690 BLAKE2B 140d4e725ae0e82c949838c1f6d82e1fbb00e2df4d51b74486597302d4a434ccb46bbd6f5e97636b4947c0092793928c29837a3290bb525344e8a27c0951a42b SHA512 b21b0db9ee7cdfddae7c110e4fec714d719e75ba139744c290692d660caa425aa8b1ece644deb5f1879f21c0561b9b412b9ba8931f7f5b4e220ef08f8a7fc5e6 +DIST zeroize-1.6.0.crate 19049 BLAKE2B 8dad6af58edd7b22ece7dfefa47b478dfb74efd1e08c03c571c9cd50962a8eda8cdb59fab91fd44053f8acde8d1d84efac4bc48c5e6576255620ef21f2813de2 SHA512 9ebc81c10516440476b5c198dd4ff0d284a0a37cee11a2cdfb5a1995f95b72d05beb827483b16e8b764f720fbcf30a5e5d8b1517cfbbf572bcb27c2efb18393b diff --git a/dev-util/cargo-audit/cargo-audit-0.17.6.ebuild b/dev-util/cargo-audit/cargo-audit-0.17.6.ebuild new file mode 100644 index 0000000..5c24653 --- /dev/null +++ b/dev-util/cargo-audit/cargo-audit-0.17.6.ebuild @@ -0,0 +1,335 @@ +# Copyright 2021-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# Autogenerated by pycargoebuild 0.7 + +EAPI=8 + +CRATES=" + abscissa_core@0.6.0 + abscissa_derive@0.6.0 + addr2line@0.19.0 + adler@1.0.2 + aho-corasick@1.0.1 + android_system_properties@0.1.5 + anyhow@1.0.70 + arc-swap@1.6.0 + askama@0.11.1 + askama_derive@0.11.2 + askama_escape@0.10.3 + askama_shared@0.12.2 + atom_syndication@0.12.1 + atty@0.2.14 + auditable-extract@0.3.2 + auditable-info@0.7.0 + auditable-serde@0.6.0 + autocfg@1.1.0 + backtrace@0.3.67 + base64@0.13.1 + binfarce@0.2.1 + bitflags@1.3.2 + block-buffer@0.10.4 + bumpalo@3.12.1 + byteorder@1.4.3 + bytes@1.4.0 + camino@1.1.4 + canonical-path@2.0.2 + cargo-edit-9@0.9.3 + cargo-platform@0.1.2 + cargo_metadata@0.14.2 + cc@1.0.79 + cfg-if@1.0.0 + chrono@0.4.24 + clap@3.2.24 + clap_derive@3.2.24 + clap_lex@0.2.4 + codespan-reporting@0.11.1 + color-eyre@0.6.2 + combine@4.6.6 + comrak@0.18.0 + concolor-control@0.0.7 + concolor-query@0.0.4 + core-foundation-sys@0.8.4 + core-foundation@0.9.3 + cpufeatures@0.2.7 + crates-index@0.19.8 + crossbeam-channel@0.5.8 + crossbeam-deque@0.8.3 + crossbeam-epoch@0.9.14 + crossbeam-utils@0.8.15 + crypto-common@0.1.6 + cxx-build@1.0.94 + cxx@1.0.94 + cxxbridge-flags@1.0.94 + cxxbridge-macro@1.0.94 + darling@0.14.4 + darling_core@0.14.4 + darling_macro@0.14.4 + derive_builder@0.12.0 + derive_builder_core@0.12.0 + derive_builder_macro@0.12.0 + deunicode@0.4.3 + digest@0.10.6 + diligent-date-parser@0.1.4 + dirs-next@2.0.0 + dirs-sys-next@0.1.2 + dunce@1.0.4 + either@1.8.1 + encoding_rs@0.8.32 + entities@1.0.1 + env_proxy@0.4.1 + errno-dragonfly@0.1.2 + errno@0.3.1 + eyre@0.6.8 + fastrand@1.9.0 + fixedbitset@0.4.2 + fnv@1.0.7 + foreign-types-shared@0.1.1 + foreign-types@0.3.2 + form_urlencoded@1.1.0 + fs-err@2.9.0 + generic-array@0.14.7 + getrandom@0.2.9 + gimli@0.27.2 + git2@0.16.1 + gumdrop@0.8.1 + gumdrop_derive@0.8.1 + hashbrown@0.12.3 + heck@0.4.1 + hermit-abi@0.1.19 + hermit-abi@0.2.6 + hermit-abi@0.3.1 + hex@0.4.3 + home@0.5.5 + humansize@1.1.1 + humantime-serde@1.1.1 + humantime@2.1.0 + iana-time-zone-haiku@0.1.1 + iana-time-zone@0.1.56 + ident_case@1.0.1 + idna@0.3.0 + indenter@0.3.3 + indexmap@1.9.3 + instant@0.1.12 + io-lifetimes@1.0.10 + itertools@0.10.5 + itoa@1.0.6 + jobserver@0.1.26 + js-sys@0.3.61 + kstring@1.0.6 + lazy_static@1.4.0 + libc@0.2.142 + libgit2-sys@0.14.2+1.5.1 + libssh2-sys@0.2.23 + libz-sys@1.1.8 + link-cplusplus@1.0.8 + linux-raw-sys@0.3.4 + log@0.4.17 + matchers@0.1.0 + memchr@2.5.0 + memoffset@0.8.0 + mime@0.3.17 + mime_guess@2.0.4 + minimal-lexical@0.2.1 + miniz_oxide@0.6.2 + native-tls@0.2.11 + never@0.1.0 + nom@7.1.3 + nu-ansi-term@0.46.0 + num-integer@0.1.45 + num-traits@0.2.15 + num_cpus@1.15.0 + object@0.30.3 + once_cell@1.17.1 + openssl-macros@0.1.1 + openssl-probe@0.1.5 + openssl-src@111.25.3+1.1.1t + openssl-sys@0.9.87 + openssl@0.10.52 + os_str_bytes@6.5.0 + overload@0.1.1 + owo-colors@3.5.0 + pathdiff@0.2.1 + percent-encoding@2.2.0 + petgraph@0.6.3 + pin-project-lite@0.2.9 + pkg-config@0.3.26 + proc-macro-error-attr@1.0.4 + proc-macro-error@1.0.4 + proc-macro2@1.0.56 + quick-xml@0.28.2 + quote@1.0.26 + rayon-core@1.11.0 + rayon@1.7.0 + redox_syscall@0.2.16 + redox_syscall@0.3.5 + redox_users@0.4.3 + regex-automata@0.1.10 + regex-syntax@0.6.29 + regex-syntax@0.7.1 + regex@1.8.1 + ring@0.16.20 + rust-embed-impl@6.5.0 + rust-embed-utils@7.5.0 + rust-embed@6.6.1 + rustc-demangle@0.1.23 + rustc-hash@1.1.0 + rustix@0.37.15 + rustls@0.20.8 + ryu@1.0.13 + same-file@1.0.6 + schannel@0.1.21 + scopeguard@1.1.0 + scratch@1.0.5 + sct@0.7.0 + secrecy@0.8.0 + security-framework-sys@2.8.0 + security-framework@2.8.2 + semver@1.0.17 + serde@1.0.160 + serde_derive@1.0.160 + serde_json@1.0.96 + serde_spanned@0.6.1 + sha2@0.10.6 + sharded-slab@0.1.4 + slug@0.1.4 + smallvec@1.10.0 + smol_str@0.2.0 + socks@0.3.4 + spin@0.5.2 + strsim@0.10.0 + subprocess@0.2.9 + syn@1.0.109 + syn@2.0.15 + synstructure@0.12.6 + tempfile@3.5.0 + termcolor@1.2.0 + terminal_size@0.2.6 + textwrap@0.16.0 + thiserror-impl@1.0.40 + thiserror@1.0.40 + thread_local@1.1.7 + tinyvec@1.6.0 + tinyvec_macros@0.1.1 + toml@0.5.11 + toml@0.7.3 + toml_datetime@0.6.1 + toml_edit@0.13.4 + toml_edit@0.19.8 + topological-sort@0.2.2 + tracing-attributes@0.1.24 + tracing-core@0.1.30 + tracing-log@0.1.3 + tracing-subscriber@0.3.17 + tracing@0.1.38 + typed-arena@2.0.2 + typenum@1.16.0 + unicase@2.6.0 + unicode-bidi@0.3.13 + unicode-ident@1.0.8 + unicode-normalization@0.1.22 + unicode-width@0.1.10 + unicode-xid@0.2.4 + unicode_categories@0.1.1 + untrusted@0.7.1 + ureq@2.6.2 + url@2.3.1 + valuable@0.1.0 + vcpkg@0.2.15 + version_check@0.9.4 + wait-timeout@0.2.0 + walkdir@2.3.3 + wasi@0.11.0+wasi-snapshot-preview1 + wasm-bindgen-backend@0.2.84 + wasm-bindgen-macro-support@0.2.84 + wasm-bindgen-macro@0.2.84 + wasm-bindgen-shared@0.2.84 + wasm-bindgen@0.2.84 + web-sys@0.3.61 + webpki-roots@0.22.6 + webpki@0.22.0 + winapi-i686-pc-windows-gnu@0.4.0 + winapi-util@0.1.5 + winapi-x86_64-pc-windows-gnu@0.4.0 + winapi@0.3.9 + windows-sys@0.42.0 + windows-sys@0.45.0 + windows-sys@0.48.0 + windows-targets@0.42.2 + windows-targets@0.48.0 + windows@0.48.0 + windows_aarch64_gnullvm@0.42.2 + windows_aarch64_gnullvm@0.48.0 + windows_aarch64_msvc@0.42.2 + windows_aarch64_msvc@0.48.0 + windows_i686_gnu@0.42.2 + windows_i686_gnu@0.48.0 + windows_i686_msvc@0.42.2 + windows_i686_msvc@0.48.0 + windows_x86_64_gnu@0.42.2 + windows_x86_64_gnu@0.48.0 + windows_x86_64_gnullvm@0.42.2 + windows_x86_64_gnullvm@0.48.0 + windows_x86_64_msvc@0.42.2 + windows_x86_64_msvc@0.48.0 + winnow@0.4.1 + xml-rs@0.8.4 + zeroize@1.6.0 +" + +inherit cargo + +DESCRIPTION="Audit Cargo.lock for crates with security vulnerabilities" +HOMEPAGE="https://rustsec.org https://github.com/rustsec/cargo-audit" +SRC_URI=" + https://github.com/RustSec/rustsec/archive/refs/tags/${PN}/v${PV}.tar.gz -> ${P}.tar.gz + ${CARGO_CRATE_URIS} +" + +LICENSE="|| ( Apache-2.0 MIT )" +# Dependent crate licenses +LICENSE+=" Apache-2.0 BSD-2 BSD ISC MIT MPL-2.0 Unicode-DFS-2016" +SLOT="0" +KEYWORDS="~amd64 ~ppc64" +IUSE="fix" + +RDEPEND="dev-libs/openssl:=" +DEPEND="${RDEPEND}" + +S="${WORKDIR}/rustsec-${PN}-v${PV}" + +QA_FLAGS_IGNORED="usr/bin/${PN}" + +# requires checkout of vuln db/network +PROPERTIES="test_network" +RESTRICT="test" + +src_prepare() { + default + pushd "${ECARGO_HOME}"/gentoo > /dev/null || die + eapply "${FILESDIR}/${PV}-libressl.patch" + popd > /dev/null || die +} + +src_configure() { + local myfeatures=( + $(usev fix) + vendored-libgit2 + ) + + cargo_src_configure +} + +src_compile() { + # normally we can pass --bin cargo-audit + # to build single workspace member, but we need to cd + # for tests to be discovered properly + cd cargo-audit || die + cargo_src_compile +} + +src_install() { + cargo_src_install --path cargo-audit + local DOCS=( cargo-audit/{README.md,audit.toml.example} ) + einstalldocs +} diff --git a/dev-util/cargo-audit/files/0.17.0-libressl.patch b/dev-util/cargo-audit/files/0.17.0-libressl.patch new file mode 100644 index 0000000..bca6a30 --- /dev/null +++ b/dev-util/cargo-audit/files/0.17.0-libressl.patch @@ -0,0 +1,28 @@ +From: orbea <orbea@riseup.net> +Date: Fri, 8 Jul 2022 20:23:12 -0700 +Subject: [PATCH] Support LibreSSL 3.5.x + +diff --git a/libssh2-sys-0.2.23/build.rs b/libssh2-sys-0.2.23/build.rs +index d1d33dc..7f82663 100644 +--- a/libssh2-sys-0.2.23/build.rs ++++ b/libssh2-sys-0.2.23/build.rs +@@ -121,6 +121,7 @@ fn main() { + cfg.define("HAVE_EVP_AES_128_CTR", None); + cfg.define("HAVE_POLL", None); + cfg.define("HAVE_GETTIMEOFDAY", None); ++ cfg.define("HAVE_OPAQUE_STRUCTS", None); + + cfg.file("libssh2/src/openssl.c"); + +diff --git a/openssl-sys-0.9.72/build/main.rs b/openssl-sys-0.9.72/build/main.rs +index 243f146..d6d2eb4 100644 +--- a/openssl-sys-0.9.72/build/main.rs ++++ b/openssl-sys-0.9.72/build/main.rs +@@ -254,6 +254,7 @@ See rust-openssl README for more information: + (3, 3, _) => ('3', '3', 'x'), + (3, 4, 0) => ('3', '4', '0'), + (3, 4, _) => ('3', '4', 'x'), ++ (3, _, _) => ('3', 'x', 'x'), + _ => version_error(), + }; + diff --git a/dev-util/cargo-audit/files/0.17.6-libressl.patch b/dev-util/cargo-audit/files/0.17.6-libressl.patch new file mode 100644 index 0000000..61ff0b6 --- /dev/null +++ b/dev-util/cargo-audit/files/0.17.6-libressl.patch @@ -0,0 +1,23 @@ +From: orbea <orbea@riseup.net> +Subject: [PATCH] Support LibreSSL 3.8.x + +--- a/libssh2-sys-0.2.23/build.rs ++++ b/libssh2-sys-0.2.23/build.rs +@@ -121,6 +121,7 @@ fn main() { + cfg.define("HAVE_EVP_AES_128_CTR", None); + cfg.define("HAVE_POLL", None); + cfg.define("HAVE_GETTIMEOFDAY", None); ++ cfg.define("HAVE_OPAQUE_STRUCTS", None); + + cfg.file("libssh2/src/openssl.c"); + +--- a/openssl-sys-0.9.87/build/main.rs.orig ++++ b/openssl-sys-0.9.87/build/main.rs +@@ -285,6 +285,7 @@ + (3, 7, 0) => ('3', '7', '0'), + (3, 7, 1) => ('3', '7', '1'), + (3, 7, _) => ('3', '7', 'x'), ++ (3, _, _) => ('3', 'x', 'x'), + _ => version_error(), + }; + diff --git a/dev-util/cargo-audit/metadata.xml b/dev-util/cargo-audit/metadata.xml new file mode 100644 index 0000000..687c7b2 --- /dev/null +++ b/dev-util/cargo-audit/metadata.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>rust@gentoo.org</email> + <name>Rust project</name> + </maintainer> + <use> + <flag name="fix">Add support for 'fix' subcommand (experimental)</flag> + </use> + <upstream> + <remote-id type="github">RustSec/cargo-audit</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-util/cargo-c/Manifest b/dev-util/cargo-c/Manifest new file mode 100644 index 0000000..36b6e03 --- /dev/null +++ b/dev-util/cargo-c/Manifest @@ -0,0 +1,371 @@ +DIST adler-1.0.2.crate 12778 BLAKE2B a1dc17786adae945ac09d3525e609ed944e6465690787bbb831a1b9d53793cba1989793d0a5606d5d23ee20d36457923d451b1b3530c9ec7072a487aa3e55bbd SHA512 7ab190d31890fc05b0b55d8e2c6527a505e06793d5496be0b3831e0513412f9ba97f8148f6f68ed0770fa9cd980a5092d885e058becf1d5506b7c74b82674aa1 +DIST ahash-0.8.3.crate 42416 BLAKE2B 84836a4e33451012ff32c1a1a90500d87eb7ce649b60dff4eecfb0d25b9782a186376c154673c3121b154ff4616016d1718dfd687b88f4772c2c89eeb2f119b6 SHA512 cf2d2f1201ac0969cf4e2a0c47090bee971b2287ac44b5e091c90a9eced03cf6ff56d7900cc0f529d4acedc30bd400261c15e50efabdd1731f79951b449af53e +DIST aho-corasick-0.7.18.crate 112923 BLAKE2B 4f6947d1aacf89ccfab0592cdc55fa61ef09cea38231d3f758765dbce328a810c0b588be4ba96e81d64955379ee005722d22a7aec39caea6e72342245d7ca34f SHA512 7a23b16231a90d23ee60ad4c81bc225410599a4560d33d3a203138fc540c39cf1000100fed3aed40dcc371c3635656a3792545dca5dd1aefbde00d8774eebd00 +DIST aho-corasick-0.7.19.crate 113070 BLAKE2B 5ddaa0d415d19cf9922b5723bf3480750634ea68cb66fd05bfa2bf57607eb6383ba86d8c55f70adb87b71b98caa73d8f6ebd075c006493530c81979032899b60 SHA512 0d63d29079650bde4e8a9f8529716b9d8c42db076a1d74715116240c2628173f1e86fb29c08a25ad07a0148e48789ab20de0c186a8b3dfb193cbfeb0d76ae78c +DIST anstream-0.3.2.crate 19504 BLAKE2B 617b846c244ea4ccd6c7835a382afe85e14c245ea56b678f57ee12e9c7bcc1c0c3db9620eb4d16bf35e17eca38968bf04420b758f482ac5594670e6292c1fbb9 SHA512 b896e5208a2ee6a3c98bf3bb9ac1c52792de114dfa5709dadcac6183ea19ea63230dffd3217e571354a71d69b8eafbb0189e05f8f77f50922020de54e3aeecc8 +DIST anstyle-1.0.0.crate 13972 BLAKE2B 741704b6e338834696bc816d8a65ff933f9bff48e71d25269f04c4a24c3dbb06826d2f84f73a1dceeda99cfc5c8e3d59b3d07dbb404cc3471b86cf118d074e80 SHA512 5a0159b9f8a80afadff04ecbec3c1769cef712c77de8062b31323298dab9507f4a87b7c777e6335d310ec464b0982d097b5888b4b351c389b5f4419c2c87be7b +DIST anstyle-parse-0.2.0.crate 24361 BLAKE2B f796ddf1af04c93d7ee2721731e5cd22bb941919940a9edf6b2a658a8c39e87bd801bfd989631d64e9061067f7349796c56009ec61c02d754748181cc4d91a62 SHA512 fbac25189a0f4c0ddf2733c8ff74bdc2dc1a35e522d0201fa48f0f45e1d5d0a42e4806178507d0bc6a2ac22978b813eae5d57f09dddc80582de524690d87147f +DIST anstyle-query-1.0.0.crate 8620 BLAKE2B 2d296b5066fd6284a2410923215571e6df650c5ef892d6de7a7088a0996ca30608797feabc84f3c325ff4d07001dac80ac5067d2a9c9d15d9ba59a276b399f53 SHA512 2781be5c82293b7ae338ec5046fbeb130de9eb2dbf2e4dfaa73ca5233032e1e52c133e141b02f33d4bc36d996a0a3f680ac82d42d614a5305005f60547133c7a +DIST anstyle-wincon-1.0.1.crate 11718 BLAKE2B 2500845a23edfb47ecd156424a89789c713a7c367c3fef98d26e4e7b2acb3c6433d39a1c2a59813a98266b0993d4b750e9b6b68b7ced7ec5a04a8b13bad174e7 SHA512 00c380fc0198c49776c40aeef419be2fd2d6809bd2e5d86457f1658c6f4b2e83ebe8feee95855c3bbedd4200a917f582bd41b0ee0cf5d7d1d5017228885a58e6 +DIST anyhow-1.0.58.crate 43137 BLAKE2B 8e797dfab555d7076128851203ec1c6cb3c448bad52fe28c82b10518549971e6daaaca52d4a0dbb126549fd819706d6788e5322c6433ed71836c7f6051230b7a SHA512 78b21c51efd37e2be8f5672dc57f23ecd222d910604276da094754e06b86eb5a899d7ca7fb9f92566a13f70c116b05fed93d68a06320894d76a14a31e6c557b7 +DIST anyhow-1.0.66.crate 43770 BLAKE2B 8d74397c47bd64c00f015cf7ee279fa020ea39191440208d77e4a5fdb35fca531e8bb9b765be223b24050d0fd1db76fa5b516146f450937f84a5c113c9eca997 SHA512 7b4078906df2805d491dc2f29c4eec85a9f43078c0dcd9c05261c2706ed655953b693c4f59fda62547681b29cda9ac7a0789f1359bb18110403cfe34e9fb0dc3 +DIST arc-swap-1.6.0.crate 67342 BLAKE2B 6afd6570c3cef4ae722d4168c3320be1343c4f6043892e5e5b52879b8210a896e083d720797b41a41db04a08eefdcfbacbfdee1a7f2180e9755c868d6fded872 SHA512 5e09cef9fa12d1204db24f3397158a3f45d12dd0fa61eadd691bba120a43fdaa916ab09997e7a63d61a3fb7dada4e3266181f4ef413850c4bc5e59d2c6c5b9df +DIST arrayvec-0.5.2.crate 27838 BLAKE2B 51e2eacae0ef148f3f52d21ae00794e540e7ce4c013fb496dd1347ad91ffbbca199381fffbb064225f829216f6c5e915edfa64833f91fabdd13c3f011d86491f SHA512 1896b5f64b4dbdcff8ad234bda4ea8129bcacf87839347304717e94ee9f369cf5f4371755e453ff7d72817edb8f7fdbc726d77cc4f28ed05148dc89c7714b004 +DIST atty-0.2.14.crate 5470 BLAKE2B 2db856a9e898a430258f059aeaf7c844a153293e8856d90ac81f7d91a888c89198768ad5cb09303c23241fe85c560a55148fa56a303651a82b0edb895616bfab SHA512 d7b6c4b9a0f898d91ddbc41a5ee45bbf45d1d269508c8cc87ee3e3990500e41e0ec387afb1f3bc7db55bedac396dd86c6509f4bf9e5148d809c3802edcc5e1d9 +DIST autocfg-1.1.0.crate 13272 BLAKE2B 7724055c337d562103f191f4e36cab469e578f0c51cc24d33624dea155d108a07578703766341fd6a4cc1ef52acda406e7dba1650d59115f18261281e5b40203 SHA512 df972c09abbdc0b6cb6bb55b1e29c7fed706ece38a62613d9e275bac46a19574a7f96f0152cccb0239efea04ee90083a146b58b15307696c4c81878cd12de28f +DIST base16ct-0.2.0.crate 10240 BLAKE2B a8097674e84bb85fa72ea752d71446fc39e695fea9acc0f98178bb4e6569180f9acb4c7a9820708359d1c4733b57af6448015cce83f8c610985e6d2f7858fc33 SHA512 efe7c810102646733cb24c5cab62bd58d797e77b117d0fa5d651c34630f77de4d768fb99c981af5968393734bc32a2c1944a719f9f1a192b5062c0af8bb3413a +DIST base64-0.21.2.crate 76389 BLAKE2B 6da080dfc31c5b2ebdbfd336be6e71373918f9388c85649133363a60ee1647b6ad67c7dfd461b6ee842c3633e40593b6ac2f313585b3e8e07dbd690739f433f9 SHA512 3f85bdf846e2f8a2e0f2335749bab58c904479a29311143580f1de42455799d04606dedbf64d355af580d77867d7b895e1078463c7cc5a5fbd9ded9d7cbf3559 +DIST base64ct-1.6.0.crate 28870 BLAKE2B 60fbd9958f2519f293db2cd86add5160b51ff4f98718591b3e65d866e8bb176670ceecd5f6e365ff3ff488bf813860bf65d375a2159dd28b25e276e027303c4a SHA512 e3a267dce49257b6990d8d0842299d75b49a9af635082dfee25e314f5ab9067b339c877a4c7b012a1eaf9a84a7f8ddf0173c6f9d8695be81b8b4db03df66c92c +DIST bitflags-1.3.2.crate 23021 BLAKE2B eb990bb27b2bdeb66fd7212ce582cb36e1c616debbac85df642d0c82b25439e6bf9b1e811fac76b59e58ea3c1bbea6170d03a61e8f9a395e4334a0e2e2987eda SHA512 3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 +DIST bitmaps-2.1.0.crate 16717 BLAKE2B 817045077c198a84d114f68474b14515309bf56abde29398fcb47d7593d41c3fac069825d8a2aa1a598dea5b4865b94a21e83d03dc8d069672e1b835bc1ad551 SHA512 a423ea009bf61629e6dd7cb954f2781dd3c578d2216cd843957e0db05abc8f8c5971d2cca1915929b2b3c7b712450c817bb1de8d08715a1ca2641ace015a1dc7 +DIST block-buffer-0.10.4.crate 10538 BLAKE2B d819c4f9c4be85868e8b105fb7e479d2e58d3ed85c3339bd677a3e111f85cb1ff624a54d7802ab79a6e1d9221115f66388568340480fe83eae1cb448f19f5b11 SHA512 b7d436d8e627e16e6ddc300ee8f706a6cef28ff6f09eff848eedee46f84bdcd03601303c92ab8996042e55922866a59259948177c0a4496eed723523e77f6fdb +DIST bstr-0.2.17.crate 330350 BLAKE2B 90c3a48d78b73d7e36a3da9fda0beae6e91ce534d17198ea8ceee0b613d03297f9dd8bca30e1ec5da01d1da359a1da72b2c2771b77c82bebab5006cafd665192 SHA512 883eac8210d14f89517b4dd5e25d02c97cf31602ec74498b5e186112ba0f154d47de8d1c41a8f4e5503f3b53c064e2c976b60bbfd63fc28b186bc006e00f20c2 +DIST bstr-1.5.0.crate 346060 BLAKE2B 55f8b92b16947a02834a56d463d2f24f6857b9bfb590bcd250bcba4f0cbb06fd50793d6767e90d95bf48dd50b3e6f447096f8afd70890d54b27fdd6ccf1d99cd SHA512 6bd1be4fd785f7e576b4ae4a7203b1c1ff698d01f56b1f09b40dc1629f0ba7c958bfa9f6ca3cceef4fb51120707ae0fac9622126e1cdc477ee0802a57b34cd13 +DIST btoi-0.4.3.crate 10007 BLAKE2B 60a4c0511afc23ec3bdd07a905e82b501f1000081e6dbfca9ee6a0d6aad40ade84ab09d740fbc8e9656653a7f5a9a12a68ffa732618e8dc87f9cf00a90b6d3cd SHA512 35d54183a37c8adb11838724a061b38d286a92603a557ee8b4b80dd230649a0ceb165fcab4b6e41402284f2153e18fad5c246f83d99accb2fdaa8f32f854bd22 +DIST bumpalo-3.13.0.crate 82114 BLAKE2B 62a930b165e853aeeb40558079f570c75ed13ff5e8436d99309dc6252aa28ae69d327c4b438913d6c7543bc156f2714f0c1e80d759ea0d44babe24ef0f268ac0 SHA512 419368d6ca37474c2867751fe5706d0c747326bebce323d571cfc07ee0f022d8e8a7ef5692091b0fa804995b081998dafc55da19a53e51135a767bc0afdb9605 +DIST bytes-1.1.0.crate 49640 BLAKE2B b3140dd49dc222cd0405e405da9629038eb7d71dd4c22c8d6419ade041dc1118aa46df38f3426a36a44d8e5591c368ae32a89e71850dca7e810bbfff4441c37d SHA512 d34441ea146ccaf55da4d5c645f8ffbd008eeb3204dafd5961771abc85df52751dfd1af3975fb5c91eb83d9a43da4f3589bc3aa07c8d715906d8158f3092af2d +DIST bytes-1.2.1.crate 54857 BLAKE2B fae7e7b0e8023e4b5a9b7d5a390035dc5ee2b19f1fca03d885ad27611d45bd276c837bb63e9498e3f6d2f00d5573fd01f20115da21ccdf8606ce8d8bf5bd1b7f SHA512 39c19594f52af24b04eab319ab329e8ecb5732e4531184eb376677f57c8a6402c15bd171282498e69a4a472d82e308d0dc8140df0b7d923dca588aec90c4fd31 +DIST bytesize-1.1.0.crate 9370 BLAKE2B 38fcddbdb862e82a076b7ae1339b48c776f704d25be78935d08637351ade725e86e00e07e62868e76a1a2db894f223e1f8309f8b362a46405ec6c06f6e421a96 SHA512 36f35cf53c468cf011b231d3fc5d00c5224fa3d917854e347daeaaae53ae7ee36c4d8ba26788460d56c922c9ffb0eeebc60655fef7366ae42e221950d03f6715 +DIST cargo-0.66.0.crate 2038772 BLAKE2B 22fe5997b350c1de8db83b739b16fd38f6a8d29ea7c78bc1c84a1f6685fcbbdd2778ad7f662fa63f865dd829ea479e9d7655e5378a0e9ff9b27eb1156168f197 SHA512 e6f56db8f859663cae79850afac4cd569964e732e9ab4a4f9a92aef60950305740cf16eb16f76f1c658cb8896ba22e36b7dc574351afd749ffd7e8acc2723dc7 +DIST cargo-0.71.0.crate 2286974 BLAKE2B b58fda44939825c4a4b71f96c10bb18a666ad1f3712fba3dc937a5539f2f39ea85fe19e6c86890b9a6238dfa26837036f4113f57d988d69c2ebf874db291ddd4 SHA512 2eaacd6b88078d9c20eddf931b4ed1b51678f4e5ac163534bcfdd6cf3b3db379693b7190062a40480bec39e859c712d9b5ad713731236ffa278e3b6286789120 +DIST cargo-c-0.9.14.tar.gz 28957 BLAKE2B 33cdf9de62119750f2a8a26d5d22c882b130b86c349e5b1eda9b5b4674c86f37362211dcfd33f5dcbaeadf52b8eeba404274f3eec99b51b45c5afd21e2754a4a SHA512 ed2aa5d455e2db23f797cc45fad15273b6cd931ad3a566617aa93fcd39e54f4694be7cd450f86fc2f81764af6ecc733208d44bd045ad3afddf87c29b60687bc8 +DIST cargo-c-0.9.20.tar.gz 29135 BLAKE2B ddbb6ce7ff7f1ce47302a8df9b7e4bf26104a3daea53b181579ab4bae84e1d67fca9b4dec9e4d84ef487e18b2e11def7f0860f125b40b401825597f2788eb752 SHA512 78eca6ddec1ad7a34e8399009380680dd00562923747fc7e2d14bd25e88c20872550071015e51e7146f96f01c1662deca121d162b6c61f50e5be5e5308b74685 +DIST cargo-platform-0.1.2.crate 11645 BLAKE2B 7770acb90e299f71c60bbadceaf894a3100916b7f7458f9c949b683b39157d3e1ec17d850f16dfb04017b01d7734d41872d48cf9f4e1ea7414439cd7031c2330 SHA512 c716bf3a4e0942160dbf7be114d1621e1fccc23511e7b0a2b99852b99a851910bfcf8640c2d0d0a03d5a324e1a59fb5d4264ca81bca24e3f1a1ca653bdf2956f +DIST cargo-util-0.2.2.crate 23867 BLAKE2B b001d08fc9a5bf9b7a4a88dab99cce360e0bae445c2e416933d90fd01fb5054244e159f087a9a634226840878e26173e25b33be09116a54c0bdcf490e554b492 SHA512 f8fb4b3e0a9000e0b3056afc73e2d094af0486af9f0aae7d51dad143a19a11eb19594134e68fe0c176eb20626ca7ceafb14a71d9277dc70636eaa87f2ec3249f +DIST cargo-util-0.2.4.crate 24160 BLAKE2B b8ff67313d89a1556ad601b99cdbcc96991e8c1c8e9d2ae0a7afb253304a2e3d8929709d8b21aaebdae6112f8f8a888be7d1b3118dc6a00ae6568163d5ae701e SHA512 1c44beddd20280b7563e42295f0374906b74a3ad959d5e142406ee27852601ef525ab579d73bd29e94ce6990db484c633ea38acafbcf81a9ab664cb3ed7ce74f +DIST cbindgen-0.24.3.crate 195698 BLAKE2B f5c65e9c77a7c2f98a44382a6e4b852071b70bd832a3da3220bb8a7c4729a44b5964e651cd63577f555c5bf4e6594b1148a5afd96dc1d3f599b2fd1d523b54d4 SHA512 3a39be67a87aa7a4dd9baaf6b803215f4587bd7925c4315c5ec93954e021471919fa977ad2084f099c606daa392350de3557bba56cef77806def99c40318ef05 +DIST cc-1.0.73.crate 57880 BLAKE2B be8d7a25a54afdd759844e76aec61526fc2bd5ca09480e6cdd3bdcf27e5f9d3a88dc16cbcbf54cd021470a7cc521e1ad468116c112bbd30752bac0d5486939ac SHA512 980f012b90c6410144f6de4995048337e09214f19603076db6d4edb88e9ef9ac9e8c6e25569f66c2be3a47e99298f5886dafc102e1a9122316179aa26bc1c985 +DIST cc-1.0.76.crate 60132 BLAKE2B 9e8dabe8cb64a8ef7bb4a91d4e601a9175712da00644125e0e625b0a10a4815ed1a3c93f32eb773d0c2215c74b8f0d73a35831291195dff65d1ae79b8e423d8a SHA512 9a31f5a78859f7272cba9289d0c1b7fe01cbbe5ccd20a729141a751df7f5a576726e2b7e038cb7142e63c59a5ce7cdb83b93c32d5b5f3f45bb297ecdc1b9e983 +DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff +DIST clap-3.2.23.crate 219435 BLAKE2B e99a928ef61a7f9f6d7df2c38acd480fc86bfa3885d8b875007aa5bc855396641ca6772387de2eadc1d545dd201434037ea9e7fd138395831e4755ae5a917a7d SHA512 1f1f2ad07a0f8fbe8672f4252edf260ffb5e024a20d6673fb846d59e245a226a43675539ccd3cb252571766b1f6511c68c5cb0f2351c8086955d49c37f87338a +DIST clap-4.3.1.crate 54225 BLAKE2B 53dafb5615c268b191e4c800516808136ac0e4a488a6ba67b55e02303b0412deeca321509f7ad094643f52a0dff758d420537b20a2f706001a8351017dfdf954 SHA512 77de41e119c0bcf6cd6747384c7da2bf81c0b98093c06c6e2a93876188c3f6dbfe8603ae7b7ad7437b05dae833273861c638823501da7a18fb30f74331c5c805 +DIST clap_builder-4.3.1.crate 162237 BLAKE2B 8c42a025d7939b08e13d088aa5894892c5910b035341bc81afc132bd03e49422d100bae363db4b1bbef1b47944b74494d8ba49e64efa58365e50c34995611908 SHA512 a5e064b66732108247a8c7617ac136eb1218d20922d434b2266f89d2e74e33ee31342879d462b85155d5213d5fefbb3fcd0e9b6bd232f75188fbbc7cea2e8761 +DIST clap_derive-3.2.18.crate 28208 BLAKE2B 05a23083a8e792858819d7eebf057257b1d49b0e8246d3f24c6f812456cbabfc75d9271c295a0d44539bd531ea6808ca7490e787c1fcae63bce045422d33d280 SHA512 d5349b3d5711bd4900173aa5210d7c4aebb0bf70128e11f26b362f5acb43687f6ce5ef73e4d614ce9c1d649d34b68ff15ab8b65fdf1898fd295ee4b4a7523497 +DIST clap_derive-4.3.1.crate 28956 BLAKE2B 83b82ae7e9a2ee7865183e9f00a204839477e8e909b9ad22f72f38d808bb8e21cbdc6e55f83b248d4949d6a81c5405755e20707d28c38b6cf181f94627b1fe12 SHA512 6424d952d99997f08347e46c1a65a77643be9fc708a2d95cad94c20e48c60af0ab46306e63d49e3dc4d153a21a7be2264ff3f0c6ae876c4fa1aad96c20132c07 +DIST clap_lex-0.2.4.crate 9652 BLAKE2B 5120b508dedf52507068c0c369a45ddfbe0369e5c05b65bc5a78c422b2a4bf488f9ef1e0bed4e335450f2c08b80148eb5f7efed678039b5a94b5bd666385939f SHA512 6c05e5fd850befd45be9005af7252385f2304aa28a107413bbe329d97aea835f7acfd0bd169c99f69f466ab93d6e1c35d73a4e48343457a06fe2d6be5bedde0f +DIST clap_lex-0.5.0.crate 11792 BLAKE2B 0409c9d957ea6a566eb8b50f4212702df038d04c4c38f7440d91cb4c58ec887940f0cf500c4c3949c2191399aac3f5cb1ce44868eac587cde90211d3e467b9a2 SHA512 0149ed7c2438a19b4857f895767550d783711078f07bfa9ac8ca531e06f51c7388110f4d558e30bf503536367cc370cb581e8deb6fe51f9b5460a334963daacd +DIST clru-0.6.1.crate 16507 BLAKE2B 6379e70a2d75530bde76e82c370c4481ce84d8196a395e94b30dddc1126529774e7ac662da2611e4da10cad6dd54fbe55e1bca4d554369ec5f4798bab59a9d53 SHA512 bb9303ea245e3df6321bbf3c4cf9f899648067f8d3950638387badc79ab37e7570ee73c90af96dfe4eefc004d116c5fc77cc8d89a2809defa2107cde530cd192 +DIST colorchoice-1.0.0.crate 6857 BLAKE2B a0818be1299717461ffc1bcfb6fc53a0b3b645aa8c45fb72e045cf2d876fa207948610e58d6a837aad24838ea9616e80b0558ca3eae03fdf9bc4c03a8e5ba52f SHA512 53363f2889cd8e8a3b3ed10c48356896c0daa72f3c12c9c7804707ab0dbc07c0e34ef52fa4f0fb1647311ce5913168c1bf62c2407ff86a33f765a9e6fccad551 +DIST combine-4.6.6.crate 132428 BLAKE2B fb52e724a52f1a551255591fedc134178080ea5efc0c488efbc369e6272f7f2b87dd7d0ce63361754d8ff0cf1b0a59bbc7b0396c50c53210f3e2c28ac965e0e6 SHA512 ff9ef9329de2cfc103271a25ad1fcb7e478f3328843bd8a65653e80b74112728ad4a33326a58ed7ef8cf39eec7c3b797fc287295ba149ee0dccb1de9721b5819 +DIST commoncrypto-0.2.0.crate 3009 BLAKE2B 174f3099955d595040005ef201361bacc3084f5218efb0f20df8082b9bb683909a10ade64af7062edfafadb9674b27a06836f2333fdaa7d2926b207355f7a40c SHA512 61f567468221cc46b30b31ce96dba26e3dd3a9245a8d37f9f8a615b346d992c261db059bdc678882415c608a806bd45c7b38a5bfb562ad96a111cee8e1082e85 +DIST commoncrypto-sys-0.2.0.crate 4338 BLAKE2B 992a06d56adc97a9d02c547766c2be2f1973507fc0083e50c623dc4ac554681b802f3fb5ef61ef430e4a58bda000170636cf6e38430550e0c0506438901fae20 SHA512 06851fbe0b87224f6c8333964237badf57f32256acb7e647ac2da16561701b7572c12509e042d0d1032a54c94c1663bc2ff19ef5ba3a7daf84276f2544bfba8e +DIST const-oid-0.9.2.crate 44606 BLAKE2B d254b1d50d3d72a842e247fcf6cd0bd4ebb036db2a1580b2737ad9f0134288997ebc5f17b7b9f3c5bc532f8fedbb9aed0ae2a6a672dc23e66ed3902fd3c96f74 SHA512 ad75da209947af32b4020ef73a04c7ecc74600fe7ea70f33d1486f4346e7a3fb1d5e3a586b373f49b8b494215dfaff251b8d40181bd95e43373e8bd887fb6708 +DIST core-foundation-0.9.3.crate 27059 BLAKE2B d94fec51b1b1055c285609f4bba45c5169a8cc775e251eac7fbf0da7ef894e1be9ca9f4236b82b67be0610bdf811366e0c6fd3cdb671a1e83c49717e2c5b2d03 SHA512 de07967c4f5e2d2e730b6f21984c228dad2cb2f55187f13074a2200f4ce9f906763ee818267a9c67ea560229db7363473b230670a6dbd224fc335f32ba03d072 +DIST core-foundation-sys-0.8.3.crate 17519 BLAKE2B 4ac3d9ab16753dd995abe82f158d460d0d22184ab55d260e73b20305cffe4e03427dabfe0c8be968b6c3ecd348be2e17154ded7c9bbd5a95334ff266fe83bbf7 SHA512 a3ba3184cef65dafe8318c4db7e59eb2749dcde7b2370ad20272b0735ded0032daf2de3fd0cf55eb48448a335f5b81e8e745f2a647f9a43bb85946ce714bfd82 +DIST cpufeatures-0.2.7.crate 11563 BLAKE2B 917f8ce2675519b4d5d89fe09b02e147f00a915d195158a690b292376bcc2937dee8f76778506556ecde0187c74ca8c046973f44e1f34e4c8bb6809d2d4347b7 SHA512 46988efd895b88751200dd9693a1040f698c8b2ecd5d3d4ae1d8055e719aff262afea764083dabf1d8202a51e7e16b4f51adcffc8a2424c841b58840b6669490 +DIST crates-io-0.34.0.crate 9543 BLAKE2B 30ef8eacfd84cbb5f4b9aec4fc79d086a281f3fbfccc46b8e8573e74208a1f34d496c0ab00dd9135bd441e85c4e9dc9f07de55b0bd36fffb3a3849bd01174a69 SHA512 14cd86c9b065ae0a76c33e9b9843979a5058a8fbbb91a1c92ae989df3e0e2f5f598d583a1215f005eb0301fccbe2826acfac7aebb91ae90d9484fdf5e3323de0 +DIST crates-io-0.36.0.crate 10059 BLAKE2B e691bcceaeaf905c2035e21e35504e1bf9a6dbd6ebf1c617d6b13c01daebdf4d276e85c338822bee37834052c4252ea104abd2c39ac4646ea63ba9928ef7ffbd SHA512 068a984f0f421aa55326f368ed55003cabe5668ae5a1f741f7ac8bf8edd1d3c1fa4b36453b3095a78bc1552c5ea2c1991b0aef94fb6fdaafd85832e9a6bc7a9b +DIST crc32fast-1.3.2.crate 38661 BLAKE2B ce3762b03d24d5367d89738991c060f4b3af7840e0a7ac7fc17d01ed438caf964bbaefad0fc4d0c438dafa5a578429ddd353c71197f8b54b1ec441395f2f7ee0 SHA512 a683943e252afdb1b9d626a07533ed11cf7a63af603c19640056c5d2b9c884ad9aff33ac54c0853ffca2f6cf94b0730eae6c05abf3e53e55e709d180c8152357 +DIST crossbeam-channel-0.5.8.crate 90455 BLAKE2B 017132056f1b40e55fbc7a09b75509d72b0a6123a0e5ea5d6104fe822f73b3ccce670d711d3b84b5ce743dcab5f10445297a6701b71213b77c0d56e2c3fd7160 SHA512 47677d6fe63050c51393e4a0537a3c65d7055c9eae118ebe60c5d716b4f47f23c2b1947b1e1b66bfb34a57c4db3a44631d323e996dd545565fe4f58c25863ff4 +DIST crossbeam-utils-0.8.10.crate 40672 BLAKE2B fbc65ab8a68d66f27cfc8495652ec5ff31a3b8c4de41464bf3a9f673249c2fd5ba4bff7ec8c7b838d5903328346214f91fe075bbe7a05a9b11055b7b17376ac6 SHA512 e0ac772262677e7228e4f2e06099ca788f4906f40fe5dbfb0891431c993c7e4d755d3ad93f55570ae06c1f06df14801edb3ba4f28271c4e83c80dbba2fffe24c +DIST crossbeam-utils-0.8.12.crate 41785 BLAKE2B 486aaa80eb0fff5740690d8a63c7b41dd06c19cd141f4e12c8f133f5ffa93a121d4e24e19390851051ef07ba63480d9ce3bf751621ada3a420ab6982a0445e28 SHA512 0e1f17887615b1883c3a0c4f0fb908999d550bd0041e8333eebbe43a964838d948fc1e5892e4ebd31e59ad53e5fbb5ebf6741dc1dd8b61907429f691c84de2d2 +DIST crypto-bigint-0.5.2.crate 69069 BLAKE2B 0b946127d82a3474379a9eb75d41c860fdc972ddd5781cdce0e564a417da710d8fa6b3c1eef3a23c3e930e41e151a3cf4728b93b97657e30337ff03999427173 SHA512 8f36c974789faea7e8e0ee45978cd59d8fea85394948499ba9431f2f8c75a503e327ea7e0a123c810863ae454ba62944fe1a4a4575908e4958fa071337999205 +DIST crypto-common-0.1.6.crate 8760 BLAKE2B f2422bfb89c15d47a8f91c8f6695e05eb56990a922e3cdf3d426044736f9932324c0d899a151a6df4d6683e6a6b21659c657d3988734014c02cd854bb4b924e7 SHA512 471dbc43f517089d2cfe0868e29510c6ca579875b3bb5d013c70796db969b609b6c4bb35c9a07b9a2917012dc5708b717d48e317a20038adbe7e7039bf3ada6f +DIST crypto-hash-0.3.4.crate 8102 BLAKE2B 8bcf39d195d40a2e6d899fa254c9f64e982d742fb304f4b271b75db305d5afa8ea5361c0b6adb23c0fbfd212f3c4601bc7476b4874eaac00a26c8a65b711b0ae SHA512 57d020650689c988859f51ec9252702a7e8510526364b00058b263f4decb249d7296811adf3b8c5e76f8aa744cd5e444aa198f3dfe134c98257b99cdeb824537 +DIST ct-codecs-1.1.1.crate 5388 BLAKE2B 2c5c8d3264428df7b6576f7c624468584e2aeefab2f35b024d2368f3fc2c77d8d1fc634a9ad5480dd5435d4d7f608434009eed262510608d74d264369e37ad0f SHA512 12538da7e45b46ae52fd5bdffe5608d64141bff9190750f9fd8bf3c0c73889c3477a0c988c37965ab2f9d773df596b5d01d15976268cf9852d0324a9660e2137 +DIST curl-0.4.44.crate 91415 BLAKE2B 0193d51d0ebca5a9ac87a3a2537d573a15d8f0c47e0dba5ad3c0401dfe4a96e63c43a1be054433eb782f90ec61dbc60a12ba035e4fdb033eefe53860d41c3494 SHA512 499c3496cb019856773da10c5dcdf539c3fb7542a5e5dde4923d36e0f9274515b43a68bd31fc18a9adbfa9061d752fa698dfc2fbb6a6b1c1347001b3d112b3e5 +DIST curl-sys-0.4.59+curl-7.86.0.crate 2996584 BLAKE2B dd06c7cdf7740049558b8296d16e2485ee1b83692a94bdd2a037ecd45c0ec88c32bf48a26ea985c8de2de84296edf3f52092bfd3ab8338e10066e0a8defdc33d SHA512 048c5dbc3e1870c9b205c107e006c7112d01f4f7f03eb301ad9ca06ef29d03b08a840717ccc45883f19f1f6734958301375365653ccc6e45ff99151bd5e03b3f +DIST curl-sys-0.4.63+curl-8.1.2.crate 3175347 BLAKE2B c73a265f95920c10db0c4e9779d11bce1e70f4d817bffef4fcaf606a8a992466b52947869c3536386e83069aa3235440c207dde34eb90dda16f06b62eb3a8925 SHA512 50d2cacce02135dc316389eb2c486226f54c930bab26ca732d88b99970112a5528ec0bdd0e98bb82b17a8ed4db56ac82385bb36dbf5049aad376f930a5bfaaf5 +DIST der-0.7.6.crate 83585 BLAKE2B 7890b0ce9f0016e3a03146665c0a697cf63156e6abca373f04cf571191d4923d36b223b9cbca0ea24b32edb52d567b2d1f5c85e7114c1193e56d8e3888a16f44 SHA512 54a43a626a6f3371e15a3fe3e315444887c7e1182cc035702661f1ffd1984fd3e4c0b7758b955fdbf0e4d5146a3439a3570568dc50eef889b3485b409d5cc5a1 +DIST digest-0.10.7.crate 19557 BLAKE2B 61e69d78cb8d6850ae26ad7ff2d52dd6dce820d8c621230def11cc0e8aa6d883a6e1b25340fb45748db52a8ccf3c8d36a8aa0c8cdf4d4eeb4e3f870d86abe09a SHA512 0dd8c012468ab9011b89413ea4d3647d95b1f683b020a0e6274c95ed5148638b56fef19cd9044c837ad53715b582b88eed277fe96e917c27c5d7abdbf7c3794c +DIST dirs-4.0.0.crate 12503 BLAKE2B 02c0b9b68d09ca713e365410c72d761de5adb87a0fc5176c4f980050198cc05078fa67b43a8af1b16e80e7edf41a428dbe55807463bab59f3fade09b53d7399e SHA512 be582e5045f1916fb6b918c8e8c5907b4b663534025e4227ea4828e2aa9fe7fbcb3c48f1f0d08d163ba684aa4404076ac210e7f14766a09b9ed89a2825121b3b +DIST dirs-sys-0.3.7.crate 10597 BLAKE2B bbeadbfe15d9b92e4057cb600f1957e066e295e0208e1645ee49fa76c55c45e273ae5b87337eeb398dd3ef3adf0a5584087b8fc0fb780aa23c6d9392029d6581 SHA512 e630964e4c452950a475c10a490b49b2979dd7dfda48172b905cc789153ae4a0ba2d7d91f690705cbfff23737c4b4a339eb0c49e922efd7d68a92fe6368a929f +DIST dunce-1.0.4.crate 8034 BLAKE2B e1e7ffbcf1e3632036c03303ab46fc37b2b0a991598790b2dc65d7a61341a78bf555230ccded8fbb87d6288282af3ed2a8641212a0f1fab929bf99298e878b6b SHA512 f57d9c53c177bac8e10a4b56ae421c604085aef0f264b8d6871abb7e1ff713b55f396c5c5f24422763319c504c6ea6a774416af1c2ba23ba7b67b2282f6731f8 +DIST ecdsa-0.16.7.crate 30682 BLAKE2B f72a2ecd548fac9ef25db77fd56584c6ae33052501c6d2cf0373dfaf343290724eba0ed35b97decb7a42cfefa1ce1c8c6f00741ad2f22a6f783031be2580b32b SHA512 93d7c274cae3c36a563deb2ea0ab97fb58bccd135b7bafc309bf1c2c8c4f6acd4f223e0ce22f5a227851debdea0ed3b5f88901578e7dd49d4af206ebe2aa0056 +DIST ed25519-compact-2.0.4.crate 29897 BLAKE2B 462d34e30670472a7b98e26b9e381f32f4f4ef9f9243cd2608e85d1000c4b944f5513ba50521cb5af09f4f50b5f49e21a89380f0797723d393007b62d87662fb SHA512 745c03c94eba7135693d259c7382589255e2204df4b890e9b1e44b9150f54579b71df6911cbe19e47a4418c154358bd9eabd73308383884ca071fc5871a0fb4b +DIST either-1.7.0.crate 15492 BLAKE2B 3ed1c5c27e7bd9453f83b82d3f57a4a73f965b1943a7a17d3de45ee35f62db53976ba9f2055ba28c555500cda528ff3a2d7ad6cd957540c91f512bd3adf9c5e6 SHA512 894bf3980def07848a2911734c02eb0c5c5d2ff3ab7656413d2acfd164d120a7c075e0a5f3fb95243b8bda0257a5f457117d5c6eafc146f3f6aaf6c6fbc4cf33 +DIST either-1.8.0.crate 15992 BLAKE2B 5b9254d54ced1f23447cc78fca74f12085c37e3c2da441b30521819025ebb808e8cbd9cbcec811f8b3951030914c1736b8bda61744d1323af8c5b8b0a3ef3ee9 SHA512 5089b218af067b51ee39c085568a1a6f542e8f68b362207bd7126cbcd2b76783cd21cc1517a1d088ce4dad1714be03a3660f50e9498a0bb43a8676cd7ec490d2 +DIST elliptic-curve-0.13.5.crate 61528 BLAKE2B ba2d779fca6686453ef066b6d3d8c0aa9f0cb14e9f237639378da536aee67b6eafd017162c656cfad8eafd2e1a2b1edd02bfcfea70afc5003cf06ca101dfa8a9 SHA512 7bd65972318e51401c700ba6007bb658b46faf9c983889dc43449cc3ae817f8bbe9f38a549b80d3a785bcd921361476ef44f0f4335612a426299c57effd9b4fa +DIST env_logger-0.10.0.crate 36574 BLAKE2B d2f387682059fe9b4566ab995be449c58c57b8df5e5d8bd5ffd153aec1648721d8a9606d3f9aa034263651f5182043e08b6cc08d2d29d0a10f6cc61df9949a06 SHA512 4dd02f9d333a1f15657167ef4bd403eda5426cad17e0a4a43fa20cc65449345eb4d3fae2d6b10a3480016b9e23497fac13ed7e70b40c9450ef430be9f910d3e4 +DIST env_logger-0.9.3.crate 33291 BLAKE2B ab0f0f85771bbdc6c7709f7cd4c86d9eaf436b073ce614f9297f60e95b6c9e6141d8810d1dccc575893c796358ab65ba56a281630ab75350e8f421167e5d9c52 SHA512 a3ee86e77d980c2eefe4be32d75422aa0f9a60a43fd11bafaa3c9e556584cf65c36976a6aa650f87426edfd82de0cbb919e0906cdba6db8b486b4dd4b2583bbe +DIST errno-0.3.1.crate 10348 BLAKE2B 72831d0b69f95884a69918249cc0e814eb5eade3205331bec6d2021f8b01a42c4c9b494f2717033d65a4c5230c8490b6ce250d349c1e8e177b20e7e84a860020 SHA512 00d64157d066f1e7601c522c0f4e777eb662ca5cce64682f616de0734857765c343396f7161ac2908c3db0c474995ae157bfe9d8a9880743724d9bd428dfdf54 +DIST errno-dragonfly-0.1.2.crate 1810 BLAKE2B 781fc26dce5c33d83b9a1fd9be2b2ce9ac2559aaa858957ba6777e143b1e44cdfee48e1b47e3c91a95075a51921d1a421d0b45eb3d8de827cf4dd0ad744a7d8c SHA512 f853f1e1b8dd0f359a8f9a0399b3384c1103cd090d96e2b2204f91a40d40a9eb99383d4aa6a11e5470c51557afacf452d4be2049600d4235d27f59870fa3b916 +DIST fastrand-1.7.0.crate 11265 BLAKE2B 318f6c903a0ad0d0eac39638aceb162739868efd61dc0b54f6aac4c96b7b1283c8d463b48b36f9ea1fee640a2081a0eda39238cd53cdcc24efc4d17b4a3a09d4 SHA512 6a1a8cd4f6f9bfff07a4ca18ef84839e4427ca9bf9b6733bb15b1b70cf2439820d6a770ae9f3e5e10166a6144449e37e6f3f6ed9acb761688207fd7c53d2c673 +DIST fastrand-1.8.0.crate 11369 BLAKE2B 93e911ffcec559e30b2fefa44c4d74d1ffa9b8ef1904ace608b8576210bcd41a2b4c7adffc00cd3bb40996110d07316cf8068f4754a879c6cb47e3d41304d406 SHA512 82cbc2b29b97fa3fa2c9372d3e8c390586a7b39f6c7d8c45f9b779bdfdaa2e8a3b44bc7bfcb3367c18120726facc753c9827cf63a8fb4ddc2667509b16333cb1 +DIST ff-0.13.0.crate 17688 BLAKE2B c32379ebfea6cadd162dc169e0b413577fd191620f4f2a1c7d18e50ddfbe561ca865bc3e0fee3be287f43f6c9f2982992cbc56629889689bcbbf652e512da80b SHA512 eab19938f5a2cddb0fcc78b0724efd788aab7f17f04c482e0d06acac4d1cef2bcbfc74d6e4b2d9f535f9c955bf39c2153e010bdd2fa72d6d637d44baf8bf5f63 +DIST fiat-crypto-0.1.20.crate 475267 BLAKE2B 554c0f2c3083c141325667c7331bf4bdb0127cb98f66fc1bd5c103af368657bcaa2e15cd4644cc6adef466fe5619199cfec126f847cab193d17fdbecc1c8fce6 SHA512 2d8df5af1a08a80901980ab5943f036a28e82a582be522a90fca47df94e677b516c3b7f663ad0fcff5a25e6d448917921542714e519f6740a6fd7ac8432b734e +DIST filetime-0.2.17.crate 14484 BLAKE2B c181cf4c3ddc5831c006917e7432620a62a0ca7aa379ea7f1aab9b99a8cf725055e8510f7f63ae5add770dc8f91c824d3b4e9e86ec0f3e7faa4e9a647c431a8b SHA512 3f7cc4e64381f4076ae04bbc0adbe2ecb024719f1f2fcc2ef537b0285261e03b8af7655d2db72358185dcce109df060d4a4a4015b3168fae0f6a952878860087 +DIST filetime-0.2.18.crate 14622 BLAKE2B 736ffe3ebadd458eeb24f8c5970d1350bbe07b179e0ad4f0d5708197bc91378939791cd331326a2cde9e03a84daba5a48a7a4a1001030fec4bcbc8af3741cb31 SHA512 d1631a50d0f1d3f43e316c6348a3595ea4a7d1116e904ac2bf6586b76ea5aef98ba84ff6e6d0b2a08de2515b8ad40f52fb95d6ccfaf1f316cfd7c5f6f8332129 +DIST flate2-1.0.24.crate 70191 BLAKE2B f5ff04557dd0a57151b4c704cce60622157be4c847fb0a42eeb5a9d531ba28d34b41632bc1b34d2f935ab576f152479f72877dc4e6b296edf125becc6e6d52b2 SHA512 8faf97c28dcc4553f4880295677b1269b4acbc6518d006913d32d7e319990c6631e10f1baf7199b96e03f6de95b9e2de04502522bb1eb45bc301a0fbb0bfc0c5 +DIST fnv-1.0.7.crate 11266 BLAKE2B 81da85889c91b6567e0f555e37dd915f1bd919719d1ca10c31a6861d7aec29a49ae9c1e8bc500791bf9d6b8dbb318c096d04872c5872a4b1f7d45fbd8e12842d SHA512 2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334 +DIST foreign-types-0.3.2.crate 7504 BLAKE2B 520818b702d990d296ecd31a8646850202509ccfa18edd0e1b260289619a6c351e758f317ec0824bd76eccb209b6f087057c25f1bd01a47897715013dd834867 SHA512 bf27b8243ed482c202d120383374f19ff09422535e24b9c1aebccc66529bf300ca17b8bbc76d67f98ac092e614497afe3add9dc68aa69c93074df05762f91232 +DIST foreign-types-shared-0.1.1.crate 5672 BLAKE2B d2e42e04b6657e7a69fe0bd20c672176629c743e49a55fd007bb30e289710b70045d445ae9cae0eeaa747ee708c90e8abd9b5fc39bad8ec0666befe1b696d4f1 SHA512 bafdb2143e136fb0818e2ffd90b5c862b7181647d6568947d4e4531012bbf7a57b597221ec7056c1b562dfc0c3b5dead26d1a4111ebc15e7863737a873518a4a +DIST form_urlencoded-1.0.1.crate 8773 BLAKE2B e2d2224dbd85d053343aea29ef1bd540fb8be12fd600289e9c048e3b74bfb009d0770f8296556309ef756086f22feec4713dfed1006e1101075c8897be5471cc SHA512 3ab371c223561a27ffbd35cf648ef4a9145d47bba9d71900a7c54cfc2f089175e9361f6352331a9a7fa018923b15e7a3553c8f9ff9fae80e1626e641a5faff68 +DIST form_urlencoded-1.1.0.crate 8734 BLAKE2B eaca73d73d16242f3fa3e38e23531c67c01404697bc7b7eb7c64fa04167dcb403a41818487fc46c5d9118842818472d549a2f5fcef5e4d962461e1c103d895d1 SHA512 9e245495dbf235b147e4216b313f2e6a96357d2782a66d71c08c2902c6a065701ca8ecdbb6b2035983a83c44cf36c921b5c71d63af0e02dd39bf5f8347117e11 +DIST fwdansi-1.1.0.crate 8280 BLAKE2B 5c46e66a7fe25e02aaf42668853a0eea8ab3bbf9d160702770d94f8e6c4b3efcac9f840387516d1d14cf34271981ba095e3e0f7a5eb009b9d5837f94f8fdee3b SHA512 5f91a6fbc40b00a06abb6686cdc0389a837fea6513a9b9bde7cc4ce5cdb19c180ab21ecb5927c41a52c56675991ee10d127335c1f6d8c52dc7e6b30b32411370 +DIST generic-array-0.14.7.crate 15950 BLAKE2B e74c785e3127095625951da192a018281ea9976aaeb11019f9088c3f27748c5fed1ef25d577150864486dc48b5138d6892e42f99979339f711a66fc70756c82b SHA512 363a7b04e4102f9ca63d429721c1ada6272be6bf0a2e97da681faf76381f73f0e3acb86623b9ce2dae441de9fda704088391779b9769ec02b3c8c9f9f35f897d +DIST getrandom-0.2.9.crate 34457 BLAKE2B ccf7232ece1047000140ed6bb9a1afa784be87b5cf83e2f58dff77abcd79e34120b45336cb05e47fbfde36407957fe9da8b04971092ec05f67b321fde9142d29 SHA512 48e341125223945d1c02c4dfc54df303ae27d3ceca0d5a30b42065f5e40da600cb2010bb59e88af6b990d54b5eb4bf83ae5bbd27e13e56363f5f68be03ea9082 +DIST git2-0.15.0.crate 198983 BLAKE2B 0e340dedef36339cc6ce4cf9ac79014e7bcbdf9ebf688986d1836c3e2f480998a60a2722017381124682edc5dc511368497f03c9bd9a8c4d0e7690682789bf88 SHA512 8ea32850e592cb9bc8caa0d7a04042e284c11b9d46959807d8e6d496d93946342dc37fcdf1ed354010434798a404f415e8e980fee2ce4f5cb998e0f8736b5bc5 +DIST git2-0.17.2.crate 208040 BLAKE2B 7cadbf7317ca3bb944e68c278a7daba75e78c12b2881637013a4ebcdbe12cc13eac6382753daa05aba4b7a6fb37b5f297929a123bec020727a497414ad714503 SHA512 ca04bc97d0d6e862376ebe62fde456b03eb9f606b06c1703e1afa98791ae4e702694b7ec8cd06bd059500daca9acf216d9f3dd3c3638018d4cb9388b144265ab +DIST git2-curl-0.16.0.crate 9289 BLAKE2B 6112a92ab483db1511bebc91ea601bfa0cebc689f7c0d3fedcbc2d4cc04d46ff0a40c6b90522ace541f90bd62febe9ebb1b7ec82a86d216e83eaf48dc1927499 SHA512 37dc34e7f38d44d07a90366624c0549eb172aa4f517893e489ab9a5dbb4aa36177d2b9dc361bde9b503d6d0885710f885667dfa0ba9ac2fd476de32018936aa1 +DIST git2-curl-0.18.0.crate 9515 BLAKE2B cacdb26915cb54c55edb8e22916b17e4b7edcd8726c64ccf75121869c2db56f6e4176411f1ecf314524dd99f2379d4fbd7ccf5752e1cba6e868f43137b59d51c SHA512 5ae0f79b6683f3f6cc136dbecb90c005ea332b74fc90f8384c2f057f886a2e61b76a724736d7da21cc527c3ce09b2c88e608f7c74e48341ccc2f2dc495d8aea5 +DIST gix-0.39.0.crate 221823 BLAKE2B a2ae8cda6dfd0cca543c81c7cbecc7df8524eaa70a7267f74e31c4e4e5fdc14870905a6d8bbb7473e54c16884b72713d1e0c888005fd7ac6269d09cef99c3b02 SHA512 50e82a2619feca44f99bc6f7c2bb51a73f6ab693285a7eefb44832ffb05044fc3a98488f188e73979a4db2ffb59167efe669d27f46b0051a7dd97535cdefae1e +DIST gix-actor-0.19.0.crate 4126 BLAKE2B b87f9fa1067e928ee252964fe8b8a93fe3d7cbb77790dc763c6dd09d37dd324c478aeb92b4f2c3e186dfb8a859a8e1c378c2c7d889f084fd4a22680951a3fc36 SHA512 dcfce8e0c413e3a88a812e85b92e9feb1807ebe15620c81943cd841ad890557b52800e4d83610e2c54e3bba19018ee20bb02bfcf9a034e4901be1a00d166a74c +DIST gix-attributes-0.10.0.crate 23104 BLAKE2B 6ceb44bc473f5266a8229c6a71f5b61642aa72c7bffbabf9a9a32f807df473a48ebfe778d23e9132606956fff07a7e5fb857693a358b182a5baec92a051a8cc2 SHA512 b2e43d617771658248a680bc0a07720ef7fff18089410452ad8427c008a28554f053d2048086714993a07c8258e61448ea616d3e2bb30d2a5a11a6a88ac55b40 +DIST gix-bitmap-0.2.3.crate 9818 BLAKE2B 2f0116017b7713ac6d27b864c43fa05dedcaae62357d88492d018f78ff11ef783dc9e3cf22bd8267bd8dc1f13fc8b0a8405d491e0cc6c2bc24a5e0e09e3695d9 SHA512 2b17c0876a20d23d3658b360cfd745b1a1b01046754dada21bb5ab8e84ca98f0421f456f40c547f1f4d13e10034587d51ed7895e0dfd798f95e58d289132e3e7 +DIST gix-chunk-0.4.1.crate 12248 BLAKE2B 49a55d3ab4391b343ac3b42af93be8117de5946a0dbd5eaaff45d24ee456d8d6336f84e9f72fbaebdc03861a764fadd9e0c2ae856d6eebde54637d07ea298b44 SHA512 6fd5ed914389573f59f8fdff47cb47050309de385996456004ad8a9e4ae67426288272715df712a3e6124b81d456354684cdea1f892624ed3961abf3f73683f6 +DIST gix-command-0.2.4.crate 9212 BLAKE2B 889247edc864c9ffc3ce4eaa189654f9a599b9adc1d83cdefabebab4295951da1ce48ccbb386e400ad2ab850f484fd5acc4e93f2705bab7cd86a9ff9aedef4e5 SHA512 7a777ab4d557fee97e067cb602b80d55f824347b2c7c18c46abadb4f644dc891c926d6060c0a93823fb21caebba8830ae65ef0b4569d4c5856b7303dc8343852 +DIST gix-config-0.18.0.crate 134292 BLAKE2B ee0b990ee477bcdf35436143a5aec21aff306b27c955f7cf822b090c528f39c8c9d54fd787c3e48b7ea8344927e47821b72013d31861c72dddcd238aa5021599 SHA512 e8c275b4c422c23f4b7f649b959843ada564a7ae1fa0e69d7058338718499855d50afea0fce796eff93b5d21abd4700c6fc69eeb542f499abca32a844c921c9d +DIST gix-config-value-0.10.2.crate 17543 BLAKE2B a86cd6e8ced82ba7d18b0506f97b27b89efa2178753525fed0c06132760f4c84c5d0f51be5949a1566206d77d7cb16c07728e6a579cadcf66a4e7dd6b9dedd2c SHA512 60c4deb158e04d2a24d9c1b9a3410d785914ad3facc2b51c44abe25bc585ca79f9b6f881670a6fc02d8ab82ad849cd8a0a0669ccdbc9b3909ab67fe43a72710d +DIST gix-credentials-0.11.0.crate 36570 BLAKE2B 410373775704af9f11922f421c274a00d8be356a34256b3affda94fcc54caa4b44c4bfa22b9ac4f97028000e796b1703cf585b987d312137e7defa71b5a1d116 SHA512 8502b7723daf15d88c4f9abb2dd84c7559758ce02628c6dc69f53c59df4279f567cbeaeaa97b4aa2da93008e6e66005dc584a26bbcdc4736a762a23ca1002e27 +DIST gix-date-0.4.3.crate 19793 BLAKE2B c71c9467cc7cd48a2f867f6df014c46258667eaa9da249ddcae4f70287259a7adb3ce0f4f5a19abdc903e69a73287dfcf1cd71c666ad41d398bd00470d2145be SHA512 e2e047d081e07e2cf1b77dc60ad5336023673911a47f73cd42dcb550e492019a4d299953728d5ebc76d68f1d662b9a9e97183040985a268d6bf9014f95655e51 +DIST gix-diff-0.28.1.crate 7019 BLAKE2B cf71541f10dcef94a409d0fb9f4a665dc917b192a9531b6db8a5c933ac1666ee7264d0ed1cb7f9cea821ff7d0fa2f67d1051b60d79d2a05bc6097c9d8e7637f8 SHA512 8ed3e4f2d45a595cd633ab06c1838571c7e7a4a6b855e3cff86277613211363d77ef613e28f62e693a9c648b04a8f7e46085021a8b4ba04995cf803000132e14 +DIST gix-discover-0.15.0.crate 30192 BLAKE2B 4da50ec6f02aae625d756c06b3f4e1fc72dae4dffe23c87d6835500f6f3fc37c3d997993d595c4ccb57766b7cefee26d822f392a9fab3cf0cc3b324c22309dd4 SHA512 d88d7e840fccd67304f3d66cbfca69e0c793aae278f4fb8a2839b27aaf7a6c658e1abdc0d6a4584975cec28e825c6e4d951054d32ba76f66664e1026cf9aff02 +DIST gix-features-0.28.1.crate 63227 BLAKE2B a74dba5189753b86308fc14ee405c0f1cb178ba24a07f0e120b92d46b9047a459034d45c080e900c1387c757942398218085c1490d49f5ab00a64b056c12f185 SHA512 8338b1a9f78676faa49c2c643afb60951ffff1f12739325fcf6220020f3e1be1bcc779636ad65f0f317046c9b9210c9efd278532040f4a33b08dc37f5263e9dd +DIST gix-glob-0.5.5.crate 39749 BLAKE2B b2f1d5385a7b7f963c799447ebdf7624e5d52e3b3a1cc2800ef60165ce2774ef63231a7dfb9fead3118a052d21c3977b579c1b6df094460bcf39b09b3ecfbb29 SHA512 15ac1ff886a6a364c181776bf5630635e0cfd519a5ec1ee58e9bc1a097dfd14030511db490acb534e8428b8016c946e9efc3324cec891ab9f2698a9096a1df09 +DIST gix-hash-0.10.4.crate 26357 BLAKE2B 412c56b6adf1204a10f4bbbe5f90623001bc41fa268fad8cc5bcef1e8bc441c3012e66d0d95c25e51452c195e50766c557dc8040866e929d1e8468d8db1d21e9 SHA512 1f298ab85452456e302ccc5d2fd449228d3f61dd0fbefb9c7c7fe71a285c4a5d1bad29cb26dedf4df65d63488c21034ab3d93ec5ce7066c940883fefa270316e +DIST gix-hashtable-0.1.3.crate 2244 BLAKE2B 9f22d0889e522fead317409651b0690e4c745c702653be393fb5f19fc5c6d25680a04f83c8286e0992aa7adec867c80ea25147c856138f8f07d67b5c7ee746aa SHA512 cc663da264ec5505c2b10f47d33a201c6ecf0f8591f96129c74c2c39278555dc5b1527caa6f85387c0730970c424b0d02c2d52339d2c0dfdd6d26d2cc156c313 +DIST gix-index-0.14.0.crate 59497 BLAKE2B 9793033e973a1d0e0958a65c7595c3125ac81600f97318b03f476bddc2c0223bdb5815d693d6112639da10eaa5f36c85e1c25d04b6024a0785ba2dba0bc999ff SHA512 2707949d8beea0a4e515569432eba87452c73205644ab527bf29e0fe6e6d4733cb7939ca3b24c29d332b81799f3a4a99d99c2a55aff54563b2ad7cd33c4e5993 +DIST gix-lock-4.0.0.crate 20580 BLAKE2B 8a63f41ae2ae2974cbdc51db6c8ac8a4a6e40a63be921140484c410f091670d9f802da6dc51eddad45a69810a10fd5ac6621e6ad8ab4c83de9b5d85d00c669ba SHA512 572cc70da7ca6cf9f4ddfa8bf36cc843538510652c04d93d31171dcba22a77aa02b5ee170b37a56c222df51d3377a71eff840b39c28b620d470e5c6ca69f5a22 +DIST gix-mailmap-0.11.0.crate 19465 BLAKE2B 44be62738b8a59c9a5d647af5b217775002121175ba87c5dfb76b8625484ab73c8e795e14c14af3bb3e3cd70b12a826d64b5b6d7b7383c911e09cb3d25be5218 SHA512 5fd87fdd30f25829d9a7a2d5c467942a280d1e77e909d8326aed3515be215b34e6f5910a8cffe0f82c367ace6eae5cdacc5ba4ae11d339126924f70e7a7c9eac +DIST gix-object-0.28.0.crate 23594 BLAKE2B 794f2db1d483b93a8c3b6dd3c34ac8c05a3e7f303c1114673a8ed4a756d3f153ce2232492d8bb10a712fa90107d72d83d31f7efe2b747c79d2b639682899074f SHA512 cb0e099ba21e114bc24a343072c85fa5d77fa8f6917c69039a2355e66d157ce65ce73918f8870e415f4d88e771a837c1c310cd1cef0af2036fea9dead42890ed +DIST gix-odb-0.42.0.crate 135352 BLAKE2B 398168232597998176519be4217f1a057e90eb5985fcb618f903b7e4d26cd16eaf5286ce7a19e7b8af7de41945596142b172faf9c8757cf2a832865dc11f2099 SHA512 95b98b1ca5c341696fba14bee827d7b4e5b39179badecc66c7413a5dd75d0084b2b660de6e30d71325cd21c59d466feb99de2103d4711acc4092a6749299cc05 +DIST gix-pack-0.32.0.crate 135294 BLAKE2B 37388008cd18e849af167247cef850696c0a230481d4fad0987b09823258d5a89e98e1338983f4bb80d417939c57c42ff86ca8a695c831fa8380eff07b74339a SHA512 80fe721ed172af2fcdf98468ac6ce72f6524f776217bddfbb81ab7be06873acc48682685b66b2de4db61af5bb1ab470bc1d331f0676ef2975c41e9202037d6e2 +DIST gix-packetline-0.14.3.crate 36974 BLAKE2B 158aacd910f1c0dadac35f63cf84c818b8c79481999bb3521505b196c12bf57d2aa18092984dc6fab2ffc434f4539968a18a8d0b2ee0d8a68edd5c0c72b5a661 SHA512 f13270d8bc2f61378ad1164b9690ea2a632df8015fc648c0d53bf7012c1c42b1e7e7515eae35b8b928762cc275f02bbc5443d7bbf86eabe1383308012b7e500e +DIST gix-path-0.7.3.crate 22347 BLAKE2B 0c6bb3c9bd360700e46a29e0d491bb3bcd74ec0afb984a26213c8af9709823b6b1456197aedd1d6a341f99009c02a07dc0c862989d7614459d4637a5d5b0aff1 SHA512 02ba23aff4c71c682c1a828b0f178cb7fb9fe6c4c2004d59687d33f43dce6c40199cf920f9f1146cac0dc709f13811bc56c21375fb5117bca9556644804d65e0 +DIST gix-prompt-0.3.3.crate 15057 BLAKE2B 816d7a0c1b16a729b4f0706eaf8e701131bf11fe934b0ad252e83469d0551961271c4942df145ac62deb9c8aad6de3ed8b440eb27d75a18080fdae5d4783cb3d SHA512 f107b22490e3916a09e250f615967c09034ae56ea0e35e62b0e283b819675e0b79e654aad2d08e04094d01af8d10af8cdd393145a6d2970690f875c6cfb41e5a +DIST gix-protocol-0.28.0.crate 71642 BLAKE2B a73322eb7654ebf29072918d3c4469806e2f147e00e48681d2fe4b18952408aa3022620b80650c19e7343169d42c3dc8a2cbcb2179318dfceb940f68fe6d5668 SHA512 0f116929d1ab3c48eb84942d132ed74f428ff82a8ef6a5b5ac89fa1b56bb399ac01aa14736d0d97ab6af16a0988c872c5097d4966a75e5ba59c94e20f180271f +DIST gix-quote-0.4.3.crate 9769 BLAKE2B 28ff4050178eb0711387a5a4ae8ce6e33b0c7063427411134752adcaee578aba4ad6cbaead8ebaa5047e2255e76f8994a01e9e8d5de39934cfc7f525c7e1a619 SHA512 4b1296be473a022926f67ff2412308954bf19f0233a4fea1ee44b605a76cdfb06f036591709e8b9dc6307d106267031ce034107a490fd63843227f681cd87d4c +DIST gix-ref-0.26.0.crate 50232 BLAKE2B eff2acced8bcd2fcd270bf6d2c428f836ae657976299de7af99fe08a28f2129289256ffaec641cfd59e978b88115a1b665a51bff87f7df06f17a359086a61e73 SHA512 1177b114ecac9c487f5a0cb204430fedef2a607718480aa45f28daf4afc99bbef8618a56342041a4e93d1472a1b86e2befb8bb812b4679eacebd121ef9704bd1 +DIST gix-refspec-0.9.0.crate 28295 BLAKE2B 068ee1a75d3378fe520a31dd121e318e99afe86d522b18bbf7679f3912886feff409002dafe635be3ccef30f36525ec370c049cbbf0fe624c93253b254601956 SHA512 1425cee185f67c6709cd5240e2461c0324a9193e174edc181075d92d8ee095fec6fd9bb4bef465dc15072c3253798721d40cdfc68b76d1e6b6845536de6cf53c +DIST gix-revision-0.12.2.crate 37050 BLAKE2B 34ef57c23c9c062d879a63adf8bb3fbacabb4af9c7aed00211a4637fc0e09a6d5d81f06bed274165292179217504661556523a47f0d71d6397244ec64c65cc71 SHA512 3199b494c4abf61a3f08e4d2b4ef483c1df45511ce61943eddb115ad776b6906a03d0548275d2c91837d99bf55ab612b205eac02202edb8af8f21205b2a503ca +DIST gix-sec-0.6.2.crate 17385 BLAKE2B 756b8cbf9061a384f863f14f3a8c8fdf8888a9f9886ff70d53ce9fe081d22439a2cee718a721585c3ac4ea67e1ab258b7bb242a11e04fbb6a7b41ea5a1b0cffe SHA512 749af2dc7ac0b350cb5cc68d6f44d1d9fdeb345b336f60a1800db4ed4adaec4140ee67769c9a3a300c05a6eb96365f65d97be9e6af29de577538cbb84504e93d +DIST gix-tempfile-4.1.1.crate 35191 BLAKE2B 766786aae854dbe4d09d52253603a9365e3aa1ac470b91e4f4975ef6d300f98d436b63d1fa5d45fe8bdbd0ae0b90819a61216dd5f246840b80e5f75bd412a3cb SHA512 3b0b9e55749056a296993954cdde71e6d775c542b6a34c4fb44e16764232ab2b3f6df86497eb870310d1048fe2291c68ea19041344128ff8013e2051325dc7fd +DIST gix-transport-0.27.0.crate 90761 BLAKE2B 912117ca9932442169346c545f5819ef9f74c0ae9be3cea2e81967e8a4d2fa081265148b5859ff4e3b1f3a5b08db9a4b705cc9da1b3c9c96d24f202087f00252 SHA512 0fab1220d965b23b96b8edefd20be4db58680b14365150ed8458ba5baa4e801b2e20280b27e896c2699954d33d95d04de6de0b6618e3fade4493d0d781f76bb2 +DIST gix-traverse-0.24.0.crate 7240 BLAKE2B 0d0e5ba8e171d844adb5ef43692f555ffad3c69e4e8ff4cf302ffe1d345c34f5fdc3aa2aac63c556865071e479736858b10af9984499e6a193ad320547b50a20 SHA512 846d1e36e3e1c50f7c1d6ddf40bae979b12fc016a6554de7e2430c1d6a1f42ff8d7eac1ff2716d2ff9759dca697b3464247f97201f9a132a4d2e43293784dfd9 +DIST gix-url-0.15.0.crate 28617 BLAKE2B 61175530e6734acaddc8d7c43a12c16b5d27643428e1476220594588ba441cc8135b47bb49b3efeab4aba971f6c2bac4ba8846ad24d78d999309c34901d1eea4 SHA512 2cbb8d968cbb9f1f2e8345e504d59a579a41cb43a3b9c7106b38babf860bf78891511a07b301b479cd183319e38cbae722955a09a89d33149e28d0af44948dad +DIST gix-validate-0.7.4.crate 2529 BLAKE2B e16506a3d21a9499b3e5a851815b9367f5d6050a3a697587cfeb0e05659bd4ad42774f62227654d18b585a4ab85aa4698cd4da0482bace7a65f7df6e3f2ebe83 SHA512 f877571639b2e86853d408b3ba6abbe83d33fac81a3b6c7eb0b15b13f382d512996e5ade85abbddd72881bf3ab506b9b3f3e8c3af6a8e158464122c415bf0b3f +DIST gix-worktree-0.14.0.crate 37067 BLAKE2B ca222d9a24960c82ec43bbf4d485cb77c4885509c2ca78c4affab56ef4d715cde5cec1e9099fffa1de2bd4708ce4f37313d9a3edaa90fdaff5dc32292a4f3d91 SHA512 22a1142376762151d84b5100cad0acc336234b20a3ada17a89b6066c84e806f9f2f7b9f6b31b17452849494c7692c3a7eb875f40362cb523f371593a2504f26d +DIST glob-0.3.0.crate 18724 BLAKE2B 1f1dd380e7d668a0c2cff9134279ebda958b4bccdd4a65ff01f9665b45ec4cce8ffbd47eb46e52cf516c5fd5803561e6bcb60cdee21ddfbb8601a95d45500620 SHA512 87098ffdbc518442995c422120cef71f83069c8f88a1970ecec5105b0f284ddd92bcee929f5c230d5b90ae1ead7e1214c3eea26f4a8b26715a00c1ab8b09bc46 +DIST globset-0.4.9.crate 22929 BLAKE2B 91dfaeb99a3f6f40a5a025ad8527c91770545487324e191801eedb6f916739b5efe687d84a43eb8b712cd181d98d3ab17b839f30c19e0da041b4c34d9286089f SHA512 66841495098b028b8d294c0832276b8864760df3a16b93b57222037c351591ac7773a99a65b85a20c438fbfc04c56ea4901188cb18ed470d3481eeef29eab708 +DIST group-0.13.0.crate 16526 BLAKE2B 099ced5b8d16e6fefc331f2d89aee931ec5900a168dbe31bfbe29bd00304e8525fa5763dbcd60cb19ac6c62c8d77877f2d83e700c7ab18255b08c9b42be60d24 SHA512 359db06bee4cb51ffe799d9c408791e310e72fde3bb3fd447cf97482ebb909af07b43e9b728e3639d5497fc905b650bf00403b3a6b21515e6628c2466e0851e3 +DIST hashbrown-0.12.3.crate 102968 BLAKE2B 492072f27eaec45abd2c5d7405c614c0c6a8221425e901bb6174bfa1688ee524408a618650126d6c683b7285b9bf0a21dcdbff7347e4d8f97bf7111defa1b7e5 SHA512 b3700fcd659a21a6b9b3777c18b37a83bf25542b4e8f2b963779a122f5d22e1742c064cfc03e649583e7dd5c6e90ca8407f8c51a0e8755f6a108682853022f76 +DIST hashbrown-0.13.2.crate 105265 BLAKE2B e9ff7e6e753166ab3051a834df6f2da81a19ac6997ba269ab13a65e0abb9ce00839311785aefb451553284ad5ef3a0cda925dc2bc188d2a138a78578e530969c SHA512 21dae7a283326d21e16bb32ae0dd1481c4936939a32a06478a3351c2dec97941be532437b808e99ac40e7900a75433fe0efbd852158659a682461245e19d0e70 +DIST heck-0.4.0.crate 11161 BLAKE2B 13b8bc39cf3ab90e71433e3c7b3e5f1c19404bec58dc4298dca05d94d5c14c2fc97350de737cb78aa45196b1241aa8f1ccf3a11ca309da5fe0f6a657673412b3 SHA512 33bdbf4ff9ecc4f4d74cf06590e056f4d96bf0d990d5381b9da5b65682b2495ed74e27b45419c2afa986c1f6200909d5175b137ae73ced5cc8ac869e4e1bce8f +DIST hermit-abi-0.1.19.crate 9979 BLAKE2B 801e8052b85341cca388ada9db4b06bb1bd7b64474185b2ad06c0256b9e597639bd3dd4ba0053ea010f922e53969a4ab47b90d451fd9b94c8f2324055d151ea1 SHA512 1c877fcd562b15d2de9c151fd6c5f3ea4bf48abcb799e6139a180ffad5d64b632f0000d5707bbd92ff23a0e5f349157b9e0f5be8b50f03680b0fa47315dbb78a +DIST hermit-abi-0.3.1.crate 13793 BLAKE2B ece7865a09f566a95bfba5f1fba380bf12836c3761fc6d5a3d5543d3e50ca0eac81bb567d50b5643849cf1a752aa651a0db4c053c60faa8f1c74fe2f12819d71 SHA512 a55fe9230e4e8fef63284befff74108f206e76067257439d334d33068875368902dc690926a1feea15611f14123073867d7e9cd21397bc484cef849d6e1dfbf9 +DIST hex-0.3.2.crate 9053 BLAKE2B 3ac67d26ad367df7543967a8153a2ca7c082d5f56df16cf63a37f76157ce94c68f4cb11c14cc75621a9c45d19c38425acb92b552dd6f45b9052d90cde2ea6e5f SHA512 fbb5e86da5c7fd4b7ebc505d4c0da1258b06406d40a5c6c1626f559e1a91525fa747cbb6e35a687c63216158832ceb49dc61d68cd7d74f2df3630b36ac423852 +DIST hex-0.4.3.crate 13299 BLAKE2B deab49bf3d97f6fd7c0a0855b50232422443b226362bc7a4a19e57c2e662fff2cb046d4c5bd7618ddd523045f3d8c78754508f862f9a8ca29ca9247da6d6ec79 SHA512 fd8ff33b68eea2d6f2c6b02a6d82a2807cbcdc209ca5a76e3e3e5d006917ee151f236b6d18e2646cc9a9674bcdda1d6ce6ee363a89cadd99bef00d0eea9989e6 +DIST hkdf-0.12.3.crate 170910 BLAKE2B 08d0c28891f780abb46936481251f217e9d8f2d17d04e6e504368fe9028300ed02f091cf6a0a0983eeb02dee04309f713f73278e9b0f1b918caa2cd998112753 SHA512 bba8bd837e994e5f5131d4269fb80fb84d789dc0ca68dd967d71e92576617c933ee8c355427b470ad71ab89178b1c36e8a7e122457287f023dd4073605784d3f +DIST hmac-0.12.1.crate 42657 BLAKE2B 5d432a666dbcf9077a98e1f8a4aaa3afc88f3d88553cf7a2356d117c66f38efafe686c148598ad67ae89d64ee3edf56387a6f89b75dd9ab5eee63e13953dcead SHA512 77d4bf51f4633a8c36712ce3178945141df31cd645eafcf4bd130b8ecd7cb498bf1ee6f2d9c8dfbbc9f97ac638919fcc81bd3ee600a1b27c3be3fa87313aa0b8 +DIST home-0.5.3.crate 7890 BLAKE2B ed1cfadae63d1fb0a66f38aa5440dd09a98343e3afadcf1495bf69f3ce813774c9a49776c6b3641001b6007c01e24ffa6d2600c1bab05c4ea3353c74ddae2fd6 SHA512 cb3b7b24db30a8b29f36f90a0d345b2e187f9e76f22203e142a77c8308dcc62e97b5714fb0ed890210b31375cf30d3362b8d740fe189079a6d3a095be50dcb0b +DIST home-0.5.4.crate 8538 BLAKE2B 1512afc063cc31104e24a744aefc2a28f07d4ded12b4500480610124289e5b7c7f2fa3f1e66da36832cc45874c4bd2d08c1a584fed25aab4ecc962abc6675e33 SHA512 2494111301bd1281c89dc77f4f78d3bc6e3a04d1969938cf4584d465c01af12ad85022832b4a99a5c0ce6adc31a83c00820df2d513a09bf5c0d4fe44c53812a4 +DIST http-auth-0.1.8.crate 38880 BLAKE2B a34e017628587a2b6ff30994c15b1d996393d5a6df49076fb501c32d96c05ecdf2bf97c482c8f49e1af737a4be9e6d47aa9768b13ed6cdd47508a4cf802d95c1 SHA512 509313647380a98c2fede816ea90d04f85f6bfeb1ae4112767a0ad9fdd29d9169a30f4359d845ec0ee9ddcdd93921d970ea68199edc50a1c7b8e29aa6f664fd0 +DIST humantime-2.1.0.crate 16749 BLAKE2B e2ae8325b037fb175b9200cc5c1944ce579056c6662cce307beb6701894552362a25e371aad65f8fb9384945b48815ca74bb8b544a32e0a5845b7edd30b918c9 SHA512 3bf29ddd1391d82897c22baa0ff3ed58ef6d6959859f1f8ed54d324caba5b6fb4422e56790511ce82f902cd11467f93c8ab7fc7b0e0bdb719308a4d0a446ae0c +DIST idna-0.2.3.crate 271023 BLAKE2B 157ece18825fd3f8055581ccbd14191a6923da4c806ce51b3d6376682878db000a1b873f744c8e9e1966e4c1f8393643bcb603deae299ed0bd87847b0bd2c591 SHA512 1278bd561ce329e1dc7a6f24a10f83d9a068af5d15a088414f3921c6728b0d54f4d60d6f4d0d5a786596ad226263e1e50c3842f192d5758aa4665ba4ed5c269f +DIST idna-0.3.0.crate 271128 BLAKE2B cf8a2c43760f03e94953c6692423a12f28fe763aabea8785b93cd247b3aedd2aeef2cd99978a027186290016ed924db39d19fe7d397da1ab570be9646bbb630a SHA512 9b7cee27811ee52ed9bb39fe82f724742eef2e5370642b6c756bd134c8cbc20bb6faa9f296053672dba8a66f7356a08b2ca99f176407b173e2d566d85d066441 +DIST ignore-0.4.18.crate 53174 BLAKE2B 41a209a310515af9fa066c88c92751e19e0859f411baf9946933203883098f52901f8c03250cab7f716abbd0da9c03c5e6fb270a5f9e26aafab4bf1d5f5bc045 SHA512 5d11a2415f015cce6ce72aa3d08a7cfb645ee7f1845b3445a924a92144438f209c992cc15d4ede3099d1eebe3fa28bde4e0eef1a3fbcb9dbced19a42051d21be +DIST im-rc-15.1.0.crate 194077 BLAKE2B 327132f1b7cdb993c041e0083838cae9fb99dd2024d9191cefc02c3d0cbcacd3f5b710b0bb36b47fc49e24915ff7396cdc972326e35dd0ee27e7f48ab65add1a SHA512 2825364dd8ddfa2a3623c3b507768b8602a3a17d0a9abd10b9ad20f4e7b6dbf5b35e928129bf0708ab29207e899e82f2285d24a7de2b55de3538b4123efc8bb9 +DIST imara-diff-0.1.5.crate 154821 BLAKE2B 5be6954d53e1787e6c88b23c7cbc8848f92aa7892a4590fa7d55269550dd7e0a355ea13ff646abb4f91467ef4fca12e74da60958181ff0c6800d9965f6a536d6 SHA512 9c8254012958869cb4845f76d34849b140dd1604d14dc9822f969ffd66c32a94ae6151a1b11052817e1ef60fb94ec52ac9bd0a122b5a1e6a994952445e4d869e +DIST indexmap-1.9.1.crate 54114 BLAKE2B 71e4968c85d5b3fac550590658f9fed72c754a9443221fc804efb97bd39b5fca7f894ee67f8d2c330bf212eb8a6b5c85879cd813ed56e3fc43a54f0bb689af5a SHA512 7eac99056123332ad38ef32eb65235c810e8b4d051d9b0ddd5582348c9cd3b162d36defe8e46a532e2066562f224e37fae94b52b4649ee9cfac7673b76a2513e +DIST indexmap-1.9.2.crate 54627 BLAKE2B dbfa551d33305db06b59d07c1b4bf8d4596a67ff1caa03062d07f6d78b4604ac0533d1c1fe3c371702dd7e65a012bfb960d79c76db37e264d0b44be576969285 SHA512 946c54881a347892dfcb55648a2b881d3a4d113424b8c76d8957980a834895318d11336dc438a04601916cca787420708ad7e271f965c38bfeae511ec1dedf85 +DIST instant-0.1.12.crate 6128 BLAKE2B 728923f757c1ee4e4a7afb90e460eed81392068961240a538e5c6468e15a0b6491f590fb5f6cc46e6d78901ca232351f65abb9f2f230d8f4983c5e58c4011902 SHA512 fae494c00111c51c840f9dd6a10febe403e27ebb933dd16633a213e9c20f2bc11adeb431c71f8a6713bf88f270a010941e15d83df294e658791934f83a5d2407 +DIST io-close-0.3.7.crate 8025 BLAKE2B 3ae34374d194407200f327695e7525268d03e5c2e8a051c99aecd1d395407197f9e6ba39339f67ad4ac249b8be63e4595993e6cfefb2f0b421bfaf8d655099bc SHA512 0cc06245da4ad9f8708ab03619734dda41d1cbb2777a7944df10e2efb0ed0a6d34aab3ee55210b05eb4507c802d01a301b6718ddd6cb8e2b4abdd2e1be11303b +DIST io-lifetimes-1.0.11.crate 37346 BLAKE2B 7f278b7378a8569d3552c9b6d4be06d7908e05d77cdb964267f0b621ec4975a42fb6e48fc030a75ad5865681adf32ff747943ac559ab4ad73331a6611a1b10c6 SHA512 30c6e5ce6f5beabe0d7bee4f4522884d1316cf7d9b8d093ba0f952995997be3d0f10e1e77b9c20b7fe2b65429de0d2ec89bb35e939455795205206a3154ed544 +DIST is-terminal-0.4.7.crate 8356 BLAKE2B f0f42d6f6204c68bc8a9e1290b9b059ec55f5aa2f83f6966711a5f986852befe21ac9281fd611e65cb4fcbf35dfb212748785c7258c44602e7e390c51f09dec5 SHA512 56c00b2942963f8a0b5c40c96a885f85565fb09e247bfd5a3e77ca5c9e0e0e40a17a8d809c0541177e8b496fef87baac4b86c751765491ffffdb631515d8acf5 +DIST itertools-0.10.3.crate 118661 BLAKE2B 0095d6e7f14ddda69605d09f74e8cc881eec1a1d234f705e667d7f9e738ef157b7ddee066855cbcad7f134bf79b99a4a4c77bff3371397a567cd34d98b68bf97 SHA512 9d17357eb68159edf4f4ccd2eb9895672c7fb633803166d5e24ee12350639eaf66f1c822910518185cd1f1ca5d9c3e228dd37525e6c337ba3fc7ce967f9bfc85 +DIST itertools-0.10.5.crate 115354 BLAKE2B f24734bdfedf1dba48554e39b43669efcd4a43656eeb2c511096060daeaf049e1ad3eab232e757057750ce94aabad9fc8a0cf29a997edc6c4b167301c3443391 SHA512 d03c3cfba9841776913bbb6daad0c8945830c155f32ae4b48872e0f937c75a443f0ac9a0355f43b359ff75232f38b15f4f6d446b4be30b00b4209cf66ef770c3 +DIST itoa-1.0.4.crate 10601 BLAKE2B 95545252eaabc3114323a44c8b8ea12a91568d9fc8d26ccb3bdd798ac0e04d9a6a9307927c17558f1284fa5491464cfceba2f0b880d00673449b94c0fb783150 SHA512 a70bb6fbdbcab27fbb5a84041bcbad8e0c8fda58d55ca7ac757f7be5cd373101be40df99e9acd6ae49e637e40de037c6bc59560f96c9adeccb2b2e0bf6531e42 +DIST itoa-1.0.6.crate 10410 BLAKE2B 8b1dc9ae9d55a006bb2abe3b0282e5e77397814b692a87b9becdc2bb74deabf5db09e3d5a2f604964cbff046148025988a5d916480e0402b2b80646fbed32875 SHA512 e1fb82fe16e1248141d48de9e05e7abed0c6fef58f2ff8b77b52aca5f16f3600c46707ff4c7a0f0307047610f29775bda74948d6d1efceb74b37cdd22e1fcf31 +DIST jobserver-0.1.25.crate 21888 BLAKE2B 2ecd417446f9eb975119af4ec74c9b3463d061f5348ebca380f0ab9963ccce6dcea8c1671c7701f3f867c7e49d0ec130809a37bff466261a2fc75e80cc01d15c SHA512 0c014e7c72a070e3332463cfa6e9c9095d542a68f8631150bad0efa3706a2d6de0347bf7d1221cc3bc0f3d5f9840fe7188aad949559375403b929d43b4a524b7 +DIST jobserver-0.1.26.crate 22645 BLAKE2B 44bcc15330268ea29650e58605c7f21c35108eb64b790c005968955238e948d27b3d12e6bb06bfc0eb4a3fe5f9e5322bc0657200212bf87e08d9e043e008a5a8 SHA512 ad3ebb693018928daf399e918ce35ed0d4e643cfb5c78bde04697e41dc8adf2861023ea1cf2c5033a3026048ca0ebeb7f2f57a966ba8e420558e42dde8d494f7 +DIST js-sys-0.3.63.crate 80154 BLAKE2B 378b8da12827a743c2cc996362934cfe249dc9d9dc0de507cef366fef4ed1b9d82b5ffc22f3ac6270c909eef901f494dccc8f01725278876ef2fae1945041111 SHA512 fddab182e0f093d8b600f86688ffe736852b48351abfab1e60073c67901f144bacbcdac867f533056b1213eb75920b08b6249fcfb5a15e650978966e8350918b +DIST kstring-2.0.0.crate 22063 BLAKE2B 71e58489a167d57326ce974c8e05dd4d2e18f7fa142249aea86594b56b83d566e14fdd79b7202a20ca9dc9e0911f7f873454925fed642d51241e6fc920775831 SHA512 17cf8f86f0a1df9de75ded552c4bfb9f7f0567802c83c0a8fa71625aa33cc537b498c3a247716a7b91b01c609a3722233d6316322210aa44850fd564ca16f624 +DIST lazy_static-1.4.0.crate 10443 BLAKE2B 25b2e61bbac48f0dcbc79c81d7bf01f2403d8269ecb6be3ea6147bd00f7a588df15a91f44dfc18ada19b21faa71de4637c7d493a8628cbecd0e547d74e616a23 SHA512 e124c0521ec7c950f3c4a066821918da7a9c6e711115d98009ae7c351928fdddead852e7596fea5937a9c30e4e4ce8eee7099b20248b5d6e3b2494b6a6d88cb8 +DIST lazycell-1.3.0.crate 12502 BLAKE2B dca2d3f46823a52dcf87b7d6103fc4f1f83bc5247ce361946ac2d9df239fb43ce4b418104503698dff0242480cd014996e77da4ae0a88f3cedbce4eb9d3c9ef8 SHA512 f9d627afc28b61e9687a3f72260eb013401fd64057647641ff2e763770d7380ab1d2d8cbb4a3c8818d53d504c618a3b46aaf701f72f4d7b25d226042824c2f8d +DIST libc-0.2.137.crate 606185 BLAKE2B 6724b7ddc2460fef1d0f20efee8726162d904b92987f9de2d3dda06c9cd49124c9fa43a9b39e84d78c03d217ed8ffd30e0dc55a4eb31970413d56fd58ea00adb SHA512 1ef979dc59a7ec4aad7229ec5b40be0ec9a8496c7a2177d325db62f3eab00d72c8d2277d517c0093e0750de12fbb4e45b67133604afeef9153b8e1d4aa0baac4 +DIST libc-0.2.144.crate 682092 BLAKE2B 1f699cb880a65baf9210527789abb35fe8be9565828d061e12b5c76330e21babab67b21e9a44be6a706f643f3c8b98503a3b40482183188b49f33f96a2489a68 SHA512 576da68e3845a7149f64bee425529ffec4bbb8df0272790182e49c8bad5b9744de21ffb5c1206753b57b7fe45af02c6c429e16522b72a77e5262482d64df5692 +DIST libgit2-sys-0.14.0+1.5.0.crate 1740370 BLAKE2B 0bdcec13f78292ad7849f88bbf21a8168371e9d4b15dcd09863b2ef703caa8e94a33da01164214620e11ff6f75038cf9ee6257c44aed5e07c52af044abca9952 SHA512 b2e1e54b172e6b0c71fdd02da0800e9120a3fe1b9c33b5fee4e667e9aa627979012865397b406fe91437425bf52e52a26245cfb7fa84f3ba64269dbe204582d6 +DIST libgit2-sys-0.15.2+1.6.4.crate 1755413 BLAKE2B 55cd09821df10a263eeb0f9a83748695c65093fc6c1b0c28c2d33e6dc0cab08cdb045340bf1f93e1e6c20ae7cf406bb21046f45a96ec6068e832456f8d2b4c98 SHA512 28b66ffe6da956bd1127aef295b222b55681b25c1820e016284802531f5360e6d21c11c695be569d26a318321868a0ce0b2c848bfcc887f09f47fbaadb13b478 +DIST libnghttp2-sys-0.1.7+1.45.0.crate 4527090 BLAKE2B 29fa3021361656826d523cfb0312e35980199611887cbc43721a2276ecb3f663ac1283629552721754e256124340650e907293ab43b96e043c7aa87bae979ec4 SHA512 5d7a1e262fc91b654678cef4026886ccf1f55b8238164583ef46de58fbc46034288b198843e2483b1d8fa9070cf6640d83d140c53d780b38527ce68222c94376 +DIST libssh2-sys-0.2.23.crate 493516 BLAKE2B 00c0c1396f3d6723ad750112e7af8c8ac098af7b3d11e3fafbb4dc3b90c0defeb8184e007de3c740bf1111e12a53b71c355d697c4567deb3a30ebe3fee2e0caa SHA512 9617fb1d5826dacce23658b42e3eb3f8427b33db1b5a4424081e148bd90a3f776aa50ef66183c93ae19086d64321fc10b19b1a496c3feb12a669c7313cdf39cf +DIST libssh2-sys-0.3.0.crate 514550 BLAKE2B 55a24d513420e0222c342d252b1699cd583dadb37099082e0ea068fe064e80f6d82470a08d03654c17f50139993f07e20dddac4d11f0574c79040aee08f512d6 SHA512 cb8dfeade699d97fa5fa393bd87315f44810731f78458267ab098a08d949fde47fd57b64ed3e882c10a83ffff8f869de13eda50c72e140f57d802fa07650403d +DIST libz-sys-1.1.8.crate 2481844 BLAKE2B e890a3850aed5348afe7558168c7571564687d6a7d3567a4d53ffdf79444d38c4d70d35891e16f496f31169bf73b669534f5fc584f9ec520b518dda05e80b882 SHA512 0766ab72cc1414160ccefe4812e6204cbed1341607e5d17607f24fd4ff81dca68d8f2cf43e1d27f332a508d602bff0ad340c4c647a5d5f85acc120c19cfb4100 +DIST linux-raw-sys-0.3.8.crate 1013776 BLAKE2B 375b29d2cc700e95d94ea8dc304cb711562952742f65c9664e33560a3da862aba74f2ad2ee66b1dface8cd5371ea9cbbc452ea953a6b6c656ade7d938b7d2ff2 SHA512 cb0e5c54870dacfa513ad05f7a84e9e90dc1a42f55685fe3e252fd25cffa4b875f1b65eaf4ad132ef0a19e6677c7763b360d71ff0060fe6ce5198f38b9956375 +DIST lock_api-0.4.9.crate 25685 BLAKE2B 8adf5c3cccebdf6aff6ec977f230cd2a208b0b188ef57deacbbc6019431f0ede1a760b2384ba3cb49c96b8a589dc56c0f46a6359b3e62277e7ae1a1c3f586fa3 SHA512 9215381d9bb6b80d217c73a900db43df043b3e939b5bd7a292a02e9ab911cf0eacd8f883d35bdf72b3a0e78df8f1bc3e843ca4c775294c7a7a03091dc1a74990 +DIST log-0.4.17.crate 38028 BLAKE2B b46be3719fc0a53e50b1f342762e188587e9f1ceb692c72473ce2663edfb8253742d30024e68c1444780ab7fc0e2d5b0601b8ea7228dc3405a9342a57548e605 SHA512 2477d88db42b1d92c30708d88823212e236f613b3465e85eb425f83f8d16fadfaf0352f06c2999a1852102edd2f6ffb10ecb539d8a3b6c48f552a25622ccffa2 +DIST matches-0.1.9.crate 2246 BLAKE2B de155202636c6a03ed68cdb21e8ef96e19b45be040a82943d2d7e5192c0ab5c253ab6d65f0b30b2689e21da79cba684af5be6e63c48266681aceba356f6eea41 SHA512 6a2809687d30ff04ea97bf9d1610d746e097699a4c3625ffd1b7b1e4a9673ece9d559058c9f760b99d6ab509024f7b338e7cfa6fe767499c983efa98bfb98305 +DIST maybe-async-0.2.7.crate 19186 BLAKE2B 9c60b19577943ecf43acca877ca96fcf386a62cd5e55a3a0cfb7e022f1e477b56a3120d6f92fe39742dc119cfa90d16c956853f61d2268d8977e5bf8f3729d66 SHA512 ef5f4e705def3b188ad2dd4be33dbb2c3f28d08855a1cff0aabcfd63fe22d1ba99e6cb7d10a43bde3bb5d30c2fd98dd2c9172d2e0a2cf877051b5117f0e7d262 +DIST memchr-2.5.0.crate 65812 BLAKE2B 57966413a1f933dcb2d2d4ccb29c247070f65a83299b2a9f5aa83f5a48a5c5f1c4c7c632fa63bd19f9508e9291e7258db2f16e2813a56fd84e0856f70f1e67ab SHA512 444a163b484c233e78c0e2e4d51f01ce2da93d7d29f516a95e4b0866b20bdfd3f34137653abed53eb70387991ee3e2b5937d8d4360a85bbcb50a93005a75defa +DIST memmap2-0.5.10.crate 26847 BLAKE2B 1cf50f710ffedcebade4f131b8c3103b036778b320da671305c0244077743c53da155d444bcc4d0eece294234bb6e86bffe67da67aaf12a116573c64ce0ebc50 SHA512 39bd2734ce4f16c7f5a5e771f9ef92272b26f511421d5f39dfd2aaca072400ee38f2cd38352005c0c8c359095131770ce1c14570790bfe19ce6a17f711deff8a +DIST minimal-lexical-0.2.1.crate 94841 BLAKE2B e6b8919b80d938d0b98d60d4f5f29ce43d77ebfcf8b18bde08909141915c6ef4f0d07a543538d4f3ba8527a9f55926d4a8e83473248469d087e80b274d701d61 SHA512 385fab51884bdcc7b0f2728a219ab164d0dc8efe42160b918f2c09f79ecf853fb12bda006d11e649f097bae1499dcd41ddf2a8784ee7d178cf2c28059e46078c +DIST miniz_oxide-0.5.3.crate 53452 BLAKE2B ae99baa01c493b5eb779595be0d77a064c4624397676d3a023cc2a54941b0b3e7c80492ac47c8a28d78ec36e2f04aebe5af79f0e714380061c5e0139b9dfd9fb SHA512 cc2971ee2a2e891cdb05c1942f533b11a557199421910266ec2e4848a16dfe6882f1c08843035443935d695882720402356b4df4a50ed131a8f5fcc0591a72c5 +DIST miniz_oxide-0.5.4.crate 53485 BLAKE2B 8836697bdc3707f89fa869e6b09a36ee4d83ce2ae0a53bc7b06bbad70ed7ac25f8f67d841f3f611f6756d891f0eddb0abf7fcaf87570f8ab32220f113583ea6d SHA512 589dac16ca9c2f94e6fa92b68bcf51d140f46562cbb3a1b791b75c59feae51da5ec16042604bbd6bcb7d7f0c7f75e98ea1af8cf42d177133a5eaa86429cf3114 +DIST miow-0.3.7.crate 24563 BLAKE2B 24375754245e4ac50620a8b6da6b21958914a6af6422a470487841c2524587d596673cc3718a85979ee911f104d71b59b38fbe9db28c1c7e4b702b9373215cb7 SHA512 451073e8913148889493de0373bc0450c8b23e136e151b48b9976292e4e03b7c3f3279ecf49dda5196badfe662a661a998cfa456d2ec340a495d54a4d2382699 +DIST miow-0.5.0.crate 27696 BLAKE2B 7286b13b0ede0bbef23b9eb3456ca5c1903b572e37c274d136fb1d26785bf87d95a877a67abd930f08efc986e19e8da0136927fd2d5f5453faedef312342fa46 SHA512 3340b5dd1ec88b1033982cc93e6496c34d53404ff6e385a2cea566a01efac794d695443da19955a73a1dbfe857cb72a10fce55a5f2ecbdc4a079160e9414722e +DIST nix-0.26.2.crate 277973 BLAKE2B 86adcbeda37edda784593196c390e92ee069761d283f706c0390bf8983ba8841a51486a98a1869f910fe4d518afba5572490e9c69a021e12c598d094b41361ad SHA512 abf2d0a4eb83cd4bd43836e8b533f0f07f07979619c86c11302a2df0800d569f33f0dda0bc2c4136d36c79789d175eaf5d3928ecf16286319aabf93c720a1704 +DIST nom-7.1.3.crate 117570 BLAKE2B 5643b67990b7305e101b16b8cd27c447e162a7adc6d0dfac00920b0cb50fea98c9d4edca63c34f6845cba05f8d0acb407cf3045cf64a4cb28e53c8b6bc9090cf SHA512 1ffce08dde299bc0e0367ad59c7b6a83e23decfa11115ee076ab91ec53cdd9ef37e4c2103c96eff23a7b6b8b5c3f67c83ce1917928c7d4c6462083bdfa0c9cad +DIST num-traits-0.2.15.crate 49262 BLAKE2B 942ab170b2acce1cb40e6847f766bf810a79edd293d34f3a27864f464c16fe2b99fb13171ba429cc6d584248de879434beaadf1b231a4001b0e8389ed6c1be04 SHA512 5228498af0f15daeac3c9210f3e6e71cfaaeb30beea81dd37f8eb06b9592c8bf3226a47597cd8592ad4c513964a9a40f1ab2c33102ef3dfe3800d22c8d4528e8 +DIST num_threads-0.1.6.crate 7334 BLAKE2B 416efdf395b0299b6b01e1508823afdda08cf67ca54e1d644fc5accbb0490945a492a34bc5ba70c3e838e6405d17ddce164ef87468bd9da27097de8994ad9577 SHA512 b2d9897e29e59353379b6372a629fc7f9afc89f777b4410eaeac7b4729527948a8dbecb175f056899f9076693ef855cc0d40e725cc54f28af588fbac5f7ce3b6 +DIST once_cell-1.16.0.crate 32120 BLAKE2B 59bfc8a44f1fec72442e3d34bf4be3a5af073f854f07b3618b2857c759dca4a0fa6ba358514ae28c25d745b01bb7b390ffe9ed6e296d163fd3dd67e49092b87a SHA512 bc199570ee43bde9245a2c4637ae738e370ce9988635c8342349ceb6fb158f376247b69f9ec4ea0e6d76b934decdc77a524299ebde96c0a2c2d29d9501b9a568 +DIST once_cell-1.18.0.crate 32969 BLAKE2B a08d5beee50a7add28bd9e50b18709e7b34574f0f55f80909d5efb7ac5917e5f30bdcf3fb43ddd0a4f420a427390c7ffe1cc1c7191a3a1d939bc6e3139e6eef7 SHA512 9328968afdf3535b2d9e0113d75afa725259d76994ef2e1948ad7efa4ec8a65bac7cfdc31b749d5cd55ad4e28d2e28ac57b871e3067b89182453c7e2413a13b8 +DIST opener-0.5.0.crate 12350 BLAKE2B 5992f6d564ae14b609aff2d0415c4d7414a8cafebdccb9ac0b66056cd2968f346d63855d8251b153414115c6c8d8cc91134ab53d6b714df78f2c3c858b22cf8a SHA512 4a9be4d280cc5039d080bfaa318b47a80dfa930f3e60068ca10346aeac421abc8575d7eef3649061847e24ad3a6262fb58ab183f6f2704f429e9674f392c30a7 +DIST openssl-0.10.40.crate 217120 BLAKE2B 7470af72e060a4dd087468dd8f092f7519978e49e3a9e7df78cd1ae8d33819a4a14aea078d113772528f3eb4134c019fda9458656b25b9483352b1a19259acf9 SHA512 c07b2fa47cec33ad3abfbfdfe0c8c99ce00aafed5437f864e9be1d151c8f82e52c54ba565ab710693f108429f48df2ce0d2955f54b1926d808ea56fa168afcf9 +DIST openssl-0.10.42.crate 225875 BLAKE2B f271b1f2976249354a3fb485635d3c05c4095cea497cde36a88145b33530436cbe60aafb6b8edd0eb48cfaf8668ea65cf6d01c71c3ed1b343449744b8124c329 SHA512 2f23f460518ab2efca867a38b51bb56a87dbd8abd99075eb0d08a82e23d3ebed337c2214eec28636c5c94800532a6a404186889b500f95bf7cb5babf18da2b0d +DIST openssl-macros-0.1.0.crate 5566 BLAKE2B 51116df0f86274435f41b8bfd2b385d5a6464560a05c214445dde5cb414999d200c55e5529fa98e95abfbf26bdfe31c88708ddfa2a81671341792059ea703c07 SHA512 7e37a0c05781da13bbaf4c056c19d032a93820cc324f9f6e5743bfcbfb30e057501af1bc7cbf5f07e3a05191678cd5ae5bc4d6832f02ce75bfb03c027d18abfd +DIST openssl-probe-0.1.5.crate 7227 BLAKE2B d1fd6a9498b3ab7f25b228f19043067604bf20790530fd0ab6fe3d4d3bc27f13e6e94d1e7ef49314c3663477d8916b8790b90427f74976143b54b95350895165 SHA512 7e560314150709a34520472698060c4f29689d4e608dc4dde146140aa690350d3603279c693367deeb0f21ab34ef61956143a3447827a2b7a3d578b9ccd6552c +DIST openssl-src-111.21.0+1.1.1p.crate 5102958 BLAKE2B 4156423d559f1619e1dae256895cab8c8cef8818fffdb4c23abdda1706642f279e11e15462438614bc95a56b3eed7b68dc3add41be7d7fef734033858ab70587 SHA512 b59a084e672d41fcbb89b62d1a483a349e20f985475801884352f433108423bec3f78a6f6c9a71ed9bef9fce8a5e72addbfbc7ce8b7681fc30b26d5ebc9ff18c +DIST openssl-src-111.24.0+1.1.1s.crate 5106276 BLAKE2B a2da79f567049f5bcb15d15b5083ff9a4830ea7493cff48c58c7cec06bf965f3f123af4cff2b0a24b8262a8f7a0da797f351a61b77778ac005b45dd72e05b383 SHA512 c573a93df6a226d4a451d6b1d1badf49e55ae5bd1b60ce3d6a380dbc999abefac9b46df099f31e30d47231fd55ea93f7fcf2bb8c13340b6b201fb8eb9622cbc8 +DIST openssl-sys-0.9.74.crate 59808 BLAKE2B e616a0194828afe67d617e4032ed354385935ff7aa40eb495781b38b134226d5c5cfc5f9405e6273c96622245b6d4771a71b7b9512e3be7feba9a2ce88b66ecd SHA512 18015ce4dc8f15f3c371d393f4654db11b6e5ecaadbdf6cd9f020ee9aee29f3fa12a8dd74d432d8e8b5889162491b722f855b02fbf0892c8f2003bc4e692254e +DIST openssl-sys-0.9.77.crate 60799 BLAKE2B 8a2344c7a579c568a420959eb2710a012af0819c054b190cd2de688defa804bbc735efdfec1a537462feaf9cc1d891c4b53be1910713e06786e811e66c6b1488 SHA512 a31256943e739a4ee500a1080d105d8380a65ff43b88ef5bbdcc164cf97a133ab2926b5f4ab3010bca3c14a09edc7570a2edfcb745fc21169408aadc0eef0fff +DIST ordered-float-2.10.0.crate 15589 BLAKE2B 76561b2ab32b61ae69bef039f5f4636a05533cb8002b894ea18ce776ada1b5911c3067af2318126f359a305d7a9d3844053be62af1cbd2c3c9c1f45443a1cc9c SHA512 cb883ddd723d1bedfe13d16c9546dcb84d17d4fb1c6dc6d632a0c385d80b0b881694b3364a406e5d7f073c5a7e9e80810f343dd1d6f22df6188322b3e89cf77f +DIST orion-0.17.4.crate 175901 BLAKE2B d01cfe58efe0f9ecb3859fe29f49998da95450e01f6955605665282e41e03b4dc04ae3027e4519982a44a58bf80d547d4fb0dadaad366ea24b1f1c41773e3aa3 SHA512 a10d11867952b0f20cc964ebd08285272edd209efe1444e87028b59f13634391034ee9a3987e4708ba138b94e5ac2dfd2714276958e1afa6463b1c779c28d675 +DIST os_info-3.5.1.crate 22593 BLAKE2B 33fe303542a1b560c95f987ed690337dccb1f942f12cf00484d3444087f86388dc5b7f1e998d2d71ec23b3009cceea2fa1348a587b6157d0a75ec4540c62b41c SHA512 933dcba711254aeb732666256770f4475d256f84adea1ab37aa3c179a015973d6baeb2d990f0cb75ed6fdd1ae9aa0819d0294a2a11d5925cafa69feafc43187b +DIST os_info-3.7.0.crate 24133 BLAKE2B 321f1c47fbb4425bb7a779a45cbd4edd0c8e57bc97739b80ff28ed19144913af775aabc0f328fafad6afb75f2a54c8b0132c943eaa713b469138144a68497e4f SHA512 46945e48e10677fed222a6f34e428a7fbbadc4535b929f141d98483246d1f3cfc45eee905f1bd75123a101d04c5111b6376233a5cc50df2caa482a461fa49d06 +DIST os_str_bytes-6.4.1.crate 23101 BLAKE2B 252fc826f646bbb999fa80b47f58ac9a77e409b10a99284c7b669304c0cd701a3d20e690350018f5d7de8c6c7d38521f3413ac81d08067dc26f76b7c0e5b056b SHA512 2199502ad24449e08370686a596f905325f5b145e105e8c7bf90ed7729bbc405e065fce62c98eada40f77f0665ca041db41f16cc8e62473501eca32c24e56f43 +DIST p384-0.13.0.crate 236495 BLAKE2B 240fa9cf7cc066cba64e9c89d78ae65d0f0fff3e875b0175646114784a2eb0083cbdac9e1a17e6de6b3e9a6074b8f318e8d6abfe63b7de432c2d19dfc0fc0091 SHA512 e81451d336b2fd0c1dc3483f1e586b7d4059b3ee7cfc935edca6be1be02d23b1e380859a44d0a6cc6538fbdfbb22cc22b8d3aba11cf90c6fdfd0e8edecdfba17 +DIST parking_lot-0.12.1.crate 40967 BLAKE2B 940a112a066e3cbd15e2f6df89bfff37e4ece2194118618a96fa14871813c91798f93181ab0f768d3e1f3d60805508f216724013afb7e3da95678d0d951a42d4 SHA512 07327d3b737a913508dffb66023766348ce7f9d555c224a099cabb05baefd16a28e15fec638e3a148a5169dbd980c4541b0f8820ae9d06dfe0704482838fbd5c +DIST parking_lot_core-0.9.7.crate 32412 BLAKE2B fec3ed2cf28e6d5090aae6a7c0ad583acf3ce6e54e881b78a9cb6721ca1e7040d46c044d405852728e74baff6ff1feaee7a89a64c69d20531f29942dfaafcc72 SHA512 1f232f1a87ba9377621244ba49378663f3113da7192a399fdb70be971ff5e5ca0d0601e1210a3fd8ab75ef464dc8505e719f81902e3448cce5e7848ef4bdbef0 +DIST pasetors-0.6.6.crate 137852 BLAKE2B 23827d36f1365f5ab69f553896ab92437ca91a9b6d177e0a3d2980527a62de4707ca36aa7eb6fa7893a121198777d6417abedc80d7437b99b049843087c8a1c5 SHA512 513d607a88f573a7d3255907151afcf682d47b60fb5c95b9014b0391dbcdfadb3a2a1b57620b5d5f6db6974d2ecd59e7f8e4951cdbad0e92a3dec61649a2b427 +DIST pathdiff-0.2.1.crate 7142 BLAKE2B 7f9a162c2add4acd69a81171fdb31aa9a67beb4e1be0fe93d76dc46b320729257240fca5d65dee38901f6b6ed1e536e3fff09c93cf3482859e6ba27e7206fc5b SHA512 a646f271ce81d5f6d4a8e0d98a2c802a8796a961cf8fe8177911e7757bdaecd8b156ff22046f1663a9efcd5fef1e6f000e5509d3949dbaeb494126b7e8a546b7 +DIST pem-rfc7468-0.7.0.crate 24159 BLAKE2B 478d355dd970b9705ebcf44d74d61ae0694db6de16b2018548fda88546f53e35b965ff72d939def399a49fe97d3c8317a10385ace94b3d552797ec64ace1eb8f SHA512 f47d3b6c7c8bf4547916acc2a3d6671f6c1308e74641419c8f1df810d8bd940aba8f94d361e4cbef3eae3b7f11587cd3996a11be3be41d19111abfcde7a9272a +DIST percent-encoding-2.1.0.crate 9748 BLAKE2B f3ff35ac683724b15e40c85e0fb8ececb07b61beeea82b7020f02d27df05a8a3535f157b3cd688533e414d6541de7de8640ef4756706d8061af0fec94ba04ab3 SHA512 98af4dfa7c6a3cf0d5aa929c436f9eb1ba1b576a944513f1284e6df2ad06be7cab9eba145d888d50af88f8c970bacc702b323041bec6d4fa1dc34095186c628a +DIST percent-encoding-2.2.0.crate 10075 BLAKE2B 397e59acc3953868c709244b89a2e0db3304c0b574ecba761026b570a485f2cb5b0b2a0159586d1f342ec395ef02ace536da3bc1c72093e1cf93f8b37b26b0ec SHA512 890a5256d2b4290e12e04a02c3529f3a017faa2b6016a4dd0f08b36509f0b1107eacfcb4702024d6a21ff8852a11f263c1adc096b16ef8d12c45a734c087fe68 +DIST pkcs8-0.10.2.crate 26360 BLAKE2B a62b5b7386eedba6fcbc4cff2b103b899dbf6179101445283f9076080489129543561af1ad6f09061564f68c28954262e49d0bb3e182f2ce7495e19d6f34bd5e SHA512 87127d51f0e1fe085d46b30394f2a580e857cd64f5c6fe4a3ac3b8871230aa426598dbb007e8bdfd5d729b99a9c0b4d84116f0768886605342d2ed112c51dfa8 +DIST pkg-config-0.3.25.crate 16838 BLAKE2B b6ebbcacdc0f440e24ce5730edd4b371387cf7f44e438216893f29c0f303ac7920791630d4a9bf13581da840c8888e18bdd78dc61458d3331e967b3dfa6d0597 SHA512 46658794f0a7446354041c1cc08cf637970f7651c0c506e2b90c9d4e284347cb82f05ce282cc55c8087bed58a5b961424a56574f4500de9f3ba9cb9e71667aa8 +DIST pkg-config-0.3.26.crate 18662 BLAKE2B 2ad92dfdc8ac0414b12a61dd30ea4ac5f142bbb55d0555ecfa3a53e750367e1b11766a693ef11f8cbe5a2ddb978327632458b2bcf75be7aa8f973262033349ee SHA512 509c4d1494cccc20de6a62d9d037c63ff77ebee8d907747c57ba0926d177b08fcac0231ccdda14511b453deb0b76ddd10f8fbdf63ff94257d72a12a889546435 +DIST ppv-lite86-0.2.17.crate 22242 BLAKE2B 48c4a31a3b555fa37072c4de083580bb769747c7668748541af472778b5b58c3e7ab2b5e178760f542f973774f09910bdd4058ae5fb9d6b10c103eb76cfd0d3d SHA512 539d916e7e5869d832045c1aa88aec519bd000227f9b01d4dd0bfc9ffb640d5f5eb21b05eba718174773c97192a655ad3cb31b53ceb914dd19179a6699b3583a +DIST primeorder-0.13.2.crate 20139 BLAKE2B b6539be08d6e732143c45403c68add90dd19cbcd34f6bdc98e28383d314ef3aa2c27b5d988790525507033842567a8339ba7c8c933e705189bde2077e6b9d287 SHA512 8d7005b3463442f6e982e7cce91851cf60abb9da7fa20b148a660f2727f0229c6af33411fefba6a3c956325ccaca593a8e13a0f8d905b1ea26bc3f53fcbe9b11 +DIST proc-macro-error-1.0.4.crate 25293 BLAKE2B ef918c5efaf2545ab38787c8d0c07315af00431139e4dff66346bf798e3a429f91d12a79776c150412fdda0b158a72badd5e1044ac4d6917f8482d4b5a7110b7 SHA512 8a47bc9d3e24e9561d1e384d8f5a633284c2cf9b5e6733c5f9d1dbfe1870ccc8e2152482852e50b551cecb68e009148585b910ffb0508a7b4875598eaf8657db +DIST proc-macro-error-attr-1.0.4.crate 7971 BLAKE2B 98e2925881c2be186e22c2c439697e91d43f807eb61a5d13e3b0b4321ed50a74f3d699942c04b89b6fea0f156bb5d19ebcf22f9cd4b98a7e6917c437600ed823 SHA512 2606afa9ec78d7dad4500c98d3a5ecbd02c6b53ab829c742bed7f57b322a95238ab4e01cf268746815f1424fd9b02eddfa30e72f98c66106f57765f3d3116495 +DIST proc-macro2-1.0.47.crate 41955 BLAKE2B dbfc20b61443225130d08b05deeba56e63e76921e56359c9b0531798b18778d6ddcb56c3372fb6ccc68586a6c1dc725054f0e83f93e8623cb5ff6a7a2ed3dc83 SHA512 60c5d0dcbdee7ddab40664882d3cf5a868f7ea5b49ebab3b4419c3f325582b816625e73e0d1737bbd46bd7d765ece6c81c2ff4be894555d4b255f5cb9255e931 +DIST proc-macro2-1.0.59.crate 44360 BLAKE2B b1e42efd70e9a61bd46fd8bdd7db26aea142d98d28765de799901606b721c23a22c3e853d0821709ef5ddeac0304731b6a09c3bff3b7769e946b77fc67e44d36 SHA512 30e3340f53593afb3f07c4ba4c3d51acabd9a7513976aeaeed4c063fee268a28066c53b265b629d5d3f56597d1d34a9e69378f0ef5cda37b51a8fa8b67424aea +DIST prodash-23.1.2.crate 83797 BLAKE2B 6407d22f46020a7c1b2d78a17d05bcc4b8088a913ee31a778f0f403530e908ba3eecbb4f677eaf8dbb7e90bfb3485dbde47720203119aff0696e555c07d339de SHA512 733c3a072fd544c151e5e1298ac4cacfc4356813e454978ba526adec8c9fd00af6c37c84ebf156e5761776d07cc4142bbbf414ed19b01533a90222e64cf0fcea +DIST quote-1.0.21.crate 28030 BLAKE2B 547344ba9272874f5fbb4bd27a69ef5be99823e10e1318afe71971b18f37e9c73d54168f16efb82c53a332e4874c80a82ea951fb2c85fad50cdfe783622b79fc SHA512 0728eb4df7e1f7c4d32ab08c901c2c969db8eb46b03bcec3e4956a4f6b360939d32abc6b6ebd7a31058e8e9b69c3d995a24cb484f93656f05b4ee963be1c74fc +DIST quote-1.0.28.crate 28382 BLAKE2B 9fb16c3bb2a7fec3d8138ffec1f58277061f4a643c9051e1f6525f9e347ed9de41a3797eb3140a6dd828526eb4114c1f7ca562151dc933f338d64b175ed35d9f SHA512 846d718153f78cbae6dc714caa9413a5d5964bcc5e032f5c6c5356c62c33bf22635955ebdff0dede69ba1c9657387e65d61de7c537f6f56f8060721dfa52d735 +DIST rand-0.8.5.crate 87113 BLAKE2B 516f26bb2a969d0d79e957818133f35d2c0b4d9f1b401098ea23c5b80d27599e842b9298c0c5e46e2a6cb6953857bf8a9fb71ec9366c5ce6708cf17df14f179c SHA512 8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2 +DIST rand_chacha-0.3.1.crate 15251 BLAKE2B 645771b2c3e274f085e0837a20306b1d59f6e9032fba8eb38a6d1b30180d15e2f89ffa2a162bf6358da41e030098242d81e71dab4321980d0a4f6ddfc2974ce3 SHA512 8198c580b1b9b0429758ffa49cd8138fa3ce724f0dcf73c767ea7e55611d6a2e4c7cad9950896510def500ce4062b594386c947ac3d89425b4e5c9b04d0b8075 +DIST rand_core-0.6.4.crate 22666 BLAKE2B 8b6b66d50aade877f2779c006f8038db450f808c66d73d79efa66c4178dc03db06f12201bf0e7930181c4b0f4030c49b20cce6eb7839763cf2217cad9710789a SHA512 36c67eb845aa2ccca49d6d680f28d418229bbc5a050729e487fe6b9f9f384fdd7b8d67fc6508b90b79ffb3c26688e72feceb3ecae57d3d7f59338aeb62296f79 +DIST rand_xoshiro-0.6.0.crate 17125 BLAKE2B dabdc3641fa85cecaa057d988396f55bbefa57ddc44ec1989958b40ea7dc51ffc4d04cff556fc6182d202cfd61834256f31fbf8c71c40b37a230610095c0b6a1 SHA512 dfdfc6bbeb222f6badc186773f3f3ac7c899d76f7274c33fa7bddf00a1a02b9eb6990f7f37fd37097085cae7a86d21e0819f8dd0d254aebda66fe367b8867b34 +DIST redox_syscall-0.2.13.crate 23759 BLAKE2B b59c3e923b7bddc84285377eca86e649c21ee7dd61924245d43c6554124adf689f9b92841ca64876b34797249698511b322f6e8e639d71e45e1ae9da5f8b7834 SHA512 6551f503ba52c4edc0cb4a418ff212188ddc7be80dcb39eaf3bfb82faa9a76cdf359f604d6b32be6c6a335b54180c9399a0e32670333a5a08351957308486100 +DIST redox_syscall-0.2.16.crate 24012 BLAKE2B 9497a52044458b1435ea16e86ee072e379b6b11ee31602ea72d6b6072a4a99426f409c2e58108a4e9c36dc193fa49c83951e71f4fd4e158eafff18c594dc01ad SHA512 63b5d876baaf99f5cf737679bc6ac7a9e3d8a41aa93f5c59416ce7e3841e2513bff678773553cfe62fb452707f82acc384ea63aec932a31bf94679cd1caddd27 +DIST redox_users-0.4.3.crate 15353 BLAKE2B 5e3b4e902566620cee8856c092cac193366ddcd2f5aef787b1d485353a0da11486ae1359dc60f3c87a198cb68f93ef99ac7551cc2315412b93b10ffb10540633 SHA512 0d3366e23cf93e1b0e025a29025eaebfcd1145bd158e2663b94fd952dc2d8a25566819e3a03c4136ca16a6408d37396e2ead0814c3f0c2bb10334dfd0b838fda +DIST regex-1.5.6.crate 238593 BLAKE2B d2b200d9d3d8924e7dd7a1f96c769a5bdf01d9bcd358ffb90692c526a81ac6f1a5db8ab0c343b96868ef9d71e78633373744468fe97d281676c84ac795352745 SHA512 43ad2ebe14f43d69c62f563a4fd53b5657f0f2cc130a0e6353a13073027640ff891e9f9b40ea85858507047bddb2e023d668c9bf57f2ba0ae045b74b5f0d2a1f +DIST regex-1.7.0.crate 239421 BLAKE2B 6e9434bb9835bd8e15c81e817aa64e8443c4188219caf46579078c6b7cbd98ee588af0f526e0fd5a01814762dfaa113ca3d15f7cfa14e969d5acda3a631e9560 SHA512 974c15a593d86c33e0bb34f7a67957fe96dec07b3752f2b6b968d657845f5d2342a5ee9ec1359109c43e4f46c9b2b2b678d59f7b752455a0ab1435c1fa56ca3c +DIST regex-automata-0.1.10.crate 114533 BLAKE2B 0e357229f6825f14339b1d7c40730b83e62bba12115d01ed20313320766e769a653a2fcd2c9d19af51a82c38e9e42c1a31d005e1f44f5b6fbb3ead7c9c74027f SHA512 56d64da361afce82c6cb49e70b99ce1fca3e1969c54bba5f9971db135f8544c65f49feb8827789947b3d1dcefc9c49a7a434a7ffe0d09c5900345a1733723c5f +DIST regex-syntax-0.6.26.crate 293912 BLAKE2B b0ea1ea1f87a493c770265a8d9371e3c532bf5ca20330b5946f5c922292d4420ddcfc30105a4ec3c1b154b5a77e55e86987f7edd61ef34c12eb0b4bbcaf23d2b SHA512 46087f5a2abfb48f24da77e79e66f6e514b5d005c4ae2c3283418ec471ddac9e4a1361edbae9d27efeb10217157092f812946b7b98182cf9f8aa703e01c03634 +DIST regex-syntax-0.6.28.crate 299288 BLAKE2B 8554370e269e888e603c403089aa6eb4a087ae65fec016a428e424289990a07826e37a2e51cd353c7d530d5b3421e2db6a8f9d50e62379867bb5b6cbc57f2436 SHA512 ba5fb1622a330b67a4eb820551c7f20dbfdc6b38eb697b9bfddea4cf0060b473472045e93aaf6cb9727ae609e06ed285e1e42f06f34ac730ac39fb90425bbe85 +DIST remove_dir_all-0.5.3.crate 9184 BLAKE2B ab7ef94e0230ddc9b363f038254a180881bbc20eb04a254f97e6f71ed491c99ba1c88f5e85632d450243882a4a0df63f3b8b183bc1fbca9caf30ec23d577b1d7 SHA512 50417d6d8a33912193a1ed37eb72b47431b12ae65d2780cdb7080c3d141e63819da13751c3fb737685cea322f70b36d413389c3dc01aa12b4dce615aefed0e2c +DIST rfc6979-0.4.0.crate 9140 BLAKE2B 662d967b1d818439e972d19bd251a4e3609c65bae945b4d11c0ff4966e9fcfaecb739d0b63bd767cda6a22e77a52f3386f02cb27c5c76ce9008837c882f8df33 SHA512 fb68114f5f8c1e7b921ed175fc01813531a584b8cb2df1264b72e1925bd66b4c021714b3627fbbcf3fabc26e4d6578c4d246369a0c98049d4058dca4cbabb20f +DIST rustc-workspace-hack-1.0.0.crate 774 BLAKE2B 521f71467c95554c8a87ab3e10623ea3516932fe4bc9ca95c835c06b8e0bf526291dede3a5e08df8222f365f4d326c4054a99ef0d37aa6fb5210e2a35d7599be SHA512 48e4774a272e717ea571f4c22606ffca78245723ebc3f15ae5d0b28c5d767df9e772b7e2d6c5c3505bb09bf28097aa83a34b182856bb9d74b3a00b292da45315 +DIST rustfix-0.6.1.crate 17352 BLAKE2B f353ac56f01bf9e1b164ca6d835f408be5189644b3db328cfc6bac8532704af8fb85f916f2de2a4cd7f4d3c0e9a8c2c8415a94d7f19737bda6796ac0a83ddcd6 SHA512 17113d1349a0caff8c93888d5cc8bcf943b9ab9033e87e9851473ffc115d4721125225d433384c375fc0df00edf3d4b6388ee507d0fa0c95b7a6c22e020cdeaf +DIST rustix-0.37.19.crate 323809 BLAKE2B 6a01e5128910c4b1333359efdacd5d0c1f0cf0ac4f2615e6891c10e7de3ce8df5ca50955a3e5c27f3b85d3ffee9fe28105aac3baa4fadd05172645e9f7ddb853 SHA512 e1c00f97414313580dfb7a616cd0e9a64d87950b4d4e6b536b5eaea93b8741f769ef62d4ee1461af8266758f9bdc136a445abbb05c8355a11d338a166b498722 +DIST ryu-1.0.10.crate 48485 BLAKE2B cbc0ab4e0b2031f4ca3a34914bd61395d14706d42e2414757aa23a67530d549382d61b630159c92a169d1dd3315951b0071ff18349d2b090ae262de536aa29e2 SHA512 1bd0af71a20715251dd42596df6e7677e44f712bbb40b0d9544109c1b2478a7bd2c9393535f0d4f3bfe2d1b75b3a2b899044051715a7da7d165d6d586e0775f2 +DIST ryu-1.0.11.crate 47007 BLAKE2B d03e8df69c3b21c1b2e4ffa91ece794f141e9f9bce4e9ed1ebf394b1cb0f796147b86189885f0734df8f431b2d166d8f6ed6a261be398d6d088fd56046a85c2e SHA512 dd2642aab2d3017c31432436226d5350b894c8b88a09395eb7de6350964b3cc48451a829ce78b04a9e4e0480076fe1bddd0604f4e57700faa2d60cac6e361408 +DIST same-file-1.0.6.crate 10183 BLAKE2B a320c8343e0b38078ba81c4f0159d886bf47764c74efe0d7cd2b3218426e8341b51e523c00a9e5fbc2ee1057618296bd70b576c68751bd55d6ddb352defaca15 SHA512 3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c +DIST schannel-0.1.20.crate 41579 BLAKE2B a7924b4bf0f130e2aa4668cad3c7112e39e028fdcb04259c6926fac4875f8061a9148da5f001dc49051310ed8e6ab341da0990ccf0a7cbd4dccce8da54c1ca46 SHA512 19f217fd4571a0d0fcf52060a8639e0ce7114719aa23fb0aa2ab5a531e8f8be0a21af55ef45c8da804101e5a62f15669e66fe005c4cd5bb24def09f1b4afe059 +DIST scopeguard-1.1.0.crate 11470 BLAKE2B f774eb90b7d3ffb2efba47518e9d1dead4017ab4b38a4bd74914daa84a5af4bf9eb63da0496e3924499d79cd0439c37447aeda4a21226f95645bddcd6becfabe SHA512 368fa5726df8f42b599993681579a9ffd0196480ee3cd0f9f671e8493f3bedd1e1779bdf2beb329e77e0005fa09b816e3385f309490c0f2781568db275d4d17d +DIST sec1-0.7.2.crate 17935 BLAKE2B deb59ed300c697b0a8cfce31ec6a9edfda08896b72d12dd9350acacfc64571c6a68e8429005656a289caa3c73f2a08531b63efb60af7e253bc611b3281103bb4 SHA512 c6c0c589c9f0a177f4eb71fe1db1922865b721fb4d086a8c64d43b2ae70f76a5f688116ba2134d841112010a2d1dc8d0226782c52b7e6fc9f412f8d7941a2bcd +DIST semver-1.0.12.crate 29615 BLAKE2B d0a8e7d148859c402c6a84ed8e261e738879079c5f755a80af6a210696ca157f1153d61596bf40f83d75bb69f27c045791ed141a32441e5d8c906aea495bab69 SHA512 d9c0984e59c8abee49418f785fdf5f7110dad8b4c84368723b7682bde3b9f97eac458f4a7ae2969548757b6d989bfb45909ec4a26b191ef304995628c7c78440 +DIST semver-1.0.14.crate 29813 BLAKE2B a080f0a65127142a90bf033452241ffebfc7098b56a6a6b8bd818528df3b88fb48b3982125b405c1601e1bd55f3a0fdb4ffd9653e398295d8156651a04b2e903 SHA512 04db4c0a30141c2767d24d6d715b66ecd6355c1c88e572d4c473e0fa8c1fdd7197092b8286c973f25d201c5fcdc9105ba3e28c11ba1546a666167afc1fdf6728 +DIST serde-1.0.147.crate 76697 BLAKE2B 90fb2df19ad225c96a30cf88dea82a5785bb110f256b882cadef8d1e09f91dd610637a104c2e7629847a14d4a422f89f7ae324c29845788aefb0a6bb51503886 SHA512 d993bd86c61bba602faf7286ff21d36c5d8c83176c5bbb203cb284a3f89dbc8a1ca893a09eb2657f9e98ccb5c5287f44aac06d2e60db96e78d99ee40bd1fe1b0 +DIST serde-1.0.163.crate 77030 BLAKE2B 0d7ead66faab8ae01c693c9bbcadfd0a7a736c8bf46f50ef43ba261eec9e0f0c43477feadb2e134f0ed6dda3115dcbc3d22daa28592f343739f1ea03d9c25723 SHA512 752738ef5f67f1b4435bdd4e76e740ba192bd93e83cac55fd667809af26ceaf02db7083aaf7b2074644b38964021af206000b6130199e7994c12c9c57cd31a34 +DIST serde-value-0.7.0.crate 10249 BLAKE2B d2d3d687cf490eb0be1910bf82c09334ffe32efc485297ee228363e4dbb536b72e2c37f3d37a5f8fe61af7480fa8975c0a654f761c55e56348082e4605f2288b SHA512 6ca9a73420ca9fb5415730bac4daa30087b1722ed7966ae07f403497b8cab95e1e1da664c0581b9cd170494242d4e01be75e1d5f9b6ce19c538e7323da46bf76 +DIST serde_derive-1.0.147.crate 54861 BLAKE2B c758a3c854f1474dd3fadd66d60a59408e30d5b658cde4c7ceb10c8d4b4210c8069cc13618f83f1faf36de928feeeb82b2f7011b457e8b9003a15177714f9c0f SHA512 434d65dc0d78c7c1c3f8832221389dc4b0c5d74d605ce1d2d660c2df9a92f5e5d0c6d543763e1462c58d6ea18001c823ca594e3dac92a47d8fe48319a5c52e59 +DIST serde_derive-1.0.163.crate 54447 BLAKE2B 284d02fcbdd05c53c8da737fac422fd61ff53669b140686d1732ef727a1e873945b1ebdb85fbda1d79f2c563b2c7b81d3ac51c76fe0cf5205dc6ab4d46a9d4d8 SHA512 744c4235330781c8d9c6ab4f49f6ddd11fcd70b97c97fcbf1434ccac02ba7d29eacfed21ee8e005f5541dd8ab4a34023e95d85231f11c5f4d6e24fcf806f7283 +DIST serde_ignored-0.1.3.crate 12434 BLAKE2B 665fffd6ed4c42b331f3589d7bffa48d581ea730d352a5f26c7d133a82b77a3eb0f29bd22da19df6a7fe08334a262140d44195d7c591991da174ee29d0e3e444 SHA512 9c459540b614a2075cc4d6a6d5bf1f3b3f91e8e48687388b1aee4872ca0eb95b1c265fb2c918929f99d0d8f2dae22f9eef4c67c5ed2fc5376b391163b20d7bda +DIST serde_ignored-0.1.5.crate 11858 BLAKE2B 82d28254d8f43b29bbc16e5cd860e6c5692fd7b9b91ea7c59719c2961f979d6637df50b664738f32a6c1f7028d99a8d0a175b82da8ed49b3f71108dbcb3e14a3 SHA512 814762f5d624dc34d2ea1756a20e75f648e71ef8489243985088c952ad09e89773133cfe33a205315cd37ba9b40ad16792c44b67f0be90de849bd48ec2338a2e +DIST serde_json-1.0.82.crate 144514 BLAKE2B dd4b5ee1b93f04be09b1c204f8484091d608acc3966ed4c8252a1d46003dd154666e2731e761828dda4123da5c45bda653f453454c5c7c11977aef05bd0e9e9a SHA512 39e4cb0d8b22c9beae6decb87b9692581698c6309b2e9fd78e5e199a200da563e7459d34435b7890e274e13357195392cab69d73d3ee2ff537c1667de32f92c3 +DIST serde_json-1.0.87.crate 144383 BLAKE2B 357ee30245611b15bf98ba719266dedc75211a80a660105756b20d52f50bf4032385b366c3272cfc1c7f34022e818cb6a6af799faf76f8d5969c256a02f9187c SHA512 77b90340aaaa0fb477b33e6628ed2ea0fb53cff1e2b5724a3474e24b2bfc9bff077633d9581e41dd96b2a0e167549e992d238bb09c627fb5680996b39583c4cc +DIST serde_spanned-0.6.2.crate 7749 BLAKE2B 3a2522104579cf667e567e1ef65e2e1db3fda700abbf10747f1e770b45678cc6414ffdf384690796fc5df570e39a7518af15857c8c3b5b40fd185f32957ef30d SHA512 ca64305238a8cc61cc4db3c9675299d34e4810dd63387be65231369cccb69c942c473b01388ee2b661cdaca8e133f1e8848bfa4d6a43eff28fda0fa9e1fe7ded +DIST sha1-0.10.5.crate 12146 BLAKE2B 476a0c365ab639a0ce427856787595865a60339fd6b81a45f879ff9b9112021d2c3a62e0a817b4555951131a7fe257d0c30988631ddddc3d217274c46c79ebe6 SHA512 1046b91a9ea64b90098ee6e16c63f0620dc7c2dc847d200972a3da3c8d1ac61fa9030682099a411cdd24717b64d488e0b1be1cbe8f7bfee26b8c15cf4f8e5e9b +DIST sha1_smol-1.0.0.crate 9782 BLAKE2B 214b58f6a8681399b9c925815f4ff48974466b399e96e372c9592cb139ba9306ba162b3b426dc12b585ea15b616fb58a60d253b4d928dde46217de6ddf7d0437 SHA512 75d6809a2aafd47cd5f5888f42283985895a9c82b53ead7529a23cd6f2484f32654094dda7a9e5d93e82afc9d0049938def1bdc28803502d140d06a3496adea7 +DIST sha2-0.10.6.crate 20558 BLAKE2B ceae6f1e28606371f93f5e4fd617b2cb057ed9aa4aa2d81bf4c6af4ca47d639a51f50d0fe4fa77667022c770056d6d711beb4835b2341ae0a8d667f11a4a51a3 SHA512 38dea4c300ea8dee22587ab0af6d66dbde824e1cb071e02e7790bf978efff6bdb6d4076d61c5acb38e86e69261a65811a7bd0182299d53ef053202ee54d2b05c +DIST shell-escape-0.1.5.crate 6847 BLAKE2B ccd71a73b217b375843d3f0a762b3f5317bc0fdc8e43380a17f25e1ffdc391de0af7b0e4472be23241a6654f5b6ab799a51bbed8da35295322002c54ad84e9a5 SHA512 848f8d47d802b82e83f113fb07f44fe962628379481d1bef9d15f2e5821a382c9928c32175652361aae9fe4c8fa5c1dc1c89350db6ef5e68691bae4a3742df93 +DIST signal-hook-0.3.15.crate 50138 BLAKE2B feade39b877523dd138a5df3114e13c35d6a2ca281ed4cb7774dc970b3cc88b9dc011db2914c87655c0962ad1cc72293fd105f06fa4297e02fe28d78bc56c1c8 SHA512 8b7703c8ef683868e4b0c315a73fcf6802f3e28730db6b79301e9818532ea62d6d218c9ff3ba465e02ed5c19a33e733ec5f7750ae9e0f823a2ebb35bb911a3cb +DIST signal-hook-registry-1.4.1.crate 17987 BLAKE2B f1df8bba55c72a506b9210347f9dcac4d158948e73f6d1e60f43340ddfae368aff1bbb6a109af326af47246d9738d49f76d380c52208efc3c6f79ea0acd31f0b SHA512 e83acec2b0083967555f6c659dfaacc32d851a9485c9f6f4b4cf257742ae3ffba8c14708c75f1a5520e9d132ea9e21d6eb65aba492eec481e8492af8b798c5d1 +DIST signature-2.1.0.crate 15627 BLAKE2B 241847a73a3bfefb952b3e4e41a48b23803dbd949feddad06c02a20cc4aa8edf26c039108612faee896508c8bfe0defc99d3448680d8e46f2eca47fd4b5baeff SHA512 f903bd4d07bb954992f71a6f4579bbe935282a2b7154fb5090550894a32cc2981b7765f8b24f1a0ac9e41bbf7f32b99a91b8f22e6175323edac44ef43a66125d +DIST sized-chunks-0.6.5.crate 43628 BLAKE2B 961121bd773ea5f0e6c3210b17191e122e90180cb39b35e501b49c41de69ce17f29bdb09617c22db4b4632f11193b2a97072f493707e66b956dd6dea61d5f310 SHA512 c7496094a6ac45003b31d55c61aa42e649eca40a2540e1acc507d541d3c02e5a1801fb517e2685752b81ef5a8c0ee6efdcc93dae9268f22ac8c6eaf1056e9656 +DIST smallvec-1.10.0.crate 31564 BLAKE2B e3e46a0781d3a7892a739b001592d462d0704f010363984c439e3fe4f75aecb9720648aa1e9bcc56bb3be848dd40cee578212439f78f07a807c9441c3c3e0147 SHA512 a09110184582dcc01d7a0d3fa8f74c17bf726935126d3654667b8e9c4bc43ad16ccfd8fa94feae7d9b31913aa7ee030fe5936e4b44a36302b6ce5fe37372a7ae +DIST socket2-0.4.4.crate 44048 BLAKE2B b2b1aad2995e44944b98ff3291479fb74e8cc965f866e692821427e488c68282290773dcd77da0542c45daf231a5e676d20e59a1d4568b8dde2da2f16425feb2 SHA512 6624fb9b933763c22e6114a8f72c6af0969912717017dd5b13f1b5df19faa1b160376c12e8c8023c435281f6a7864e802f3c4c535de8a345fe206652104f2cd5 +DIST socket2-0.4.7.crate 44619 BLAKE2B 9bf2560812db2c91498d12274e02d17c279efe5817d882faabc465de71b1cb8045f6eab3c8e6031f6fd18e0e77913f42daab07f01e8d83bfa5ea44cc6966466f SHA512 44487f2de30cd327cad1af31ad36aaaa0bf10c33b5c23b024ada8d7e41d064fb2adbc9edb14aa8aa1eba679d8530c373c7187fc68d9709ae736a5c1a2cf37088 +DIST spki-0.7.2.crate 16270 BLAKE2B 95e0a36569f2d8941717c1b5ef1f346d2c5017f469d4fa5450fcea781eff102178acb2bd0ce226fa042a7c1457c121c42f3757a4af34912dbca0406060c56bf7 SHA512 25eab1b8590ed849ce1e93ac286e51532cfbaedc8c4ba98449ada0d675c8bef3bdeafc942fdf574aa8def0d148b7a6c694c69cbf37a9a3da12540b3be67d7fdb +DIST static_assertions-1.1.0.crate 18480 BLAKE2B 358dd5ac413d06f62da0388e2016c5fcb8ec68fd7dceb0dbbcb97665c032b7509b7e083c20701648b6a9174485f117c02682ae4bde7ef037e80a85cdf6a0c86e SHA512 46d0e35f77941dee6f60f574c130472248063dc38494c1c4f84f7c048244cc2a58a86fe17c0990e3f0f01406b75ed385a13d00058612b27cf0e867c8d31c92ee +DIST strip-ansi-escapes-0.1.1.crate 8668 BLAKE2B e140f9cf55224953f0fc64480cb62a8191ac7fead81cfb891009ffb379085d121c577d6b40b726c52e9eebcedaff617554b0e0b56975048a99dde33b85de367f SHA512 ebcddc0af68f7263726d8f9dc3825819ea75389bc6f97f97f0238b17a06e0596f1562ddcf065178940e4f1963bf7a2b99eb02ec124f9f633b2fab1b443bb5717 +DIST strsim-0.10.0.crate 11355 BLAKE2B bcb25ad0a7284e24e4f17ebe0ccb621bdc4118e499b50b094d98aa7e8fcc0b96716c9953c3516ce7ea78309d41d424892ded595259696a5bbffdcb07802b5c2f SHA512 78b318532addfcf5c1ccc1e14539e258aab9d3cd893cc45d82342549bde838c177d90f13c560671f8f32929af47d0b467db35e6876bd7697d8b3f9e055aeeac1 +DIST subtle-2.5.0.crate 13909 BLAKE2B 660c3a472ca54c9843ce3feea74b802e27fd7f62dd37a30e2a4ba82e4b3a71df63562e8865d5fc675d31d0900998a8730503f91a61450884446a3bdd6af0041b SHA512 f150b1e2037554f8cd3213a54ddbc258f8f670cc4f39e7084cdea4b47538dbc58b834bc93b443d58a4b9087224efc003234042aaf366687dbd32b1e7174082a0 +DIST syn-1.0.103.crate 236495 BLAKE2B fd139b1a8b4449e9be6eddf0036c19b93b876182a03f36954f79eaf79abd5e53667a8a9fcb5c872c96639779307fa293f597831ff838a41d90e1ea201f8a4797 SHA512 3dc0f564ac1a4ce85060926c0897158da0baa127a46bb318506f4fdc79e53d9439295e8ed6a2d5ffcf15d9f6651081b7602cc2a091538e8df061b545f7e3bfe7 +DIST syn-1.0.98.crate 235451 BLAKE2B 0667c24d7f6b9bf4c0a5f45fb51c903303a87c72d445ad824e05ab98a158f9beda0d00721144c486335b6a830db47fe57a34831cff6995f478c969c4d0a039dc SHA512 fe5dda742e085e14b6aea5617d3f9dd19ffd46009f34b119c0d74ec693042f641e594f75ff027dbfa38f3d5149a94eb6187248ee9d09d41dab9cc2cfc18fab18 +DIST syn-2.0.18.crate 240648 BLAKE2B 1e16f0936faf2656ee74cf9c75bdaec19589a4309d68b0cab37438061cfa29c66a1dcd624ad9247d63c85b3c1fdd8a484a65509d672cc6471f3c93f3ecce30d2 SHA512 2642eb35d52022c6d21bb893843beb9b737a267f620e1f5a6c9096d434fd1fab05fe007c8d8b6f1fe00a25007d6f55dbd4ec620b9f5c1154659bf34c246334dd +DIST tar-0.4.38.crate 49158 BLAKE2B a344a65951c5c39212ffa3cfdc7dc68c40a85dbc5e4aa08cfe7cf22f0216443fa081ddba5e8fadc48968cc8e70e08d23391a6caefdf359310e5880741c9d6730 SHA512 4b6458734811e1913cb7e348f32db16f9402fd0e0027ae867db81aecac250b35d07d9478cdae4e27a609ce0f29c9d61683934296cfc3b371119df9f2c380a84f +DIST tempfile-3.3.0.crate 27578 BLAKE2B e98c5ed4c59b6ff411e89ad4eb529bbe15264d6744edca8675c89bfb4397fbbb8da60bbc582da24bf9953afd9bb17cdb22654d933468697e9fa9e9903e6a7c77 SHA512 ba6faafb2dd56d694efe424752099a2efb50316afc0a4db9fdb7620ae3f1a31dfbb2a7b41724878cb977fa11f7568a406bd3b6a4f7cfc0b88b86b2cc616b953e +DIST termcolor-1.1.3.crate 17242 BLAKE2B 5aef69c0004081bd3cc4d531d13d63627cc02313868c0faab62358d13abfa7b4ba82f142c2801d25a6ae46ecbc8b7bdbeaa21c9105ea3b8950ab6a38cdb88513 SHA512 5838fcbfd70f300cb4b62aab50565db52074c56b152ccc8ac1173e4676c0d5a636271bf5a645a77da6e1d4edbf0091af2cd4dd6d73b85c3d198c760898c06f3a +DIST textwrap-0.16.0.crate 53722 BLAKE2B 44140aa2dfd5076005749449a56e920418e71e34cb92f1d697eb3f3e7f6fe87b0a3861c8a4050a4a62e03187b6cadc4495e4200bee52ee183541431c73e47209 SHA512 97ae8acece5663e1a6b08b827179e96d5ad0ee67d635888cc3d83454b52cf48fce97eb0eba374ba4747834099c74f43d66d9fec868e84be45369a42c1aaec2c3 +DIST thiserror-1.0.40.crate 18709 BLAKE2B 8057ebcd11546f8b3ae5d760c1dd1764386f3c29dc43bc7a4aef20604970c65356daef137734e80260051d41e39979943bfda496459696b924a95f455159704c SHA512 db1b1fab3aa61dc6bbc672670eb70cee2f838fa713d3a927022900eddde253108d123bded1aa6df8d314e1aa2f8ff37bc72fc9b0803fe3a56447a64290ab2a91 +DIST thiserror-impl-1.0.40.crate 15138 BLAKE2B 7590428b5a97efde6a823440a9c91e1d1835b20df4ad8a700c1eeddd98516f1203605853fc6dc65528c5fd92480d04f9a8412aa7c20a524cb94435b0a0032f1d SHA512 9027f2d4127864c34d2d92ad3b2753a95893d26f5b2dcdec869884a98232c5304db1700a38112ced258e5f3832218cdea3a4bb21223098e1b20d06af1fd7edd2 +DIST thread_local-1.1.4.crate 13106 BLAKE2B 64c19368f8cec46f23b3052759c4c4ef0de50748432790e6ea11b12477239b177d54e60b9046fdcb2f495b8e0b37ad82809d03602edab9fc85cf814e3bd94fe2 SHA512 db7ff3eb88a73d9313dd58d72397614c5aae6be1d64ead7f16535cae2857be3b27d189e7955308591ec64a0d67777fd2a62a2b124ca73facb9a2d8e0458bdbb5 +DIST time-0.3.21.crate 111598 BLAKE2B 8b760bf4bb8501ae3b4c121e1265b9f07fea633e8acfcc091e8c2a4ebf1f2025c87f13d63c95ee46eb3fe31f920605c2100349c8b7be0242ff8c74037fc7c602 SHA512 1bc0505fd823d7ab869e2b8b1e44563dbf2bcb7cb4a9fc67d32efb54872177e89b7dc051151d4d83d21d77d4c3d89a3370d35e4fd5db9bb5144a373e309c9ce0 +DIST time-core-0.1.1.crate 7197 BLAKE2B 9d0be2ef7111a8b66e5c750b2c372627ae4acfb2c68b0c6ed44b3c23bea1cdca4f65b24d2f2027b4d334667b1620019f4cb8c6d9799c1c2c537e6cfe692ab88a SHA512 a29d6619581d3fed73d6bc66a2c18805b80a3d54197feac5ad987a2c31d003bf4fef88a312d5315d2fa5c7d3e509066a65c1732be2ce280cf937bb4eff012e14 +DIST time-macros-0.2.9.crate 23684 BLAKE2B 5484a3c5bca52fcff3fcd4e6f060ee24ce293fbdad1abd5819d0426eca29b95de866fe1273e0ed3431d1b94b12c37f23748d4cacb0112a67e9be0f49132d03ba SHA512 2fe094e61ca0ab708d60693367812f1b87fb9b6770dbfa3dad8a2aad7d2a000c24ae3b8960104d6c5b72b4a055c7715fa5d4d601eb7b7ea1764bb730aec86033 +DIST tinyvec-1.6.0.crate 45991 BLAKE2B e9699d4d80a78978f0ebfd049f5b33d7f23d401cf4f4439ccb168e8c0e322473ad0ea7e2ff0ff69e9aac3e5c4c9ae5a7102185533bfbf96dbe77b3526e700bc9 SHA512 e5acaf353c58c60ae5556130a934f1048abb79cf6668ae467d308bac44b689d8a9997227ea879f4b5fe50f29cde8761801b088d7149bcd063b973056c381921c +DIST tinyvec_macros-0.1.0.crate 1817 BLAKE2B a3d1966bf57c11afcd026269135a6189f149f905bb70b47537c0a7bcaef0bfc6c89bdcbdb0f6cb8e5255632855134631c683fc90606a254ec8ba818fd5ef0794 SHA512 d6afc83a3c70cde916a6ff599e2772588e4bbfa7a5b1c7e5c8aa0f4a8a5c9426182497a644e4a88194ece986d38fa64b6c8eda9eb1630441c8e65a8741a45873 +DIST toml-0.5.9.crate 55667 BLAKE2B f2bbcac136e0182cad9b51f07943610c8700b68afd08fdbb822b47bb79d215e8132376da8ac61fd550e86c353a83b007297b6ac92ef5d503e1b90e746c40c649 SHA512 7151bcafbe2bdb1d2bb91562daebd357c884819af047843f1b4a56bc3812d4153eaf70683d0f9bff51bd1048700920322d64d41da13ebb4cbf34f0f7822d7ce7 +DIST toml-0.7.4.crate 49003 BLAKE2B bd2f17019fface4e55370ccae5cd8e768227bc9303a105e9abcd7f7e67cf758e47cdf77a40170782c0be85ada4b7645d721b61144f90867332da6ae0728c9baf SHA512 aa589354d4e0a608257c62fdfa6f09d2094b6799f6cad5a98deaf44f689c8893d1b7989f1f67ff828867a9dd079374cda03de62dab624f55cf9df3aebe7557a1 +DIST toml_datetime-0.6.2.crate 10768 BLAKE2B fddffa3e4f8f4076c66c171379670df41d2be2c33810a78c5902f11bf8910f39f57b74d5f00ed77cc6b74bdbc34b293b57b2e867233a2fa9373f8ce7635669a0 SHA512 4ee0e8685c2a0738ea6f8ee10bf1dbb823d7c0e7bb7d4bd90d633f5f9056f77bd5a768d6b27d0f8d8a5818374f8497f20fdbd9a411dacd8b4fb58671aced1b1a +DIST toml_edit-0.14.4.crate 105387 BLAKE2B 63b364d812969fb206ec8ec38e8c0264bdea3a3e7482e2f253c8b0c4e9903bb5becbea6ec03f38d9236be7cbe8111a437e667b901ed75fe32d6de3f94d3a2790 SHA512 613aefe6b648eb202002d447a63cec1b83aaf6ba04e964491069198a0fc39ad11268509a2ebaddd68ee3253bc28df2a0e771cc2876c57136e517850a3926fa4d +DIST toml_edit-0.19.10.crate 95594 BLAKE2B 5894ea24538013d37bc6c4beb762c18c07a193918791d062a4ae0c1dfb0cebf6014ce73672feeb9fd3ddb0d77b58ecb2d3946ce00837d81d7de69b77c497bb0a SHA512 9ea97b52437591ba38b2aa0706067254de68d40c491ecd6c53aba370112a72cb502012c982a2b915bec4c0858215c3f0c44f65d049097c8b71de45aca32f58cb +DIST typenum-1.15.0.crate 40741 BLAKE2B 5752d80396d0a37b0069b98ace9efe96d94ccaf41b33b8149c8b8c6a767537dbffe64251bbf61f3812465ecbc8cb45544f177dc97ac9735d84454282e4d1ed66 SHA512 a3c1ceac85e1aed98d0829449c35f4f36db860218b955b4e5f8f01da1d27ee6213f3c60e2b25c3745dcd67369049da5de737a9473fa9402db99cf7cddeb42288 +DIST unicode-bidi-0.3.8.crate 36575 BLAKE2B c0442dd47a8ee81f575b28e34c9781ccf507b53ea96d1d4df2e8117231e8e67579031e4244a2dacfd6f4c24ec01fbbd4da7c9ab72ad50af51ef56d7d813b6444 SHA512 810b5be48159ecbca542c715496f279518285c3b09f7c39451986f94e6c259fab1057512a2148bf99ba9abf76e861a24456b547cc2273f0b45ed5d3ce9dfe3d5 +DIST unicode-bom-1.1.4.crate 10221 BLAKE2B d175111edf436f96d6265b413c8f70b0796e8b0a0fe5bee90a459063dc82dad9837b0d32b00927aa173205b6b32dfedde08c583953b47d332d677ec99fce184d SHA512 c10c42a23822763f1327518d43237b9e2b2d2c9cfd4839d990beb8c85be7cb1cbc528514ec5f4428bd486bd59ce9036a7f980f2aa76c1a28aed2f3a57dcc7343 +DIST unicode-ident-1.0.1.crate 33770 BLAKE2B e028e9f1d6c01a7a37c8f9ecd6b1d99041b45674bc7699066bb7479822cb8d5a1b4083db1117d9d44ab05096d8a37a9bd5d93dfe8cc5db6bb58950b4f5d5c8e8 SHA512 505650712a51c6f309c97bf72029de1eede33c71b84de9733f5f987859a61225e3d07d369b85a89797d870ea436f30b5b5046306f3d5fd672551a4b30c43e428 +DIST unicode-ident-1.0.5.crate 35455 BLAKE2B 7e14ce97ac53a88ccec015dea690918a673dc5b49e44de7fdcb5421871da35c4f514c6db9a363d6f4bfcf2e9a61a50a593d345d0b6f388ea882b17a00cd0335d SHA512 d355370daac356d900cd4c0a792d6c0eff114524c4bffce4d7e74469fe2117883ee00bf0e27d950b72e88739473f2045d5f83440a0aedfede97b4d9163b64a6c +DIST unicode-normalization-0.1.21.crate 121745 BLAKE2B e67a472d39b72be66f5f8e5b924157232dcd73edb2ecc1bf4f1aa078ea3b9860838afcb1710297367fd8c95f3c1331c91a520ac46c39b94f58a633919f124c95 SHA512 2994104d3393a117cf3eafc147ec9599c870b3bd4fbd096980534c8aeb48c6ba05bcf3f9804e3f2a0148940186dfb27871b23a991360bf8253a5a644f3cdcb12 +DIST unicode-normalization-0.1.22.crate 122604 BLAKE2B 3f3430b279cc0ce1595392c869442ce676ab097154c688779ebcf726e10c497df59be2cd7bb2f84f99499a9df0654760a10ac92224c17d74775aeebe291241e1 SHA512 a5810d5e9cd93dbb80e013997aa9d38e60834619483a6623eb2859ec5d59a5aec3fc4db123dc7f4e2fe9f2b8799cf6af48bdff22d69a00a23707240e8bf3bb3c +DIST unicode-width-0.1.10.crate 18968 BLAKE2B 6174e307fd3ee290d0a5d1d31233baaa5315cdb73f19b8580718e9f9eb04cfd3aeaeb474af1e50c4b9fecc6fc777937dedc527c9dc9ed14ccf42af099e591f31 SHA512 9836a8d489d18ea1ecfe1957ed6d5da7dce825e138cd1848aef093fa8d2eb83fcf01eabb1a2446df4f5ede4e67316e9e81b5d58b59d4e8c5d67870e8fa5dca3b +DIST unicode-width-0.1.9.crate 16745 BLAKE2B 38d4b92e47a284d6881a8073089be59a73d82b91efe5522f55be977f95f479890b6c02cd519544729f1b1e62eb21bcfff8c5f5382917f953603b760e39cf1ea7 SHA512 0f5ec46c57e3b5e50cb8430c89db8d9c129e80ca11a9c398b5312bfe95001e19ca3efbfeb01c3ac09c4ce7e26c6ee1f352f7e114ecef78cefd68c54d2d50f5f4 +DIST unicode-xid-0.2.3.crate 15174 BLAKE2B 5cfb2a094047106a45eaeb77ebc1ae2e17ca51ece71082c127d3e2bf36773959f52df1c6df0d0d5cbc40ec4ee7f81820a094fd7ee99f01a2f99a1f7f68317223 SHA512 2adea0c8447c9450be34859f2b2e2b87a61b5e313685da994d21bc24a96dd94088f3320bcdb8d20466a3fdafb0bc0375823f0c28ec0077c9c42a9818f66ac1f5 +DIST unicode-xid-0.2.4.crate 15352 BLAKE2B 80c327b39f3b8f2cdb5747cde968cfa1efe7b65b6bee9136adc881fa19f66aa5b1010d9d08de55a61b322d665b5b0cb0395e9ac471f6333c40d8dca5d97e123c SHA512 e67bd1258e1961807d9d5fe583a89ab5b82b2a529ecd32cadfc79aa5331380eb4a2db9fd96b74c8eace47f2f29021587d69bcdbf79f7e2650e92a25f7839d03c +DIST url-2.2.2.crate 68555 BLAKE2B f8e59f784b6c2e16bacfba36ad68670a6af17c16ea3b0866b5aa98e5bf4686cf1b1aac9b1f0a0ea3b89a01e044a2ca37830416f42d147158ea8e88f23fd28ac2 SHA512 f9b6ad99d69ff303283b3fd9e98945fbd6cb411a3d141badcbb3a0566723a451375e6dd5d5357e3eb7a1b5b1ee5756a2347c43817db2de6fe35b9004b090e077 +DIST url-2.3.1.crate 72777 BLAKE2B 6ca0e537baf373b92269b2531945c1cdf360f1566cae4734dfb96f05a605e5c6c82e3192a1b9dde0ff22b92b87aba2d56e32a1bf17882b4de15efd7cdf52bc76 SHA512 8224010bef067574481e5d84100d944782d52b49db7c396ae2b4dfc145ed58769c15440d97a0fed4d2f9857592a8601417cc5b1bdea959c47a3e7a1f7182ed0d +DIST utf8parse-0.2.0.crate 13392 BLAKE2B 05296f48fe429a871f42e729e3540ec3a974a69892c6bc9da95e23c0aee2163c9b115a9614eb1943363076793e17ac4c89e28066a9816cab30c451524a5832c0 SHA512 1f6a2eca32e42c8e4b53d28c4fea54c426ed66fc01447b3cf8fc0fd75694453eadbe3ba000ac8ee0347d16dbfec47681254117949109081798eab5370886827c +DIST utf8parse-0.2.1.crate 13435 BLAKE2B a1c111d7ffc60690f2aaa86f034c66ba1abe4e126f1774a4377d41eba3269369862f57515af387ea785d69a8adf46338b5e53761b5ee6f4f4380473f4d9cab0a SHA512 51fba8f1e7eb74b7020fd831e30a67fc8353ac2ee07335c8c3374a5570ac8117f165f6905d4b7f0360095b7b5ed3e739001d02a8cc3c89195baf2cd679136050 +DIST vcpkg-0.2.15.crate 228735 BLAKE2B 6b6bacd9a7fa38919241f45a97f58cae957e58d3aac99df208a26aa718e4f1644f4ccefa31b09151e5c1952288e0e5837c363918b98c7f55079a948a952c1c50 SHA512 7322a21e8811b2fe4e79e09dc321458068ecdf1953f05d36233f3278ecc0b1dfc64194db7010dd46fcf692285f42475beb090c6c6cac0c8f9fe0eb5c770e3172 +DIST version_check-0.9.4.crate 14895 BLAKE2B fa1fa4008af165bfc1fdbe560488afd9d232cfafee94104fbcc4cbc52f234849bff9ddfa88109a1ac682f6d9c1d86b0459893d223f64e65adc08966aaf93dc89 SHA512 b172dc9a3759a4a683ffc39b9a40b03b9974b626a088217de87090466cef695226557c226cf3e469b2b25ee7297b7eb0d7719878cab42457f80146a81943c0c8 +DIST vte-0.10.1.crate 24947 BLAKE2B c7e94b7bba2423d14e5aa85f94dba856a6c984261551f204f029c55ef923c0012b259e5b229974b54b4eb5da1e85bae3c8cdb680372b5f9dc6caf51d1075b0ba SHA512 0c8fed2cfca5ad07d2a146e1e26979d390347a409cdc2b960246fc2fadd85019b9febf2dfd618f7a144493084b55f285c58ef5204e613bd9013af26faa9f2033 +DIST vte_generate_state_changes-0.1.1.crate 2422 BLAKE2B 6e8fb4ce0ca0fd6b9a4dcccdfb02445babbc13d47de5fae9bbb81e8c67ada8a40e8dc5e57c120c36876293b111ccc71e1069ea3fdabade6f9ba5ea2d44ff4632 SHA512 ba09352e037cbd279cbf5641c9783a24f76e54f1f09e13f0ab1ca99c9646c1e3c958e8e302d7cc88431073bad2e2d5619410f2f93f96f1db25f0f0ded0236f7e +DIST walkdir-2.3.2.crate 23516 BLAKE2B 473f2b51aafd6ac17e5c3da8d545d179b31486b3a65ab39fbd8bd7fbb2ebcc24bebf01781200a26a68f0b1cb464f5763a919aead3b03eba5a7e1be6efec5500b SHA512 6c44071354faf37720ec4117ded34c8d530489542ee107ac26a7a56ef4a882b9003e22e84f1d61f6078643521343e35aa1f7b57c838779e78e5937a667bf82da +DIST wasi-0.11.0+wasi-snapshot-preview1.crate 28131 BLAKE2B fe501889f25d65e2d032f885cc50c4f8bf7dd70fd5cbc438de349838370d8699e9627b0a4fc76030ea9fe6d508f41d0c9928a875fdbc47e73bfb17241cf7b155 SHA512 043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f +DIST wasm-bindgen-0.2.86.crate 174170 BLAKE2B 09146027b7c841ad0ff4dc18d2440330f5fe76d445cb947a5ed47e12455cfef8dee60398be6c32fdb7095535d1c88c7cc61a11c5194c4a0b9e4f55626b1dad0d SHA512 185f513e0e67264842f7ac03f19dfa89c6954de333fd5dcf6ba2e016a459c4a9c98d4ded341e99d0fd1f2795c458acd1e5032b1f74f6cf79c220b156f26c093d +DIST wasm-bindgen-backend-0.2.86.crate 26792 BLAKE2B 0df16a87b4e3b91b2c66613e49844567ef036dd79532759e07296dacafd4993d2783f88b137b5e6e5d9c7f18c8f4c7eecf11edf666e6dfaa4c1d3dc32872ace8 SHA512 6e62432e29f7ad02e890c5c4943869a166606a7f9ba9a8ee78fbb1d86f9083005da5268e6b18ce1da13c5016e8c89ff3f5576ac3bbe3ae4587bd4c901ed5e436 +DIST wasm-bindgen-macro-0.2.86.crate 13888 BLAKE2B 267d19541474501be9ffaba4ffc6a81d32c3c8bd79ff60cb7588edafcf00a65d4547dfcd6ff12692c49438c270e0611e6726ab03ad2b449f7d4c6d41aac86949 SHA512 f6ae82d9ae6e0316c9d35a02100c7e93d5fa17e23d36f72b04a1365a580323126a514bda71f7c225b51ddc966460e9f3d7855cde15a9264c05375a92a56e4f75 +DIST wasm-bindgen-macro-support-0.2.86.crate 20027 BLAKE2B bd6363b515400ba393c8f3c7c38e8fcfd19d1eafc377528777254208d3d03cdccbd208c83e70291525b856d88c36f8e13b8c9df3f2d568133357c1e7b047baff SHA512 f4d5a883be6b7e6933e705a112b5efdcb1c5a282b214a592c08c6b5fb423a600c6fe43581cc2f8c13ccf946c5a210e05d0455cf594eccee2077f9a96c5a40902 +DIST wasm-bindgen-shared-0.2.86.crate 7246 BLAKE2B b199125c7a65dd2f77e8700d459f1aec0572c6f1ee16198f7212d494daf4a71ec7637803aaec54e3b04bc991281d102e6f4da9d63838919238b2034353ee56df SHA512 e2a557c58185cea726e694617afb108ede9017f2aa492309695cf9a8b339806c0d9e35c4eeb6733acc56f8d0291f34fc236651246e82b450435949a4d2e0002a +DIST winapi-0.3.9.crate 1200382 BLAKE2B cb5799749ccd935ea2d7068d953cecf19f543d9db7dc16ad4584bb7005373ada34937a3ced7225544d8bc765da599911c7a3190efefb3a25b7c1bb7123b4f673 SHA512 ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 +DIST winapi-i686-pc-windows-gnu-0.4.0.crate 2918815 BLAKE2B 4d357e4d30f9552972170d65b9a5358b69c46a3e772fe05efc22f3d4ffc1caeeaad7aacdc7abd503a7ad0545f8bd7d22bf351dcb6df76f812fa4d45c34d65df0 SHA512 a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 +DIST winapi-util-0.1.5.crate 10164 BLAKE2B fc800aceae5249a858c806c3e969ef2545766099872d856ebee51c883d9acf1122278db9607d50ca53eac351502b700fd2463900932d342240f97f683d517963 SHA512 7baeb661f397c4693dfa001fdc774b323c51a7c55caad40f2de5112a1cefd1d6151e3df41fa4ee193460a5905917c83d2b1de5fa10b4bd014ad96690af95c0fd +DIST winapi-x86_64-pc-windows-gnu-0.4.0.crate 2947998 BLAKE2B 2ad1ea8b5fa07d544e910ccba043ae925269b76b26c9da356305b34b86741dd8b9aff0b9ffe3d562db4fcd7d7c46a11ce9e3168b782b1d89ae6881742b7ede82 SHA512 4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 +DIST windows-0.43.0.crate 11492640 BLAKE2B 793aa1a7f5ba07b864ee318d529f0003a979c3c5b588860cc317dd6abb499db73ae7ba98e2c18765f7539ffa3eb2af80fdd10d12238b5e0cfa1fbcf535a0ea9e SHA512 810a1a08ea65dad929ebacef8a2c2f13837f09680d97d1e9db7349b00b54a06ebc5fa1c7e9bb5ecf4a2d0cda54d4acd6b89e3eaeb9e7e1ac888ce105cfbcc139 +DIST windows-sys-0.36.1.crate 3347053 BLAKE2B 818f7812bd9a55a4e95b3d461fa5fcc14569a159882f950d20fd5a6b7d2a2841f082c0bccaab657f5830549e6286a37d9f8fdf825a42403f543b51e35b2d20d4 SHA512 80973e461bef3be0d0d0c13d02b2129aeb0d0700768d637544315654126f101b39f980738035fe325bd96f549493a2245bd7b82511f833efa7bbcb2f62266001 +DIST windows-sys-0.42.0.crate 3006791 BLAKE2B 7a0962364ecc416cf0ae7e49cce1298a12d819003e488f6e77aff1a52710f00378638b6a05db5557a031e1b75659587657971ddc63eaab35495133762f99a7b2 SHA512 b07b119688f3e3ad234d36979947f34e8e19988fb62101afbe18ec8afc9c8a4261128939df8bbb849d5c5982422cb4c50dbcba70f2bf401fbb7c605df1b2b354 +DIST windows-sys-0.45.0.crate 2568659 BLAKE2B 6f2d634d121a9bf41e2887e277a73f33aee69b04c7fcfc6ff973d21902787997f1e186f530e9226cddc003ffc3f85a179c069c8a8688de459f617df92d33f94f SHA512 f239346c0141b95aa76e0771e2f4e38b9a592f3cd92c6001de353637cd65cd73b94cbf9917a4eaa9b0c0b2e6e2af920b9cf6b3fccb52770df5160254cffc1c47 +DIST windows-sys-0.48.0.crate 2628884 BLAKE2B 551e900de4f67187ef034b60df9fd0e0d8f82a3100ef28e1eabd543ac129d882dc86ffcc1714071aba09e4cb2ae2d2f07ace1a32b99fd989ce525cf05991edab SHA512 bdf534bcf3face31e9ebe11427a911a53f89f4ff5eaea8cccd094e139bfe14b2aec602b1cab1df774794d999477439d9adc6b627a8e33c20334fc348ba2c47ed +DIST windows-targets-0.42.2.crate 5492 BLAKE2B 42fc4a7d3e287fe2a70637e890304b49737776596f4a94a6d216668247092135e84322bd04caddd19c83b7700b0f27278e600ce8ed326957fabc21bffcae89b0 SHA512 84fbaffcad9a80beca77506aac26d0c5cb75aa0f21a5a70bcd3f6a16e71e8753ae00d3b89da9262c99756624163dcc0d6074fa9f99dfaae0dc098018209025f9 +DIST windows-targets-0.48.0.crate 7466 BLAKE2B 4ef6d89ad5b1acf26a1a24348122b86d3943bd95935499bc9032fbc7aa01c04999c723df7fecb4989854cb6b7cceffe141537dfb05a9eaf3902c4cb490533116 SHA512 1d2a29602a1e0846c8577ec9167c5f9972091998a5df449d67b13ad918bf37680e7f97247baf5e3010c166d0b3182418c2925470998b92893ee9469939b91e22 +DIST windows_aarch64_gnullvm-0.42.0.crate 357917 BLAKE2B 58da715a46692ed786fa554338d446eaaa50c63ec1d4090cf0690a9211c0221034479e9066cad1c98234410519833826ae3163bf6724c3b06097d5b84d7b9fcf SHA512 8bd60142e8982ddb14dde4e93b9753f9ac34830c05c2a1dd4568377f9a928651bf9f026a0080e5bc7dfa62a45942376736954e3ac800855d00eef0c72929f338 +DIST windows_aarch64_gnullvm-0.42.2.crate 364071 BLAKE2B 97c4e3b2a2dd3f936f9bfcdad23639c9c4c499eed220aec361d26d6013d798efa118e6b298f9cf841ac149d2ae5d58ca653731718450fcf2910bb5f6fa39159f SHA512 75cd7eb1def8ce9d0ff3d7468d2b1cc31cc76c08f981a2460c3d1eb09cff7100d7442863a3591621c1f5f3b3f4badf0b5c95285b6ed583e37283a8403f1095f1 +DIST windows_aarch64_gnullvm-0.48.0.crate 366543 BLAKE2B 9b10f65089fe6da3ff38a1061783f635644ae84f567f891eaced280af68f7ff3919b34289e8850aa34554bb0346903273ff0a7fa743ca8794c2d23a9f1b0185f SHA512 80c5aa74c5669f7acff3882a8e7575f15e8d7cc58c11a1cb731ff423eb9cc9ba43cc6b80e52803c0d44e6a9001655ba87de6f43a9fe858da6d6e3a5c983a2711 +DIST windows_aarch64_msvc-0.36.1.crate 661960 BLAKE2B d503150a05c4aa6ec376d1094ad24a7a4b3579d8f60cae65f4a98adfe830dd776c8996d5c3acfbfca1a69598475b918b5de2a162e3253b0b28cd6aa17de2dc13 SHA512 d0c352c78caec9c71bbaa1a688baab8f39a33c903c0492b19398c76e08194183e254ecd3a8b24af3e7e5e1d9d97373dcbab54499236829898a4fd153cfde2ccf +DIST windows_aarch64_msvc-0.42.0.crate 659424 BLAKE2B a8c9a288767756f2086bd0706774cdcce5c8639431ad76ed122d4b6d13c936ca8fb1a463d34835b3a2728f4444e2f4b91ee772f00c54f348094da69c05ce6b93 SHA512 20c0840adec84dde03b143e5b82bb0003fee675310487f0071a81ed7f40ee647c4018ccb9ebdbc4aeada717ec8600a30dfb15510c6b336f07becdb7167668fd0 +DIST windows_aarch64_msvc-0.42.2.crate 666981 BLAKE2B 9f3cc5592cdede08bcdc1e7c455325279e3b763d96942695e10dccf1dfc37a81c749b69a7d6de883d4c0fa6e8a0d2f578fe2a8d6c42ad8ef6282590bf8fc87b7 SHA512 d2dafa8c94d01c1b65ca1bd631d31f2ef842f1db7accb132ff78c3f8483221b991afd3391563e03dcec42bbc9cbdc0ebdab47b991d25af85b5ba2ac1bbf8db63 +DIST windows_aarch64_msvc-0.48.0.crate 671479 BLAKE2B 0c80f210437628e1d878d1d14e884fea532c7539b3030aa76d46f27d02372c715c6e33d7efdbbd770666472b44a66c30711a33d819ede9cdcd51c96355802d45 SHA512 617e47a7202f1db4dbd3ecea509682135ccd85e3a458c0331b9bc7aa1d84e5756b59c881cb098d5c6d4c951248d13c8253a8e8a50938e1997bd19ceba77262df +DIST windows_i686_gnu-0.36.1.crate 818115 BLAKE2B fdb78cf88e1049d1ed6c474f870dfd1ff37b48bc24726d754cfec5b3e77075162f291f93aa709c07c9fa38ccb21a6c31cb5149dabc2cc8ad8a85c03408384a0b SHA512 e2c60e6639beb879472a06ed4462667eb4a78385df6bcde1ca579af759cf2b4ac70e84f7dd7b736e7fbd1b129061555671fed4b83bcd81a6083cc013963194a5 +DIST windows_i686_gnu-0.42.0.crate 728570 BLAKE2B b72079610b5c4fc798a79fa757b19f8c8baceaf7f4ce824193a65fadaac988ebdff1719a74d676b7dd017e11ceb029402bbac4e55c35206172e15a9bef422f78 SHA512 a24dd1ba5eb7d5231853bebadfde0575ae9071a565868d2f3d1bc6ec0a87380c569a621f0cba2552af7a1e46ac62f09f87cfbce3f674be06be1a7c1d3f421474 +DIST windows_i686_gnu-0.42.2.crate 736236 BLAKE2B 4ef0496462afc73d9d72af7e5da1e6d3506a92f8172930e88ae64ab97596ffd31c4f97fb969e9b677e30159c27f00a8e756deb006b630fb98ce83f03c8b762e2 SHA512 ad09d650a05cb91cb6b40f59025c023a4c286bc1194586697c506016df2b9b0d5b02606b81687bc634795a0d9a9b8a73e486599328ae09c853e8e5ba662fc59c +DIST windows_i686_gnu-0.48.0.crate 741490 BLAKE2B 5a4a584f8d8ee5bbd2d4c5b6749a66f2d43fc9e4ef90faab2227709b270f0d46fc26578c029edd96877c71309316ddb32d91c39f46d88f9a484c614f866e3dbe SHA512 15149fdd48b61b6d993acd392dbd353d0280d984ea88745217e4207937174bb90cdd9701f69ff0fe06a842f03607cbb57937d20d79ab577181e605a8a8fadc68 +DIST windows_i686_msvc-0.36.1.crate 724575 BLAKE2B cf964bec007d8432e2009644cf7f89ea7d910ccf9512c067b7bf5c6c825208ce4a36e9864c0cbca137f523983eb46e58e4bd01054cecd7ac7126d2ba9f67ac0c SHA512 02bb1507981229422498ce29f6c777d5e412358040128f84b09d948ccddf0461b078a0a20cc7f6ab7da8595121bb369453ae9ea1f0506aab715662e8c631e737 +DIST windows_i686_msvc-0.42.0.crate 717477 BLAKE2B a37e068f45590f0c31349acbdb56848106d6de0e1f8030e6bd5e1e174bd9a46737db54fbd61de99054e5e8c5263eaef0508c440f43c39dca82baa77792ff2743 SHA512 740400e2b11c1d177f7f37f844cd2a0f84b97a5adb03a7656661deb026b593a799ace8da1f9013ba9f74446fc43260d01dff7d4be607129ec7d602f341b2b4d1 +DIST windows_i686_msvc-0.42.2.crate 724951 BLAKE2B b084286cd4927efd2889b149abf8a9fe9d3d777130db9e592982660dbf9a96a0f5e723ca121465787aa11877d2d29a5a7d7cf066cdc8fa7e90d7ca7dcb7677f1 SHA512 c1706fc36d4b157c020744a11b3eb5d7dfbf05a0b56775bc717e94b7fd725816b20154fdbcd69ac08dbfb8b8bbfa74fab72d7a9c10399aad6a1cc54cf597e804 +DIST windows_i686_msvc-0.48.0.crate 730056 BLAKE2B 4e4ad6ed94948145199c2ed50fc65e4af08455a0fd058bb0f763d481f30b029f99a2b8dbac087b29e762500a19270f6683baf62ba99d141eb002a5b0b5c8ea05 SHA512 11a50800e709712dbea907275bc0faa46d2eb2969118445ed5b932d9c5957a09592a5b26a40e554c1f5fd56c6d074a07637e6f88eedd2224e1001e62df7b469b +DIST windows_x86_64_gnu-0.36.1.crate 790934 BLAKE2B 9dec5d966bdc89efbc81989acca242d519f51676ec37487df2bfacd6bfbc5a8de2871be72c5b96a073a899c666e3a39aa60d493e7df39fa90efe869fb744a332 SHA512 598b69e4f2cd3d68f910d526a66dadb465ff30a8c261c9a4455aa1c5b952d23c04f8edaa063cd16fb43564c116a13f06d607f3a0a9c7495054b8bfe1c04d1865 +DIST windows_x86_64_gnu-0.42.0.crate 692493 BLAKE2B e00eae443cfed3004809244654268ee1bec17975166ca876dd393dcfe8a2ef0ca65d81b04c8f513f95a0fae9405ba796c085951bc2c597d252a3122f7dbf6425 SHA512 7df7ee0c345f0a2c37d7f9ec3a2824116b4d7a943bf245787509e67809a4f31ebb1862e212efb2d943d82ccef77a716437cdc61004396ca86e95e688368c6dae +DIST windows_x86_64_gnu-0.42.2.crate 699373 BLAKE2B 01c70809d564b16b268656e47295e99c992d8f9839fac8a51338a0e7c3b9cdcd0429c456ca8c1c139a8c687ed7ed6c43a82250889d881aadaa65bd037223e0a6 SHA512 5767af3c86e717f93137a89d442230e6b60a649057edb3ab104b1f82c0bcd64fe089dcdf2f4fd486a799bece1ddb5f0449641536b678211945e749ae24f35c1f +DIST windows_x86_64_gnu-0.48.0.crate 703595 BLAKE2B b227efb78a99c43d0538cceadada3fa1840df29adc665787fdcf845b73e77d782da8a9f9aa602e1da61401b550d0107176feb6c397c922a6240b38cc8f04a180 SHA512 38eff1164fb37dbd2bbe53404b20cba92de84cbbd5e4eb9ad60d51fb43d6fdb8b87a1488e2c88ebd4b3ff3b708f93fdc05df4b14a285d3ff11c33ff0d9828602 +DIST windows_x86_64_gnullvm-0.42.0.crate 357906 BLAKE2B 02e08e696f18105f0c131fcf5db046ec945cb21ede76d2da477589e15d062ca6f04906dac80fdd2ef9fcda9244490aad86b401d0156eb6b65ba3599098e8cfe7 SHA512 242e11b4a0d50a0ffe8d0e26e971de30ef4d29260ae6749403d39cb4278297a240c1ec4112bb38151cbb11a6f3c8a743e84cd75b6a76adfeaee8e623649c9ecf +DIST windows_x86_64_gnullvm-0.42.2.crate 364068 BLAKE2B 64bc53e98eb3fc649c9b43a6e734de4e65088e41edacabd49f7afcc5dc6e1065c563ecfc682747dda05978dea2dba4f45c16fcc18c3b00684c3d93681e5a7deb SHA512 d39a8bc948110fe612d3f8d6628b3f0d56620df11d8a49e0fabb6c90389ad407582b3af10e4eab46c79b3d11d2e10753d73d9e55963fbeac085f41e9749bdba3 +DIST windows_x86_64_gnullvm-0.48.0.crate 366536 BLAKE2B 295dc3aef18c604d1579978045f4058b1a315083a8ab842bddf5800ec3460b1530ad88c3464acab712a229290aca235810de8a3b6a253859a354d9fa97277e58 SHA512 8d82fad4c8445030844708aa026a62f1ca43362b8e15f14b0d226c7e9cda04ffa0715087b6a025dbb738e8891de24fcc4a2df071a532917cf03c4a46f934f396 +DIST windows_x86_64_msvc-0.36.1.crate 661999 BLAKE2B 4cf967f10d4ce148bac967598168752d1996b4ddf5278a8fca53360566c37c1a014bfb4dfdc0ae2d96e01196c42eb4906ea80d8e9dd23b9e9f3163631c9e253e SHA512 89c22ed51a74f531662d80ae0fa5e0215728db1e6caf3c13eaeba95a93548b43c00b8474f52553ac866ac83c203b6c22dc44fbc870e882a4c9c97ba54b87c631 +DIST windows_x86_64_msvc-0.42.0.crate 659377 BLAKE2B f01dbfcb86dcb7301790a1a704661864378021cbb92b147fdfcee978b7011bb770441c481b439985c298816c524c6a11f21a7bd81115e65882fa000a28566bcd SHA512 94d6554ae293785d2fc9dc9d53480c98bc08ab2b78bd8684a0606e7e0ec156a454c1a653d214c21de382bc7ab5d898e45000ed73e6110f679da513ffabbf3cb9 +DIST windows_x86_64_msvc-0.42.2.crate 666936 BLAKE2B bc3a456e7f8bc272f8978ec69506ec9d89f97b7582ebbe05d8bd57bdf8156ef62d0d2dc6137a97e81d54059d70db97a24af9a038adff357f5dfd28805d6193b5 SHA512 53a35f438903fceb59e36bd2ac331773fb8e6c8c5a6d984e79021761f91b3b4a23efe49d219667a4d0d23dcdbf906da9c24e74fb1cff93395b5c55ff524e3788 +DIST windows_x86_64_msvc-0.48.0.crate 671422 BLAKE2B abb063610dcc38581657133182b7d9efeed5553df67bd2bd6f30f1668a645186e4824f9ef556a5abc84ace10b1b437b6325bbda6df5a64ce880d7dcb743ac786 SHA512 6e598b8e3ac54912a8ebac01b0dd2c58fd282072527d7fedc7f6ebecdfb7dcb09ae46c22293bc0117849437f8b053db5e90406e7a38276f0f0afd06be3966795 +DIST winnow-0.4.6.crate 142565 BLAKE2B 671c643bdf03d8533998224bccb375614bbc0192e3d9b45a580db9aea04f60f1f5fada06c454e705bfc1f82bc52067db8d3d45cec1e898c6ace689845cb21884 SHA512 cf194bfa3e6ca3a79b6940cb3a9fbbcdac2b10f997a0c15f58b570281c4651a6b3f4a32df6ee4da579d6cbb40b19b38d1123b6f7fc116f1171bb5f51270f6698 +DIST zeroize-1.6.0.crate 19049 BLAKE2B 8dad6af58edd7b22ece7dfefa47b478dfb74efd1e08c03c571c9cd50962a8eda8cdb59fab91fd44053f8acde8d1d84efac4bc48c5e6576255620ef21f2813de2 SHA512 9ebc81c10516440476b5c198dd4ff0d284a0a37cee11a2cdfb5a1995f95b72d05beb827483b16e8b764f720fbcf30a5e5d8b1517cfbbf572bcb27c2efb18393b diff --git a/dev-util/cargo-c/cargo-c-0.9.14.ebuild b/dev-util/cargo-c/cargo-c-0.9.14.ebuild new file mode 100644 index 0000000..fee189f --- /dev/null +++ b/dev-util/cargo-c/cargo-c-0.9.14.ebuild @@ -0,0 +1,214 @@ +# Copyright 2017-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Only bother defining this if the github tarball doesn't work! +# Otherwise just comment it out and things should Just Work (TM). +#MY_P="${P}+cargo-{CARGO_V}" + +CRATES=" + ${MY_P} + adler-1.0.2 + aho-corasick-0.7.19 + anyhow-1.0.66 + arrayvec-0.5.2 + atty-0.2.14 + autocfg-1.1.0 + bitflags-1.3.2 + bitmaps-2.1.0 + bstr-0.2.17 + bytes-1.2.1 + bytesize-1.1.0 + cargo-0.66.0 + cargo-platform-0.1.2 + cargo-util-0.2.2 + cbindgen-0.24.3 + cc-1.0.76 + cfg-if-1.0.0 + clap-3.2.23 + clap_derive-3.2.18 + clap_lex-0.2.4 + combine-4.6.6 + commoncrypto-0.2.0 + commoncrypto-sys-0.2.0 + core-foundation-0.9.3 + core-foundation-sys-0.8.3 + crates-io-0.34.0 + crc32fast-1.3.2 + crossbeam-utils-0.8.12 + crypto-hash-0.3.4 + curl-0.4.44 + curl-sys-0.4.59+curl-7.86.0 + either-1.8.0 + env_logger-0.9.3 + fastrand-1.8.0 + filetime-0.2.18 + flate2-1.0.24 + fnv-1.0.7 + foreign-types-0.3.2 + foreign-types-shared-0.1.1 + form_urlencoded-1.1.0 + fwdansi-1.1.0 + git2-0.15.0 + git2-curl-0.16.0 + glob-0.3.0 + globset-0.4.9 + hashbrown-0.12.3 + heck-0.4.0 + hermit-abi-0.1.19 + hex-0.3.2 + hex-0.4.3 + home-0.5.4 + humantime-2.1.0 + idna-0.3.0 + ignore-0.4.18 + im-rc-15.1.0 + indexmap-1.9.2 + instant-0.1.12 + itertools-0.10.5 + itoa-1.0.4 + jobserver-0.1.25 + kstring-2.0.0 + lazycell-1.3.0 + lazy_static-1.4.0 + libc-0.2.137 + libgit2-sys-0.14.0+1.5.0 + libnghttp2-sys-0.1.7+1.45.0 + libssh2-sys-0.2.23 + libz-sys-1.1.8 + log-0.4.17 + memchr-2.5.0 + miniz_oxide-0.5.4 + miow-0.3.7 + once_cell-1.16.0 + opener-0.5.0 + openssl-0.10.42 + openssl-macros-0.1.0 + openssl-probe-0.1.5 + openssl-src-111.24.0+1.1.1s + openssl-sys-0.9.77 + os_info-3.5.1 + os_str_bytes-6.4.1 + pathdiff-0.2.1 + percent-encoding-2.2.0 + pkg-config-0.3.26 + proc-macro2-1.0.47 + proc-macro-error-1.0.4 + proc-macro-error-attr-1.0.4 + quote-1.0.21 + rand_core-0.6.4 + rand_xoshiro-0.6.0 + redox_syscall-0.2.16 + regex-1.7.0 + regex-automata-0.1.10 + regex-syntax-0.6.28 + remove_dir_all-0.5.3 + rustc-workspace-hack-1.0.0 + rustfix-0.6.1 + ryu-1.0.11 + same-file-1.0.6 + schannel-0.1.20 + semver-1.0.14 + serde-1.0.147 + serde_derive-1.0.147 + serde_ignored-0.1.5 + serde_json-1.0.87 + shell-escape-0.1.5 + sized-chunks-0.6.5 + socket2-0.4.7 + static_assertions-1.1.0 + strip-ansi-escapes-0.1.1 + strsim-0.10.0 + syn-1.0.103 + tar-0.4.38 + tempfile-3.3.0 + termcolor-1.1.3 + textwrap-0.16.0 + thread_local-1.1.4 + tinyvec-1.6.0 + tinyvec_macros-0.1.0 + toml-0.5.9 + toml_edit-0.14.4 + typenum-1.15.0 + unicode-bidi-0.3.8 + unicode-ident-1.0.5 + unicode-normalization-0.1.22 + unicode-width-0.1.10 + unicode-xid-0.2.4 + url-2.3.1 + utf8parse-0.2.0 + vcpkg-0.2.15 + version_check-0.9.4 + vte-0.10.1 + vte_generate_state_changes-0.1.1 + walkdir-2.3.2 + winapi-0.3.9 + winapi-i686-pc-windows-gnu-0.4.0 + winapi-util-0.1.5 + winapi-x86_64-pc-windows-gnu-0.4.0 + windows_aarch64_gnullvm-0.42.0 + windows_aarch64_msvc-0.36.1 + windows_aarch64_msvc-0.42.0 + windows_i686_gnu-0.36.1 + windows_i686_gnu-0.42.0 + windows_i686_msvc-0.36.1 + windows_i686_msvc-0.42.0 + windows-sys-0.36.1 + windows-sys-0.42.0 + windows_x86_64_gnu-0.36.1 + windows_x86_64_gnu-0.42.0 + windows_x86_64_gnullvm-0.42.0 + windows_x86_64_msvc-0.36.1 + windows_x86_64_msvc-0.42.0 +" + +inherit cargo + +DESCRIPTION="Helper program to build and install c-like libraries" +HOMEPAGE="https://github.com/lu-zero/cargo-c" +if [[ -z ${MY_P} ]] ; then + SRC_URI="https://github.com/lu-zero/cargo-c/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" +else + S="${WORKDIR}/${MY_P}" +fi + +SRC_URI+=" $(cargo_crate_uris)" + +LICENSE="0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions Boost-1.0 MIT MPL-2.0 Unlicense ZLIB" +SLOT="0" +KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 sparc x86" + +RDEPEND="dev-libs/libgit2:= + dev-libs/openssl:= + net-libs/libssh2:= + net-misc/curl[ssl] + sys-libs/zlib" +DEPEND="${RDEPEND}" +BDEPEND=">=virtual/rust-1.65.0" + +QA_FLAGS_IGNORED="usr/bin/cargo-capi usr/bin/cargo-cbuild usr/bin/cargo-ctest usr/bin/cargo-cinstall" + +src_unpack() { + cargo_src_unpack + + if [[ -n ${MY_P} ]] ; then + tar -xf "${DISTDIR}"/"${MY_P}.crate" -C "${WORKDIR}" || die + fi +} + +src_prepare() { + default + + pushd "${ECARGO_HOME}"/gentoo/openssl-sys-0.9.77 > /dev/null || die + eapply "${FILESDIR}/${PN}-0.9.14-libressl-openssl-sys.patch" + popd > /dev/null || die +} + +src_configure() { + # Some crates will auto-build and statically link C libraries(!) + # Tracker bug #709568 + export LIBSSH2_SYS_USE_PKG_CONFIG=1 + export LIBGIT2_SYS_USE_PKG_CONFIG=1 + export PKG_CONFIG_ALLOW_CROSS=1 +} diff --git a/dev-util/cargo-c/cargo-c-0.9.20.ebuild b/dev-util/cargo-c/cargo-c-0.9.20.ebuild new file mode 100644 index 0000000..5bc2a8a --- /dev/null +++ b/dev-util/cargo-c/cargo-c-0.9.20.ebuild @@ -0,0 +1,357 @@ +# Copyright 2022-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# Auto-Generated by cargo-ebuild 0.5.4 + +EAPI=8 + +# Only bother defining this if the github tarball doesn't work! +# Otherwise just comment it out and things should Just Work (TM). +#MY_P="${P}+cargo-{CARGO_V}" + +CRATES=" + ${MY_P} + adler-1.0.2 + ahash-0.8.3 + aho-corasick-0.7.18 + anstream-0.3.2 + anstyle-1.0.0 + anstyle-parse-0.2.0 + anstyle-query-1.0.0 + anstyle-wincon-1.0.1 + anyhow-1.0.58 + arc-swap-1.6.0 + arrayvec-0.5.2 + autocfg-1.1.0 + base16ct-0.2.0 + base64-0.21.2 + base64ct-1.6.0 + bitflags-1.3.2 + bitmaps-2.1.0 + block-buffer-0.10.4 + bstr-0.2.17 + bstr-1.5.0 + btoi-0.4.3 + bumpalo-3.13.0 + bytes-1.1.0 + bytesize-1.1.0 + cargo-0.71.0 + cargo-platform-0.1.2 + cargo-util-0.2.4 + cbindgen-0.24.3 + cc-1.0.73 + cfg-if-1.0.0 + clap-4.3.1 + clap_builder-4.3.1 + clap_derive-4.3.1 + clap_lex-0.5.0 + clru-0.6.1 + colorchoice-1.0.0 + const-oid-0.9.2 + core-foundation-0.9.3 + core-foundation-sys-0.8.3 + cpufeatures-0.2.7 + crates-io-0.36.0 + crc32fast-1.3.2 + crossbeam-channel-0.5.8 + crossbeam-utils-0.8.10 + crypto-bigint-0.5.2 + crypto-common-0.1.6 + ct-codecs-1.1.1 + curl-0.4.44 + curl-sys-0.4.63+curl-8.1.2 + der-0.7.6 + digest-0.10.7 + dirs-4.0.0 + dirs-sys-0.3.7 + dunce-1.0.4 + ecdsa-0.16.7 + ed25519-compact-2.0.4 + either-1.7.0 + elliptic-curve-0.13.5 + env_logger-0.10.0 + errno-0.3.1 + errno-dragonfly-0.1.2 + fastrand-1.7.0 + ff-0.13.0 + fiat-crypto-0.1.20 + filetime-0.2.17 + flate2-1.0.24 + fnv-1.0.7 + foreign-types-0.3.2 + foreign-types-shared-0.1.1 + form_urlencoded-1.0.1 + fwdansi-1.1.0 + generic-array-0.14.7 + getrandom-0.2.9 + git2-0.17.2 + git2-curl-0.18.0 + gix-0.39.0 + gix-actor-0.19.0 + gix-attributes-0.10.0 + gix-bitmap-0.2.3 + gix-chunk-0.4.1 + gix-command-0.2.4 + gix-config-0.18.0 + gix-config-value-0.10.2 + gix-credentials-0.11.0 + gix-date-0.4.3 + gix-diff-0.28.1 + gix-discover-0.15.0 + gix-features-0.28.1 + gix-glob-0.5.5 + gix-hash-0.10.4 + gix-hashtable-0.1.3 + gix-index-0.14.0 + gix-lock-4.0.0 + gix-mailmap-0.11.0 + gix-object-0.28.0 + gix-odb-0.42.0 + gix-pack-0.32.0 + gix-packetline-0.14.3 + gix-path-0.7.3 + gix-prompt-0.3.3 + gix-protocol-0.28.0 + gix-quote-0.4.3 + gix-ref-0.26.0 + gix-refspec-0.9.0 + gix-revision-0.12.2 + gix-sec-0.6.2 + gix-tempfile-4.1.1 + gix-transport-0.27.0 + gix-traverse-0.24.0 + gix-url-0.15.0 + gix-validate-0.7.4 + gix-worktree-0.14.0 + glob-0.3.0 + globset-0.4.9 + group-0.13.0 + hashbrown-0.12.3 + hashbrown-0.13.2 + heck-0.4.0 + hermit-abi-0.3.1 + hex-0.4.3 + hkdf-0.12.3 + hmac-0.12.1 + home-0.5.3 + http-auth-0.1.8 + humantime-2.1.0 + idna-0.2.3 + ignore-0.4.18 + im-rc-15.1.0 + imara-diff-0.1.5 + indexmap-1.9.1 + instant-0.1.12 + io-close-0.3.7 + io-lifetimes-1.0.11 + is-terminal-0.4.7 + itertools-0.10.3 + itoa-1.0.6 + jobserver-0.1.26 + js-sys-0.3.63 + lazy_static-1.4.0 + lazycell-1.3.0 + libc-0.2.144 + libgit2-sys-0.15.2+1.6.4 + libnghttp2-sys-0.1.7+1.45.0 + libssh2-sys-0.3.0 + libz-sys-1.1.8 + linux-raw-sys-0.3.8 + lock_api-0.4.9 + log-0.4.17 + matches-0.1.9 + maybe-async-0.2.7 + memchr-2.5.0 + memmap2-0.5.10 + minimal-lexical-0.2.1 + miniz_oxide-0.5.3 + miow-0.5.0 + nix-0.26.2 + nom-7.1.3 + num-traits-0.2.15 + num_threads-0.1.6 + once_cell-1.18.0 + opener-0.5.0 + openssl-0.10.40 + openssl-macros-0.1.0 + openssl-probe-0.1.5 + openssl-src-111.21.0+1.1.1p + openssl-sys-0.9.74 + ordered-float-2.10.0 + orion-0.17.4 + os_info-3.7.0 + p384-0.13.0 + parking_lot-0.12.1 + parking_lot_core-0.9.7 + pasetors-0.6.6 + pathdiff-0.2.1 + pem-rfc7468-0.7.0 + percent-encoding-2.1.0 + pkcs8-0.10.2 + pkg-config-0.3.25 + ppv-lite86-0.2.17 + primeorder-0.13.2 + proc-macro2-1.0.59 + prodash-23.1.2 + quote-1.0.28 + rand-0.8.5 + rand_chacha-0.3.1 + rand_core-0.6.4 + rand_xoshiro-0.6.0 + redox_syscall-0.2.13 + redox_users-0.4.3 + regex-1.5.6 + regex-automata-0.1.10 + regex-syntax-0.6.26 + remove_dir_all-0.5.3 + rfc6979-0.4.0 + rustc-workspace-hack-1.0.0 + rustfix-0.6.1 + rustix-0.37.19 + ryu-1.0.10 + same-file-1.0.6 + schannel-0.1.20 + scopeguard-1.1.0 + sec1-0.7.2 + semver-1.0.12 + serde-1.0.163 + serde-value-0.7.0 + serde_derive-1.0.163 + serde_ignored-0.1.3 + serde_json-1.0.82 + serde_spanned-0.6.2 + sha1-0.10.5 + sha1_smol-1.0.0 + sha2-0.10.6 + shell-escape-0.1.5 + signal-hook-0.3.15 + signal-hook-registry-1.4.1 + signature-2.1.0 + sized-chunks-0.6.5 + smallvec-1.10.0 + socket2-0.4.4 + spki-0.7.2 + static_assertions-1.1.0 + strip-ansi-escapes-0.1.1 + strsim-0.10.0 + subtle-2.5.0 + syn-1.0.98 + syn-2.0.18 + tar-0.4.38 + tempfile-3.3.0 + termcolor-1.1.3 + thiserror-1.0.40 + thiserror-impl-1.0.40 + thread_local-1.1.4 + time-0.3.21 + time-core-0.1.1 + time-macros-0.2.9 + tinyvec-1.6.0 + tinyvec_macros-0.1.0 + toml-0.5.9 + toml-0.7.4 + toml_datetime-0.6.2 + toml_edit-0.19.10 + typenum-1.15.0 + unicode-bidi-0.3.8 + unicode-bom-1.1.4 + unicode-ident-1.0.1 + unicode-normalization-0.1.21 + unicode-width-0.1.9 + unicode-xid-0.2.3 + url-2.2.2 + utf8parse-0.2.1 + vcpkg-0.2.15 + version_check-0.9.4 + vte-0.10.1 + vte_generate_state_changes-0.1.1 + walkdir-2.3.2 + wasi-0.11.0+wasi-snapshot-preview1 + wasm-bindgen-0.2.86 + wasm-bindgen-backend-0.2.86 + wasm-bindgen-macro-0.2.86 + wasm-bindgen-macro-support-0.2.86 + wasm-bindgen-shared-0.2.86 + winapi-0.3.9 + winapi-i686-pc-windows-gnu-0.4.0 + winapi-util-0.1.5 + winapi-x86_64-pc-windows-gnu-0.4.0 + windows-0.43.0 + windows-sys-0.36.1 + windows-sys-0.42.0 + windows-sys-0.45.0 + windows-sys-0.48.0 + windows-targets-0.42.2 + windows-targets-0.48.0 + windows_aarch64_gnullvm-0.42.2 + windows_aarch64_gnullvm-0.48.0 + windows_aarch64_msvc-0.36.1 + windows_aarch64_msvc-0.42.2 + windows_aarch64_msvc-0.48.0 + windows_i686_gnu-0.36.1 + windows_i686_gnu-0.42.2 + windows_i686_gnu-0.48.0 + windows_i686_msvc-0.36.1 + windows_i686_msvc-0.42.2 + windows_i686_msvc-0.48.0 + windows_x86_64_gnu-0.36.1 + windows_x86_64_gnu-0.42.2 + windows_x86_64_gnu-0.48.0 + windows_x86_64_gnullvm-0.42.2 + windows_x86_64_gnullvm-0.48.0 + windows_x86_64_msvc-0.36.1 + windows_x86_64_msvc-0.42.2 + windows_x86_64_msvc-0.48.0 + winnow-0.4.6 + zeroize-1.6.0 +" + +inherit cargo + +DESCRIPTION="Helper program to build and install c-like libraries" +HOMEPAGE="https://github.com/lu-zero/cargo-c" +if [[ -z ${MY_P} ]] ; then + SRC_URI="https://github.com/lu-zero/cargo-c/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" +else + S="${WORKDIR}/${MY_P}" +fi + +SRC_URI+=" $(cargo_crate_uris)" + +LICENSE="0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions Boost-1.0 MIT MPL-2.0 Unlicense ZLIB" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + +RDEPEND="dev-libs/libgit2:= + dev-libs/openssl:= + net-libs/libssh2:= + net-misc/curl[ssl] + sys-libs/zlib" +DEPEND="${RDEPEND}" +BDEPEND=">=virtual/rust-1.69.0" + +QA_FLAGS_IGNORED="usr/bin/cargo-capi usr/bin/cargo-cbuild usr/bin/cargo-ctest usr/bin/cargo-cinstall" + +src_unpack() { + cargo_src_unpack + + if [[ -n ${MY_P} ]] ; then + tar -xf "${DISTDIR}"/"${MY_P}.crate" -C "${WORKDIR}" || die + fi +} + +src_prepare() { + default + + pushd "${ECARGO_HOME}"/gentoo/openssl-sys-0.9.74 > /dev/null || die + eapply "${FILESDIR}/${PN}-0.9.20-libressl-openssl-sys.patch" + popd > /dev/null || die +} + +src_configure() { + # Some crates will auto-build and statically link C libraries(!) + # Tracker bug #709568 + export LIBSSH2_SYS_USE_PKG_CONFIG=1 + export LIBGIT2_SYS_USE_PKG_CONFIG=1 + export PKG_CONFIG_ALLOW_CROSS=1 +} diff --git a/dev-util/cargo-c/files/cargo-c-0.9.14-libressl-openssl-sys.patch b/dev-util/cargo-c/files/cargo-c-0.9.14-libressl-openssl-sys.patch new file mode 100644 index 0000000..4ef74b2 --- /dev/null +++ b/dev-util/cargo-c/files/cargo-c-0.9.14-libressl-openssl-sys.patch @@ -0,0 +1,10 @@ +--- a/build/main.rs.orig ++++ b/build/main.rs +@@ -281,6 +281,7 @@ + (3, 4, _) => ('3', '4', 'x'), + (3, 5, _) => ('3', '5', 'x'), + (3, 6, 0) => ('3', '6', '0'), ++ (_, _, _) => ('x', 'x', 'x'), + _ => version_error(), + }; + diff --git a/dev-util/cargo-c/files/cargo-c-0.9.20-libressl-openssl-sys.patch b/dev-util/cargo-c/files/cargo-c-0.9.20-libressl-openssl-sys.patch new file mode 100644 index 0000000..baa6f72 --- /dev/null +++ b/dev-util/cargo-c/files/cargo-c-0.9.20-libressl-openssl-sys.patch @@ -0,0 +1,10 @@ +--- a/build/main.rs.orig ++++ b/build/main.rs +@@ -268,6 +268,7 @@ + (3, 4, 0) => ('3', '4', '0'), + (3, 4, _) => ('3', '4', 'x'), + (3, 5, _) => ('3', '5', 'x'), ++ (_, _, _) => ('x', 'x', 'x'), + _ => version_error(), + }; + diff --git a/dev-util/cargo-c/files/cargo-c-0.9.27-libressl-openssl-sys.patch b/dev-util/cargo-c/files/cargo-c-0.9.27-libressl-openssl-sys.patch new file mode 100644 index 0000000..0eff7a0 --- /dev/null +++ b/dev-util/cargo-c/files/cargo-c-0.9.27-libressl-openssl-sys.patch @@ -0,0 +1,10 @@ +--- a/build/main.rs.orig ++++ b/build/main.rs +@@ -273,6 +273,7 @@ + (3, 7, 1) => ('3', '7', '1'), + (3, 7, _) => ('3', '7', 'x'), + (3, 8, 0) => ('3', '8', '0'), ++ (_, _, _) => ('x', 'x', 'x'), + _ => version_error(), + }; + diff --git a/dev-util/cargo-c/metadata.xml b/dev-util/cargo-c/metadata.xml new file mode 100644 index 0000000..ec5776a --- /dev/null +++ b/dev-util/cargo-c/metadata.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>lu_zero@gentoo.org</email> + <name>Luca Barbato</name> + </maintainer> + <upstream> + <remote-id type="github">lu-zero/cargo-c</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-util/cargo-ebuild/Manifest b/dev-util/cargo-ebuild/Manifest new file mode 100644 index 0000000..a9e279e --- /dev/null +++ b/dev-util/cargo-ebuild/Manifest @@ -0,0 +1,127 @@ +DIST aho-corasick-0.7.20.crate 111440 BLAKE2B 3f5d54fea2793ce1c2c4d5b3049b910f45a5721e7538cb2557df63dc3069ab3f6b66aceb5e9a48f21c43ae29778fd045428ea103b2a6de81659e605e30e64ca6 SHA512 ad31f3d1b3fe41e593d4ca7e721bbad62936f2e6a17fd1e0997353edb6fc906d1bef2b79f0ac7c7676abe637bbabb23ff22059947be379a2441011f8178983c5 +DIST ansi_term-0.12.1.crate 24838 BLAKE2B f636772c34e2d68cda7b8d3b2b86abda074585a62bd2654812ce92384244655a9197fa66e6939e19a674c0148ca605313d83de262bb18c2339a8a4eb4438a791 SHA512 b840e28b3e7700689a69a39659b1e066560078dd4a58326b91a028915819e7af883399ee53e920db68fd974c58d35bb1ddf8d427af5937d5f696f57c4376b671 +DIST anyhow-1.0.68.crate 43882 BLAKE2B 0ccd8fcb746344dfa85674fa7c95aa648aed8d40134b8c1c1c0852f6c7d22f5622ca1704ec65c254fc20946b1733299e1517364d74f726952d5a951ef89a2fe5 SHA512 b8cfc132ebeac823edf18cba7e335d1939fcbb095ed4ea859f4dc4cde5b1ff35fd68f0743577c69085f74f019768a3359936bf6dc1b2aceb7e2b28ace7f74a0f +DIST atty-0.2.14.crate 5470 BLAKE2B 2db856a9e898a430258f059aeaf7c844a153293e8856d90ac81f7d91a888c89198768ad5cb09303c23241fe85c560a55148fa56a303651a82b0edb895616bfab SHA512 d7b6c4b9a0f898d91ddbc41a5ee45bbf45d1d269508c8cc87ee3e3990500e41e0ec387afb1f3bc7db55bedac396dd86c6509f4bf9e5148d809c3802edcc5e1d9 +DIST autocfg-1.1.0.crate 13272 BLAKE2B 7724055c337d562103f191f4e36cab469e578f0c51cc24d33624dea155d108a07578703766341fd6a4cc1ef52acda406e7dba1650d59115f18261281e5b40203 SHA512 df972c09abbdc0b6cb6bb55b1e29c7fed706ece38a62613d9e275bac46a19574a7f96f0152cccb0239efea04ee90083a146b58b15307696c4c81878cd12de28f +DIST bitflags-1.3.2.crate 23021 BLAKE2B eb990bb27b2bdeb66fd7212ce582cb36e1c616debbac85df642d0c82b25439e6bf9b1e811fac76b59e58ea3c1bbea6170d03a61e8f9a395e4334a0e2e2987eda SHA512 3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 +DIST block-buffer-0.10.3.crate 10465 BLAKE2B 32f0089971bb759244b73a75bdbbeb2d24f0422e92ceb0ae0afe3c698e3fabb371112a2eba3dab16a3859420d492c0ac984bfbb25e59e0c31951501cc652aab7 SHA512 e29faab70f8f2965a58089728274ec34bc97d681526687868c9cb1a2c145db00717f97e77b79a04fa52bd76817d796e104b509cd2a3163085b214f8eb68ac04f +DIST bstr-0.2.17.crate 330350 BLAKE2B 90c3a48d78b73d7e36a3da9fda0beae6e91ce534d17198ea8ceee0b613d03297f9dd8bca30e1ec5da01d1da359a1da72b2c2771b77c82bebab5006cafd665192 SHA512 883eac8210d14f89517b4dd5e25d02c97cf31602ec74498b5e186112ba0f154d47de8d1c41a8f4e5503f3b53c064e2c976b60bbfd63fc28b186bc006e00f20c2 +DIST camino-1.1.1.crate 30737 BLAKE2B f2403e2f3c4c66f14c298faf582d5ce4f3071be62ecd9ebd4b2d684f0e8d9964e6da14326cd89011c4ec26ede18b26b46f36d04324eb67cda0ebeacf4a18f726 SHA512 4709463c158e248a17b3aa1a1d065d397f88f66871a1fcd7389acf2729acb7e6457d60682c7eda3e2654878e428baa8eba48118e2f26650fff641b4a0f84ce48 +DIST cargo-ebuild-0.5.4.tar.bz2 19942 BLAKE2B 04ff0c6c8f94900e50452d608d2adf8df22f7d3074f84ea81bb0951671a8c5068556bbe5d60fc79f11cb640af93b24f969efe7d60b2a7da21fdf469fc54fb74f SHA512 34f6b491d2bc9a3e8ed4cff40c0ec77727a4649341d3bd74dac532e65f4852b5fba3b32154dfdf01edfde1fe3768d124d2cf307966ac18bd43e4ebfc688a53a9 +DIST cargo-lock-8.0.3.crate 39302 BLAKE2B 63e67288b0201088d25da9246675b4d9bef96d532038655b484996cddcaeeb44b1bcba22f4738001c8593c1c5bea2716896b2f57cb3107c415f08bf85adca629 SHA512 297636b1e573ed42e539d8f9eab40ef516af7eaa60a476ed371900e5a4c1ae61dbc94d5aae8313f7eb684d1e5e9cf0bee698022fc95b9557d6fbc944e38e1140 +DIST cargo-platform-0.1.2.crate 11645 BLAKE2B 7770acb90e299f71c60bbadceaf894a3100916b7f7458f9c949b683b39157d3e1ec17d850f16dfb04017b01d7734d41872d48cf9f4e1ea7414439cd7031c2330 SHA512 c716bf3a4e0942160dbf7be114d1621e1fccc23511e7b0a2b99852b99a851910bfcf8640c2d0d0a03d5a324e1a59fb5d4264ca81bca24e3f1a1ca653bdf2956f +DIST cargo_metadata-0.15.2.crate 18528 BLAKE2B cb80318d0cf7316fa57badcaa0502737232b28bc9efd17a71ef1afa8e1b61a597d7f36d6ecfb41a2859360ed7ed7c7ffa86b9184400c4646d3196fb895cf3e94 SHA512 f663676ac3e2182d67d1047164eddd24d1006f61f378003abb1d5f53f9dfee672202d33a530cac1bb749955edd142ca78169dc3412d78c8fe98d6121c4303fd3 +DIST cc-1.0.78.crate 61375 BLAKE2B fd4765cf5ae0dc7018bc6b56298cd0fa9bf6fe23545e845670d98ce73baee55354e77c6d87cf047f10b074f3d742deca8b5631a250c69b347b4a1fc653965d43 SHA512 b85bec4c75cb1d1e252419052e9dd22b6892e54ea36195ff483a04f785b5b103e82b30b778459fd45324ffeb2463aa4f5696baeff2779c25ffe9f65eb99ae893 +DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff +DIST clap-2.34.0.crate 202210 BLAKE2B f383adf1d757ac4b68995132b33837686ce451f85a02a8d05d2c746da398510d05d46330f3efade063c3952aacb1754cdac73dd0afcae0df5340a89f9353aa1c SHA512 c648a761b9996a7e7464a538bb53621bae22090b846a42c3b729beca3363958ae67e3da9f93f58b10a10e043cadf7ff930388680d168646178c2824177832db8 +DIST cpufeatures-0.2.5.crate 11251 BLAKE2B 2724be40d3bc0e2fda957f645e1cd6472450dee68db3592ab607bdac444283f571f3c904e47981a3fdaa06cab4032734a54470e3dd6e1b67fd856daf010e1277 SHA512 d02327a27ca9fc3c587dcbd10da6b1370671cd7b1df8dfc9078b47180744d0572ef41a7ec205ae9f1c571e5b7f4bc81278ab4c6b076c6ccac0167100e346e74e +DIST crates-index-0.18.11.crate 19778 BLAKE2B f4fc0df0b768a6e63feea0151d4b83574a77150c0fd783f0f2bd294864f329f7bb4e5a913280f718653e58ce9714f4f7f057b15f49e52298ca157560d34de4cd SHA512 2725dfb5a8c9cba70af3cd2e0b8ab48159bea77f5a4ef6bb633131c84279e890ea1efb43732d62f24088a51bd1295da6eb840af00c439bb5ff15b58676b13c99 +DIST crossbeam-channel-0.5.6.crate 90292 BLAKE2B 7da87ab15c384754d2493dd1a30e83550cd4b2b749b7f0c24de131f054e3a2e521e1bb4ba10094378c8f4c7bdf19218e35b10562c50b4ad1d2871bf6f821e488 SHA512 de6a42ffede95750a13e3b9af6ab26cbc498125860cd8e4d227c7361bd831e558254a48bdef5cf901585a915003071b0efa321f2011f282218c364780f62f44a +DIST crossbeam-deque-0.8.2.crate 21237 BLAKE2B f00948fe90806fcbf1585c0404250dc84bca2cf27733bf7f2a0aa957e618f916162f41124333329a5b1e84909cbae3d93fb3b4461ab23e9dd97672c7d520d5b7 SHA512 a50a878d843d6eb1b5b92321ce6bfb87a23d3c16e820b1ff55472f0bd3d29b41d09ea95e1b9ccb2790f6687c043dd9ada1cd5124705e24292ccbd8fae1f243b3 +DIST crossbeam-epoch-0.9.13.crate 48313 BLAKE2B 6e548cd39fb400732dc179c5b7185555bdb8a367b5d3a27dcabe9ad36db6e9858604dee210fe487de8f9127fd6d0db1ef1fd04a1cc8cdcf34bedcf980c048555 SHA512 a4578e0e535f301b73f0332778e79b327bafea6afa43284317fccc49b410118360866a2dea8ac22f2977f309d07c663e5d95fbfa852ab795d414c170ee4e06bf +DIST crossbeam-utils-0.8.14.crate 42127 BLAKE2B 3e31e6371e46aba6697501a34e1b737680dcb692c0d1ba7cc1ce7025ec70ee69f7595e3abd90fb52c11e42cb43fa5fae6103f97add35cf87b0a68ea83213d0d0 SHA512 fa00a57c41c9daa152f8a6c6f4d3c77986de1aa21585984adf577e244c2f121db014ba2beb92241590e1cf78710e77d9a703ce4a4d44d8854bc3e60690151393 +DIST crypto-common-0.1.6.crate 8760 BLAKE2B f2422bfb89c15d47a8f91c8f6695e05eb56990a922e3cdf3d426044736f9932324c0d899a151a6df4d6683e6a6b21659c657d3988734014c02cd854bb4b924e7 SHA512 471dbc43f517089d2cfe0868e29510c6ca579875b3bb5d013c70796db969b609b6c4bb35c9a07b9a2917012dc5708b717d48e317a20038adbe7e7039bf3ada6f +DIST cvss-2.0.0.crate 20012 BLAKE2B 5b6ce0a7340091fd27bd47d5a51542cf413999bc81ddbb1b520e799d18d723ab154ab4087363cedf1a162a1d79e89f1f75b9e0a7becae95c462d099f59d916c2 SHA512 6eba4a170785ed017d9e078451fa3cbde6f394bce9f3494f50c6a4e5979b730d9d630dc5565d959c16d034caac58e9ea2c02ca96935706b331fc0850cdde777d +DIST digest-0.10.6.crate 19527 BLAKE2B 402009105a6ac055be062769dd4f162aabb977b9afe29f451eeb3e6b5dd1a579c371c5ec996b9c1bdba3b4ded83830ed2e1934a0505480bffba1e0d16775a8f7 SHA512 21d3c1dc64e640300c51e8a009af464d6e3cd2b10aa67c87a038165c11409d6e5faad1967236724a9a4cab8fdd88826cac1db4798245fd53ac2ff1a9b2b68b76 +DIST either-1.8.0.crate 15992 BLAKE2B 5b9254d54ced1f23447cc78fca74f12085c37e3c2da441b30521819025ebb808e8cbd9cbcec811f8b3951030914c1736b8bda61744d1323af8c5b8b0a3ef3ee9 SHA512 5089b218af067b51ee39c085568a1a6f542e8f68b362207bd7126cbcd2b76783cd21cc1517a1d088ce4dad1714be03a3660f50e9498a0bb43a8676cd7ec490d2 +DIST fnv-1.0.7.crate 11266 BLAKE2B 81da85889c91b6567e0f555e37dd915f1bd919719d1ca10c31a6861d7aec29a49ae9c1e8bc500791bf9d6b8dbb318c096d04872c5872a4b1f7d45fbd8e12842d SHA512 2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334 +DIST form_urlencoded-1.1.0.crate 8734 BLAKE2B eaca73d73d16242f3fa3e38e23531c67c01404697bc7b7eb7c64fa04167dcb403a41818487fc46c5d9118842818472d549a2f5fcef5e4d962461e1c103d895d1 SHA512 9e245495dbf235b147e4216b313f2e6a96357d2782a66d71c08c2902c6a065701ca8ecdbb6b2035983a83c44cf36c921b5c71d63af0e02dd39bf5f8347117e11 +DIST fs-err-2.9.0.crate 17662 BLAKE2B 9919c253ff98280eb3ae8d700ba3f878e2ffacec1d3ea69f0445921dd4084c67f3309cddfc2c4e9ba42cc9f64e201fc88313f517185e47f62c3f3023bed62e96 SHA512 b0fe36a1158a1267a10f6ca66f987448c2fe05dbc26af67cf92e2fff5af210312494823c201156f1029e3d81ec4b075a63a51770e153dad3867fdc6ee1d29126 +DIST generic-array-0.14.6.crate 15889 BLAKE2B 7beac5446f5da4d077598af43c238eb7e71a12b0b91e6be5dbfc1ca33dc21d128fc93c9c8b18caac4b88830c8c8a643f2033acaca1d9a9f3d95329d042276156 SHA512 254e6fb6658f083f26e022916795c9ebfac241b9df2d811aac8316b17e1375e1c5aa54d72f1bf6c2627a88484a7df4b14eca231c90578e9aa3d9997047fa0f20 +DIST git2-0.15.0.crate 198983 BLAKE2B 0e340dedef36339cc6ce4cf9ac79014e7bcbdf9ebf688986d1836c3e2f480998a60a2722017381124682edc5dc511368497f03c9bd9a8c4d0e7690682789bf88 SHA512 8ea32850e592cb9bc8caa0d7a04042e284c11b9d46959807d8e6d496d93946342dc37fcdf1ed354010434798a404f415e8e980fee2ce4f5cb998e0f8736b5bc5 +DIST globset-0.4.9.crate 22929 BLAKE2B 91dfaeb99a3f6f40a5a025ad8527c91770545487324e191801eedb6f916739b5efe687d84a43eb8b712cd181d98d3ab17b839f30c19e0da041b4c34d9286089f SHA512 66841495098b028b8d294c0832276b8864760df3a16b93b57222037c351591ac7773a99a65b85a20c438fbfc04c56ea4901188cb18ed470d3481eeef29eab708 +DIST globwalk-0.8.1.crate 13705 BLAKE2B 4d0fcc805cfddb47af24f5d8f2c4f9bcbba48a8a523e565f7ce7bea767b6d108ae5e3f5cccf6647b497b3690f862e1652812b9d83ffd02c634119d5e03d1a7e6 SHA512 3235fdd9c24ffc54994a0b37862c44e16a4c9ef6a7e1a008c5d83dc62a9683ade97e451e4da7f6db710be2532339a55038fa3bb85dbe6685d1c807cf42f6d955 +DIST heck-0.3.3.crate 10260 BLAKE2B dc756738081d855583f239908f671e9b5dde72ebfb577f6387b1a169817a03332464cf67071708a4c4f06b1ecb222118e8c719073ccdec1c0f938e5ef378b13f SHA512 b3498e033f44e03206421e565efec5b21d13107b60d35e4476331c44e6effd75c81f7678f2452c822eefd581209a2ffefd2034779cca2d8b4fac4583bbbf777f +DIST hermit-abi-0.1.19.crate 9979 BLAKE2B 801e8052b85341cca388ada9db4b06bb1bd7b64474185b2ad06c0256b9e597639bd3dd4ba0053ea010f922e53969a4ab47b90d451fd9b94c8f2324055d151ea1 SHA512 1c877fcd562b15d2de9c151fd6c5f3ea4bf48abcb799e6139a180ffad5d64b632f0000d5707bbd92ff23a0e5f349157b9e0f5be8b50f03680b0fa47315dbb78a +DIST hermit-abi-0.2.6.crate 13027 BLAKE2B 4df5306639511a5f69594e903f8ce62482cbbfbfe272a91a12f407483dbac4e87c2d7e5668cc06ca5c0fc149ca93a3152fe6ad4bb3b96cacf56a22cb635e5b7f SHA512 bad8442bb822a9c99f6536db16523c80f5139af6a139bcc359c03725c59ff935816e2ecc5c491dc362ac75ab2dff41ab1e9dd29431f5e9a109b60eb9b7a8dc28 +DIST hex-0.4.3.crate 13299 BLAKE2B deab49bf3d97f6fd7c0a0855b50232422443b226362bc7a4a19e57c2e662fff2cb046d4c5bd7618ddd523045f3d8c78754508f862f9a8ca29ca9247da6d6ec79 SHA512 fd8ff33b68eea2d6f2c6b02a6d82a2807cbcdc209ca5a76e3e3e5d006917ee151f236b6d18e2646cc9a9674bcdda1d6ce6ee363a89cadd99bef00d0eea9989e6 +DIST home-0.5.4.crate 8538 BLAKE2B 1512afc063cc31104e24a744aefc2a28f07d4ded12b4500480610124289e5b7c7f2fa3f1e66da36832cc45874c4bd2d08c1a584fed25aab4ecc962abc6675e33 SHA512 2494111301bd1281c89dc77f4f78d3bc6e3a04d1969938cf4584d465c01af12ad85022832b4a99a5c0ce6adc31a83c00820df2d513a09bf5c0d4fe44c53812a4 +DIST humantime-2.1.0.crate 16749 BLAKE2B e2ae8325b037fb175b9200cc5c1944ce579056c6662cce307beb6701894552362a25e371aad65f8fb9384945b48815ca74bb8b544a32e0a5845b7edd30b918c9 SHA512 3bf29ddd1391d82897c22baa0ff3ed58ef6d6959859f1f8ed54d324caba5b6fb4422e56790511ce82f902cd11467f93c8ab7fc7b0e0bdb719308a4d0a446ae0c +DIST humantime-serde-1.1.1.crate 7886 BLAKE2B 4c66a483276e0cc5f4bd82fd49cfa0ee40c8ceda753919cfb7a8c794d098e9e4e851643fbc42a209d6ab00c5c62d9edc81c3bb1f6da218a09eafc96da9b566f6 SHA512 0bd72554e700f89506d2d1c8191832aed0065ea02aacb99e27139a60c883d3dbabb1fc3d60f499f5aeb20bd155fdcf21dc671aec1ca68d4041bf98ddf324248d +DIST idna-0.3.0.crate 271128 BLAKE2B cf8a2c43760f03e94953c6692423a12f28fe763aabea8785b93cd247b3aedd2aeef2cd99978a027186290016ed924db39d19fe7d397da1ab570be9646bbb630a SHA512 9b7cee27811ee52ed9bb39fe82f724742eef2e5370642b6c756bd134c8cbc20bb6faa9f296053672dba8a66f7356a08b2ca99f176407b173e2d566d85d066441 +DIST ignore-0.4.18.crate 53174 BLAKE2B 41a209a310515af9fa066c88c92751e19e0859f411baf9946933203883098f52901f8c03250cab7f716abbd0da9c03c5e6fb270a5f9e26aafab4bf1d5f5bc045 SHA512 5d11a2415f015cce6ce72aa3d08a7cfb645ee7f1845b3445a924a92144438f209c992cc15d4ede3099d1eebe3fa28bde4e0eef1a3fbcb9dbced19a42051d21be +DIST itertools-0.10.5.crate 115354 BLAKE2B f24734bdfedf1dba48554e39b43669efcd4a43656eeb2c511096060daeaf049e1ad3eab232e757057750ce94aabad9fc8a0cf29a997edc6c4b167301c3443391 SHA512 d03c3cfba9841776913bbb6daad0c8945830c155f32ae4b48872e0f937c75a443f0ac9a0355f43b359ff75232f38b15f4f6d446b4be30b00b4209cf66ef770c3 +DIST itoa-1.0.5.crate 10622 BLAKE2B 0d08db487ee791a252389e40e08e47a649d9eb90faad16bfbdfdfde46366082d2e3561fb8a62da80b122e7771052c50a0483e9618260d094820e20748d99882e SHA512 b90841e3a016a9a68cb090e4bf78959bbadecb3391cba71e0deeb5ac2723379ccd3251ec18a0bd055fba7cb6e71608ab1d7db990ad4d03cf2fd1289bd5834540 +DIST jobserver-0.1.25.crate 21888 BLAKE2B 2ecd417446f9eb975119af4ec74c9b3463d061f5348ebca380f0ab9963ccce6dcea8c1671c7701f3f867c7e49d0ec130809a37bff466261a2fc75e80cc01d15c SHA512 0c014e7c72a070e3332463cfa6e9c9095d542a68f8631150bad0efa3706a2d6de0347bf7d1221cc3bc0f3d5f9840fe7188aad949559375403b929d43b4a524b7 +DIST lazy_static-1.4.0.crate 10443 BLAKE2B 25b2e61bbac48f0dcbc79c81d7bf01f2403d8269ecb6be3ea6147bd00f7a588df15a91f44dfc18ada19b21faa71de4637c7d493a8628cbecd0e547d74e616a23 SHA512 e124c0521ec7c950f3c4a066821918da7a9c6e711115d98009ae7c351928fdddead852e7596fea5937a9c30e4e4ce8eee7099b20248b5d6e3b2494b6a6d88cb8 +DIST libc-0.2.139.crate 638983 BLAKE2B e92b296cf8c916e10e859722ed75f4790401662ff7aa2fe8ed84ef9b94a00538768be33c272f0881e42da887c8c43e1fd44d061343386216492a76fe5d308598 SHA512 ff5fae517c49c382dee9b1d7479b65b0a818780453e5c00c416847d02f42186e2fcf19a8a8dc5e9cc2611300690c6ad324f9c0f0e8172e913a1b781fb7c0b5b4 +DIST libgit2-sys-0.14.2+1.5.1.crate 1742257 BLAKE2B 028e6bf6980d7a54b76c918fcd499684869f14cb160e821d6657e59925d142655dae6e018c9f29389de304ef6109197fd71e6e6752d0d0a53152f2c4820ea1a3 SHA512 eb9602706036ea62ecbc08250f297119a1c51ea09ea86ae8630dc6d0521b74db96d8eccc4106343572eb70d9a156415c017c6a91fb5529100fbed091ff8e7921 +DIST libssh2-sys-0.2.23.crate 493516 BLAKE2B 00c0c1396f3d6723ad750112e7af8c8ac098af7b3d11e3fafbb4dc3b90c0defeb8184e007de3c740bf1111e12a53b71c355d697c4567deb3a30ebe3fee2e0caa SHA512 9617fb1d5826dacce23658b42e3eb3f8427b33db1b5a4424081e148bd90a3f776aa50ef66183c93ae19086d64321fc10b19b1a496c3feb12a669c7313cdf39cf +DIST libz-sys-1.1.8.crate 2481844 BLAKE2B e890a3850aed5348afe7558168c7571564687d6a7d3567a4d53ffdf79444d38c4d70d35891e16f496f31169bf73b669534f5fc584f9ec520b518dda05e80b882 SHA512 0766ab72cc1414160ccefe4812e6204cbed1341607e5d17607f24fd4ff81dca68d8f2cf43e1d27f332a508d602bff0ad340c4c647a5d5f85acc120c19cfb4100 +DIST log-0.4.17.crate 38028 BLAKE2B b46be3719fc0a53e50b1f342762e188587e9f1ceb692c72473ce2663edfb8253742d30024e68c1444780ab7fc0e2d5b0601b8ea7228dc3405a9342a57548e605 SHA512 2477d88db42b1d92c30708d88823212e236f613b3465e85eb425f83f8d16fadfaf0352f06c2999a1852102edd2f6ffb10ecb539d8a3b6c48f552a25622ccffa2 +DIST memchr-2.5.0.crate 65812 BLAKE2B 57966413a1f933dcb2d2d4ccb29c247070f65a83299b2a9f5aa83f5a48a5c5f1c4c7c632fa63bd19f9508e9291e7258db2f16e2813a56fd84e0856f70f1e67ab SHA512 444a163b484c233e78c0e2e4d51f01ce2da93d7d29f516a95e4b0866b20bdfd3f34137653abed53eb70387991ee3e2b5937d8d4360a85bbcb50a93005a75defa +DIST memoffset-0.7.1.crate 8556 BLAKE2B 1ef270f1c8dba32e66cf47a1835f10c342024762c0e56953f16e82d575250028154054d4c42b1324c60f955a40fad3bbb1c5fced147c11c9a4ad62f6f0e948c3 SHA512 40ca3c4b1fb929bec75bfcde0135037f81a6c5aa80181bc7dd7bbcd9c0946288eea8d23fca95e296567ccb02155ed0f66c7c23644b5cb3e6d3932be9f9742157 +DIST num_cpus-1.15.0.crate 15680 BLAKE2B a4d98b29ad534de9bc262f58f615ec06bde5d5a2f5252f09b5a0a6ecb06a9daf9709ad9045eb08f7cb744d8a838854b9095aa73918e06624a84efbc11a9a5c1d SHA512 fd4772868def9460a6ee17ef6fc00b0bc74115eec891bb3fdb07ba5b5fe4057a2ac69eb31ba8beddbd3189c7be4545888e5724879f3a89132fbc9b32aa7bb10f +DIST once_cell-1.17.0.crate 32736 BLAKE2B 767fc8f362ce5ed7a9eafceb2f0764a2a1c7f4070e22d1e6e2498b3c841c5f761e77fb66a34b899a75d48f1563f6b9b73b90aa9431055d4e0269c47a1b043c1f SHA512 291d87380c0ea17fb3ffc9fdff8620d2ff55601c06ef65b2f0c54254fecd5b488645c6e94c6026b82071893f4d420491ff712399a782e14efa1e323e5c299c46 +DIST openssl-probe-0.1.5.crate 7227 BLAKE2B d1fd6a9498b3ab7f25b228f19043067604bf20790530fd0ab6fe3d4d3bc27f13e6e94d1e7ef49314c3663477d8916b8790b90427f74976143b54b95350895165 SHA512 7e560314150709a34520472698060c4f29689d4e608dc4dde146140aa690350d3603279c693367deeb0f21ab34ef61956143a3447827a2b7a3d578b9ccd6552c +DIST openssl-sys-0.9.80.crate 61687 BLAKE2B afe13340a51b5f7c6242085a0861c02ca20de7ec24e12efadb4eafd55b769f45d0ec4866799bf64bc383e68933277503639f148dc600f8036ecf6c325b745f5d SHA512 e141423f7a7c72d9062616b87163d2e1ded028ec165b3758c52a2e5f8519cd517fb1a89fa0ab3da27e0b47a1f5973772673d8233e98cf4ef79ded56e0363a072 +DIST percent-encoding-2.2.0.crate 10075 BLAKE2B 397e59acc3953868c709244b89a2e0db3304c0b574ecba761026b570a485f2cb5b0b2a0159586d1f342ec395ef02ace536da3bc1c72093e1cf93f8b37b26b0ec SHA512 890a5256d2b4290e12e04a02c3529f3a017faa2b6016a4dd0f08b36509f0b1107eacfcb4702024d6a21ff8852a11f263c1adc096b16ef8d12c45a734c087fe68 +DIST pest-2.5.2.crate 106500 BLAKE2B f54eaf717b4918f2a01a897a3a0a43e48bfbacbf3b6fc997125ed5ebc8c11900386478f8579c8a4248458d50aab3dda6c027d5f8754fd7b9009a4d56919ea59e SHA512 e3aecfa3445050716906963f2226d794493d6525ae25a9e7f9a64c620d4abd6c345fe24bd41d329ea72d9349b7df1b8ea32e6adf4b1864b1e10f85e25f0dd59f +DIST pest_derive-2.5.2.crate 17728 BLAKE2B 7d108ee8248653f8fa1d16e2836d772a931d1feea9cae8bfe911daec372235a4ff52996fda3bbd7e38d444902708127d835fbff37e2894a1849146249e8a6c66 SHA512 1e525bea881df2a9833122b98d9c32d3d5cbf2c78c465bfb44bad9a132b4327eb8d5de8df52f9f9f3a0efec13709d8bff70b36388cc158e17bf7533375469377 +DIST pest_generator-2.5.2.crate 14960 BLAKE2B fff48df2a862b68dd5ac72caaf06c96d130dadb0a434654d2e1dc1eaf2bfa4e2f693079de394c62bdd39bcb7a31e9541ad4a2589dc4f92ba7529cf814d99e524 SHA512 ad253d6047e658f7bc001c4af575f46bf99d8d38646a74b4de830b26a71285b1fea0b094f1af6f714a127c8730abc3df05c948ec7edf360bb82a1fcb08e5330c +DIST pest_meta-2.5.2.crate 31245 BLAKE2B 94125f817e7324ee7d302c4f955fb28ebdc2c44f533eea418b79c747e312138592de9ed28de89ced24038aff6e15ea5d7fd853d1982f0a1059e14c1163327246 SHA512 32f38fc8e01822417dad438b37461933ed8bdd12f601c816190c7a9614b749e02fa5ac205f58ef7a1a66ad93da0ee72df43be747583f1b5336dfe518b99e233f +DIST phf-0.11.1.crate 17232 BLAKE2B ca7932652a154bdff90b0260439c74da70e5c01c69f8ce2f0f88fb95247236f3a9d9e509f5deb36b4c3e9c23294bcc30ad415f4be5cf6e36bd09c31b961eda24 SHA512 d4b020ad259889828cf224a1d70fe0f78498c4d40c375a1c437a60d9c9a1a9c623737da54d197c358e0557e6f0c5a35a9d64198df90dc104d11f5eb7a17315a6 +DIST phf_generator-0.11.1.crate 11075 BLAKE2B fc8fb9d06ea933ddabef555b01be6d72c108cc5f493981b87ba2d926259a6311f5407eee441377ed0e76d041a792858ec39a19d269677b49f285b60c34f441c5 SHA512 0b6eec4edc5376c30dfde8c7fe4da5905412b944dd56c085e90198c9d716b40aa9928a8d08cd1a7a4c6ca26c83d318fadc61fbb5cddfa239aae07a6c831c5e50 +DIST phf_macros-0.11.1.crate 4693 BLAKE2B 291fc890830b3d350b5b36f53b8a761ef0947e9aca6d4accb9e3e4edfa3fb0a230dd6583b874f20e19654f06035aa9ac03683315dbb59b503beef9de8ce2722a SHA512 cb392629736028ac15a53fb0929bb57c9fa7c296be86906e24682274509e03e3e9dfdcb6791345a83419a3fcf9af81710dbc9fae9ac5d55341466dd4cdcbbe00 +DIST phf_shared-0.11.1.crate 10320 BLAKE2B 9a511bdaf3c74c48da231effcf7e65935e7b0ceb9271a3d66f5b15fe13e801b8a7eb10ad5fe1a07913294cd070ee9f9ef942843ddc1a29f51c76e7baa62f8eda SHA512 0e6968aded0535c3430474c49378420fe64809ad436cd39e331c8dcfb1759605df12a9fe78db75bf0761bfbe8beacae4faad2209923327cb41f015f048fd74d1 +DIST pkg-config-0.3.26.crate 18662 BLAKE2B 2ad92dfdc8ac0414b12a61dd30ea4ac5f142bbb55d0555ecfa3a53e750367e1b11766a693ef11f8cbe5a2ddb978327632458b2bcf75be7aa8f973262033349ee SHA512 509c4d1494cccc20de6a62d9d037c63ff77ebee8d907747c57ba0926d177b08fcac0231ccdda14511b453deb0b76ddd10f8fbdf63ff94257d72a12a889546435 +DIST platforms-3.0.2.crate 27905 BLAKE2B 036fa49ccd5c033d98e14ff7856036df6db51d38f6fa924ca89d3139534e2d4acb8ba47d53871f5abb251126f15f07cac3d5b25e16c0f97f322c8f58555f7451 SHA512 3bdc739c81e50434e2f59800634a792d1e1a8fc22ed6c7316170e5a84960234c8a0011264c0965eda34f87db3322431bd9a2df78e994c9c68933f0c5ca9e00f5 +DIST proc-macro-error-1.0.4.crate 25293 BLAKE2B ef918c5efaf2545ab38787c8d0c07315af00431139e4dff66346bf798e3a429f91d12a79776c150412fdda0b158a72badd5e1044ac4d6917f8482d4b5a7110b7 SHA512 8a47bc9d3e24e9561d1e384d8f5a633284c2cf9b5e6733c5f9d1dbfe1870ccc8e2152482852e50b551cecb68e009148585b910ffb0508a7b4875598eaf8657db +DIST proc-macro-error-attr-1.0.4.crate 7971 BLAKE2B 98e2925881c2be186e22c2c439697e91d43f807eb61a5d13e3b0b4321ed50a74f3d699942c04b89b6fea0f156bb5d19ebcf22f9cd4b98a7e6917c437600ed823 SHA512 2606afa9ec78d7dad4500c98d3a5ecbd02c6b53ab829c742bed7f57b322a95238ab4e01cf268746815f1424fd9b02eddfa30e72f98c66106f57765f3d3116495 +DIST proc-macro2-1.0.49.crate 41977 BLAKE2B e31c81d3b836404bd2c28363eb0cf2637cb7fb1ff5fb39333158be2b40b15f6f8f582edaec51cabd32d7b215df39c08a9632208fe4da36fc435dc32a48483a6b SHA512 b490d5cbaa790163aaa49c1595e694dfaded61c59fc23f9b6d359f4b774ee6eb20ae8efc5f5ebd59c8ca75da85baad61c065451c1cde03b3b6148e2aaa2c9e1b +DIST quote-1.0.23.crate 28058 BLAKE2B 81c483fa26b36b5c4dbe85b386a74f5bfeaa854a99c0d678374507613da916a60e3f5b14d4a4d295e1c9ef0413fa1f16447df8f19a9db8cb0485b7a5c327fdc1 SHA512 3bce6846dda94d285de15771549099e60df39c8395c498b372c90a240f77df31d6d9048127913ec1c7ed8f3a189470ade1db2bede406bb00fa715ea641ec87c2 +DIST rand-0.8.5.crate 87113 BLAKE2B 516f26bb2a969d0d79e957818133f35d2c0b4d9f1b401098ea23c5b80d27599e842b9298c0c5e46e2a6cb6953857bf8a9fb71ec9366c5ce6708cf17df14f179c SHA512 8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2 +DIST rand_core-0.6.4.crate 22666 BLAKE2B 8b6b66d50aade877f2779c006f8038db450f808c66d73d79efa66c4178dc03db06f12201bf0e7930181c4b0f4030c49b20cce6eb7839763cf2217cad9710789a SHA512 36c67eb845aa2ccca49d6d680f28d418229bbc5a050729e487fe6b9f9f384fdd7b8d67fc6508b90b79ffb3c26688e72feceb3ecae57d3d7f59338aeb62296f79 +DIST rayon-1.6.1.crate 166330 BLAKE2B 5bbc439e0c88780b8d80cb36d4b4164e698a1189bd140e8c84d9f6a466023de0cd69a1f24c4217d595ae9af1f61aca6829461648152116c6bebeef0f0e686e50 SHA512 2e03585170e59f4388359817d67a43cd10a2244382615ae39bf84210db03a6dfec3b75d8a23800b8faaa31f45e8df4c44fbc343f02e18dd3dc0572c207791e73 +DIST rayon-core-1.10.1.crate 70008 BLAKE2B aa6dc470af3464ddd20f75faa5793bbc684d1550e44e0148134be7219dbded5dc7c1a1da96487ce9132330f26a587d9861b64be342566d6550cf3806a764d51b SHA512 a9261aa4a648029f50bcca30bd991ef51353c258b9b8c98027efe9ff62e4b7be200e59bc7aa9144d9a3d39873b01bbe104c1d7875d61e02e089bb04e0312798f +DIST regex-1.7.0.crate 239421 BLAKE2B 6e9434bb9835bd8e15c81e817aa64e8443c4188219caf46579078c6b7cbd98ee588af0f526e0fd5a01814762dfaa113ca3d15f7cfa14e969d5acda3a631e9560 SHA512 974c15a593d86c33e0bb34f7a67957fe96dec07b3752f2b6b968d657845f5d2342a5ee9ec1359109c43e4f46c9b2b2b678d59f7b752455a0ab1435c1fa56ca3c +DIST regex-syntax-0.6.28.crate 299288 BLAKE2B 8554370e269e888e603c403089aa6eb4a087ae65fec016a428e424289990a07826e37a2e51cd353c7d530d5b3421e2db6a8f9d50e62379867bb5b6cbc57f2436 SHA512 ba5fb1622a330b67a4eb820551c7f20dbfdc6b38eb697b9bfddea4cf0060b473472045e93aaf6cb9727ae609e06ed285e1e42f06f34ac730ac39fb90425bbe85 +DIST rustc-hash-1.1.0.crate 9331 BLAKE2B 16ac56622897f47a06b661fb59a196b08d48e782ab87549c8bd5c6fe92f374c9bfd44dcb36588512bd9b6125c2fd79a12d648aaa308fd9694bcca3a7c1b49ac9 SHA512 84e673ea9b046f7b989d47f2c4505557fbd5de991e6fc9f56a03605d40e0b4ba5427cd566954890153cc033ccbec6c984306634571935bfe0d4cdfbe56f39544 +DIST rustsec-0.26.4.crate 52630 BLAKE2B 2a505ce07747e32f1afb6557dab59123fcc183e0e7820193bf271909f40bb7af81b6f449d54acfe48543541b984c14572436de45db19926ef708aeb5c04bc31d SHA512 045fe2f50531ee755a897ad5de59a7ad21c9eb734b3a581c80db4046e9fa890ab792b8f91e54e6859bc16ee9880e5304a1570dc6423f5790e9fd5ee043b9fdac +DIST ryu-1.0.12.crate 47070 BLAKE2B 02b0eec6bf266b7c482aea15ff83de4bf3cd6f607f8cd6f17f1c3ffc60cc64b62b15738907b4069f5816dd81669ed4f5b00c4bbc8705abaebe3a0846f56e8e29 SHA512 070f0b2b52e47cc9a6d8f003439d257c27aec15ffb030a92481ac22d5052436156e25127ea3ea7986cc514d2a7a924f9328710d743c216d7b1379beacae79829 +DIST same-file-1.0.6.crate 10183 BLAKE2B a320c8343e0b38078ba81c4f0159d886bf47764c74efe0d7cd2b3218426e8341b51e523c00a9e5fbc2ee1057618296bd70b576c68751bd55d6ddb352defaca15 SHA512 3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c +DIST scopeguard-1.1.0.crate 11470 BLAKE2B f774eb90b7d3ffb2efba47518e9d1dead4017ab4b38a4bd74914daa84a5af4bf9eb63da0496e3924499d79cd0439c37447aeda4a21226f95645bddcd6becfabe SHA512 368fa5726df8f42b599993681579a9ffd0196480ee3cd0f9f671e8493f3bedd1e1779bdf2beb329e77e0005fa09b816e3385f309490c0f2781568db275d4d17d +DIST semver-1.0.16.crate 29850 BLAKE2B 6a6a680e55b6e98e5d0d466cae2f144531d3019988a7a241e7f0e54ebf2ebfbef27eb7af5ac59a618fdaa5546bb84c65e4616734b775fb2e90d87c1ac0b07317 SHA512 4fac06eb9ea475f8a31dd85e4d28c70a351656914e8e61518ad69274e93f1b6f14cc32a5b0c0e5a7d9ba0c74d4a16d502518dfdf2756e8df5e45869886db8c2d +DIST serde-1.0.152.crate 77091 BLAKE2B 89c01ce359042ebe6b1b64ea710580886f965a98e1d6085c58a75269a9b43401e2cace080c4c93ee51982855fb7e2f09fdefe9bd237bbf30c5537f3a4258283b SHA512 b47bd58fdc1a81d96cc0c9d14c8b19153b6689e893851975b1d7c7010c4448750e7fa09056dd4f13ed475a4aea2a3950952ff528832976919a6e78504a37bea7 +DIST serde_derive-1.0.152.crate 55586 BLAKE2B f133c6cdb87d435ea0c05144e685047fec22b93df7c61df4aa139358c2732326c98d0f62fda629da0f648aaacfc9d6f312813940238f45b359546dd435e7a516 SHA512 2f4dffb5671b4758f0b7dc0939f6b5cfe3b3ba02a53c62c75b5a0ec89d2db26bdd95f3e269d1fd4b07ec921bc0ca5f0741c26fdfcd25bd6532ac698c6c701e91 +DIST serde_json-1.0.91.crate 144654 BLAKE2B 857f25cb43f8153ed4266fdc38b0a426ea04edd9e7954ceeab384729abb51ead1378a819eca6ced5cf20ed0cf237548b4c81ad507e3f4684aeb9bfd7e4958684 SHA512 b0bfa3d64fe9fb0d09ec8dcb6e41eba75ad0f0c4e34e0ffd5e2a3230057d7499a57ffda8c1615bea5195ef398afe414f3b0a143a39865123c1c5f976ea1a0337 +DIST sha1-0.10.5.crate 12146 BLAKE2B 476a0c365ab639a0ce427856787595865a60339fd6b81a45f879ff9b9112021d2c3a62e0a817b4555951131a7fe257d0c30988631ddddc3d217274c46c79ebe6 SHA512 1046b91a9ea64b90098ee6e16c63f0620dc7c2dc847d200972a3da3c8d1ac61fa9030682099a411cdd24717b64d488e0b1be1cbe8f7bfee26b8c15cf4f8e5e9b +DIST siphasher-0.3.10.crate 9889 BLAKE2B e5dd6d265340b4c9e4266ab1ff3a20f1fb87fd493b2d7b5fba32d26421cc858b38929e4ab96941d0c055375b8acebbd04236d994cadca324500ed05064b9bfc9 SHA512 f90425a2cccc9575d377bb92a765d34653ddef1ac12b7c63dc6d700aaa74b525787e11609061c2d3e44ea56fe0e4b8f93f7b13f0279b5de2e0f710c5caffd4ce +DIST smartstring-1.0.1.crate 29555 BLAKE2B e6706bff07889a39e40c764c51f0f3271570e2ddeaa2d11c510ffc9a07dc34005b62078abb7dc6f0bec5439f0bfb26d7b20be48a5189f6a468e4977352bcc941 SHA512 18e359d869bf006d49d6981c26a31ed73424c2734d8225c235b5f3c65124e5ca9d5f5bc95f4b190dc65746b73f31e2588bf9f50eb2b30535e5d05ebcd23ad760 +DIST static_assertions-1.1.0.crate 18480 BLAKE2B 358dd5ac413d06f62da0388e2016c5fcb8ec68fd7dceb0dbbcb97665c032b7509b7e083c20701648b6a9174485f117c02682ae4bde7ef037e80a85cdf6a0c86e SHA512 46d0e35f77941dee6f60f574c130472248063dc38494c1c4f84f7c048244cc2a58a86fe17c0990e3f0f01406b75ed385a13d00058612b27cf0e867c8d31c92ee +DIST strsim-0.8.0.crate 9309 BLAKE2B 40a8be506c43ee1ffe006ddc7dee98c3d418bdd205d57b78f5d1e4c9312feb57e1eaf952e02d92d4e0932db240c6fba45beb06ea8c4fc6de1cf1faa8b6a3a939 SHA512 1d55a8d946cd55f5f37d06aea536549ded95739fa58c0f2da285a0041154c181f663682bdcac643aa198b3e762d694a04f058db985c62ebe22b5c16327ba6d34 +DIST structopt-0.3.26.crate 53798 BLAKE2B 04be64637d18bcc87d261320668023459a42c167bb5a4c52216df556a7dd19be28032e7bf759cbcf710a3729a9dfaeb20c29f37f35fcf33533db583ac4fa049a SHA512 dec27090b57107473c9d398db68bde3b1b5191e7c7980d7d2c20fc723f92c64a6cf1d391d5122a103222c4262253d8073fd0fdfb11c74f235af79b2ae0caf069 +DIST structopt-derive-0.4.18.crate 20996 BLAKE2B 2ae17e0d365a7ce7a4d0e007513623ee0d5acf45afdc3844114e02975b855fd1a9f7df404a24044cf33a3a4cc4142eccc34d1e97925646d54d460a89baa28275 SHA512 68a7f9c2ed987993fdd8bb7e81c31969a1fdf5351c58cba9de61a2f5957aba1626be4b0742f31d4de502301675ba24b0d91dd3acb24f5607bdeec83070626a57 +DIST syn-1.0.107.crate 237539 BLAKE2B 5a65968806c72fedf69638661f827a0426b9e49c2f9a5e5208f986105f8facca2bdf241f92f74bde790e9a0dd68240d4827a345a939c087364360e19a5cbeff3 SHA512 58132adb76643521a6a9cbc0316431318ac25f8517bba3cbb98e7e28ed536f9e24f643e898fa21a2f74cc8c1aeafaecf9b4199b23048c7be8c0bab2fe3aa7623 +DIST tera-1.17.1.crate 98201 BLAKE2B 317eb9d64c2698b88a5af27902423077b369b7ed6a28380d0e8fdb2ac42adaf6a112e51cf797b0107b6a216e9c9ca56abc29c56b46b2c9e49ef9e5c4df8715d0 SHA512 55cffafa1c75dabe5bc40121c8bf3583b48b18e747c28f4a02756ca972bda861cd7e0e1cd2b12363485849108169935404d9936ac58984e4d579e4dfe418e6ee +DIST textwrap-0.11.0.crate 17322 BLAKE2B 257428908342774593bbd3528fcdae710712ff54e8a711393a24356d8ba0e16e466a4b20c05f942c48ca76b3b5b5aaa90ec202f782cad892caa8b71ccf124da6 SHA512 f5c0fe4f28ff1a3a0931e8e235b5157a45f67967985bcc752418c5ec3481fca44a8ae4800088889b37e8cd0533f53d3c456d5ffd19b767b3f83a87b49a2e209a +DIST thiserror-1.0.38.crate 18947 BLAKE2B fb81df34dba2958395ae360cbb14e2708e5a3cfa5cd0bd03c58f29c146d8afd8595a7ca1b30f1ed2a75ba140a55ba450fd4fd040aa1a1dccb0baf393b0e98d60 SHA512 95b8ca682b579834a04058f03ed0c994ccef426d75e0fcc28ee47151d343da25e8fe31f8157744d942aa54652115f477fc6037f91c581dbc127b829cc96476ce +DIST thiserror-impl-1.0.38.crate 15429 BLAKE2B 96202c256e970fe23f07b461d71430889e36d9f0e83608d001c6feb4e86f4a34047ce93617b27f89c6e2a5d6ad8702b9f64ac7e59bfee221677261fdfcb06e69 SHA512 628aa28404a181b384ac6a11a433829a5481d97face5bc1704349414f36e93440738122fca716fdf878719870d10e0cf8d495df6b1d40913e985c2824cbc3aba +DIST thread_local-1.1.4.crate 13106 BLAKE2B 64c19368f8cec46f23b3052759c4c4ef0de50748432790e6ea11b12477239b177d54e60b9046fdcb2f495b8e0b37ad82809d03602edab9fc85cf814e3bd94fe2 SHA512 db7ff3eb88a73d9313dd58d72397614c5aae6be1d64ead7f16535cae2857be3b27d189e7955308591ec64a0d67777fd2a62a2b124ca73facb9a2d8e0458bdbb5 +DIST time-0.3.17.crate 99048 BLAKE2B a10a4b8d0edf8ca5f073f0840060a487a60a162341be3454e069eae48fd43b9b7bcfdb9bfd7d31380d8beb1c5364bfc9b774f3f438327d49f04eb452d2932e9a SHA512 c69ec373a79038315d0257203be16539f5efcfc0ceb9ce2cc0413f3d6ab6ff39881720c310f12cada17536ccecc4501f081890290d15282514b26fafc02abe69 +DIST time-core-0.1.0.crate 6597 BLAKE2B 43137c5cbeb61a89c1cbbef325f2e2dc4b907d4c576553b202d178a64d46396958745b00c9f2aa60a6eb609d663e48b1f9bd1f7ebe58ff6e22540e96b2b1c7f2 SHA512 f7e181a40a0052d7aedf78219a46f8876618342c710e819748a87a5bc0728e5b2fc7ba08e38ebfa6a17d6fb60382003bb35745ff1eabac1c8f8b47d186a383db +DIST tinyvec-1.6.0.crate 45991 BLAKE2B e9699d4d80a78978f0ebfd049f5b33d7f23d401cf4f4439ccb168e8c0e322473ad0ea7e2ff0ff69e9aac3e5c4c9ae5a7102185533bfbf96dbe77b3526e700bc9 SHA512 e5acaf353c58c60ae5556130a934f1048abb79cf6668ae467d308bac44b689d8a9997227ea879f4b5fe50f29cde8761801b088d7149bcd063b973056c381921c +DIST tinyvec_macros-0.1.0.crate 1817 BLAKE2B a3d1966bf57c11afcd026269135a6189f149f905bb70b47537c0a7bcaef0bfc6c89bdcbdb0f6cb8e5255632855134631c683fc90606a254ec8ba818fd5ef0794 SHA512 d6afc83a3c70cde916a6ff599e2772588e4bbfa7a5b1c7e5c8aa0f4a8a5c9426182497a644e4a88194ece986d38fa64b6c8eda9eb1630441c8e65a8741a45873 +DIST toml-0.5.10.crate 55193 BLAKE2B e718f93b865c4e8d17e625a753776bc62a50f98d6f83e4323268d65547b6bedaa90bdfef8b0ab9ce42df62c5552939ff020402bee9aeeb7d883caf583438995a SHA512 0d438b1752b815445db647d7bceb620ba7e393a29dd5154f4f20e0357e7744c69e72ea3a797f8190bdbb72f413053621de7c8de88d30926a489526de440af2df +DIST typenum-1.16.0.crate 42477 BLAKE2B acc6dcd4521493c438a8a3d997ab0456fdbff3db66aee9b81ba219714d47522c3ca8fe26f8ce84edfda416ff9a22747caf3ecc9cc4bcd1e7647ac351d5aef407 SHA512 93da3ed62573acbc9d5d31257fb72ae9cfc7d59e4040c1f32d93e8fec94795e1aa20a3bf76ddc64c4b383184306bb2a66e51fd61b64dd4ce46a1bca8238b57b2 +DIST ucd-trie-0.1.5.crate 45391 BLAKE2B 1b5bbeb63ee88f4481168f12e94004a4074c0269ea4a58a406da147834c25c23efff4273bd1945b181950d2119c6d83fb32acf42c658346e85a272bab4dd687b SHA512 67272b54b6f404eaf32d83697b0d4e22205ec8f24df40a0feb005a218ff6f74b001c4cdb1c471582b1f3ae53eee71ff89b3d0b9e06a9133cf3e6c21e144ebec6 +DIST unic-char-property-0.9.0.crate 6809 BLAKE2B d2bb66259b66e59e831ad74d89528882336a7cf6dfac7a9f49308a70a3d61d5ab88f3ade9df2c086f27ff4a6eae0d2d2b8e63bd154ce3e700cc525769f34542a SHA512 ef969968c61eae6a7d68e6ccb0b40f6618a69bfc4714b51bf4ee8c5ec4532d10b9c6675a4cd5121c904a578ceec7c6471d1496fedbf121059f076ad1c5ccb70d +DIST unic-char-range-0.9.0.crate 7020 BLAKE2B ab79b4298b999a9fbb769bf191f83e259b40b8d06cc5cb82abac48434162216a283fa82c1bc9af8b40656c2d06e5b6a919ff7888852eabb9001a92db12fa48d7 SHA512 bb0ede1695f4f016bdf9ec83bb49639527248c175c71d24993b8651ea6be0a411251ed8518893101dd5e96fd2913cf15ec27799c677ddb08b8e408da06ae0ceb +DIST unic-common-0.9.0.crate 2558 BLAKE2B 4efd81198a61076ed45f6fff73561de21b5b7500277de206ed41cfb01ce8e5046a1e2c5f90ac75c03eb1897b7f54a14cf0a8f6d9cb39f624b3a9fac375468e58 SHA512 9212f99afd4c694a3a671963d63e5349f81adde6d5f50c92ec39d15e7ee24aa91eee63ba578a857c8b21380937860968a8e13cd16bb0ee0c0ccd96b3094ad155 +DIST unic-segment-0.9.0.crate 34848 BLAKE2B cf04b1d875ebc835758b17f8fa0937da8e47b5c3aa3d2389b9ee35160805b1a0696c3a654d68b60a515fd31dba0571b0a087e97f6815ebd075e1bfeefd0a623a SHA512 cc2a27459dca554a78ce24fee42f0e4d0fbac37c42b4c5a1275f9e3b412cd1c813a4b4864857ddc33b549d99f10c9ce9c277b00f9fa7d93f130f5e47106d8fb3 +DIST unic-ucd-segment-0.9.0.crate 39262 BLAKE2B 73a2f0bfeb17ee731c17e7eb4b7188a800fcd3745c5c6480916240d087df5a856e4f51556e1aaee1e6668b216377acdaf4879beee6b285da040f6871f0c04e6b SHA512 04aab71f97785453dce7f561acfb2382a23d60a68735f3664577015a256191463dd6b1f90694e4440c4889eb9b6380c16c7a0ec2dfc2d49fc44a284eeca43c09 +DIST unic-ucd-version-0.9.0.crate 2246 BLAKE2B c546ee182387db997e6cd699a25bc201fc943306d8e87f96edc1a3dc1cd5ab8ad96f34e8275721a5604765aa6fb6f81e3d8d9eae690d04e5ba71325a769b065b SHA512 153219ff18be02e23ff3dc90bba11fa8c7cda11b972e0d84500d9a0742fb7d84466f2cc63ee278a24098c39634e50742af3317cd942f4ea882ef5a2a8e003d7b +DIST unicode-bidi-0.3.8.crate 36575 BLAKE2B c0442dd47a8ee81f575b28e34c9781ccf507b53ea96d1d4df2e8117231e8e67579031e4244a2dacfd6f4c24ec01fbbd4da7c9ab72ad50af51ef56d7d813b6444 SHA512 810b5be48159ecbca542c715496f279518285c3b09f7c39451986f94e6c259fab1057512a2148bf99ba9abf76e861a24456b547cc2273f0b45ed5d3ce9dfe3d5 +DIST unicode-ident-1.0.6.crate 42158 BLAKE2B 6e4ef61fcac69b4ccbf743a2c2f857a6ea9fcbac9b9890f5b7208cc0732c6892aa5889b3030e87c8c29ce4ce24ddb7adec6bcf47b7aefe9cb5d19f920f12cfbd SHA512 ee1dc78fe535f46bdaf3e19dd8dfc859bf3133d9271026cadf626a07ba586c39caca4e45d905156a6276cf852f9cebef196b2229c3ba4b5e2b26c956fd6cff86 +DIST unicode-normalization-0.1.22.crate 122604 BLAKE2B 3f3430b279cc0ce1595392c869442ce676ab097154c688779ebcf726e10c497df59be2cd7bb2f84f99499a9df0654760a10ac92224c17d74775aeebe291241e1 SHA512 a5810d5e9cd93dbb80e013997aa9d38e60834619483a6623eb2859ec5d59a5aec3fc4db123dc7f4e2fe9f2b8799cf6af48bdff22d69a00a23707240e8bf3bb3c +DIST unicode-segmentation-1.10.0.crate 93893 BLAKE2B f0604ca03586726b878f7884a639554037816ae01965fbb97b4998fbbd12e614f2af50065a59c834448413418a56b198b016e685ef9509513e8994a5c063da40 SHA512 e6a1baacb557a5a7ed7ff780c542c5947eb473763eb2a6018cb1e0a1abb9f4bf3f8073610e4897393f15df076f6657a0f162a5c5bb7ed5f3b3fd832e533a522c +DIST unicode-width-0.1.10.crate 18968 BLAKE2B 6174e307fd3ee290d0a5d1d31233baaa5315cdb73f19b8580718e9f9eb04cfd3aeaeb474af1e50c4b9fecc6fc777937dedc527c9dc9ed14ccf42af099e591f31 SHA512 9836a8d489d18ea1ecfe1957ed6d5da7dce825e138cd1848aef093fa8d2eb83fcf01eabb1a2446df4f5ede4e67316e9e81b5d58b59d4e8c5d67870e8fa5dca3b +DIST url-2.3.1.crate 72777 BLAKE2B 6ca0e537baf373b92269b2531945c1cdf360f1566cae4734dfb96f05a605e5c6c82e3192a1b9dde0ff22b92b87aba2d56e32a1bf17882b4de15efd7cdf52bc76 SHA512 8224010bef067574481e5d84100d944782d52b49db7c396ae2b4dfc145ed58769c15440d97a0fed4d2f9857592a8601417cc5b1bdea959c47a3e7a1f7182ed0d +DIST vcpkg-0.2.15.crate 228735 BLAKE2B 6b6bacd9a7fa38919241f45a97f58cae957e58d3aac99df208a26aa718e4f1644f4ccefa31b09151e5c1952288e0e5837c363918b98c7f55079a948a952c1c50 SHA512 7322a21e8811b2fe4e79e09dc321458068ecdf1953f05d36233f3278ecc0b1dfc64194db7010dd46fcf692285f42475beb090c6c6cac0c8f9fe0eb5c770e3172 +DIST vec_map-0.8.2.crate 14466 BLAKE2B 8f109fbff19604b82ea2aa61c952e2ce9b5597ccc8e1ef4e847648e2de08dece8c4debe92889edeccb8d393645fd0b62436b49d236ded7ad181c4a51239a9539 SHA512 4f1ef59bc2c437e79f1f84fe021bce5aa8ccd581f500f3d5776913d5f17d45b03ccee64f5bd03d47656318cfc9344a1f4311079d471fa409a8e4e94c143973f9 +DIST version_check-0.9.4.crate 14895 BLAKE2B fa1fa4008af165bfc1fdbe560488afd9d232cfafee94104fbcc4cbc52f234849bff9ddfa88109a1ac682f6d9c1d86b0459893d223f64e65adc08966aaf93dc89 SHA512 b172dc9a3759a4a683ffc39b9a40b03b9974b626a088217de87090466cef695226557c226cf3e469b2b25ee7297b7eb0d7719878cab42457f80146a81943c0c8 +DIST walkdir-2.3.2.crate 23516 BLAKE2B 473f2b51aafd6ac17e5c3da8d545d179b31486b3a65ab39fbd8bd7fbb2ebcc24bebf01781200a26a68f0b1cb464f5763a919aead3b03eba5a7e1be6efec5500b SHA512 6c44071354faf37720ec4117ded34c8d530489542ee107ac26a7a56ef4a882b9003e22e84f1d61f6078643521343e35aa1f7b57c838779e78e5937a667bf82da +DIST winapi-0.3.9.crate 1200382 BLAKE2B cb5799749ccd935ea2d7068d953cecf19f543d9db7dc16ad4584bb7005373ada34937a3ced7225544d8bc765da599911c7a3190efefb3a25b7c1bb7123b4f673 SHA512 ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 +DIST winapi-i686-pc-windows-gnu-0.4.0.crate 2918815 BLAKE2B 4d357e4d30f9552972170d65b9a5358b69c46a3e772fe05efc22f3d4ffc1caeeaad7aacdc7abd503a7ad0545f8bd7d22bf351dcb6df76f812fa4d45c34d65df0 SHA512 a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 +DIST winapi-util-0.1.5.crate 10164 BLAKE2B fc800aceae5249a858c806c3e969ef2545766099872d856ebee51c883d9acf1122278db9607d50ca53eac351502b700fd2463900932d342240f97f683d517963 SHA512 7baeb661f397c4693dfa001fdc774b323c51a7c55caad40f2de5112a1cefd1d6151e3df41fa4ee193460a5905917c83d2b1de5fa10b4bd014ad96690af95c0fd +DIST winapi-x86_64-pc-windows-gnu-0.4.0.crate 2947998 BLAKE2B 2ad1ea8b5fa07d544e910ccba043ae925269b76b26c9da356305b34b86741dd8b9aff0b9ffe3d562db4fcd7d7c46a11ce9e3168b782b1d89ae6881742b7ede82 SHA512 4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 diff --git a/dev-util/cargo-ebuild/cargo-ebuild-0.5.4-r1.ebuild b/dev-util/cargo-ebuild/cargo-ebuild-0.5.4-r1.ebuild new file mode 100644 index 0000000..a19ea0f --- /dev/null +++ b/dev-util/cargo-ebuild/cargo-ebuild-0.5.4-r1.ebuild @@ -0,0 +1,183 @@ +# Copyright 2017-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# Auto-Generated by cargo-ebuild 0.5.4-r1 + +EAPI=8 + +CRATES=" + aho-corasick@0.7.20 + ansi_term@0.12.1 + anyhow@1.0.68 + atty@0.2.14 + autocfg@1.1.0 + bitflags@1.3.2 + block-buffer@0.10.3 + bstr@0.2.17 + camino@1.1.1 + cargo-lock@8.0.3 + cargo-platform@0.1.2 + cargo_metadata@0.15.2 + cc@1.0.78 + cfg-if@1.0.0 + clap@2.34.0 + cpufeatures@0.2.5 + crates-index@0.18.11 + crossbeam-channel@0.5.6 + crossbeam-deque@0.8.2 + crossbeam-epoch@0.9.13 + crossbeam-utils@0.8.14 + crypto-common@0.1.6 + cvss@2.0.0 + digest@0.10.6 + either@1.8.0 + fnv@1.0.7 + form_urlencoded@1.1.0 + fs-err@2.9.0 + generic-array@0.14.6 + git2@0.15.0 + globset@0.4.9 + globwalk@0.8.1 + heck@0.3.3 + hermit-abi@0.1.19 + hermit-abi@0.2.6 + hex@0.4.3 + home@0.5.4 + humantime@2.1.0 + humantime-serde@1.1.1 + idna@0.3.0 + ignore@0.4.18 + itertools@0.10.5 + itoa@1.0.5 + jobserver@0.1.25 + lazy_static@1.4.0 + libc@0.2.139 + libgit2-sys@0.14.2+1.5.1 + libssh2-sys@0.2.23 + libz-sys@1.1.8 + log@0.4.17 + memchr@2.5.0 + memoffset@0.7.1 + num_cpus@1.15.0 + once_cell@1.17.0 + openssl-probe@0.1.5 + openssl-sys@0.9.80 + percent-encoding@2.2.0 + pest@2.5.2 + pest_derive@2.5.2 + pest_generator@2.5.2 + pest_meta@2.5.2 + phf@0.11.1 + phf_generator@0.11.1 + phf_macros@0.11.1 + phf_shared@0.11.1 + pkg-config@0.3.26 + platforms@3.0.2 + proc-macro-error@1.0.4 + proc-macro-error-attr@1.0.4 + proc-macro2@1.0.49 + quote@1.0.23 + rand@0.8.5 + rand_core@0.6.4 + rayon@1.6.1 + rayon-core@1.10.1 + regex@1.7.0 + regex-syntax@0.6.28 + rustc-hash@1.1.0 + rustsec@0.26.4 + ryu@1.0.12 + same-file@1.0.6 + scopeguard@1.1.0 + semver@1.0.16 + serde@1.0.152 + serde_derive@1.0.152 + serde_json@1.0.91 + sha1@0.10.5 + siphasher@0.3.10 + smartstring@1.0.1 + static_assertions@1.1.0 + strsim@0.8.0 + structopt@0.3.26 + structopt-derive@0.4.18 + syn@1.0.107 + tera@1.17.1 + textwrap@0.11.0 + thiserror@1.0.38 + thiserror-impl@1.0.38 + thread_local@1.1.4 + time@0.3.17 + time-core@0.1.0 + tinyvec@1.6.0 + tinyvec_macros@0.1.0 + toml@0.5.10 + typenum@1.16.0 + ucd-trie@0.1.5 + unic-char-property@0.9.0 + unic-char-range@0.9.0 + unic-common@0.9.0 + unic-segment@0.9.0 + unic-ucd-segment@0.9.0 + unic-ucd-version@0.9.0 + unicode-bidi@0.3.8 + unicode-ident@1.0.6 + unicode-normalization@0.1.22 + unicode-segmentation@1.10.0 + unicode-width@0.1.10 + url@2.3.1 + vcpkg@0.2.15 + vec_map@0.8.2 + version_check@0.9.4 + walkdir@2.3.2 + winapi@0.3.9 + winapi-i686-pc-windows-gnu@0.4.0 + winapi-util@0.1.5 + winapi-x86_64-pc-windows-gnu@0.4.0 +" + +inherit cargo + +DESCRIPTION="Generates an ebuild for a package using the in-tree eclasses." +# Double check the homepage as the cargo_metadata crate +# does not provide this value so instead repository is used +HOMEPAGE="https://github.com/gentoo/cargo-ebuild" +SRC_URI="https://gitweb.gentoo.org/proj/${PN}.git/snapshot/${P}.tar.bz2 + ${CARGO_CRATE_URIS}" + +# License set may be more restrictive as OR is not respected +# use cargo-license for a more accurate license picture +LICENSE="Apache-2.0 Boost-1.0 MIT MPL-2.0 Unicode-DFS-2016 Unlicense ZLIB" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~ppc64" + +DEPEND=" + dev-libs/openssl:0= + net-libs/libssh2:= +" + +RDEPEND=" + ${DEPEND} + virtual/rust +" + +PATCHES=( + "${FILESDIR}/cargo-ebuild-0.5.4-updated-eclass-style.patch" +) + +QA_FLAGS_IGNORED="usr/bin/cargo-ebuild" + +src_prepare() { + default + pushd "${ECARGO_HOME}"/gentoo > /dev/null || die + eapply "${FILESDIR}/${P}-libressl.patch" + popd > /dev/null || die +} + +src_configure() { + export LIBGIT2_SYS_USE_PKG_CONFIG=1 LIBSSH2_SYS_USE_PKG_CONFIG=1 PKG_CONFIG_ALLOW_CROSS=1 + cargo_src_configure +} + +src_install() { + cargo_src_install + einstalldocs +} diff --git a/dev-util/cargo-ebuild/files/cargo-ebuild-0.5.4-libressl.patch b/dev-util/cargo-ebuild/files/cargo-ebuild-0.5.4-libressl.patch new file mode 100644 index 0000000..09bef35 --- /dev/null +++ b/dev-util/cargo-ebuild/files/cargo-ebuild-0.5.4-libressl.patch @@ -0,0 +1,10 @@ +--- a/openssl-sys-0.9.80/build/main.rs.orig ++++ b/openssl-sys-0.9.80/build/main.rs +@@ -283,6 +283,7 @@ + (3, 6, 0) => ('3', '6', '0'), + (3, 6, _) => ('3', '6', 'x'), + (3, 7, 0) => ('3', '7', '0'), ++ (3, _, _) => ('3', 'x', 'x'), + _ => version_error(), + }; + diff --git a/dev-util/cargo-ebuild/files/cargo-ebuild-0.5.4-updated-eclass-style.patch b/dev-util/cargo-ebuild/files/cargo-ebuild-0.5.4-updated-eclass-style.patch new file mode 100644 index 0000000..bd3e173 --- /dev/null +++ b/dev-util/cargo-ebuild/files/cargo-ebuild-0.5.4-updated-eclass-style.patch @@ -0,0 +1,60 @@ +https://github.com/gentoo/cargo-ebuild/pull/36 + +This patch makes cargo-ebuild compatible with current gentoo QA +and fixes an outstanding rustsec issue +https://rustsec.org/advisories/RUSTSEC-2023-0003 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -78,7 +78,7 @@ dependencies = [ + + [[package]] + name = "cargo-ebuild" +-version = "0.5.4" ++version = "0.5.4-r1" + dependencies = [ + "anyhow", + "cargo-lock", +@@ -462,9 +462,9 @@ checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" + + [[package]] + name = "libgit2-sys" +-version = "0.14.0+1.5.0" ++version = "0.14.2+1.5.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "47a00859c70c8a4f7218e6d1cc32875c4b55f6799445b842b0d8ed5e4c3d959b" ++checksum = "7f3d95f6b51075fe9810a7ae22c7095f12b98005ab364d8544797a825ce946a4" + dependencies = [ + "cc", + "libc", +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -1,6 +1,6 @@ + [package] + name = "cargo-ebuild" +-version = "0.5.4" ++version = "0.5.4-r1" + authors = ["Doug Goldstein <cardoe@cardoe.com>"] + license = "MIT/Apache-2.0" + edition = "2018" +--- a/src/base.tera ++++ b/src/base.tera +@@ -19,7 +19,7 @@ DESCRIPTION={%- block description -%}"{{ description | trim }}"{%- endblock %} + # Double check the homepage as the cargo_metadata crate + # does not provide this value so instead repository is used + HOMEPAGE={%- block homepage -%}"{{ homepage }}"{%- endblock %} +-SRC_URI={%- block src_uri -%}{% raw -%}"$(cargo_crate_uris)"{%- endraw %}{%- endblock %} ++SRC_URI={%- block src_uri -%}{% raw -%}"${CARGO_CRATE_URIS}"{%- endraw %}{%- endblock %} + + # License set may be more restrictive as OR is not respected + # use cargo-license for a more accurate license picture +--- a/src/lib.rs ++++ b/src/lib.rs +@@ -94,7 +94,7 @@ pub fn gen_ebuild_data( manifest_path: Option<&Path> + if let Some(src) = &pkg.source { + // Check if the crate is available at crates.io + if src.is_crates_io() { +- crates.push(format!("\t{}-{}\n", pkg.name, pkg.version)); ++ crates.push(format!("\t{}@{}\n", pkg.name, pkg.version)); + } + } + } diff --git a/dev-util/cargo-ebuild/metadata.xml b/dev-util/cargo-ebuild/metadata.xml new file mode 100644 index 0000000..30b9119 --- /dev/null +++ b/dev-util/cargo-ebuild/metadata.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>rust@gentoo.org</email> + </maintainer> + <upstream> + <remote-id type="gentoo">proj/cargo-ebuild</remote-id> + <remote-id type="github">gentoo/cargo-ebuild</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-util/maturin/Manifest b/dev-util/maturin/Manifest new file mode 100644 index 0000000..dc2e2ff --- /dev/null +++ b/dev-util/maturin/Manifest @@ -0,0 +1,556 @@ +DIST adler-1.0.2.crate 12778 BLAKE2B a1dc17786adae945ac09d3525e609ed944e6465690787bbb831a1b9d53793cba1989793d0a5606d5d23ee20d36457923d451b1b3530c9ec7072a487aa3e55bbd SHA512 7ab190d31890fc05b0b55d8e2c6527a505e06793d5496be0b3831e0513412f9ba97f8148f6f68ed0770fa9cd980a5092d885e058becf1d5506b7c74b82674aa1 +DIST ahash-0.8.6.crate 42780 BLAKE2B ce2fb8201a484715d42bbd9ca1bfe2d5f541d90e3619ebd437c34a018920b679d5a11f9e96be48fbdabd2e98a379c0395d118616f21eb9004724d8fcb04b2b2b SHA512 46428b27e96be1f30058b9383a94988beeb5064dfb4df04d6959b451d0c77ef69fc51f07fdf9511ab9728295eb6beee7783c31a2297f9e473fc537883e722b73 +DIST ahash-0.8.7.crate 42894 BLAKE2B 56f4b2f577eb2752e675fa2b3191c65e0bb88575f92e8d906714296fca1daace46e93256672fce08cc5b4ac11d40a690a06b32a99fb50fd0df4f042773c33b6c SHA512 2c9eaa22f7bda47a781994c769d4a2ef15ba0f511fdd4ec4680c13d4c1809f1ce01adecc3b3776793158062d28ad9e5f0b1d1c0a9429e43dd07cd99540eae7a6 +DIST aho-corasick-1.1.2.crate 183136 BLAKE2B 2d4306d8968061b9f7e50190be6a92b3f668169ba1b9f9691de08a57c96185f7a4288d20c64cb8488a260eb18d3ed4b0e8358b0cca47aa44759b2e448049cbaa SHA512 61ef5092673ab5a60bec4e92df28a91fe6171ba59d5829ffe41fc55aff3bfb755533a4ad53dc7bf827a0b789fcce593b17e69d1fcfb3694f06ed3b1bd535d40c +DIST allocator-api2-0.2.16.crate 59025 BLAKE2B fda69b52435a7243eb19bc55914a1961e59dbad5ac12c40db39cccdf7a99c742da59c3ef160350808698db24b91e0ce655cd1acedbbcbe20c717604aae23ea5e SHA512 e1eb0df6b44b62115795ebf772f81e9ac0b6d273afd81659dbddb7eb6628b6e5ef6a60ea21413e79ee638afb72e6872ba83a075f6324daf93f2f1eda48daff2f +DIST anstream-0.3.2.crate 19504 BLAKE2B 617b846c244ea4ccd6c7835a382afe85e14c245ea56b678f57ee12e9c7bcc1c0c3db9620eb4d16bf35e17eca38968bf04420b758f482ac5594670e6292c1fbb9 SHA512 b896e5208a2ee6a3c98bf3bb9ac1c52792de114dfa5709dadcac6183ea19ea63230dffd3217e571354a71d69b8eafbb0189e05f8f77f50922020de54e3aeecc8 +DIST anstream-0.6.11.crate 30239 BLAKE2B 4ac585ec56a804239d32ad3e64d93936ef9d5c8e0f0e2df17f7b081b6a3b2c4c32ff4ebc09ec02507bbed22b025628029d859610aed90c024e19a3216de73c8b SHA512 f8dd65cc116a1495782a3bfc98edfdd0973ab22ea2fafd292fb4bd3495af7b5ea410f320d3fa05f7f812fa96c2a20f4cd2af9fc58869a1a306f32714cbe45163 +DIST anstream-0.6.4.crate 20593 BLAKE2B 2b617c45d351e01222fc50f52551e57b4a8b0ecf84c6ddf44336c7c9d3b9dde15232b1c4f664d567849295bf8f03612b73ded56f1b3937392eb7718f1e0446c3 SHA512 0b983d626c53d1edc184f04cbd2c004eb9c40d14486b23cce86ebf50cbd3d916d32cb0423ae1d67c2b83b966690090af740538538ef846c0b126c686a1ebe159 +DIST anstyle-1.0.1.crate 13977 BLAKE2B 35be03a7de78737592528967e8ad4851436a74c7863cae9cf5cf7366d3cce9bbbd255b1a89401051f82fe8569a0ff029dcfe427c14a2e0677890453c6119d241 SHA512 2bf9b83ad9772c6a3ef28239cbb98bd667dc631fd1ef76ec5029825c128f6cb22756bb1548dd991e482f86eb9fd94fae5c648f91de2c0d71754b6dca4ec2362c +DIST anstyle-1.0.2.crate 13983 BLAKE2B 4274b101d1cab2b62f9bb7637dab35f4b16e8c08a080355a2ea53e2b7b353ff230aa77fb3a244e0d6ff0dcd27abe5895eb306c630aa0822d0c608f041d4abfea SHA512 09220abfc844192ca698589897845752e02666b4ecd6529af4cde9f260ef36694e6e631c7503fc0e438ac72c88c419043b78399385cb248e789e86404503935a +DIST anstyle-1.0.4.crate 13998 BLAKE2B fb501700855709e53438461c2f4b48d869613e7bb3bb700db8bd0d95082876d3782dc2cfe3ce110bb4a206994de56afe0e90fe89f9ccd07c60fe1c652123ba59 SHA512 671c6f57106198bcfc2f9000aacba98fabacfadfce2329dfe8d0e0a2af9404da483d7a844ca2b08e1fc0249371f574c13d0082c9f7a4ed90ff581308257a52d3 +DIST anstyle-parse-0.2.1.crate 24802 BLAKE2B 6304a56c6a9fbaf1bb4d1d177b2315684345dc9d71c35836f9544145364f8d6eb56e25c03076690c594ab7db5914501acb569f6c136952e59c93179ced527fb2 SHA512 5c8fc7d88ffc3a6e78340ffe0f3c2d72e865512030ade4509de9c673eba955c536bb1873dac11f6ba11cc8367fb30c67451ed65d19f81507c9e917c702bfd176 +DIST anstyle-parse-0.2.3.crate 24699 BLAKE2B 17e8638187ccc1ca0174a8cec7f7daeee7e0d8b8c430f7e74f9b10d8de4b49fd1c6facfdafde305b7a3e55b1ebf2b4e8ec4975a0cce691514ddae9eb5b5e711e SHA512 4a6d0f706d75c9b3c5144f34efdef3ef8fcd075962c594a23a6209ed56112563a34b3c01e05a08a0868d59204272d06211b2585cb9d06ce075ea875bedb2f399 +DIST anstyle-query-1.0.0.crate 8620 BLAKE2B 2d296b5066fd6284a2410923215571e6df650c5ef892d6de7a7088a0996ca30608797feabc84f3c325ff4d07001dac80ac5067d2a9c9d15d9ba59a276b399f53 SHA512 2781be5c82293b7ae338ec5046fbeb130de9eb2dbf2e4dfaa73ca5233032e1e52c133e141b02f33d4bc36d996a0a3f680ac82d42d614a5305005f60547133c7a +DIST anstyle-query-1.0.2.crate 8739 BLAKE2B c06643e8616f1f4469a32f9c0512941ce53ac5db9ebfa7a5b2f19233040cd4438dd2ee69ab89ecbc1c239e92b674dea9df15ed673408c6f3fe21787cc17d76f3 SHA512 f409b624cbeecf58fd87c47f85be28cae1fe48f65d692195fb80854c514e38c40d0e0ffad3a5b388a3929c47bd2060302ebb635aa98dc57329f3a5ed7be3e2dc +DIST anstyle-wincon-1.0.2.crate 11712 BLAKE2B 68215a76e44cbe0e69c4111eaf7cd818d0e743883aec01f99f6d96e863d8d36bea67ed112db715a3a0daa348535f3db50547d8a0ab5e4572975d68937c49aa86 SHA512 8bda8b79785d201cda90c8d3544f5cead955c25749a4b828bc897e4bb132acbbcc50ac90ee07323ae3077af3e4c613264871366d70e5211200d119f4ddb63b0b +DIST anstyle-wincon-3.0.1.crate 11279 BLAKE2B 593de9443b4c612526550285a6c156db26a233815e77a748597c6eea509ae511f41eb8ee736010f8be853695c9f1d94b034a77190e612f0a00bf00385d66ced2 SHA512 75ab14081b09e031ee0f559538976f39092aaeb6f561a56de83d12911cc2b45e28eec21068792c86a61e344021921ab55e7139ca79acec78e7d4a796dfa42a2e +DIST anstyle-wincon-3.0.2.crate 11272 BLAKE2B 73e124773f618a744b17017d4680ec6ccc84ff94fbe2e565073fbcc0facecd3cb65356cf27746d07f453bc917cbeb2ade3a618c6b8578d64cff4828c99569868 SHA512 4cc194faacffa01c6989354c1cadbf1134f0945250f67b7020ab5b475e30db34c799176bd335a6265386cb9c5e8b5bcbdf35894ec0c809b140ffe1c406751931 +DIST anyhow-1.0.72.crate 43837 BLAKE2B 1547c158882e50579a568a14e6e5cd162feb6cf291835266c9dae0c1c4df05a7872bceb02bbc8a13ab5bb84d299a94892057f54eeade7fa095ff8f897f6fe9d8 SHA512 25d8d4cfcc9679c9125fe03c7ce5a46462ca66e7457d45cd7838b7867f3461a899f75b22d76dfb04caa09c013c3b702313ffb6373f92b2798119a30199c38a98 +DIST anyhow-1.0.75.crate 43901 BLAKE2B 6353557d7ec2cbfdd001c039fad62c95fea9e02b113149f726fd14bb36b31e637e8609dd5ee20a900e9c11bb783d9958d664b31ba7c467382fa7f51d477ad3aa SHA512 190d6be8ede0af9808210db53e4dc31ce69b126a26b0357220c4705a11e83cab2c2c09c59964a35794f3c434f717eaa6bb669e9e8f16012535c14246b17e8d40 +DIST anyhow-1.0.80.crate 45138 BLAKE2B 4985d3d8f1d5b5886fae5c7d1a61f921d3d64fb51e24710044b85dfadd2dae2b25b8995cab419cb7cdb5c8cb6b50ad0de93b9a942d34bc45014bd5fb9aecbd39 SHA512 481a3bc29de2af0b913d83cc79dacd559cf0bafecafcc707b921b91a732df953a2df582a54e5fca3f506f6441fd47379bd6bd006bcb1bd6f2615198f9903cc59 +DIST askama-0.12.0.crate 16773 BLAKE2B f0e9d355de0092334b65e669d49b465f02fcffc980d364ba8f478951584b43b890731e7d994358fcea1e5aebf62ed6649b1b2715e9431eefa4820ac0d57f0638 SHA512 8703a9091bd0145c12b724b116452be45ea8730fb05eba375af321345105105fb1486511e3cec82c494fae8771b12632caf5a01e3722a730cda6f81033c470e5 +DIST askama_derive-0.12.1.crate 38245 BLAKE2B d16ac4cab01895349a20906a90ee72a366a320db79be57de0959592f65276beacaa726563d93b5c1e08a603652b20163aa513dff47b2d91b2040af8e40f5bb07 SHA512 6b627746bbc00cec610903d1ca09e723265b68f3c05464800afc69f152f5bc44a4c83e76932d0dce77668d0ac1ce4956d57ea4bedc3efcd0b473eb8fafe1aebf +DIST askama_escape-0.10.3.crate 8875 BLAKE2B 6bb88f18aa0bd05a36e7bf5cfcaed3138ddb96ed366e7da9b9a64c4e0345fba384cfa3e9bfab3674c1697a7722bd59a9428438b78d44bcac78740d4c53c3d3e8 SHA512 1978add567021fac7f086b6091c97de81919877726455828164642c55607d5b5f6f01c0187f8a8a3371c9b3a1ef41f4c3c9e14d9068826c38ee8a6efe2eeb5a2 +DIST autocfg-1.1.0.crate 13272 BLAKE2B 7724055c337d562103f191f4e36cab469e578f0c51cc24d33624dea155d108a07578703766341fd6a4cc1ef52acda406e7dba1650d59115f18261281e5b40203 SHA512 df972c09abbdc0b6cb6bb55b1e29c7fed706ece38a62613d9e275bac46a19574a7f96f0152cccb0239efea04ee90083a146b58b15307696c4c81878cd12de28f +DIST base64-0.13.1.crate 61002 BLAKE2B 3b3a5b26e2ef18e9b4f1ede72b1bd160a1494751878e8441d463f8a514e6cb9ac859231536989e19fb1261fd864617fe31440df1b5855a0ec625521fc6fcef91 SHA512 1eb76aff9a84057f2ccb7082e9c57b015c2d71a28173089b02e7aacd09a7d311bedf0a943529611ada29f8d7b536d7ae4de256d98eee8450003a3a9a652bda4b +DIST base64-0.21.5.crate 77134 BLAKE2B 901cf92d7dd8af2bbb789ffbe60972c1fd295b16690ecebbcb500e4613afa057ab2b294bbafdcaa4007f46412825260a0711d89e55664418a503dde02c8afd1a SHA512 40b1d8470a932c8b7f31717e33bf26742c1bf920caae639b8a992f77e64d5e6d287569742c1348daa25b7325f8ca8d8a312754a743dab3932181f37149d91b16 +DIST base64-0.21.7.crate 82576 BLAKE2B 25cc8761c14220981ff4ed332058f6179948080cbfa2b225ec1d1602e4af14cd470c969e8b7049117e6fc51a5a24e06b1d27bab844486ecb76409d12e0581d5d SHA512 c6986d88dd9aa081d914f35b4174be4ba874848657ac4b5e63b9b45af765d973289c548ccb5a01584edfc0d8d79ff5be25b51365295d6e7a311bd7f0ae3c0cb9 +DIST basic-toml-0.1.4.crate 50206 BLAKE2B c9d3489862c6e3140c8aacf9bce95167ab8f52a514019db9b3a8d92052403b4d6d7293881345addc23ad0ded715f6e2fa9b691f6ca241e3e3b0b850bba43a19b SHA512 03f0aa90b948edd943d924a33b83370703139de0c4d08e8eb4af8429f0a5b7df35c5b7027b7d5bca0ca332151fc5b7567e29ac8357efea8cd855e0e6fb094fee +DIST bincode-1.3.3.crate 28958 BLAKE2B ea01d2efd8149ecba5e240ed989268b683d542a5f369902d316a4fd1ae4b8edd94e2d4a8cbff0e96646eb29facb04a84b249d74f0781dc3d29c8797ac975aa9f SHA512 49e39d71214dbb623a18e3852f6f2f2a5c3f951b64107d66c8adaa95a442a3283fba978bca41b126c9879b12833b945f478d2c77d35482b3577fc1a894e8e5f3 +DIST bitflags-1.3.2.crate 23021 BLAKE2B eb990bb27b2bdeb66fd7212ce582cb36e1c616debbac85df642d0c82b25439e6bf9b1e811fac76b59e58ea3c1bbea6170d03a61e8f9a395e4334a0e2e2987eda SHA512 3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 +DIST bitflags-2.4.0.crate 36954 BLAKE2B 1d6cfeb0a17dc53a6249a83c8c7ad7c102985ffcfd7f7f76506889684235e78fe489d23b5a5f9018f0bd526a38d6b1449784c62322fb01f4bb507c0af8bd545c SHA512 0c3d6667abea48811a792749702136ee3db97518b33bc4c7d35737505bf56315e0e5810deeea28b7a1b540ec0e21bd319ba0b3c5c4aef0ba8ed5499ffdfd9b0c +DIST bitflags-2.4.1.crate 37043 BLAKE2B f61c45b142265e9c2944c7054e01704de47510735e9ee5351cd02b98676cc4eb42d68b1fc4849ad5f54654617a74f20cb533b4207c2fe76516b724ba9318b414 SHA512 d3fd7abc95acc1cb5bf16d6acc12dbb8eadd250f069268df13c2e8dc3d5f5c15a929cd17ca931c77393b64dce0516ef8674c469789ed32d78e315b5faada062b +DIST bitflags-2.4.2.crate 42602 BLAKE2B 768d4ca52aca73d8acf2f494a66957ed2603eefd5a04332ed0880d230c2cc6ef3bfdc0792fa6f288a0eb132913dbb256793e580bc34f4a40e8200e1fbafe97a9 SHA512 ef4c20e6e78a2ecee97e17189b7100a504d8176c7c15d7f17d62157a116d66f83f8b2bba472a4acf02cd3edbd94b20a7047af918c3f3b371e2e04f7474be0214 +DIST block-buffer-0.10.4.crate 10538 BLAKE2B d819c4f9c4be85868e8b105fb7e479d2e58d3ed85c3339bd677a3e111f85cb1ff624a54d7802ab79a6e1d9221115f66388568340480fe83eae1cb448f19f5b11 SHA512 b7d436d8e627e16e6ddc300ee8f706a6cef28ff6f09eff848eedee46f84bdcd03601303c92ab8996042e55922866a59259948177c0a4496eed723523e77f6fdb +DIST bstr-1.8.0.crate 380176 BLAKE2B 017ba2818bd636297cfb16fa975b34aa83367aef6df2cc321443754e5fbf4a9afa8ec9e99328e0cb0e5929268d6a4c2301e55aa2a6516e43e87280789c8d159f SHA512 9b8828790f3e342e69bb92cb9231c7134188c168a9b67a8705dc2e3370b86885f99e4d47f21ff68afc9147968b0fbf5a293307b09f132dddc550d8cd576f1048 +DIST bstr-1.9.0.crate 380170 BLAKE2B 06ae5065a5d566b6333e911a5b97e3999ad2f0bc19b27023187004c81cd01e5315dcac920ff87a6bb87ccfbb949364f1361dc04d342e24f9f54490b5d44a81d1 SHA512 dc313a16c38ad881128977a20bb390e7c95a96d9530596433a7c4fd7f77d5fffd079d436006dd8d2bfc4aacdd7f0aff229504444250418f6aa3f8d6d4df9abba +DIST byteorder-1.5.0.crate 23288 BLAKE2B 7f85a7948406844070a2c8202e0bd52f73b3dfc7c666a97046128044eb9352195afb80e2bf894c0742ad109e4473339de1365d09591de70dfec6c8c02a8e1453 SHA512 96caf981177f6ded9f27f025922cb94eb0cd9de5303bd91680099912d922092e77b7361efa70011e84f1595e443193e4f1b354443b9980c123f6ae573b236f7f +DIST bytes-1.4.0.crate 58080 BLAKE2B 99a9d343424e04649bd209bf2a6c3a089a6cc9fdb799968f8c3a711189328e4499df2e09cc6a2a8ce05d2cc668149b364cf30cb3b09e96e21d50a39519c2f49f SHA512 502c63b9fdcd36ed28ede55a63cd359dc7b28658ecd43020511d17d48d7c34e45aa8ff7e4b17770f12197451040c2b724fe68d2aa3ab4f81c9171d052f2aa000 +DIST bytes-1.5.0.crate 58909 BLAKE2B 2931f19e813eff73be407677622fa29e45f9b49434d5b3a04104b56563fc0e941fd8c5f996258a1aa660000ef014668d70b683b751af8e48d28d0aea76890c92 SHA512 6654cf41d8f0d7e19b05fd95044b9a3bfccd81f469c797c6aa763a4dd29e1b34064bed2e094548d147045cca7bc4706059de5bcf9f6579189e6068fbbf1c29a3 +DIST bytesize-1.3.0.crate 10164 BLAKE2B 049f292705082dbd3b2f0abb6f153023613107949f4849154aadce2181f4568ea1b3c12f00b6ad56146f8a4f3b07b7025498e0c989ac6561ac7255720b85ffab SHA512 c718af51b0da2979b70142012544fde6bbf8639cd4fde66a8066b138f7f58dce019209e27566027dc0ec5a7fc1d2ee17b9b6366cc7a5f95a6419e29a0ffedab5 +DIST bzip2-0.4.4.crate 34197 BLAKE2B b69f8ad38b44eb4912b33d53467492b0ebe6ed740451bdfe9133e71c47a8dbd85b1110a9607c4cc627fbabc44cd86fe0396bb545864632ffb6169f9cfa547b6c SHA512 9cd2b9159bd0b42ac908ecad41f0a737272af94ae0d6dcfe182d2f44bcea4632d32b0456f02322047ea9d6f46377db6cd083f468782bccd6126bcc75cb852555 +DIST bzip2-sys-0.1.11+1.0.8.crate 633444 BLAKE2B 01578c512443134fc786669bea4f2ec4b9c457b9936c907315299d8b67ed78045d458c83ccc119f0fad511529fb5af5feff5fa2d983fdae832d2fcc1b343e102 SHA512 d0a86b9f03acb1e4e309d5739dc2e88cab582757d467a433afe0017017f0e5d2c0282529e3a117160958ed170d8d695ecae739805888305df0e35e4dc440582b +DIST cab-0.4.1.crate 25985 BLAKE2B 5b30e5e810645641dad0690449f597551b99715cd054c04eaec5d702fe7de8f9719a217bc1edf335075df77c108af1e562c117d9276d9ab10350f5e2fbc42e2e SHA512 030c897f544c8beb22dbcb43afa1899e092b28862dbf08ac55ed2b1c7ad02b7b646b3b36424243a38d83299a7bdd05886158fe7c8e7b17e756921eda98b8ed21 +DIST camino-1.1.6.crate 30519 BLAKE2B 3696bee362c9a6c7331079f86823aede0df06c1c36fdc2d11c0628267ca7635fd78430cc927cf3b2af34591537d3968b3c5f1cf9d500f3e889c202c944fc6138 SHA512 e777cc6e2a01c95931a81521eb278156d1c50ffd0126f914b21e35dbb7644b835f3c26bbe7a487bbca508d26b4c933bbbb9e051fa42825b154c2fa03c04375b0 +DIST cargo-config2-0.1.16.crate 61568 BLAKE2B 75576ff3ae6f69fa9059a8a6d4cb548352bb7d46153eafb0c54eb90415ec8ce7358eeb20709628ed3d48cba9df16f77aa238d32457c17dfe396f450979830c17 SHA512 1d2d22ce9f38dc095293940fe2e358361df88f1154e9f015e467e3b4ec2d78524f0ee693f51232b3c2a2c423949c0d5a279963d07cc6ae03ac9285fdc653cd2f +DIST cargo-config2-0.1.19.crate 61168 BLAKE2B 04c44cebf4a36bac54bffa200931c54591a4202ace215de9deff647f4fdea8504ccf8ac6b222f1c137c8c960b899517d7dc30e619d41a9430f7789487a1d042b SHA512 3e3c32e5bab54c601e78b45b1b2ed93f520e6e3e51c5540b648021a5789d9e27cd7fa390df6a7a8d4ba82e1eed0c8de8f5b9629f7ce400a13225feb2f5c89ecc +DIST cargo-options-0.7.2.crate 17686 BLAKE2B 682985bb0f9d7a38e4bbe2b6cace1269b4b98658b119436a0a857e41f0ad3412dec4bce681e4ba515760715d3f92441cb973b9854b91429d649c83928f9d4de9 SHA512 35bb26b7600c3664a4beed0c6d3810ea5a60de293009471aa5329f986fc29f578ae3344b4e97329386453c45f243a524fe0230995a67cf049cfb3e6f208c1bbb +DIST cargo-platform-0.1.3.crate 11230 BLAKE2B a67d0f77015b85c7cc8e9cadd5eca3c1ac57fc5c54345f80c9892c4ca7a4bc295f8e23330fc9a51b4954ab4fff7cf2a6ed509b506bf801baad6882f19f173404 SHA512 09897871995f40ae792cfbc58a46b602ea9e28458cc066bbf89451edca6755809816ea7b927cc7f35aa95a8da35e1765d38471bd9317946f8c3c81cea82d6d10 +DIST cargo-platform-0.1.5.crate 11638 BLAKE2B dd81f40c628474916c4ae42f4299ea6806429025bfd46718b1f4c4d8463a0fcd77fdb3d5b6b012f4b3ad802ca977311114d539adba1beffa6dc05c9409e4d23f SHA512 ed1a06584ced11631e23e056c42f27fcf8b22adda6b54fde0f3a0441e191de1d9e5072cdc970c9a8c085d32fca9ad9b4242cbaa5a1b5ea36fe9b18ba8f42d1e8 +DIST cargo-platform-0.1.6.crate 11668 BLAKE2B 6cfb4a3c6f1005481b80cd41882c5e5d42912d9abc2f9aeb90464d2c5e904359ff1981852126b49bf7877bd72ad6d295cf35a0b3131d3b84df5c088f346812d2 SHA512 c1e6d8ca372ecf8b23d0580bf45bebac22c0f7460c973e65911bea023deb9f47e65e3969b4940f308a3e0cc9b7e8c37a9e5ba70196f0fd2e530fb1fc283a4d68 +DIST cargo-xwin-0.16.2.crate 28648 BLAKE2B fe6364a2504b37e7fec32aa06030d1440b6a2966c63edf17745017f3853ccc63fb66f0def09095dcec918a54b5bc279503cb52bb78745a0ea648fd0d00c5afb6 SHA512 5a682887f358f3fd187355ae09f07426e1dacb8848c8746fc945000720c72a5fd8282679f72dc92c43ec8a16d1595cd59153b6b95ce8b6266477187b2a7a96ad +DIST cargo-xwin-0.16.4.crate 28603 BLAKE2B 4f2103f464e420d46f99a43fb176df548e904d7256a5d5214c75a9ad835375b6ef71847d94f77d5053edce16bb1204f15763f78e3762c981b9286b3a4c539b06 SHA512 eeab0052918fe03086ca012fb3db277aae967b34ae8aa481eddaaec783c8b3f8fc4d34b199e2e534e1f5e55c7f30be143d931dfc76f531ff81e1af7def2acec7 +DIST cargo-zigbuild-0.18.0.crate 36875 BLAKE2B 94584fbcb8d58a2480dc461db5bb1c9fb9ab79d777e7f89a7288df2f6c52535b761b0362fb55e237603c5641477ee81b75ce64825958033e64b79214a12aad2b SHA512 841ed89c4eb94a75b1f86d2353fe876b63b45ebefcd39e4538773601c28b6be62ecaf8932dbc4037cf8692afed0bface1afa7d9c6e3c930a57e645576cbbf172 +DIST cargo-zigbuild-0.18.3.crate 37114 BLAKE2B 605cb9d2030fb5c0a7fea31db9718b26bdeb182a21c00558c00413d7157b27dd31684acd13d4be3cbed6048e5e8a1f5e009382c67ce59c71c4f5dfaa33e3820e SHA512 a301d3c1e67b7df4e4705820b7dbe6d01e0b84879a4c2c4b0d32362ecba00c3e491771cc416ca3315c9b534fd73f485cd920bdb050f02cccb01cdd0e2354eab1 +DIST cargo_metadata-0.15.4.crate 19993 BLAKE2B 33bb182a4fbf453be323cd657e0927d7ae8f4cada172c482d96ba959155aa0bd5fc392d4e0a6d4a869456be5de8756c92a4ee0642d60db992aca6d8adadb8f0a SHA512 dae54e7d21642a12fe967d832769f2310a18903a0a46694dd441974f037d8a53e148bae2668a177478b91629c5da736ce56aca3e140d442267ff0bc65bb984a0 +DIST cargo_metadata-0.18.1.crate 24535 BLAKE2B 9d0018e28a3941e269dbd30291054a882a960905a43d4818c874250356a6c203bf08ed77a8041f08607390b2a382864701c519d71a0b88818ee59c6322c74e86 SHA512 43f87d2b84597ec9a27e9fccf06ec5f2630a0147a9c85779622c25493bd61268c266643f8206a17d76a16329af85f0cc563a9af7e17ca77024c0eaf788555f7d +DIST cbindgen-0.26.0.crate 206157 BLAKE2B 4c435ccf9d5ab3cc036691cc51c55334e27a0348002b6303b11974c0aa4908b9f902577ca6e50bf241ca75816775e7bb33901f1f81e3d5293ddd2128b458204b SHA512 2de81f46c9c68c985241a349f13125876667d1460d3658ead8c4ee9788cd139c30dbc08bebddc172cf0bd4644f3f17c02cf66f2a3ef706c52366fdaf0f9d8059 +DIST cc-1.0.73.crate 57880 BLAKE2B be8d7a25a54afdd759844e76aec61526fc2bd5ca09480e6cdd3bdcf27e5f9d3a88dc16cbcbf54cd021470a7cc521e1ad468116c112bbd30752bac0d5486939ac SHA512 980f012b90c6410144f6de4995048337e09214f19603076db6d4edb88e9ef9ac9e8c6e25569f66c2be3a47e99298f5886dafc102e1a9122316179aa26bc1c985 +DIST cc-1.0.81.crate 66857 BLAKE2B 1f20aa7fe1e41b7d043242ed2e6b840ef7e764fcd844d82441d20dede2bac7386c8089e7dffee5bc22a49bfab2cf9f2c82757bb5068fdfc82610eae7cb2b188e SHA512 00878fcc5e344571cd8756fcd7e0a8e11325cf504eed09ea2ac890368c4d69978fc0de9ef99757cbacdadbf50faadc486d20640b529ac9a4963b3afd71caca6a +DIST cc-1.0.82.crate 67879 BLAKE2B 3b06cbe1516d4fe8291e1543b09d32d39a135c2352e545b64bc69fc82a40128a9b1291f20bd4cac6a3c37d9466093f8b63cae20663ad517bd7dbc380bfa87ee7 SHA512 27810ea12401635b0122e5b3a71367a52ca7040f196cb30f709e0b8ec0e717aeb8a89ef4e891b1c7c88f7cc8a1c35e55db132b728b0c499e0b683d5b803a671f +DIST cc-1.0.83.crate 68343 BLAKE2B 33245b33fa845ea2f36da36e3830ec835f937e4319865b357ee9d5ea29a0f9f8392eadb38bf1d95e3c15ed201e561acaa87aedcef744f8db3dabff87a96c7f02 SHA512 742a248c3a7547bb220a0b9c97b67a831fab9b4ac21daa08c85a3966b9fe576088def33e16132fcabec9a2828a6fc437088bb045bfc98b2cea829df6742565a7 +DIST cc-1.0.88.crate 75288 BLAKE2B 81c512bff79ddc40af633620ea440a73d3f7370c96878b3a84606ac0523f13a9ea756765afedaf2148344ffca3ce928fbb0678977273c918c21b4e3985507938 SHA512 67ca5820d36d1be38e56f54a0292d550c9c129d680611a60fbbfa458b8cb748e5f27c7ed1eb767ac3df41cd4e875160525b81ab624726183b1d298ffdcb87846 +DIST cfb-0.9.0.crate 67837 BLAKE2B bab7c813d6636c6e8f371ea8a76ee23361b4f53235cdef2378ebfb9b3df30ddbc6d229a4a904d0711df5dca78711926407a0e2696a4e0d6151b5dcdf8f3067dd SHA512 6bff6dc27f459c7ae15fb537ea0218e17abe2477fa9aafad6b3d0b17773272db61df48ea9cb5055b35459373684b20a0bed031a4a53df42f262c08aa05307d4b +DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff +DIST charset-0.1.3.crate 14330 BLAKE2B 928771e37cc4f86f49cf09b671cc016cb662275799f34159dff9c22ca61a71d722f199ed36b2fadebde30b5763cc01d87bd6f27e70ff8ad357df10d6ddb652a8 SHA512 61166acd4fba3330c4c71e101e1993717baa448d91dd9773f7d58ac504fa4025322560ce82bd7de1b5935443f96ba84691658e5c982192196b325f52dc48f4b1 +DIST chumsky-0.9.3.crate 75112 BLAKE2B e74663dcf524513bf54494c62ad154fc3c3560910c429b91644f35327569df835c13645b148ec1b1339f78e9fe6ab3d5b83f10d53235a8e137756a548a9e6abc SHA512 f304bafa831c47fff4ede3b2e67628d7cf33d267559ff0f3eebba9355439f8bfbf08ed576aaaa1d51462114113ec1dc5d3593fa5a1510f6e2032da88d021423a +DIST clap-4.3.21.crate 55024 BLAKE2B 441333d4f256f34423b7fd991c1cf3cb336d4c124d15ec45f0b45959d12abaed1c397dd12dba99e88b7d8a26d90a25539cfaf484dfc9af6f8d1452d330ac3d09 SHA512 ecc4229f5f8f9890e023236de5ed1ccefd9d51a1d832dad59f03dc312d025d0e5d90fb4ccd1540a4f4077b6cfdd75f320e5688445105cf8ce4bfe20ea2d07fd9 +DIST clap-4.3.24.crate 55026 BLAKE2B c49987221905f7a39d6628fd755524b2395130f0b55f984067238fe73ee7e71faf2532e990198ece793ca8aa03043108b638a618c30ff8c0a3e10b68a3f8d0e7 SHA512 4c45cce4ade8058e6e7131ebc7754da5974e5965128ef5be1a6d327e0ac5f7151ab6a0494024d89404e1743efbb8891de76322d3e44abff76cf2123fcb4534f7 +DIST clap-4.4.18.crate 55269 BLAKE2B cb5d4b093bb7958d013b28ee25f9cbf0479ada392b81265834d75a5fa2e6a4a687f8d4a71520d5bdce05785a874ffaa09beb5707766d59e70928dab00bc122ad SHA512 1f151864b92dcfcc69a66c2a8aa8310ce28171895698d82e2e69e19a6b51ed8780e5eaa77410df9aae2d17c9b45117b913a4c23ef879106c1b7a96182656ebb9 +DIST clap_builder-4.3.21.crate 161410 BLAKE2B 4442407e167c73064ce929f41b7fe187227b2cecce564211d9fc315d4ac23b27584dd18c11e4c00164f749d3e89c4ede33c599caf9b895bea30c65a7f0ddb9b0 SHA512 0cea697633d5911bd5e592d9b10871764fff19250f4eaa23f634594ff2223bd78d59e6fdb9cc7ec2b81815d1d4b5a2ef6a18855e7010de3c1e47790a12d32874 +DIST clap_builder-4.3.24.crate 162489 BLAKE2B befbbc2f379d8b6bfe538cf86a0f27927a4f9ed73e7224df980241c2ad6acbf79a56cab74b3f337d09ce26a5b0c9e9f60226ecce58b6b2ae0dcbdd49a3df6ccc SHA512 e81d73bd3bef181c945856bd2402ec52a100d38ffc223bf485186c4618076d38c277dd85b21e2391471de463dbe3f2fcdf59e115576be8dbef330d888fdc05e9 +DIST clap_builder-4.4.18.crate 163538 BLAKE2B 9991c1a8aba5feda466fc878f9415ad9b5922ea1835c17e1dd6c640234ee85e623bc556ba0e4edd84100a0879ae462028c74304465310d69f9d58e333c2ba8a3 SHA512 ff04ce8e700d8df4a0ae94e8341c3bcc1ebd415312e3b21d56e6beadf604aa5576641861506fa1c901a615a013e4f30bf8e6467889d637b34fa37ef22e2a15c2 +DIST clap_complete-4.3.2.crate 34104 BLAKE2B 8ac5d031536f3917755642cb69cb80a70138871505f7f3b346c66163c6295b94c6981c9ec6291dcac4f6f675bcbcd507a9264c44dba42e6403090a32844a0a7a SHA512 8eecccc5ecb24983bad0c0f7118d632b466e6bad2f2efe1d6695bb53616fbc2ee382e1105252fe587d534a5120a985efe07922447e2168cb3d28e9c72704bc4e +DIST clap_complete-4.4.9.crate 37659 BLAKE2B 99de16ea4fab3996ed9e7d0855b0184ceb3c5740b690120b48490c1fe78115dcad3d8b52b3ffa31afb2b0e9f8e4c0beb8e331e4cbd5b1f688c1dcd4b49f06ab3 SHA512 79ca2717a7c4752959ca48c60e8e0751de67be1e40717cb336028d5edbeff0650cb3bbab8463dc6f227feeaac3f18acc249f08f26d1855055bae07758b3733d6 +DIST clap_complete_command-0.5.1.crate 8273 BLAKE2B 84302d7ffc34d9e947dd141421462b2035f324a77a8c68fa342a49242b0f97e43afc54be90d7cbb2efb311ea7848313af3d98c572402e7b25f83c22ff1fce8c4 SHA512 0cbd75f41349c709440ceee1075cd209f927b928c665b31907caecae91ab0b1e00c0a73f8185df754663e4d079467c6312abdc175bb6f8bd58c6d783b371754c +DIST clap_complete_fig-4.3.1.crate 11632 BLAKE2B 77b78c04eec921a2deab7e4bbd68bd4da16eab37dfc17e256a06ac2188f00cc9c30f67f4be7d37d6810162b5b23028439eae3ed800c8f7e40b2582fea569efa0 SHA512 6851aa0cea0c0e5f410bcf4f6d17f9e8bc977880fdee06f99422f5903a538db25d85b9e26f99c7b4ca6016b21c931e3e4b09507ca5d55b183afcdce59470b861 +DIST clap_complete_nushell-0.1.11.crate 32198 BLAKE2B 6a704251bfc10fa7fd113f7e82bdeb9655f2e23d851fc3d654332ee196214b179fa83ed6c57b436df247f6eb1d2feb28017090b9087b7b8d92283978e7ce9957 SHA512 04098511e19cb629df43509f2596904ec2a8690fa6bcf160825030c42dad73f77ed184e5a4dce10c8308b9718541540f10277b0ef0fee6b039ac1e7b482d3cf2 +DIST clap_derive-4.3.12.crate 29052 BLAKE2B 501fb22eddca5b21456bd9911ad1f90ee5d5c918eedd08e2615d22ce58bb0fa5dd626b51a734f20b78411b9a4492ae63629131e0c2e1bd0f3eee21e5da3fb37f SHA512 a58e948fddf45321f0fcfe9d9afbeff42849da472fc4e4b15c31f46ffe55a0dba34d2c1d14e342530c1e4080c43de790595e4f3dca06cbb6a8a60f9e3cab3abc +DIST clap_derive-4.4.7.crate 29046 BLAKE2B 96ca919b8f9901b2e89c58ee8cf8bd3881ff715ac27999c03c867b317321e4839d9e923f68d411a05b45c34d54557af12b8a173f2445732fb6de16f30dad8e2b SHA512 4be40460468f7ce22906cdc9eea8d01bb07cb206d4ce0c3df2abd929d6925b175a49cf63907925ca16ae6297d6f4d933087fa5b35958e551117ec7ae050be167 +DIST clap_lex-0.5.0.crate 11792 BLAKE2B 0409c9d957ea6a566eb8b50f4212702df038d04c4c38f7440d91cb4c58ec887940f0cf500c4c3949c2191399aac3f5cb1ce44868eac587cde90211d3e467b9a2 SHA512 0149ed7c2438a19b4857f895767550d783711078f07bfa9ac8ca531e06f51c7388110f4d558e30bf503536367cc370cb581e8deb6fe51f9b5460a334963daacd +DIST clap_lex-0.6.0.crate 12272 BLAKE2B 22aa04997fffa15a2efc7013ae27fd223c3247cd31f8fe96aafb4e87e3224f075e887df10a95a2da80b468d4e16088ae9f171ba6551c0ae06d77bf3b8920ff9d SHA512 3651aa5e27ed35b6b75b1d25fd9c20c26a2a6039116e54d84c51469087732a4f0fd71754326456b367e341b017d03749e9a6774cb7b62250ca8745f5af46574e +DIST cli-table-0.4.7.crate 13195 BLAKE2B 498e7434639a4bf21f4b793def59e2f045f8353eb2e12ccbf8778a0a92196ed589ddd94e696a000fa7a2bd50470624f2972eb613cba538956e50c6ecaebc1b53 SHA512 2696d3204107f2bf104312fa1e13a92638fe9ea1894263cf707cfe3891ec083499b1b0594d8571169ca242abd6a41396a88ca41dae8a3ce7f04365292158a87b +DIST colorchoice-1.0.0.crate 6857 BLAKE2B a0818be1299717461ffc1bcfb6fc53a0b3b645aa8c45fb72e045cf2d876fa207948610e58d6a837aad24838ea9616e80b0558ca3eae03fdf9bc4c03a8e5ba52f SHA512 53363f2889cd8e8a3b3ed10c48356896c0daa72f3c12c9c7804707ab0dbc07c0e34ef52fa4f0fb1647311ce5913168c1bf62c2407ff86a33f765a9e6fccad551 +DIST configparser-3.0.3.crate 23259 BLAKE2B ff713f8b09e63a08cedddfe94f6f68920a70ca158f610de6259816bda9cb56f75560456233d0d895a3cd6a41ab08cc298e5133b1bf75fe8e3364d9eba3212e90 SHA512 14e678c0617a5a95444964291fce9492f8e2c7117c3c93272d79572548dc89e8d2bea088d0dfc49481f777ce6da4e8773359de5d6f26e21f21af7ae220ded0d4 +DIST configparser-3.0.4.crate 24680 BLAKE2B b9f6552fb57cf175cc0bd61138e724721ef53609ff86033273af772c48270979a76e60c97d67c40ce0e1d326c5e6dfee9113379bd3f3b6d37b1e290be97950db SHA512 aef273f5ce927a137294b3a6f1c505720ff9029d3c163785287a43a551ffeeebadd4b7212075524a836dafd9d2eb740046b3eb4d33535d20a98cb77372010d4b +DIST console-0.15.7.crate 35409 BLAKE2B b5e34b03a1c7d5fbffe5ae07182e28f6638e026a1dc2bd87bf47f67230ead612b37ce0c79b50d84619009753bb98dab661279b77c68760a0b75ce8303733abc7 SHA512 f37213812527bcad23baa8648cd949d8ec955e1be7589ecd36fee46637e77420c2561fc301f2562dd95bb66802b92ec1da5b85367bf16b793849913698a80576 +DIST console-0.15.8.crate 36364 BLAKE2B 467de2c2fbfe31688cea20b338558ae9671e50ba1fd07983d21f32d7eacb73e565ebdd6ec5e78b2ae04446f09615c70983c0ee534e25ca5a28fd1b408acfdf34 SHA512 b05e49ed145785e29631d481885788f0cc5574d4d7c4d90280dfedaee7f8c1515072c9c4cfe6bd2e017230cd228157222af7e7d41a9fce697cd1888095df4de9 +DIST content_inspector-0.2.4.crate 11386 BLAKE2B 2393cf83b2dd338ded7f5acd695e05a4a08fa639a52a8042dd0692be5e959cd1cc670472e25ca696a151d161c821eb899b2a950c74f4cb5b880bc42bc53d1d57 SHA512 1acb8b4f12ce3479f5a60b7b6a0c05b86548591e488e7be529c4a2f9aaa60a76ed07e7ce1e557664d31ddd9964e7f73415ad667cd14ada919f61511bf486ed6f +DIST core-foundation-0.9.3.crate 27059 BLAKE2B d94fec51b1b1055c285609f4bba45c5169a8cc775e251eac7fbf0da7ef894e1be9ca9f4236b82b67be0610bdf811366e0c6fd3cdb671a1e83c49717e2c5b2d03 SHA512 de07967c4f5e2d2e730b6f21984c228dad2cb2f55187f13074a2200f4ce9f906763ee818267a9c67ea560229db7363473b230670a6dbd224fc335f32ba03d072 +DIST core-foundation-0.9.4.crate 27743 BLAKE2B 5b695e671cc833170bc6bad436b2d0d8d386ffb8181bfcf2e92a1d93cee67c3ba1768cf57064fb91b0897c6aec1be7db40b5bd256a052c1bdaf872ec19f6e15e SHA512 82d0878a1b9e3d56b3666fb5a78f92c6f7806d01665c242c06a640bd6b1fd36260211e92dc05e1a16d1430622bfdd650aabb0b5bd8e5592f74abdcf412448e33 +DIST core-foundation-sys-0.8.4.crate 17725 BLAKE2B 8afe47838dc91c8848c0d6a96a604149e5f0762228dbc10c17b85e4e9cd2c3928712bd0b28e1071f5fd6fd76d4ef972cb86c6c929246fb6e84577776933a8ac7 SHA512 15da472316d6decc213e4e5f08ecd22a108ebefe427b890741de4f9199614f19123e64329da76de5e8b4c9ff74ffc31738fd929acc1460fc757b4aa1fd3fdbb6 +DIST core-foundation-sys-0.8.6.crate 37629 BLAKE2B 683d5a84b6a3816317f87359532a8339f08bb4043f1d70a8588636eb5dbe6ebb3843e2a12d9a7e5fd1637a912c52a5aefbb8d44796330b09593e7adefd3babd8 SHA512 24a8958cb16b081862a9000affb0147b8b3be1a664b834c3dbddbff03e709de3f4060ff4800e5a35453f4392ccf33168e8b864be71b17be38cb264a39b915100 +DIST cpufeatures-0.2.11.crate 12727 BLAKE2B 5b91dffb779e437606db9b75d2b05c2de19069575a8272112e9a0389f5bd8de0f753cd90330b5a5bb6a3f84c9e794e96328664557db31c43853ba43097229efc SHA512 af179e269a4d5f48b50134a5e98ac541a9a0d6aa34f13fb8fd9ce8d5092352e1b322437254449ecb1bce608d8558b1cca2c79232ac1327efd887193bd1d36031 +DIST cpufeatures-0.2.12.crate 12837 BLAKE2B 5b518c58c548d9116f94cefc2214fe2faf87c3aaf3fffbb0bf4085f75372cf7fc5144bc3f827101a3a14a51363d06d8075db94ff5ed853ab2ccffaf597728093 SHA512 52742595702fc3371d4126fb355f3d7a6da514a94e43170f1db041cc6c560027f92115eab7846131dba1018ca5c72003ae36f945c1de88d57a0e7f66331623c6 +DIST crc32fast-1.3.2.crate 38661 BLAKE2B ce3762b03d24d5367d89738991c060f4b3af7840e0a7ac7fc17d01ed438caf964bbaefad0fc4d0c438dafa5a578429ddd353c71197f8b54b1ec441395f2f7ee0 SHA512 a683943e252afdb1b9d626a07533ed11cf7a63af603c19640056c5d2b9c884ad9aff33ac54c0853ffca2f6cf94b0730eae6c05abf3e53e55e709d180c8152357 +DIST crossbeam-channel-0.5.11.crate 90434 BLAKE2B 8666f039a0e4ac6f0f8be2d08ce3349d8ad4aa7d0f38c638dfa6dc6a7f30a1629e42f87757d9e054e836941dff6a8efa53b5337706bc5958d33dee61f38e7bcd SHA512 1d37bae1c946d402c1fce37f22a82037d68896770757aa91d209387f947d39c514df52e0ce94317141513784511ac626482f16099cc3b62ca28a52f387b69c71 +DIST crossbeam-channel-0.5.8.crate 90455 BLAKE2B 017132056f1b40e55fbc7a09b75509d72b0a6123a0e5ea5d6104fe822f73b3ccce670d711d3b84b5ce743dcab5f10445297a6701b71213b77c0d56e2c3fd7160 SHA512 47677d6fe63050c51393e4a0537a3c65d7055c9eae118ebe60c5d716b4f47f23c2b1947b1e1b66bfb34a57c4db3a44631d323e996dd545565fe4f58c25863ff4 +DIST crossbeam-deque-0.8.3.crate 21746 BLAKE2B c24025c65d7c1c98e442af95491749dd4f777af0509636ed66886dcf656359ec50dc2a5e26327559c6659f6b355d2b0b992dafa691a36571c99637cb47372d0f SHA512 f3201c9afef7d2d119702696f7e5e7997a104b8f7d67c7adebd1cbed84d3a3415636ff674f1ccdfd95d0dc162384e46c6138c8203ede69577b0d5359a4b44672 +DIST crossbeam-deque-0.8.5.crate 21726 BLAKE2B d97b35e8e8858deaa7fa9a836e836d02914aad29e5c34ab121f52ed65e95213cb2574df82273277365889ea771f04eb40bb2439347c259979f1dd6d5e9853bcf SHA512 0f0c9745763ab156136227cf1415de514952a3f8282ffe413cc249f9f4b345b029940e6a6c87b3be8331a7c783655a35b89c7a2547360ea5ae10aa64ba7ae864 +DIST crossbeam-epoch-0.9.15.crate 48553 BLAKE2B 23aa0532d3126e22efc779859478098e505b4ec895c643530a3f7e8dba0543df3d8ffcb6825b1d3869a4418e17d798d464b3e1bb51522435d50f53ac224e22c8 SHA512 d9292c059ef1d156da52950137b2b3ea5eab66c4cc2f763d02078d0b0106980839ebed2ae2aec53e026ee7b3ddc37c4b51370d925ada1ad13d9981934daa7bde +DIST crossbeam-epoch-0.9.18.crate 46875 BLAKE2B 200c256cad6011a3a14c4664bea6b150fce72d561c4fffc387fa561b08c0480e8756bf51c14874c5fb19f427424547f72d2cd7dd6f56fb8b6666a85f8d52bfd1 SHA512 0a8a199b9d77f4e28e91fe0a0cbff7e0dec58cac283631fd972477fa912d2f6ddfddaed2c695e4978b01cb5440b702822af6333e7c3dfbcb9a2c2086999516b2 +DIST crossbeam-utils-0.8.16.crate 42508 BLAKE2B dfaf9e7cade2cb5a2de90dc622e58a69c5b28fe9f69d3cbb945431683cf48fb409565190e3414a815563afb12631d990476919890fc482ce6b5792fdc25536a7 SHA512 4b8d599a8b93015eea2fd404cdf1526fbb94662fffc7c64d2f0659aeef349e4ad682f61b2b85d075c7f3fbbc4d8106cd7caf6e65dae117ba982f31262df3f831 +DIST crossbeam-utils-0.8.19.crate 42328 BLAKE2B b2846f569555818fe7a3ef4aa29f68c638f933ee0251713c2c92624bee5f8013def5527027022963f572815991abb98d5e68d0fa00f478b2762133f84ffc84c0 SHA512 6e742fbb0d2a6371db87e81f8ac583259530a288237d0e8347394581c60004703a822318ec945936c410bb44001b115d8d986bb264e5b2d8091bb63a8edd93a9 +DIST crypto-common-0.1.6.crate 8760 BLAKE2B f2422bfb89c15d47a8f91c8f6695e05eb56990a922e3cdf3d426044736f9932324c0d899a151a6df4d6683e6a6b21659c657d3988734014c02cd854bb4b924e7 SHA512 471dbc43f517089d2cfe0868e29510c6ca579875b3bb5d013c70796db969b609b6c4bb35c9a07b9a2917012dc5708b717d48e317a20038adbe7e7039bf3ada6f +DIST data-encoding-2.5.0.crate 20632 BLAKE2B 16ea08dd12f09f2e6f8ba2910b3db07d4e7c9916e6a70d41420ef1a0e5393284b49787c47af0868bceb7f5d3f1fadf203f5a547dc8cb97713d5225dc9181fdef SHA512 b1de8bcfd7cfbfb988091fdb550eb98dfa5739ff58c4b789663e5db0d539c9acf145ccd72d87f7e1cdefd09d5771772d131d2b2e2589ac8f0bc6972c801ee0ae +DIST deranged-0.3.11.crate 18043 BLAKE2B 738d5a88732e227bb0e0d33c04ab8248a699c7c499100666ffcd78673d1f38ad2d740222ab405e3eaa7a0a6f4596cfef90bd581a1baf77c954dca830c22e74f9 SHA512 48485666d3e50eb7976e91bed36bddbaea80fac4ac664723130069bd7d17893b6d1a2b82a4c3dd61677162e4305ba5ea8aec7bc2793d1b8b92dd1666c204fc43 +DIST deranged-0.3.9.crate 17080 BLAKE2B a1441d629cb5d8ed75c49c25a42c144ecf5f6d060612b01bc2c78cde577f59fc3aed35b8b5629be50433244975fb4f98004ea99bad1177862d15c8695951dda1 SHA512 63abb2a6aaa770596caf96672c764e2f65b867653f9cd3fc268b4d2137afee7b3fc0618d83ab29c80c313e03455fb717a5015cfb33a69f95adeeddce723003fd +DIST derivative-2.2.0.crate 48076 BLAKE2B 56d27e27493c3b818ad45703efda607a0a0d9a48b0d43785b6a013443b8b964b67bb5b5284d242358415c5fb81b86b02079ee7c0595ec07bc658240eb114b887 SHA512 3c65ecdabd2dc202be3d83b06f96b6f68504fe542ede7e2285093c6d360a33ec76a3787c436c6e5ff8f59d430436a4b8ce2f908cf7b2b08cd8b0045de4e5d1da +DIST dialoguer-0.11.0.crate 31286 BLAKE2B 612c7b9de482b48df6404ce31b3d9a8afbd1c8c42807f2c3bc343bd3aa16c359abc95bc879304f29c6861c93101833bf5da036eb0fe85f21be50fdc3a771f447 SHA512 7124e9943dd4fd4403200357b7d26683e7ea709ad9b0251af5d6db4dc8da2a476c6b89e7413df3a90e4279498bd54b67d8d0b161b0e5ae8ebd0bb5b5276cd612 +DIST diff-0.1.13.crate 46216 BLAKE2B 27ceeafb7afd45eabbbe22d1f05667f513a6062762e6b77122e267282a8f2a0bf96384989508bf10c9e13af4856bc9f58f09b10055d6fc2c32681e288ffa9f9e SHA512 45e259c9fe7c23bd9e9454891b42d4aef6d681d35ee039d21fdb05ae9ed5856161a40f29889e7880ac2a2daf85f1b7d752d213b4a99a1a74ed2682c18a3ae7fb +DIST digest-0.10.7.crate 19557 BLAKE2B 61e69d78cb8d6850ae26ad7ff2d52dd6dce820d8c621230def11cc0e8aa6d883a6e1b25340fb45748db52a8ccf3c8d36a8aa0c8cdf4d4eeb4e3f870d86abe09a SHA512 0dd8c012468ab9011b89413ea4d3647d95b1f683b020a0e6274c95ed5148638b56fef19cd9044c837ad53715b582b88eed277fe96e917c27c5d7abdbf7c3794c +DIST dirs-5.0.1.crate 12255 BLAKE2B eadd38e85211ed5aee7fab964e90342273320644c36262aa7b436e493512851a4751a09d22aa8bae0495f4b22df6e7395d13715ca8b8c6196107b1be03af9328 SHA512 cfc329518e85a25c296521b9aeb6e5d5f60b4525aa786ebfa8b9f198446a1ff5892160d1bb4790d7f3fc4a0abdb5921b2e4896e271a3fc3a3225897313b77bd1 +DIST dirs-sys-0.4.1.crate 10719 BLAKE2B 30334f2192698d7d03bd4e8bc8a682482da7d13baacb8547a132f55019d3727ac35579926ba4367fe0a5b7fa917945abc03e010cb7363683753c87440581df42 SHA512 53c7c8bc76d7211d08a0e6b25caaed12eeb7283cb4b352c12311db3c796794330943259a08e48ff9d3a280917920a088e5aede32677a4b2f9f819c2dca6adb9a +DIST dissimilar-1.0.7.crate 27588 BLAKE2B 499890812558de9d8dc2a43b8b3430106ad8fd5f8593aca6de08556afcffcbc251cfa02c1881f6ea4edb164166335d3c8ef3a5cf2d7e51f4e1c86bd2ec12ab85 SHA512 f3e21500d19e030c629b1ce8f809cebf329514e4f901baa443ca2f93c4dfe7d49342c998216e94560c4fde4415c252dbf213ac7a6f4953a229ab0808d99b152d +DIST dunce-1.0.4.crate 8034 BLAKE2B e1e7ffbcf1e3632036c03303ab46fc37b2b0a991598790b2dc65d7a61341a78bf555230ccded8fbb87d6288282af3ed2a8641212a0f1fab929bf99298e878b6b SHA512 f57d9c53c177bac8e10a4b56ae421c604085aef0f264b8d6871abb7e1ff713b55f396c5c5f24422763319c504c6ea6a774416af1c2ba23ba7b67b2282f6731f8 +DIST either-1.9.0.crate 16660 BLAKE2B ad61038bfacb16f678fff5dd9ccf8f345e1bef18bd7aa0aa9c99d44abf8428939362f32fc8dbb1b60ac56016e0096201071d0bf8c0431b660605d0dfa97da466 SHA512 4978d50842386f51e31a47ad037d5e491106a668bc701bb833e6ec3998afe3ebd80efddc47756b2f300f534b39b26fc01386dc878d3b02cc8c1fec6a474c2177 +DIST encode_unicode-0.3.6.crate 45741 BLAKE2B e1e3792bc2bf9db7df33a516d0d755eef5eff1249aa9b2fd7f0dfcb155786c566fb619c9b2d73425a8625c8593988b117e9676c341f65e8795ddc838bf9881c4 SHA512 64193d6ac75f66d58ed864169b5d6228ede36dcf100614395e086bc8e847a3ddd287734d88e8ed50f38c679a99c80ec68449175a67d8ee03b02ec1cfa9d55e77 +DIST encoding_rs-0.8.33.crate 1370071 BLAKE2B 0e81419086ca6e18f2aba5194b87eaba49ddf20493fd6ee09d479db86306e39dff9b23f399594afc42f1fdb33855e070beaa1871794dc0b0371c35d296a6369a SHA512 20d28a4c0ff0710f911f510be56c2bc5e7514b76d370493d2b89b7f25d1c0cd46ffa64862e54fc472f07f928a2cc24cf9d790a37751cafafc81f263705aac4bc +DIST equivalent-1.0.1.crate 6615 BLAKE2B 302d78069d9df05e78b53f0488a9e4eb98fa2bc1e21893dc8a0acf2234347ba7c4df4b9d6b380ae77d8ffb1074b9c790460fe2dae47318aa1c4fe4208244540a SHA512 b2bc60e804c1b02c461dcefcfd60fc37145af710d183ebe65f9a4d63f2b2072d23193f98dc550a9213c7fdc6a2a837af23b04a89294ebbb681a4aaf5d5031140 +DIST errno-0.3.2.crate 10424 BLAKE2B 3061d5a5abee015bf41c11ef31dd0f38a738c51992e3bf9f9ec98f67a87b88341c97901211718a5f103b8cf021c875f8fc799fb217ad69fd27371326b5aa40e7 SHA512 b728704f11cfb2bffd421ad39e7bab79b11e548e336e9dd1cfb902bdfbb78a8afb102ae5684fbd6ac4b01b12603a1011a1faa21cfd0702bb25a300364b17ff84 +DIST errno-0.3.8.crate 10645 BLAKE2B 4a7af10845f11b3d8f177a75a692be468e8ef0ee53fb84a4d212335f1499456b6739a59af260894b5c3853d3bf21ef3490d1e3a613305561203ca334a636c3b3 SHA512 29753c421c6f929760cd7565f8171696e4f70e677654a7507253f4fc495edbcf214ace27be46bdfe5c1a0d782f4b688f591476e56f4a1096471cb353c643328d +DIST errno-dragonfly-0.1.2.crate 1810 BLAKE2B 781fc26dce5c33d83b9a1fd9be2b2ce9ac2559aaa858957ba6777e143b1e44cdfee48e1b47e3c91a95075a51921d1a421d0b45eb3d8de827cf4dd0ad744a7d8c SHA512 f853f1e1b8dd0f359a8f9a0399b3384c1103cd090d96e2b2204f91a40d40a9eb99383d4aa6a11e5470c51557afacf452d4be2049600d4235d27f59870fa3b916 +DIST expect-test-1.4.1.crate 13530 BLAKE2B bc83162a09c2493dffd45d8d8bc11d3ca86ad1d76583073792b411a5af39684d0e80e5183eeb3b87f7001cde46901b280b67ee186283d23425bcfceb6eb5730e SHA512 5665e7bc640fe56f1134fcffb9ac80e5d6df820c679b768a0d68d58198167d3ff0893592adf88299564037ce72a198c6c8cdb33f83683ca5225e329494a2ee52 +DIST fastrand-2.0.1.crate 14664 BLAKE2B 7a5812153500170dcc53ca8d66384fef46eeb5a8f970be43863f22f82bf427672d07cb053f4e04b0fea358ca89178399871235680f57223b8561c07b8d21cf13 SHA512 79a1e1b3f39264f037def236afbd87b732f5e0a2154b1d9e721b3c7990c52be45138320e2571fe628f482e0da7e3cf867abb745e3c277b19015fc031fd4410d9 +DIST fat-macho-0.4.7.crate 19320 BLAKE2B 592c3ad4ff5454625dbfb58aadf0812465a24c59fe0ef165a46def2b9de14b697e62aa72678691348fe523f409ee4db7b90aee76f50bfa9bc2cddbda37a04aae SHA512 263aa85a7f3ca1ab9e0607454028337cb6067cf8264e45196ae11b6d93fb4f6b8f37c27a8f39c2594dab4fbbce9c2fede6efbdbafde2ef34eca9d9c9a3523b6d +DIST fat-macho-0.4.8.crate 18658 BLAKE2B 61432b0a49b9e2754222b8b02dda8fcb09d955627abcf3895ef6d2049ec6e2d448f3f2617db9dcc431ac38e56005acab7940e8a4c148be5c9f77f7d51ddf748e SHA512 159bd21cf1f321cc9bb56e08ae561d6a00e0b83de6e4096365b8ce5c29a409f5312a78ec1c5122018f9990030ddc1596dca1ba56997f460f031ff8518025fa4a +DIST filetime-0.2.22.crate 15029 BLAKE2B 068f4a84388d04d900bc5518a94895985ecba9c618a47b6483cabc31abd267e37ce69d78c51703ec5745307800d96ac801f37ac9959c60283c3c3d6ccd349c0a SHA512 d40d8baeb57ec85bb9ccf76ff0f898915c4e6cf384020121b53f4a2a1ef2840af5b4c9e8e1ff177034273f4f7a6bf81d2dd7a02cf498b61ea31ceaa30b877067 +DIST filetime-0.2.23.crate 14942 BLAKE2B e4d2d9c11745dfa5592903f3c3c6a9871292a02f9862607b610ead7562b5d1fc3b64d37e779cad0630bde8012efda72d86af5e687cd2ef5d3627d8a89bca517c SHA512 8d5ac82482758577d1d0669abbe7b880efc44958687bba745c9ee4a5c16bddb44ec0fbe9c29cf424e7120905f3c3da607f3a7ca1e50287154c0475ddf2148bf3 +DIST flate2-1.0.28.crate 73690 BLAKE2B c9f141bde0eda6b9c42da0a3ed69322c12c6c29bc522131f51ad56f6e2758646aa5585382407409257a8301f5f07a1825d150838bbb55822f2d49037f6279aa8 SHA512 9db6f3ddc4e1e91960b07c08712beabd911b297d93db8be3ecb97a392a4262e608c75ed8e9e34d87d58c3e67d1b7987734e14ab3d45fd837a2767e8016380284 +DIST fnv-1.0.7.crate 11266 BLAKE2B 81da85889c91b6567e0f555e37dd915f1bd919719d1ca10c31a6861d7aec29a49ae9c1e8bc500791bf9d6b8dbb318c096d04872c5872a4b1f7d45fbd8e12842d SHA512 2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334 +DIST foreign-types-0.3.2.crate 7504 BLAKE2B 520818b702d990d296ecd31a8646850202509ccfa18edd0e1b260289619a6c351e758f317ec0824bd76eccb209b6f087057c25f1bd01a47897715013dd834867 SHA512 bf27b8243ed482c202d120383374f19ff09422535e24b9c1aebccc66529bf300ca17b8bbc76d67f98ac092e614497afe3add9dc68aa69c93074df05762f91232 +DIST foreign-types-shared-0.1.1.crate 5672 BLAKE2B d2e42e04b6657e7a69fe0bd20c672176629c743e49a55fd007bb30e289710b70045d445ae9cae0eeaa747ee708c90e8abd9b5fc39bad8ec0666befe1b696d4f1 SHA512 bafdb2143e136fb0818e2ffd90b5c862b7181647d6568947d4e4531012bbf7a57b597221ec7056c1b562dfc0c3b5dead26d1a4111ebc15e7863737a873518a4a +DIST form_urlencoded-1.2.1.crate 8969 BLAKE2B 383d3a197b73fba199220b7708e16d770591ac16725faf4efc1a8c230c569c381870d4a11b8fba623e761e68f9d318630b22101d461e67dd26c67e13a73358a1 SHA512 c65104e2dc08fad572bb31f981700fd43dd29fcff42b01c7ccdbd3d4c23dec12360aed3f1b5fc4766fee386d418a65349b2941b8735f788cb0d35d631a6a8dd1 +DIST fs-err-2.11.0.crate 20449 BLAKE2B 8ffe7c49f4733edcd30ade9b75064e9fcf4ed1c87620d629fcd44dbf87e85e28d23fbaad05a50d8baca877f3eb9e088d8dd744d2ca092c443735fa7129609c9c SHA512 a8bf948b94e7325c583035a04d30c8ecf33d543ac366a550d757d65a0d7575d501e01dd1a80c8b0c278f80b9f3298f8dcd03c3c636810fbfe6a4a910ee8915a7 +DIST fs-err-2.9.0.crate 17662 BLAKE2B 9919c253ff98280eb3ae8d700ba3f878e2ffacec1d3ea69f0445921dd4084c67f3309cddfc2c4e9ba42cc9f64e201fc88313f517185e47f62c3f3023bed62e96 SHA512 b0fe36a1158a1267a10f6ca66f987448c2fe05dbc26af67cf92e2fff5af210312494823c201156f1029e3d81ec4b075a63a51770e153dad3867fdc6ee1d29126 +DIST generator-0.7.5.crate 29947 BLAKE2B d6c68ecaa48f30e3657bab1315228194c679e6bdf71cf7ea28273ac20aa34ba416309d6253ac19cb5e940e7c058eed39eff1c0a5594103389136d10148bd1338 SHA512 fb634f5fa252acc3d22ff925cfc06f02c4c82c64c567c98fde9040b457b8248a6199d0ccbdf27d759e75134318c0bc1a9d9cb351af4edf5332cc184c90c89d3e +DIST generic-array-0.14.7.crate 15950 BLAKE2B e74c785e3127095625951da192a018281ea9976aaeb11019f9088c3f27748c5fed1ef25d577150864486dc48b5138d6892e42f99979339f711a66fc70756c82b SHA512 363a7b04e4102f9ca63d429721c1ada6272be6bf0a2e97da681faf76381f73f0e3acb86623b9ce2dae441de9fda704088391779b9769ec02b3c8c9f9f35f897d +DIST getrandom-0.2.10.crate 34955 BLAKE2B 8e7b8554ae360484ceca2a05f834c2664b08f41cbc6c955663e1f8f22fb5750481518bf1c7b49f49223a99a66914ef013347b9186acc97a20249f3222a13f9d4 SHA512 82af9e0417bff9272ed0478be4ac90426405ce210014b21899c6b95fde1b16893bf46295388ff5f13fa712a04c99c46b770fab83f41a1343af1590a86ca8da3b +DIST getrandom-0.2.11.crate 35391 BLAKE2B cc3af20769f8effebcd6fe4f48bb762211f78cfad016b796ce4b6b83a25d0a758ecee4352af18ef97e84c17fb4efb0c7bf113b53d2dd30eaa32067fed97978fa SHA512 2230c219e1080b4b13f207bdfd54b1acff37d9e5fec5263ec9952df9c0279939b231c722b54524deab85002caf1047a471f3fba8090428d918e99d53edf82345 +DIST getrandom-0.2.12.crate 36163 BLAKE2B 0afef8504932ea0ea051cde1d14bd5b79edde68d6ebae6fe88fa4aaa532605a16f466d0d9c0d0aa619eaa105600b6d5ee4e191865a3fa041549a78f78ca82396 SHA512 dd97d7dae1a7ba653abdaf2db719e1a9c8eb721b08b4af0f1c45b1ed5079069d1b57e4f6d9d879e7fae3a890763f4b6aea9bc2d945392b98e811e7b348589bee +DIST glob-0.3.1.crate 18880 BLAKE2B dc89b3a664e810264dd7a01ad892e865ce35b504bfe5dba12d7ea8084da7de84feaa94c2208f1a1eefed90297e552636ad61ccebf6fc8cb4d01f27d605ad0a09 SHA512 29368160138bcb7ea5660f9f30c5711cfca8bc8ba836bbade3fbe8c424e7b4118daf27cffa677962e37e36f025fd2bb5a9c2aea865b0ff155cace455dfbb658b +DIST globset-0.4.14.crate 25090 BLAKE2B 2c3e6f8384a066ebfa1f36bf03125b5eae79329255674e32c58963451d4b342ada10f17524232a953bee133b3c77b678a141543759ebc622b5fd659fe55622ae SHA512 e83e4f5e42a97609e2579b09f49c2cb0a76a94e7e2975c5871f2c5af5d3b809736e0a7b220404c582f4a0c7eebdbfad6cb432e89b26401b58f2b253f8c0151bc +DIST goblin-0.6.1.crate 160490 BLAKE2B fd108e41cf3262886bd3764ba0d145d6ae849162fa7ed8fa3a1a5ff0d4c5d9378a8bd223823b08527e5186cb357ff32007a7c5e3fe0895ae6a04f44289350afd SHA512 e09f9c33089e8b0df127fb1b98992af1575400c9735c9a0bc361988c443ac9ee826999f09cfebb685a5339bccffd947fd1ddc553b3f71288827c75cfbb9709be +DIST goblin-0.7.1.crate 163953 BLAKE2B 5b32de08d90b01413f80c419cdc85a005c826d5430d38807678045c7467a026bead4bed253b5ffca8dfd7eee4d62c010970e5f7746f6f2216ef57af6a9aef740 SHA512 4505573c29ee5775b2904b79c63a79cae7c6e3120dad68319152636fcbcd4b3d58a5a0a6d639bc34a43cd12e0e46a986086c88dcd59c2a743b2ea2bee0f16e91 +DIST goblin-0.8.0.crate 175002 BLAKE2B b8a1af5825d2f9b636c8c5cd120ddad860b7bbe6573c8ee71c48c58d1f563c34a0ce6ae7749bdc0a8ee42c00fd9531fec77cbe9f6565f03c3caa9b3498995c1b SHA512 e6334edbe8589b8ef11012588bd4c28db756aa591c3523d2868c20843211622afdee9cfb1f953212ee8b6563a6fd2f330f026f74b7a20486bd297cc2c25f6de8 +DIST hashbrown-0.12.3.crate 102968 BLAKE2B 492072f27eaec45abd2c5d7405c614c0c6a8221425e901bb6174bfa1688ee524408a618650126d6c683b7285b9bf0a21dcdbff7347e4d8f97bf7111defa1b7e5 SHA512 b3700fcd659a21a6b9b3777c18b37a83bf25542b4e8f2b963779a122f5d22e1742c064cfc03e649583e7dd5c6e90ca8407f8c51a0e8755f6a108682853022f76 +DIST hashbrown-0.14.3.crate 141425 BLAKE2B 23c63a99c6c6b7a6b9b9e8bbbc7f1e342e1eb9d7582fc9eb408d3eec50c99f34502d450170bcfef4da7f2b1e743e1d1619875ec879e4753dffcb84f3c10dc3b2 SHA512 4d344e5c89ce58e04668b80ef10e4e110a3a5daf4d610c52d980577795d0e2050c7d0b151d8ba97128117665e27b92ab0300f85b88bd6e1de943c62d49249356 +DIST heck-0.4.1.crate 11567 BLAKE2B 520aeea740cfa30b0cca12f73594ffa655f32959673b1c9caaca1ea0162e455546ae3033881394c0ba0516bcd5c9a997da02162e1585522d665813b9096eabd9 SHA512 8c80e959d2f10a2893f9a71994720f90747742bb5b61fc0a539eed3ea5679b140c48fd7f7690d7122cd6af5f7f20a19d412e3569fe741c6d31f6b2ce1e0b80e8 +DIST hermit-abi-0.3.2.crate 13783 BLAKE2B 43089507a5ca0731a9e9a54fdc8f4dd5f807244797eba5bdcc072c2c2b3761481df65b8cc65900769777d9d21f8345b502cb1915ec36747160e87f179469a661 SHA512 22901ec8976a7c96e93c9e07a2c5d3db49d7af60ce60c7ee6f61c3cbe93190d1f285e737c1c8b2236d540ab14e5d92e42828ec05f1b212332a862baf2b1b57f6 +DIST hermit-abi-0.3.3.crate 14253 BLAKE2B 9ed8b40a1cc894addcba2a45562d74359ba55156e2c3a547afce139324b1345df2f158f58978ccd7d343fac5e5d2cda86e2e0a9dafc77af36d4cd8aa0a6d4c03 SHA512 eb162d085e8e0db72571aca925fdb6094d1e5d091766dd62d6a116957459bfadc8d51f1acc67f4da3cf6a8802c0ff445f3ad2516c1df8fcdca0b751632e150a1 +DIST home-0.5.5.crate 8557 BLAKE2B b14225f6e967ccd37fa734f50991a50065047f3814c4e526f3b4605ceb9206d4d12e189b4033ab85792ffea34a30f2b0267b10b9b0ed88df52c37f6ae1ecea4d SHA512 4ba97149d8f70e9b6eefc930292c7e62fab6ad03d5e4e6bf93d40209d3a65e40932c6f3d14ca579ed19ba33195977c60fc52b3d3788629fc760f41ce90fa1e58 +DIST home-0.5.9.crate 8760 BLAKE2B 02277a6d0e54a88e62a50ceb5b50b08cd5dc1ca5ddc17a799db0f49a17fee8560df53f616ae22cd16020ae2a89ce7c6ec22e5e2c0d513405bc2859a6e3ec61f9 SHA512 3f1f7b619f1a47694cda92321a11d66ebbb2dc0b0c33446a7a4b886f547ee88231b61c038de04bb82acd50e617f19b5085893b8401206d32cd54502033e04bf1 +DIST humantime-2.1.0.crate 16749 BLAKE2B e2ae8325b037fb175b9200cc5c1944ce579056c6662cce307beb6701894552362a25e371aad65f8fb9384945b48815ca74bb8b544a32e0a5845b7edd30b918c9 SHA512 3bf29ddd1391d82897c22baa0ff3ed58ef6d6959859f1f8ed54d324caba5b6fb4422e56790511ce82f902cd11467f93c8ab7fc7b0e0bdb719308a4d0a446ae0c +DIST humantime-serde-1.1.1.crate 7886 BLAKE2B 4c66a483276e0cc5f4bd82fd49cfa0ee40c8ceda753919cfb7a8c794d098e9e4e851643fbc42a209d6ab00c5c62d9edc81c3bb1f6da218a09eafc96da9b566f6 SHA512 0bd72554e700f89506d2d1c8191832aed0065ea02aacb99e27139a60c883d3dbabb1fc3d60f499f5aeb20bd155fdcf21dc671aec1ca68d4041bf98ddf324248d +DIST idna-0.5.0.crate 271940 BLAKE2B 0b781c2e9bf717af429efb53bdfd18244f2b8c58e5111c3bd3bee50c8a01cc747513fe20db75c38b6b771d5845647bf6c1849ae6667766c9623e018c1f399a9b SHA512 bee6cfbfc99859b113aa8c7b487429a836dabc4e317980f132d28ff8333336f33480bf9f8b186a07115eff33024cd855bc85d346fce85e17c4132e886769c54c +DIST ignore-0.4.20.crate 53551 BLAKE2B 9c2b8d729ac7952e84fad82935183face8f6397f925dbea37b83b438fb327534c64c565e2f5cdb98d0820413f5c50062173887f1cce93a50805ec5e2df43a807 SHA512 e90c5c356252fa1c573bb92971477f2805e4167c3e7878e7da6756ae14463cca328a6614d448cf9a3a28abc5bf0f7c62313a8cb8103a04bb1c3bac0d0924f658 +DIST ignore-0.4.22.crate 55462 BLAKE2B a9a29e5286c9a9c132f2fa319226bfa85c9555150afd18e34bd3b37915250842c46f6079208dce75674fef448450dfd23242858ee2e4e2bdb7eb65f89d689d0c SHA512 9647a4887258dd970c87798dee32a16c1cda75ce3e352829f78d97e1b786d67f74d89b2fd76d48a607fe795213965c04c9dfb47713f8fa80561f87ac465956d9 +DIST indexmap-1.9.3.crate 54653 BLAKE2B 7bc1768589e74020dc15d3dd064009edaaef39b7aeb682d0ca8e49944e3f020b9c04d64feb102e88b22feb40863479dfaf4722d6a77b5d19e7ca553f4bf64c1b SHA512 2aa8069eb07a814c8fa3e11296c9f032ef60963520d7786ad20cca5cb7e73b8f76d97722a994d65295bb713020aadce5008cd3df5e99d8bd968ef1979f910a37 +DIST indexmap-2.1.0.crate 68224 BLAKE2B 9d833570cbb63ecae138ca234b998bd0e5b11b1a7e3d5ef4a21212bb32d0998395f1fc609f66860bdbab198081687630f583f5a2e495fac1afa40ff48bee8a0f SHA512 9d303eef918b9264b9fe326cc1d71f4095f7ed5639ed8696efa3e9be65dff2c50ada4495409e109e7718997db51ae1fd865cf8e88978107d7823faba14380600 +DIST indexmap-2.2.3.crate 79019 BLAKE2B cc87bac104efd9aa565e3b8d6071f271b33501e2192b3a478120c41d015537e807bf3ae808ddab930aeb861f353022ac76522e5102e32f72722b93d36d5f2236 SHA512 ddc45ebcfb36d761d8c11b8f61bcef046a51eea71692d89495c897cf9b4cdb5e14287600285297c8a6aab543761d9f5ba3ab45442803837a810b945aa346d48a +DIST indicatif-0.17.7.crate 63108 BLAKE2B 665bc2077207cac6ca2071d9e6ead76abb30d5f7c209d7b4a2ff5a1fcba566b331467239bd9168082839c961acf5a0522ae4c899aec141ccc649025b2eeeacc3 SHA512 412955eec523e961a20bb48f9921128004e723b405c8f1bb73abfaeb4f532ac6f883794fe6c8738a40c2e0a400a6ebf94ee17d89f7cdc98d9d0f8611d84a369e +DIST indoc-1.0.7.crate 13716 BLAKE2B fe515fcf534a552feba188aea5d5da0febc123db24485eb887a3431592780fd468f6409167457c68a7ef6368fcad71c14fcd7922bf2de29794a341d7d4cbbf0b SHA512 b60e534953d600bc2de3d6951f9da67ca3ab3c78fdce3e9c5f91e544ca848aef0c22c35a26fe7a39c07bd916a79fdf496269fecfa5491a58e178f37b2965b348 +DIST indoc-1.0.9.crate 13475 BLAKE2B a9696788574e56dd125c3371169fd59d6947d188f76e2669b21c0304692efd6709cd048920f7822e92c6a5620fb178e0e85c7776118cef8ccee0f58398e14abf SHA512 db8aef4a7bb606452dc8ed45aa29a255c7a135357a0bd586fb4429c5f56a1aa2ca9400d6fac39956aeb486a15d25cf5d1b9524967867f2c651d9d563e3e85be8 +DIST indoc-2.0.4.crate 14311 BLAKE2B 8d604e20825ae64530014081c627abe4ecec6447e1e214408743aca79ed217531baad4bd7021137ae6628555d769a248f06acc556cc3254d2626074aab110a44 SHA512 ef1b8d19d89d848c1133f2865247e0ce23cbe5552454805910ed0478ac4acb11b11629aa4a5ce8756d0ed5cbc0644abedeac0246f433166c68f47cf58cf4487a +DIST instant-0.1.12.crate 6128 BLAKE2B 728923f757c1ee4e4a7afb90e460eed81392068961240a538e5c6468e15a0b6491f590fb5f6cc46e6d78901ca232351f65abb9f2f230d8f4983c5e58c4011902 SHA512 fae494c00111c51c840f9dd6a10febe403e27ebb933dd16633a213e9c20f2bc11adeb431c71f8a6713bf88f270a010941e15d83df294e658791934f83a5d2407 +DIST io-lifetimes-1.0.11.crate 37346 BLAKE2B 7f278b7378a8569d3552c9b6d4be06d7908e05d77cdb964267f0b621ec4975a42fb6e48fc030a75ad5865681adf32ff747943ac559ab4ad73331a6611a1b10c6 SHA512 30c6e5ce6f5beabe0d7bee4f4522884d1316cf7d9b8d093ba0f952995997be3d0f10e1e77b9c20b7fe2b65429de0d2ec89bb35e939455795205206a3154ed544 +DIST is-terminal-0.4.9.crate 8109 BLAKE2B 0fa495da123f6fe5e3ba5f643f1ee097fc4f8e8aa54d9525b6108855a6a2e58556534a5e8dbfe7b5f8e2f1932003ac63f6aa3384317de7b385cf724bee294468 SHA512 0803ea53945715333d9b5fb18feec7230a49cb1a5f7308e2ea8d06a650e376794dd372be111e85622fd21320228706dd589423510dd010cd6ea112f185c46966 +DIST itertools-0.11.0.crate 125074 BLAKE2B 8e686f176764e92e4da3697eb781e1bc30d6c57ac61d97343b4fc3a48e4febf669d5771fa8620005c620cce52c236760ee2e1bc344cf602e878bc168a2e69cab SHA512 8ece00ba0a7cf481ad4586da24385a6f0b1719b9c3f0c25b9b5b373dd1a0ca7b9687a77cd179853392890b7bf4d31e0356a4e5fd540465b4ac62bd74ef717fd8 +DIST itertools-0.12.0.crate 133620 BLAKE2B 73c09adab9b9a621b556d0e9ca0deb9967f25f5f7cd082a65208ada2639e8154704d1df4be06505c8a6697c51b438781ce9921f70ae826a80597d5a682b99c99 SHA512 8f4c1239aa185ba21740dfda7a0c7cd47d62430db21724acdd580a8cd62df6c0adbb11fb8ffa691acd5f1b20a143d57dbf7e30d9596c38a07b5a4b3405e31ce0 +DIST itertools-0.12.1.crate 137761 BLAKE2B d7db67feb7418d6a779dc17d8a2f33481114cd81a4d53a10cffe08e13f0d3cf4525a5ef43368fe979d5a3ce230872eaf993f7065885531aeb5a6479351857708 SHA512 0d9c1849dcc0ddf7555b0aeb7e4f2ef3b101cfc6f03310ce1b6072d70ac8c8d3387ef4c726146102012e75171e0b0bf13465704b6edfc02752e349dc6af7cf68 +DIST itoa-1.0.10.crate 10534 BLAKE2B 8ffcb345d07070cc01651fd44c19f3e0659185eda733c407fd4be0955a301879ae1272dae7f425279dae8dcb7f7dc954465c9a09b5c521938a503d34fecfe2a7 SHA512 fc496be0873e31afa6ddf7f2958030f8fcb517cadb86a48280a0c50ce50460afda189af1e6c26e5ff6f85c750d772c21503864c32b526c4fe4bcdb5b07918538 +DIST itoa-1.0.9.crate 10492 BLAKE2B 0d5acef9ae72d3f4b5a387d231952e6025def69da81d38269b4882bc534be7acadc073e526fd8bebdca898a98b2c741735c541e0b6a35ed0f8f8799b906b65b1 SHA512 95f7906edb7d6a2690389167f8c4d01bc37827205bca87d527f2eb33722419ed2f2e8afaa559cc5a0a7e7fac76515c9c44c71c42b536aa34b0e2858c40946b6d +DIST keyring-2.0.5.crate 51015 BLAKE2B ec1c870ff61febd7b8df4be0636c7a9e982f7aa009625ded72b9713f00078303b05b9b147822051f2e2faf340da0b7f64f8ff283e4d56fb25fbb034d70241004 SHA512 3a219ea810810a0543eac2309658a8b9f1330b0132e1266663720bac84073197f33270031d2c785e2e49d5a44d1a71ccc635e5485a5a42ac4e3b17d72d309c67 +DIST keyring-2.3.2.crate 54145 BLAKE2B 2d09d1bdca6b6fc32a38c178f6b6bde339a699b882beb0f0a9feefe639112d67884dac941f9a5ad1a17bb4faf348e24313282900b49dc1f2e9a3b76545da7468 SHA512 04eaed986372acf559e67453b506e27d86092e9d0be963d24074d1196fc34bc2fad89cbc8d1f227052398099a48db5b789e2c0c7ecc8d19dab000bd02fcd3b7e +DIST lazy_static-1.4.0.crate 10443 BLAKE2B 25b2e61bbac48f0dcbc79c81d7bf01f2403d8269ecb6be3ea6147bd00f7a588df15a91f44dfc18ada19b21faa71de4637c7d493a8628cbecd0e547d74e616a23 SHA512 e124c0521ec7c950f3c4a066821918da7a9c6e711115d98009ae7c351928fdddead852e7596fea5937a9c30e4e4ce8eee7099b20248b5d6e3b2494b6a6d88cb8 +DIST lddtree-0.3.3.crate 11411 BLAKE2B c74e34ca45fb02c9e3815ccd26b25fad312e8d08f6cc2f6846b2cb6bb854b34a7104e878884b0318d1c3b5ea728fe1e7eff659e8eeef27ca0e5b4af270cfe335 SHA512 a8a8c07594ce856a8b965ad94516fd00bdd1dfe90a40cbad4fb42bd3dc0413a93be083163d57b2e1e3aa546dcf5b23f4375dddb441b15333e2aa94f87d3e944d +DIST lddtree-0.3.4.crate 11469 BLAKE2B a4b152d28962380e5e0c4ad6e1e590156ef21144e6c9c8950918ad66ac5451f952e0d575f60b9c898e8c0a3c51efe1245a0f3f097f3f42606ba5f2268c9de10c SHA512 d4b4fa8acfdfa8fc344f89d29937a520be3673a27888edbeea68d1deae1f190ca7642de66784f3109b8a6bf94a1665a39a8025dabca63d401aceb4e1c92fda7a +DIST libc-0.2.134.crate 603330 BLAKE2B afca337bf7120e933c56745a51261156f4af7cc58427f623b9cdf1b2d5fc67fb2bc7c078ccab3cf232024e5013e8edcbbb0baab6a8a3762f9b20d975ed92411d SHA512 fcc142061df7b363b2dacec5fb3c9a19e63addd8210678117f681b8e1b62e5784cb78067639df464f32e22c9ab4d0932bbe1c01cc992348cc0fad4a46cc7b1c3 +DIST libc-0.2.147.crate 686772 BLAKE2B ab2f0c65d071d46b8b88149add1c8429237ef6d9e0563d56ee1adbf23e6147dbb57fb68fbd02498f8ec75327693237a47e5e5259615ce8b0d5ed7a03bbf4fffb SHA512 bfb3c230b59d623b98726f92b7c3f897b47ba3d22fe9834c15f5b4c1b662289aba35a0ae3acfc704ad74696db8c691ee007b9cc6fa03ae65a18eb6bedc81931e +DIST libc-0.2.149.crate 715592 BLAKE2B 21dd5d4f9351f3c75790077c7b025046db665f2d48d7a72cda7667bc60febf79d82708cf7d39a323a594397cd590bd3d2a2f85349b4473b90ea4da918382ed0a SHA512 0def64d400d473d6eed30e985522d36801ee6472b15f90e74dc4592e0a8ffbaf30b731be280de52b30255cf60aeca8efe817b67049227dc7000c807e007d7289 +DIST libc-0.2.150.crate 719359 BLAKE2B d08e17fb29992c76337bb5862cbc1cdaf7b9d7749cd65021f145fcf49fa7954d6251c8c2f3c9a796b46283c3bc014bccfd259ea52824459841911ad847fd7f5a SHA512 7ae8fe6a1db38ac6d951c0b4880d25a02f064f5e61d6057c20f7208dec8395d58efd085e41857bcf5f4da2b014d2952dc4ddaf18ac4acd3a23675bb659e70385 +DIST libc-0.2.153.crate 740614 BLAKE2B 523a41bc8cff4ebcba0edbbe9e6a2286ec7cb3ba5e90ca5926c972b68e4b34188bc077d20c22376238c3cd91b7455898a95c505ace4ededea88cc496edb4c5a7 SHA512 3f99e3a192974fffdc053ef21e9ad5fb54b7cdbd4755df176704a95dba38047138ccab76763e89c6b565f37f98fd549fe368749f84f6d1638b3209cb07eae9b4 +DIST libredox-0.0.1.crate 4212 BLAKE2B fecbb90e2842a69f3967bb2a09b0181dce1720b60c5d762a334a279b52c00a9b4b52de72c6484603981c0c3e1cd8e173ef5e15fa290ce8b8888739204956be92 SHA512 31a9234201f5128f1519e108f7424d1740a67699828265cc725304a70f6a51e139f1d0c0e626b487857a7b421f25ad93e81b95b65cf0d3e0ad912388deecfb41 +DIST linux-keyutils-0.2.3.crate 18434 BLAKE2B a31163a446ef8897be8ad73be22ae3bf56a9ddac4ddb6b89bba2360b967f0f6eab4aaea98eaee16e5fcf0ddb43fc1883bd0da2a5c85db505b7b404586ae6604b SHA512 3dd56475a93dc46f9645e60eb145c315e647e3779fb66326962b8780d3a5955fb217fbfbf56d18d0c3d4872bcc02e64f09dd7734e6df3418d82e5648fe6bfe70 +DIST linux-keyutils-0.2.4.crate 17999 BLAKE2B 8885c1e5daabce113d0e68f526d0f323603f8aa6bebd1ce37e3f64dc553239c1d8d0fa5a662190b901c42cb2ab061962697654b6abb0530333f23655911069e5 SHA512 8bcf2d3eb2c5cf49ce00b91bff578e2dac3c9390ae7b4bb0ad3ceaec9d282a1d4782cb9e642cba75429e7982e6537a72f849a1cc848a939d6e85fd6ea8e1dcb4 +DIST linux-raw-sys-0.3.8.crate 1013776 BLAKE2B 375b29d2cc700e95d94ea8dc304cb711562952742f65c9664e33560a3da862aba74f2ad2ee66b1dface8cd5371ea9cbbc452ea953a6b6c656ade7d938b7d2ff2 SHA512 cb0e5c54870dacfa513ad05f7a84e9e90dc1a42f55685fe3e252fd25cffa4b875f1b65eaf4ad132ef0a19e6677c7763b360d71ff0060fe6ce5198f38b9956375 +DIST linux-raw-sys-0.4.10.crate 1407767 BLAKE2B 8bc633d99bc1ee1a6fdfa19501fd034a4475fa9ebe18a206e4254309d91aee7a91fc70faf9775efa5157a1b2fb7e5f827bde40a770b066643356113f2cf38b5d SHA512 107f61add087bff55869798d5c71bc6ac9ecb27a603d8f9071b856189de8b7b0a7f9243fa1433700f52a0c3020eff5604dbf6e0653109d0dd277b98ab45fae21 +DIST linux-raw-sys-0.4.11.crate 1413981 BLAKE2B 45172cc348e758bf87831b47d2d52ea43e781a738a59654dffc04cd5f1726efdd8d1e2376cdc247019b64d82d756f4739815422c353f54f081a2c539df02b5f4 SHA512 befe18ab06e5248ee89f0cb8fbc192a5564c15c9873672fea62754322d3c197563d9133b839d5222e6baa522ec1fafc48176ee605ec7954c5d93e52dfb6d9772 +DIST linux-raw-sys-0.4.13.crate 1493855 BLAKE2B 1298a038276e2424eda9873c642fb43d864b343b03b7962446122d2dbea94d58d9fb2b93e890769e6fe4092378755413ed6afba81ce56fd61e512146e44148a3 SHA512 3918da6b667a08ef8a51aa0b087129e2dc5ab101669cbba7690fc98ae2659a36861bf9410a3b87d18522a7549d43ac169b995ea192d3073f7249305a809cac62 +DIST lock_api-0.4.10.crate 26713 BLAKE2B 113adf8554c65e9782e8fd0360d0398567dfbfddb1fea4928cc152fbab98dbe086e42b81170f6f5c333d61dd3261e8a1ebfbaed786e6bf6378e6afde6d7f9e5c SHA512 ffe8cad8099bc382832181c1ff95e0935993491f247114604201be7d4ddf8402fd4db8fd6499c611f95fbce7d57dc3d3738eddfab31c52f50ab8709e549697db +DIST lock_api-0.4.11.crate 27487 BLAKE2B 87116cf908f7f1f9c300cedded989df305f855883e3df5a482de2c76814c48739582d3079d76a2bdd14a6999204b7fd31dcd8fd06d1dc7f9418f0e2f70a1450e SHA512 9946adf313a5c67a0dd87a1b679b7d9d16a86149fb95974d3f28aa57a9a1a3932e4a5ee1d332097559329c5e3b2295be2e4b655b115d9f75269f33a758b17fb3 +DIST lock_api-0.4.9.crate 25685 BLAKE2B 8adf5c3cccebdf6aff6ec977f230cd2a208b0b188ef57deacbbc6019431f0ede1a760b2384ba3cb49c96b8a589dc56c0f46a6359b3e62277e7ae1a1c3f586fa3 SHA512 9215381d9bb6b80d217c73a900db43df043b3e939b5bd7a292a02e9ab911cf0eacd8f883d35bdf72b3a0e78df8f1bc3e843ca4c775294c7a7a03091dc1a74990 +DIST log-0.4.19.crate 38073 BLAKE2B bbc8ce51ad4a01562ecd204a531ec7d82101a342ec26405dfadd1761372f7039297dc97f4899889ebdf4eccbd56345e015d4ec6d2788851e523db56eb541aab3 SHA512 8f11ca6f5a99b61a5f3baeb7a23b7a879b3a5bed666337936bd1d8794864d14a6c4f0747d03505831783f15d8c14ebcf507267915481dfb1b32188b8ab36a038 +DIST log-0.4.20.crate 38307 BLAKE2B cb9c9a401b49bd68c18d5e42f2ed94446f1aeb184caa23cefacad4ce54a2a357143af54a5595c45d6f3c3d20b054c451d9e6ccdc09c19cca99ffffdaf8bbfc72 SHA512 8661b0c71d3b7fc0d679aa3d7f06910e6d3da1c53862aa06526000e1bcaa0b0b068415a1a9ab317c318f00d15346dba8a4f5d2a60d8850790bed9cfaaf757b3e +DIST loom-0.5.6.crate 72186 BLAKE2B 0d31e1533b954c59c7c46a3158587dff2b9ad53c73d369a9134cf731c9d4d239f0755221cec50ab15e3cd42a35f0b7eaebeccf07285b0a89675df8c0d5cffe56 SHA512 e4dfb7d4b07acd33b6db8e6fa54f66d33782060c553a71723329bc9e5c1e3afc10de882f3ce3b882c0b6b84b9eb19f4d6699e534961192e0933f88093247a4a7 +DIST lzxd-0.1.4.crate 21891 BLAKE2B 8271b79bdf6c65a17b5fe77a4d8b7d3a96ccf1752d211770dcccbd0912b0113740f5175b6d587ef5f5768b7ecd073488fca4f49e5c4bb3ec4cc9e5055e471b99 SHA512 f4fc473056dc793ee938943646416c3a93c748104093b8932c0a603a5f25820b49632f703ea4bc248b8bd612ef51dce4f5798f1f46782466c38aa69d016c2c57 +DIST mailparse-0.14.0.crate 36965 BLAKE2B 577df2a11928120ae88a8afc5781767d4ffecdc39d4f22e0771d460bfe14d68a97427fe1f45b9a8f575c549d788bd4bbed007043a2fb41a7d79580033cedf336 SHA512 0edfecbd7f2fa918c758ae5e9c5634c85b69f57e928c85fe8b2aca41641d9e3ce12770ef40b7c3a31b1fb8ac6b15003166d9b86764a282ee2bf73461014c9018 +DIST mailparse-0.14.1.crate 37264 BLAKE2B 322c5ffbb60be7a62f9169438d0678ffc37fc3055568a97ecd4673e84ca4b49d280cabe773d8dc8dc99f68a86228886bb28c56152f072748a2352dadb0ec4710 SHA512 a5b19a4612d84cbf3d89cc26033484e2ee252d0b5ac063cb6487a55f30e25a21b5108020046926858a65995c48c2dc3e5cc64f705291f1ad9cd74b16b3c6d360 +DIST matchers-0.1.0.crate 6948 BLAKE2B ec3a5d01d2fedbb4dbf5bb185afbb9401410463a61f51674e0df6a571db352b2bbabfb99cdbdcfb4e511ae783165bf0258f5163f240a229b9087f9edbd0df41a SHA512 84214c1a84952d85631aa1ab5115df7cda223ac64e2acf055b6129ba1aa26ddc87615a8b51ca890ce3fee0419053fa7fe1599ae128f1d211b58c07b0c4af3b19 +DIST maturin-1.4.0.gh.tar.gz 457791 BLAKE2B f7b03ab106b180a6b274ddee112e85197abb7518e5cc741afd653cdecbaad3ceb2225218c8f58ee45d562c168a51b69174505cef9d0b1d69cf3aed981ba7d892 SHA512 c86afdeb694c2fe4b9b94a7bf5f657f9337d3b6179a3d430a26608353d4de7c463a3860e87225356cfe66f1111240717851173403c66a8c30ed3acf7c1d2afdb +DIST maturin-1.5.1.gh.tar.gz 454016 BLAKE2B 9d53c6510345b56b627b978d8a4e9bc873207e4097ba32b2539f27245cb4ffab8bf13a8a81036f572686e4a4721ecb5eca2d0ab3971839168260ffa96704d33a SHA512 92cca4b398f9ecf767ed7da27599cc328570e5ef18b39c0f1104438f2977395a02737c8a5c62d994490e248000cceaffbeba11cbf94e9f8756538851af8e6884 +DIST memchr-2.5.0.crate 65812 BLAKE2B 57966413a1f933dcb2d2d4ccb29c247070f65a83299b2a9f5aa83f5a48a5c5f1c4c7c632fa63bd19f9508e9291e7258db2f16e2813a56fd84e0856f70f1e67ab SHA512 444a163b484c233e78c0e2e4d51f01ce2da93d7d29f516a95e4b0866b20bdfd3f34137653abed53eb70387991ee3e2b5937d8d4360a85bbcb50a93005a75defa +DIST memchr-2.6.4.crate 94439 BLAKE2B d1136f7105a33565214fdeecdc5a95e74d7fc7cf45997f81bf3cf389f3015fa561ab326433ddcff2db0b7259246eb6d26fc7b4e3c90c3af8b9b7ed7e8ec56ba0 SHA512 1065a67e04ec9210c70e430288e0a8d39f36ce6414722099553e99112ea2f8f710eae44bf39f8775b9850e6c8a50e634a1b1b084a8eb4f6b2eae6697dcf5b5f4 +DIST memchr-2.7.1.crate 96307 BLAKE2B f1a008fbdbfe84852a8ae1d9d9574306b1bf120dd5087903adbcca6af342c9abbb296496eb9bf6cb58915c4444b3edd6ca4e27131ac7d8aed8849815df87a944 SHA512 5120496faa31fc427c8b4178461a262b3a34d70eddb7ad17a19d6db8b9969c9e113d3625b5e6dc677087fc80907377b00ba0421aba9a92cf73ca2849d932f473 +DIST memoffset-0.9.0.crate 9033 BLAKE2B 19090c1af8b8cf54a2cf7593748aff4d3dc685ec7080aa476139c1721ef71555495e1bc513b1efaddc7e7702f83e0e1c2a8f71ff40009d266539484c9297e0ed SHA512 2f04f9b6fed31e94388c18162ad275897a835df7b9ac827f4df0f4b0ecf71064ef247f7ad11dbc27d7a6d448984a0f29d1c000e3c8d5fa6e121fa9571770ec55 +DIST mime-0.3.17.crate 15712 BLAKE2B abb892b75b40657d356b6b53b9a45b2c822a05873453e919f2bbfeed9e5c06104f24db9cef2716f302198020870eaf96b2c62aff55cc11d8ca4f4f614d7c8e17 SHA512 e6d2ca92bb58fc747c1bb65a7f9023e5dbf4b94966003a72e4913bcaaeccdd6752725cdbd5081e0fd69d9e8f364d79664fcbe70061737d5c39e5b3e3a154a0d1 +DIST mime_guess-2.0.4.crate 26399 BLAKE2B 667f9b8009bac2e1d8b835ae8825afaaa2ea6eddd4cebbf18de8f8fcde9318eacaeeb08066bdd611883bef5f8a53fa2506b57dffff543c3a57316e07b525f7f5 SHA512 acfbbfdc5bd725edde43e4915858b8d016e90a5b483664f0bcd5e8d2b0b3684bf0f6020aea147b5bf429f218a7af8080761cea4c5c04b68fa66fd6a676376908 +DIST minijinja-1.0.10.crate 135892 BLAKE2B afde553d26dd34b383c50cb08d59485656da5f5db79e7ced5354bdc23d21a8b1f1b01ef21ad63d35f7fa248b8bd5fd81bc6b165a18401ac0d65eb44464d00d90 SHA512 770f16f935a1210454b8569d55d93d816c2af151787e18a7d2ab335f887461b40c2c25034a332523b8195b810bf868a45d17c495c536e1221867b987b7322081 +DIST minijinja-1.0.12.crate 136933 BLAKE2B 594c614e22eb577405f3621efb7d02000efe4c05bc326c96427d9ca1cde40eaa1c232c71445535393ff0e3f032353e4c85977ca4ae7e98b4be16639bd3641795 SHA512 c6dd27d326a3924c7ab69dc4e5d5a498118d0e33eca059edde407823d9114eeb8e5ed57089c7fca4ab60452a676ab86d02b1fd885e77ceec9ea44be5e8380126 +DIST minimal-lexical-0.2.1.crate 94841 BLAKE2B e6b8919b80d938d0b98d60d4f5f29ce43d77ebfcf8b18bde08909141915c6ef4f0d07a543538d4f3ba8527a9f55926d4a8e83473248469d087e80b274d701d61 SHA512 385fab51884bdcc7b0f2728a219ab164d0dc8efe42160b918f2c09f79ecf853fb12bda006d11e649f097bae1499dcd41ddf2a8784ee7d178cf2c28059e46078c +DIST miniz_oxide-0.7.1.crate 55194 BLAKE2B 56afbe0c0b3eca98105ae2d507493f365353cce29a6b04910ff26bc75899400fdbd067756cbda7b3d86f047fb8f3d737de00043a4a7348a813cc43e45824e33f SHA512 5eb6ffe34a866403273ff0267ff7838aeb50722ca57a03d5a1d842a5f19a3b4af570b133a3b9d64d78eafe49e4b9732b92dd63fd9c6b0ce59b3295daf10f6a3c +DIST msi-0.7.0.crate 59110 BLAKE2B c0bb6d59acb79566343baffc4d40852b0a8d668c48f3c8a482065efb02e4836428167242e382ecff93a2763b4b5383023d389226619208910e44facf57536f98 SHA512 fd206129952baf8d16611d9e376089fc03f5832f237a8ffb7cb784179f226303fa464cd06034d4457bb52b49c9618fb44875c1c1f94ffd42b4d06ab44aeefec8 +DIST multipart-0.18.0.crate 62797 BLAKE2B 438abdd6041c3a52e836b7627bb0a490494b6a0c4ab47d27905480fcdde27e7c18497ef4cae550c14b8c4c34e661176ee640806cc427e3b2e570c38be31d868e SHA512 a34036e1c05c241f130ed30eb7a2d96c2590ea8c0cb7e6cf98c160ca0fc6e0f1227192b45d8166abd7221633c36c57718fdb0ccfa8ff4254d4eeb3abb5210704 +DIST native-tls-0.2.11.crate 29008 BLAKE2B 594511c364e639e309f32f37ae20ecfc5ddeeb39c3f7180c5f3f2cf304d8c323b977af933ffe70cce696a5a63e17c5fa7ddb119d46fc3db819a28e31a388640b SHA512 7e77959932f2859757f1aeb37b78fdd459b7b6fd02424f4b7399525b94c21d1f499a718775503b8f3dfe3b4b740e1cfbee77052a2ebd0994468addb3fa665e6c +DIST nom-7.1.3.crate 117570 BLAKE2B 5643b67990b7305e101b16b8cd27c447e162a7adc6d0dfac00920b0cb50fea98c9d4edca63c34f6845cba05f8d0acb407cf3045cf64a4cb28e53c8b6bc9090cf SHA512 1ffce08dde299bc0e0367ad59c7b6a83e23decfa11115ee076ab91ec53cdd9ef37e4c2103c96eff23a7b6b8b5c3f67c83ce1917928c7d4c6462083bdfa0c9cad +DIST normalize-line-endings-0.3.0.crate 5737 BLAKE2B 935b2d20ccd37ca7469641a37aa0ae9b6872715d6ee88d568d0ee16fb76416cb1a0c585cff861825de8cef11d864b1dc1b350911c28d64e071d8fb444bbdf740 SHA512 f8e2a6e333b0e8972febe8b9cf058c8d899c384fd177e0b6ef1c5f94e0fa18192963970cb1a2ba80e3135a8cca66cdae6796e4d84ac6b325bb369575bdfc6eea +DIST normpath-1.1.1.crate 19786 BLAKE2B 39c955c41283051e414f8576fdaa51f11f0ab5a23bfb7f6aaaac38fd9474912721c546810c02da335a9095fdd6d8e37ff2f5fad2aa93d93c21b4be76267088fa SHA512 05f1f498f571c57c2307d201d5fa15c72fd2f297b7854757107bb27684470d43a4d40137d31c735018dd2ba50c11f23dfd5e989909e809bdedcd7bbf018385ca +DIST nu-ansi-term-0.46.0.crate 24311 BLAKE2B d2e678e0eab5ad48534e686b1a4af344996d1b07a0fa40839072df3061bd7e5bc9341363403ea3ef8d19c7725ba3b7a8ed540c63e2209123b1b93f69418288b6 SHA512 b4f37786dc85e0596e2b7b261a5a9fe0265bf1651c39efb358dd649b926b12c3093f307b98bf0c4df3899f0a7cb1854f2596bd5c3e22fbbef42f912ab2eb5043 +DIST num-conv-0.1.0.crate 7444 BLAKE2B 4f5c4695006aa3ae77aaf5c55999a07d8ddfab294584fe10d73eb6abbb3f551846646156581599f966a28c74d80d3ac4373c49d2099991f7ed9edb56d36feec4 SHA512 7884c0c6599c66e40b9a79435e1bbcec60aa7e68b59686922dfab19ccbcac6a6e54f208cfb3d5a8a12e86e4dd67e09977d60b69ef6940e308a28256733f36100 +DIST number_prefix-0.4.0.crate 6922 BLAKE2B 81bd3b588c788e6865104e5ce87119b5e0c5a526042963d52cd582ff23c2f8c9f32b4c445ef0397fc402b6d047e031d8e2c67ac97e191bde22e17662eec3a554 SHA512 a43b668d7314218b86ca7451daa9dfef71f6c9f6616bc34c12d94ae6030f182bcca9da83905cb46f3d49d0aa81385a787e92e4f3ae239658067adc249f8174df +DIST once_cell-1.15.0.crate 31460 BLAKE2B ae4481883865abe6a684d63520fb2e91b64d6ccdd0374464200015640122bd68b8a769309773226c8a31d0119f450ee821a2bd35c346fd86adb4474ea7c28fcf SHA512 934a7c3631e9ca4fa78d9577b6672ca0b2f926a8d6c3be9542b906c5968033446f98f76ae6f368a1a5b92ab9064c31a57d74ab6d2097108029a7ea951541ff7e +DIST once_cell-1.18.0.crate 32969 BLAKE2B a08d5beee50a7add28bd9e50b18709e7b34574f0f55f80909d5efb7ac5917e5f30bdcf3fb43ddd0a4f420a427390c7ffe1cc1c7191a3a1d939bc6e3139e6eef7 SHA512 9328968afdf3535b2d9e0113d75afa725259d76994ef2e1948ad7efa4ec8a65bac7cfdc31b749d5cd55ad4e28d2e28ac57b871e3067b89182453c7e2413a13b8 +DIST once_cell-1.19.0.crate 33046 BLAKE2B c14b374eaf4ac0f60acc2e02f7bba270a0e8e0a6978d749cd3cb0ab3eb26907e4fbea70dd5132982f90290381ed18ff8a87fd530f1415fabffac864f157ea380 SHA512 4154876afd34a699ee650d1a8a1c5ee5a25f0ebd9388b8bef2564e33629fae68f113d7507488c68abbe7ea1acf9bbc41813cbbf3ef3e464e3f3b9cc7a51d870c +DIST oneshot-0.1.6.crate 32968 BLAKE2B d9b73310301282e4b84978678b8a260739cce581e6a2f758caf96d3eb3d01091a6e139eef01be360eabe535f54e91d54924e2bf737a0bc22a614c548f322f843 SHA512 708a0087ea2ad77add3ad3907263762ce1a279465be0a85564937930e70adb3b7ebd1d865f0613d42faade338e38d597bd08416e8ed97210bcd345268a55695b +DIST oneshot-uniffi-0.1.6.crate 31794 BLAKE2B d5cbb1ab31f541167692541d8f1f6c75243d5b39ff9c2357d25ca1da5d7eccc3fd2ff7ce4dbaf246e26c6741d2e78bba036388c7c1d63cf024d476737a9bd3ef SHA512 d87a9843546626ae3d0d06f347638b62b4dbd34ae3d1a9651353734d7dde120e474161f8e45bcbed2dc9c9e708cb38e9501d7e40ed62c39f48026009c20adfea +DIST openssl-0.10.60.crate 265736 BLAKE2B a5a2386470baa5bfecfd9bf32a9965babf1c222e6e35d8652846ac342f75dc6ff022d8344350adcbd42d3313cde3831664fa9e65affb8e3825d58d4a8f5b7418 SHA512 4341098b55136862b2206091e740801c165c42f30404e4224c9d5cf3e68b5b6b26f5c4c383495a4b5b6baef232fa698f80136b0c3e86dbc9d411d3bde0d59616 +DIST openssl-0.10.63.crate 270890 BLAKE2B 0571a214347f823c9079c1f6d204c62469235ced63cbfdb8494427aed8069f45bbb26b81d1edbddb3602c0bffd54d1ca96204aef8cb85aec041edf45d89889db SHA512 47baa5f2e34b622dff0cd475dbbf6772adf48abbcec5be1cbcafe2beb9060ae46a3d873896ee4b5d864da0b132f0efd956596c49f2afc650a44cff6af001aa56 +DIST openssl-macros-0.1.1.crate 5601 BLAKE2B 69dc1c1f3b7bc4f934cae0dce64c3efa501162e5279efd6af3b74f7a7716c04b6996b306b310f1c045cfa2eff2895314a47ecbb020a817e461c6d77d0bc11e92 SHA512 57e75c84f78fb83f884eeaedb0dd135ecb40192dad2facd908e6a575c9b65b38a2c93bca4630e09ea5a82c77d8bc8364cb2f5778cbfe9d8f484cafe3346b883c +DIST openssl-probe-0.1.5.crate 7227 BLAKE2B d1fd6a9498b3ab7f25b228f19043067604bf20790530fd0ab6fe3d4d3bc27f13e6e94d1e7ef49314c3663477d8916b8790b90427f74976143b54b95350895165 SHA512 7e560314150709a34520472698060c4f29689d4e608dc4dde146140aa690350d3603279c693367deeb0f21ab34ef61956143a3447827a2b7a3d578b9ccd6552c +DIST openssl-sys-0.9.96.crate 67743 BLAKE2B 0336ef48841d263c7c5883f0e2c3b7224c5561c521fc15d692b56fadac50681d18ecabbea8b0d5adcdad20f3d3ba60fa29950f04ed1ed35fa3b7b4816f556af8 SHA512 b5f0290fde2198e314b8e0d3fddfe0fd6d5ea88024cd1f2a70d99a0b78905568a82e63818cd58bae7f362d663e47202e6fba8cf4fc83354dc0253d78a9dafd76 +DIST openssl-sys-0.9.99.crate 68158 BLAKE2B 59995535bc24f0ca67ea204193aee4114f88538bbd74ade7c22bc2ea1b0d7e41a79118b6d22917bd1e305a43c16f8aea095c635d27a56fc0481a2baa3092dfa3 SHA512 b91197583135c22d34814e6382dc4ad4be9c3905c979addee8688dbc52ce627815e719b9d0b365195335d4d665eaa79a406f89e4c19cef73988938d51fe2f4ee +DIST option-ext-0.2.0.crate 7345 BLAKE2B cbfc03e7c960fe3023512a4ad816d657b4f54f8ecbde9f9c4df4c5fee3b36b68ab463c67ad650778279e01c7ffaa63a0dacbd0c080c8c3d15b1611de0e71f92d SHA512 f8539f97b01af97e0b80fc96556002251befa60f8ddd19613311e62f9dc9834d71c22f5d8e7c53c4925046e38cdcf834c3c28042a4da862d6f6a21ddff8d8e56 +DIST os_pipe-1.1.4.crate 11436 BLAKE2B 215f548a5b16854e156f785a1cc57ff16c241b50223c75159081017889cfe718d6dbdc6567dfc751d71eebda7476c95701c8ae88b1320a0cbba66a694b471d08 SHA512 8568008e30fdc47c1c89f7368654d26407fb6594cd89e2b85786c875d9dd99e77ed2bb84d281351072670e2dfe7a952d6251c6fb4d111ebe6a63cb34942b6aa3 +DIST os_pipe-1.1.5.crate 11430 BLAKE2B 45abc371ddd363d193817a339f9e1894ec6fd275b9c9d190283347bb023ec7686e3ca6a5f2bf09cd7ee6abb8843ae52410c203af2310bf3e35c280c5b9874ea5 SHA512 d862484e9a0594f31e45531fac9a892fe247c1003a9c365a28083c0b5132719fe6fcd7ed996716a4baddf1f8ec4857d62d05663d3fd7ecee5802005c55368048 +DIST overload-0.1.1.crate 24439 BLAKE2B acb2dfa6c6c22ea95cf58079f6ec56a2bb5e297a055ce717d40633b789b0d005be2bfd6616448cac61bd032e74aa6eed212f1677461907cea2f7f7cf536c157f SHA512 f79bc3321f45df5e3d0e5fa9c4e60524e4e28dd3729a09956766738adcf99ca42c187a01d48701ebe23d39aee00a19d4a07da798edc781b942e866b339613532 +DIST parking_lot-0.12.1.crate 40967 BLAKE2B 940a112a066e3cbd15e2f6df89bfff37e4ece2194118618a96fa14871813c91798f93181ab0f768d3e1f3d60805508f216724013afb7e3da95678d0d951a42d4 SHA512 07327d3b737a913508dffb66023766348ce7f9d555c224a099cabb05baefd16a28e15fec638e3a148a5169dbd980c4541b0f8820ae9d06dfe0704482838fbd5c +DIST parking_lot_core-0.9.3.crate 32256 BLAKE2B 79a1924a983b948a5c2b0c074452a7b2b61abda973d3bc8040d9153d34b378f0ee330e36aa813f49544319c479665d6328be71481f2e1e41bc94abb9bfbd12a0 SHA512 fa30db0fc73b268ab8395adb8bda35d12dc15363b247a95b7c4bb848ff9b8dbfb971a20f320b4feff3317d5b533c59b62152e4c652c1809a422c5671310b30df +DIST parking_lot_core-0.9.8.crate 32383 BLAKE2B 2f9666872894d1c85895437d1353f9e15be2bc8d004ffc8f0e5be95e9dd4b274797db3752eba1c0b5b6071c1b8a71e4857cae0b2aff1afdaa39e92e70be2e6fd SHA512 8d6dfdf661b0f7d0774cb9f61121f2daefd182ac8a2a0d24eab451febfbe1a664c815c163d34a7f3d15a54915a8e22e6c6cd10e89cb7d7598d48d81ad6a3c256 +DIST parking_lot_core-0.9.9.crate 32445 BLAKE2B 811d8de671bf6e0911cf0df7dcaee4fb03a3b223173a3bb8cee65a28724eeb7bac87f62aa7b1df5ea3fc93af3cee3ef30b83d06c6773d6b856a7e6fa5fa197ea SHA512 7f0df70f9f1ca8d3da0b9dcc96e49daf05d95c3a995289266b5333f68818d686d32b0c733dfe3a0f62da78fa45caa843a963923b2d0c80899c33413dc749c032 +DIST paste-1.0.14.crate 18157 BLAKE2B 35e8548611c51ee75f4d04926149e5e54870d7073d9b635d550a6fa0f85891f57f326bdbcff3dd8618cf40f8e08cf903ef87d9c034d5921d8b91e1db842cdd7c SHA512 3a793f0e5e773a7f7defc798a4c17ae9a40d715144632ea6cb0a8c785e14c4212046491df016bb9838281f8eaf327a79f01c1e2ac5f26785c028bc880faff9ee +DIST path-slash-0.2.1.crate 8821 BLAKE2B b3564d0f689ad1b943d132fd95adf2ff654b61f182082bd22f7b8f11dc9024cae8e1b9f3551c4424509db17aef899efd3df96a67e1cd588ffe0fe385c957b361 SHA512 c046707586f25f13d2f9fa452ea340198f6d2e6333ca3af806b9d2d1a61d46b033fffad60d1632ec16062fa79a3710d695b923b831a7db52602b728ed31fc3ab +DIST pep440_rs-0.3.12.crate 23943 BLAKE2B c2b19b4ebd4a6a5b05f35e95f6b748cfd992ae67487f775ac67d09ad2b2fa3ff17927f22d89d440e3d41906fccc05387ce0c93792ee6eb5fe1611b38892ecee1 SHA512 b405d0b2e87e18c65e8ed36d0eadd5b56d8161d8567fd1f7fd4cec6f276d2c362990571b7d069d31e80dd7cf4cff921274e82cb4211adba35a454ead0b2669d8 +DIST pep440_rs-0.5.0.crate 42582 BLAKE2B 667d172ec08237e40dbdf6e42f4ddf3b018a78e181ff50a0a240c7138f8d414a4390befa6cc7df41f489fad49703bb5e75b78e9be4d4d477b20e552ca8eaf896 SHA512 dccb69fcc8c85c3b02922964f24a0e2200e3b1649600c175d75fbf99d0a858b8d59a21d897429134199a6d2877163dcdbc1613e4eebaa174ccb26824b4458571 +DIST pep508_rs-0.2.3.crate 30088 BLAKE2B 93617fac6745084549505ba41106711e3d120688f59bb5bf22f3747a0fe9b9fffdaad18572160162f62c8e9f2ef4024303703bb3f4de11a6f79bbb2172d2bceb SHA512 9f18dd0b33f677ad512e97014ef9a8b4d785ff6dd412747ad627fe6abf3dcb8c9f04db578507025f5362a738fd6dc7b512d85bbda9c9f99eb553d4638d75a017 +DIST pep508_rs-0.4.2.crate 33741 BLAKE2B 4d80a7872300e364cd78d7d8f635e3bfc8b22113c9a3226b1467f8408e5960b68eb97cc87fe9c90e50dbd93e07fbfc567d5219ddceaa0e1c40aa47544d8a219b SHA512 4b5a437f4dadb391d9afcb7a9dfac786d0dadc9ee87cf9cbb68644243d000e21272839c3e42c0044138afea5c9d20233fe01a3166384b6a54324e03a3169faf1 +DIST percent-encoding-2.3.1.crate 10235 BLAKE2B cf8e2fd7b359a05b7bdaf731f9ae84c7fe6f468a53482eb2db7f93dfdaab64ac812b3664899db260055a93449462e6d219c695942fc5b030517b197b4df9b95f SHA512 5951ea8315e52cf3acfbaa023cb9e13a136b114c54a7da0bd44619ae24cd2159d4a96469d7572a2fdabd94e19513a033387117d7ca81d0eb409fb383e4acda44 +DIST pin-project-lite-0.2.13.crate 29141 BLAKE2B c434a336716c9cdd16ebc297fed393e9106ef167a693c4aa0b12c681e03141b8ba3cdf64c310916cb7d5cc43cbbfcaaeb39bb5fb1e8b3efb9e94a3f72af914eb SHA512 7f12595d751d315de6c0d380e2f501b74154661eb676987d2cab6fdc956091a68c9cac658df45dbff73615e982e6ae2ea138c09ebb708cd6c351f0d18dbbdbee +DIST pin-utils-0.1.0.crate 7580 BLAKE2B 457e1287202f16d1873b24bf4f1de1828300128c4ba3131758e64f9784d36d47365f22d85493c3a85d854f0d8dbb4c6cef3a0f5b064014dc03943e58b7ba9178 SHA512 828422b8440cc82ac6b0743e0112fa7540d437aed457564999092b1462cd7672cd6b1f0201b67075431aeedd3d9c5127468a3dd028744109944f7f023c82fd70 +DIST pkg-config-0.3.27.crate 18838 BLAKE2B 1295eb4f08751b3663cb2c7c2753f29bf2ccd80f4e5856909fe10b6f006c37fb9672c9518b9b416546469faa18821512673a66543c0bd1e848bddabc456d0a90 SHA512 41e9b8d4fce6b8244c2ac8566318a001b481bd42a182f1a832c81ce93c6a023e18af03aa3500b134c30195219d35080433bdba69b2594e9665081debfbb4533a +DIST pkg-config-0.3.29.crate 20563 BLAKE2B ed0559b0073890911fb47742743b2586123bf9e9b594aa0d5b2c419c6768cd37e25b546c21077ea6cc02823a679b302aeaaca6c7fcaf9aeec615dd08f53a1f6f SHA512 bac7dafc0e10bef40e427c1fc0271d1a26acb2f5b1cf7cc7a128f4d4f1f3110529e45057b71cea7b0f6ddff26945fe08962285ddeb22b54639e44a2e43af698f +DIST plain-0.2.3.crate 10664 BLAKE2B b0ea38fcf6d4f4e3ff91d572b5639f01eac4f19b2c451d27bca49d994a07c6f46118cd58a1b86b3d2a61b7ac9e17e8236f1cc98414738d8c86086d37e0fe4d35 SHA512 6909e4b4b4a0a49e6a226d7393b121ec04beb8a13b1652c23337eb09b3c2e5f202b53a7663dfe7828dcb32c3d18135b514e9a982967c188e127a63b6cbeda252 +DIST platform-info-2.0.2.crate 28443 BLAKE2B f6389f76c04954189a6ee38eca506659b7597b99ccf6c4eda8b9325318de52b40447ed5474062002afc7fdd8411c8a56b9e4a0b03843ed47d54ca9b37e96227c SHA512 06f36f3091baaa502d33322e5e77d4871781144ed4ca33a3097c9611cf78e2e91852b8be59b1869e2e441ba0f8a076d4f25bdab7235e3324247d1b5bf49967da +DIST portable-atomic-1.5.1.crate 140771 BLAKE2B 947153fd068bede928976294a3dae461cc8c463e45c8fab4e80e338e5383231ac76c369a9ed2f2b59c186cfd81f64a2215a3d206191f46e758c6ca5fb21ac570 SHA512 edd024fc752300be867aba01987d23b4b165c8fffd0d56771a0e91f1cacd2174951d855b8255c25ce5d7e4311d2ef7cff94ee04a508a6307519e184e01ac327f +DIST portable-atomic-1.6.0.crate 140689 BLAKE2B c91d06e04a87c9a207233d8a850859aa1f5cc43dda8aed34511c3fe9641c27412796539ed045a58e649d2a0c7d71100b6b2d78a0c662fc061fd961a652ae8722 SHA512 b27cf57655a2f1e2d6ea7b45d80b4f9920a836e462f132c50dc1e4d314e162444309de1baecf45dad2defc7a5b99759165e54da9fe759b24092f8cb8755c515c +DIST powerfmt-0.2.0.crate 15165 BLAKE2B a3e1ce63f5866f75526eeb749bec6607e42cb495bbb953082cde7e98e6aa429ecaa41889d98ff7ed4cf5031258b4f7e0553ff8fc435b3b6f8b4ef2b6d53d9b61 SHA512 0623f92e4d6ab284b3f6dae58220d79d9185df4a738999d68040c50d72fe0380d70358cb622f079c629bab53bb03c6e085e165d5bddfbeea84245864fed90029 +DIST ppv-lite86-0.2.17.crate 22242 BLAKE2B 48c4a31a3b555fa37072c4de083580bb769747c7668748541af472778b5b58c3e7ab2b5e178760f542f973774f09910bdd4058ae5fb9d6b10c103eb76cfd0d3d SHA512 539d916e7e5869d832045c1aa88aec519bd000227f9b01d4dd0bfc9ffb640d5f5eb21b05eba718174773c97192a655ad3cb31b53ceb914dd19179a6699b3583a +DIST pretty_assertions-1.4.0.crate 78846 BLAKE2B 68583c49f81ab0cf5b90f6de10ef3aae9b525288fec25f9d006f2eed0877c0fa742dad5f878fc78233b54c0cd32dda7ac1f7161bfb475288d8858e8e40aa9e1f SHA512 f76d38c787e91b3739272e3bebeb9763d312b85a43cda5e1311ba8d6b0e4da1ef25bd66208e772b1cf56a34553ee560482b5ad19c5290608b2aaf9c0d0f0e995 +DIST proc-macro2-1.0.46.crate 41954 BLAKE2B 3bdc274c8ada8bf1a84d4480b25e0348f4ec5bfacebb74da144a36d4dc0efeb341fa24525e7e8408c3589013a048563a46f1e094944afc1726e594534e2455fa SHA512 1c2ae8dc4bebeeaa4af02f8edce18b3d159109a1639d8e9f26be2b7023ade9d09824ee0f2a60ae034967d982158196826fdb989d23a4b3bc81188a9a63e18cb9 +DIST proc-macro2-1.0.66.crate 43575 BLAKE2B 9eb3e816b00fcf625c280ba14ad269f5893d0523473a24de07c21945f6f932fbd08efb3c339b35d903245510e3f065e1478439b024a325f2bb9f97bc7bcbb18d SHA512 85f5a762f9411142e5ac28144bd380f07f0633ed2e44d8a2545be9fb8f42abaca6b5d45631b4be83b8e8b9beca7438bc52f25615c3a410a3a1249474b1aca407 +DIST proc-macro2-1.0.69.crate 44271 BLAKE2B 9d1531a0b123e6238363d574bee03ad050454b65710b9800c12597f3a9ae2f9bf50c617da0472b7ac0b549afaca19c546ccd6519e648598500efda9c0db2ef6d SHA512 d197cbe9b6100c3193a01fd7dd6b4e49d440290012ababb5d9f139409f0afe816f213d67a03abeb1f3227228e0a1f2446d1dc0a2775363a15d1237c38b45d6a1 +DIST proc-macro2-1.0.70.crate 44343 BLAKE2B fff0dec06b21e391783cc136790238acb783780eaedcf14875a350e7ceb46fdc100c8b9e3f09fb7f4c2196c25d4c6b61e574c0dad762d94533b628faab68cf5c SHA512 ae9366856853f7d96caf7a7581843d36bfc7843f8683897b19ffc666c03b0b1eff502ddb18ca4c1c1a239a368f03f6cc258b0e2795f64b61c6a31404462eec5f +DIST proc-macro2-1.0.78.crate 47158 BLAKE2B c56a24fce3faca9e04db7965cab552d2a976c3764df0a84179b5a89d1230ab355c777a82b4c982e3945414f1f0478473a88821dd176c32d6de394d73a26adb9a SHA512 11956fe03a2e77a925cdff2c3c8bc8804dffab4fa1de963a128fa23f4189976fd2e2102bd346b92c33524beae320b71dadaa5213695a3ec638404196e14fa769 +DIST psm-0.1.21.crate 23126 BLAKE2B 5972b4bad729d3c8842d4d616b1a469fd59ac7cecac5dc5754f084b7f2c623f715f302a9132cd146f48f323982c837a63cddbabfdc97c73ba88ee60df3d036da SHA512 33e34bb30efa5ec700c135e11fe03447d56e6f0dbca5536fa8bf9ca2c605c65e2dfe0a2a79a0bbe08eb2d2a37e569e31def340e1187bc25060c2f0e6537e3e5b +DIST pyo3-0.19.0.crate 412659 BLAKE2B f8833d39c3c8318466ee5b9010cbdce1a20f844f15a257ae41c5d8c72f645e0c14e7e5ae0b50a8aebec60afd827cd23d5b5b4b70188531e6f5b89ef191066189 SHA512 9cef7f8a73cfea32661eaf8fd8d5af6ca180e3fd71ac956d9fbb96a1d194f238116e3ab31917b15359e7f6b0b3bc4587437463a4c61bca988f16657a64440919 +DIST pyo3-0.19.2.crate 418228 BLAKE2B ee018b33383fada78cd22643aea9231a8c8a2f19d1eb297f40eec9206c5220f322fff4c926d939a93a24ac6d231a207ebb25afcc0709191151c7ed9af7465efa SHA512 58698183e0f2f0507f8f765bf3e90185c933e78d62f0a9be65c4b1ce8eea19a98fe0341abe7c58cafdacb63a012ec417876dccb7be6facc1360fcb22796fcaf9 +DIST pyo3-0.20.0.crate 431766 BLAKE2B 104bc21ce2c6931753ca0c7b2d91693f454c964260ca3c4628a899fc8e7edbe4238db913ed7356f3beff154d88a60a17c0e252b655768e75483e1d9d9b86f40b SHA512 85d9533c75f905752c62f6a4898582ae48daf085e287b44949c47260301205a5f00477927877ce46300d2801d22fbc04a958c058a37eb28374c834fff27feca1 +DIST pyo3-0.20.2.crate 434326 BLAKE2B 3114fd6f3fb8ae7d1b35c9d2ac5ba6a49c5ac911ee3a5b941c5063263ca7cce47fa4b4f7ec34cbfe3083f3d1303fd7f061639fba833a04fedb9d5098f5784028 SHA512 cc5151a116179157046ec92677e5a72318b4cdb13a7d7e3bb83778739b5758040e5020f667dd83554a66b758581a08f5de05eb38e7b339813cec85e0712e6355 +DIST pyo3-build-config-0.18.3.crate 29137 BLAKE2B 5fa645b64f50a078f38cc10a27ed52bd7e7aadd8a069c05ec2963f0b7c869b94d29eddda97cc31d200cf749ab8e2cd9cd1ea00e75620287e9187745ae0e100a5 SHA512 7ccad5f245e84895e147389f05270f32d12f81aba46bcd0dc184b8d62af2ea579efc50383502efda40601c981c4dbcf911aa7d8192364caa2e177ad939062cdb +DIST pyo3-build-config-0.19.0.crate 29172 BLAKE2B 20904ad814ed9a22b801eb7b06851292d50f5716116a5b4a670e8c499878bf6d193525a4579b044ed413823c17ecd1ad0178baae1cab1fe3f431cc9a0f442576 SHA512 3105ce54bff87bef803f30b79d3ab2dbe440d68418f8cdc875f18ceb2bb0d06ed0923cf02af5f8293ca901f40b96c1b99a12a8a8e74813dcf70534d3aec2bfb7 +DIST pyo3-build-config-0.19.2.crate 29206 BLAKE2B 5b1cd80d643e448cf8f1d28a514333526061c178121b9a0dcb5bff6082f402ecfd166536d94d42065f6dc1f108a73f12bbb78eedf9ea053a6aa2e9c80ac00ddf SHA512 ccc73061ec1989258921c5b5800689170635fa5503d74a4ac458baef903dd31efa41995d238783f1e099ece1f66d0a0e95c4fcb4b772b9f653dbb20e838b4e28 +DIST pyo3-build-config-0.20.0.crate 29534 BLAKE2B eb1d5f75276533483c52c6fcae49b294d6d8edf504859dae18811c1ef695dc6d0a055f2a34bea305975e4c1492c312433d2dcb7753484f793376c62cd59c8e40 SHA512 a01d06ebeb4b9cfe6ff6731046101e9437498453ca5aa68ec53df3bfb2f34665a489f8072636c2da16c1e867f536032fd293f05a43561117fd131bde5fe5aac7 +DIST pyo3-build-config-0.20.2.crate 30029 BLAKE2B 846eb95d1417a658763417a2750dca1c55201105a3978d61b1db5e3962680ede188f8285dd7deec778ea9860d43e40513b88f5a54f0b1881b08416760bdbbedf SHA512 9dbc669ec69d38716c3909fa8f3b6c5be13c717b20bfd5dd11edab59b8eb35247d7996acd260fec88f92eb3e71248c86e9b40c1a700827889e2990bba20ecddf +DIST pyo3-ffi-0.18.3.crate 64474 BLAKE2B 32bedfb4c7d88e539e958af0dd48af311934a817282a01f860af7cd824fa1e3825c505463b78cda57541bea8ccbbedacdc0f67bef686e6775fab3787c26c6d2c SHA512 55240c7824ad1e5c69e05a31ec03e2064290c89c4c98f06c3ebc38c311a10b1690571c977a103790ddcc9623ac42fbf525fb028e910baedb9acafe39fd6e4a82 +DIST pyo3-ffi-0.19.0.crate 64481 BLAKE2B 1cad9db14e9c14e2aa24eab25439f9d8f7503b5f4c3e8bc9a58370e3d63261898ea678f75d276f9d2eedd5fa90a106f30e7362262619a81bead93bf45673e144 SHA512 9e01b15153c44f13c77c28719d3ab36bb859c4a15dc936af4af3e99f44946b4b4752faf3d2320391735b205ca6c055a43e7f5ac98ce53d281fdf536ce67dfbbe +DIST pyo3-ffi-0.19.2.crate 66500 BLAKE2B b4139fba31ef17017b6b60784e41ccda34931a072c2638af1eed8d02d7af701c46fe38b12772d2301cff41d10a433ff0f00a69d79d40233eadafe82abe585f8d SHA512 789191bca537998dd23d72dce4f185b84bbe700f4171c47de35b9bbca15a180ad214392b4f465cc1ecb0be955ebec1cf5a3c497815073be18035bd8bf8c51a32 +DIST pyo3-ffi-0.20.0.crate 64220 BLAKE2B dfe75b9459b4a564d1dd9f907166b76d00c5b50ba027db65d11540a7b993f3ef4e19e574135b538635ebb9c9eba66115c09198c7b6071b0b82fd94faccb1bb63 SHA512 a68f0b1380f2ac3d3034ac8b3788cd6573850137c6678694cbcc3e814b619510b9b21b11704c2e702d4eb7433d8b1d3a6dac663501b6db5197a409407802b714 +DIST pyo3-ffi-0.20.2.crate 64601 BLAKE2B cf1141ad34a13dcb46de0d1e15dda192ca41a7441bfc92a9295861876dcc690d1d5d6d39dafa51cd70c4627353efa91563eaefee8c39f655d12818003f9524da SHA512 ee6386b6fdb80689d104f9cd5229f02e1893d00a52be710bd36882c47305abbe24ef2f3cdef8200fddc0bb97e29001fa3a2fd9d3d2673ecd9a104a070420d01e +DIST pyo3-macros-0.19.0.crate 7177 BLAKE2B b677a41f83d7ef42add024a956cff36ce5546d677d1d3379d963be10d8de6ca3edd55165bd8965d2991788e6a12b2609c0bbdf90cdc7020faca436e5b1366eed SHA512 0591c822cb9e1b1756ad001356659a228276dbdc499e3a92290648835f01c33b0d64378710728877a730059777012c0ca9046daeef6a35a0d4a2bda4142ff6e9 +DIST pyo3-macros-0.19.2.crate 7173 BLAKE2B 8862f42a30929579b0b0bc2ba7f0b416518724480e197fa13288e49324e851f964183e1529b7f31bf5d4fe0ae194a412723b6b401100e66fba98bbcd9c283866 SHA512 852cc2792aa3d30d9ab8802a451be5617cae6536adced1bf0dde71704a3c7c1bfe862fba751b6d045249819a8ba5d87dfc50914d142a0b662f046498c06f8c2e +DIST pyo3-macros-0.20.0.crate 7678 BLAKE2B 03fdc0cc9c735086ca2d27e0bcd197e69538c3640ba7f87bc3d65907db374ac7283f61bdb67a1d45b66ce972072ddcb3b1daed4aeb9a66100d11bba6515cdc86 SHA512 79b61f55010dad60dda2c5061c9736bef3f6805f28db230726937340a5c40a3fcfb727a0db7779c3eb094ebd45492f7af4f40a3fcaef42f160989a8ef6174e7e +DIST pyo3-macros-0.20.2.crate 7925 BLAKE2B 00fc60becfa39bf452786d8a612247785f1737cc3e627700d0d144ab2efaadfb34ce8a8f46e932382a1ea99caebfe1946fbc517b5c26fadb0822ecaa8b2e9df0 SHA512 dd9ea9acda95dfc53689a4c26d8c2139f8a90a05ab06737037f19b8bccd5e52b0da5f297a29194b958f5f8b59cbb566b5f409b3f17a863eddf855ecb755d2719 +DIST pyo3-macros-backend-0.19.0.crate 49921 BLAKE2B fab6bcdd92a9f421117e68c77f7bcbd92dec5c2bfe33f2fada1e433bfa3c8fa0fb91c1ed7736bea77e91d60732186e2ac1dfd53dc7bf94ff9991c790f2417d9b SHA512 68c7ecd888c11631b20500f63b8bae3509dad2cbe0f8d628541e2e1e8b32e53150640dec894ac61e8e79218377346c461542946e1726ac92ba2d1fb6076a2d2a +DIST pyo3-macros-backend-0.19.2.crate 49962 BLAKE2B 9d8a032c2205f55d2431b6bbc40df153339e08479df3a8a65506ade7d1f3d17cfaf664cbd09eaec9acff3f5a248598e37427d0c5a531eaf527137803adf49834 SHA512 fd708e6fdbd54ef7c676bedc62070175bac6b8f7ae11231578196dbf552b163a8a2499a1266f786bb6bfb85517fe83610902137d59a5c42efcb1a27c4235a07e +DIST pyo3-macros-backend-0.20.0.crate 49383 BLAKE2B a239042abdfcf5ad38505b57bc6b858ba346bf8681e24acf2e433f53e4a40bf0b28928b434b96f596d12acbb602b14b7e1bbf4be1e5789e6d9c754368db00a1e SHA512 c823caba48b4a30aaf84c23f80934f0172f2c76a41b538b69ebc25afcb61611b54b8fbb4ab6cac1c7a78b4e6f9f909f22748a2cd279b508d3897b74b17021d56 +DIST pyo3-macros-backend-0.20.2.crate 49710 BLAKE2B 711b18984e61219555df4b62667f7f376951c6cb47e6dd947fc24618b923c4f4f790eb1aba1901abea4761632cdb58cfa81cce91f33586da3022e6c7d126bc9f SHA512 c6ca2a2cdae8630fba3f8e4122e81b60ef2ef0905ad2a3fbcfae134456d5ca9e73690b61590e391f3b9d82c24725809f18544c5dfa0b36ffdb1914844fe65d3a +DIST pyproject-toml-0.10.0.crate 6072 BLAKE2B 672d391f2510f9eae63431e8d3d09825f103672dacbb51c5997d6d83a229ea3a877a79adfec0924ea48cdf143e915a2ff308a5865f26826d459ee1e7f4796f6b SHA512 9e8bd5572b86b9e9a27aa67a7f6a7eedeb9c3f190512577872cbce4fb52450a3966a3576a695d3e54bbe1005f9f6f1be4d20db3af4b354e294af8e8d50b59095 +DIST pyproject-toml-0.8.1.crate 6047 BLAKE2B 11c220ea3f3a95011050942e0d23728dbb0dfb97f648827be3f6c8f85a92131612fb63d949ea6ef623266976035991f574c8c213def31bbfb5dbc14555bdc7e9 SHA512 e1980f5ee49351fb32e14ffaac3778792223d46420f3bf1bce0c7693551dad20e9434ee048442736b8ed357184437dc67963ba40e3acc28bc72107eb4c955834 +DIST python-pkginfo-0.6.0.crate 211883 BLAKE2B 3ab285b3b48961e0bd3bc746673c32217ed548dca163cb1c6ed7fbebb78a152c60eda0573d95add08f149d0279c7abfcc9e8eea2ac07444e7c1afa7926912dc7 SHA512 27c1e1a8176475a4a16517e02ad723669b0be60a7e1ccc38e0461c2143985098386e829a112e61c65f61b09c249dcd26a1b35228041c91e1face325d1d9f097f +DIST python3-dll-a-0.2.6.crate 56866 BLAKE2B e8a83d0e02c281d8a626565fe1cde1158726c9ff718afb0888298454762832d47117d7a1bfd4e3e471e82ce684cd8c36d8d7ee036b07748cbf09aa915c2e046f SHA512 f64be4ed3b217d6905df5787afb3d403580eed1bffc17a251e2c8eab61aee6a187460894b568140c4d38369e77fb51c4d49f6df9127786f344b460951df249d5 +DIST python3-dll-a-0.2.9.crate 66092 BLAKE2B 2c4baa31df7f55da8f1c6073525b4498bae7207ee38ef0eba4dbe58088609937a7d7b851c603ae62e5eb5361881e67a05d8c112d0a76aba5d99b13cdccd59d59 SHA512 1914d3ce67284f13551a4efefaeb9c11138fcca3d5082746282f64b7a36f732c6834766d981f27d862a61410eed09b3d281e0cab8cc1a46d424d04823ffaee35 +DIST quote-1.0.21.crate 28030 BLAKE2B 547344ba9272874f5fbb4bd27a69ef5be99823e10e1318afe71971b18f37e9c73d54168f16efb82c53a332e4874c80a82ea951fb2c85fad50cdfe783622b79fc SHA512 0728eb4df7e1f7c4d32ab08c901c2c969db8eb46b03bcec3e4956a4f6b360939d32abc6b6ebd7a31058e8e9b69c3d995a24cb484f93656f05b4ee963be1c74fc +DIST quote-1.0.32.crate 28037 BLAKE2B 7b243ac7929f3b2e1d91a51a2dc2b11dd29bc017be9db588c83bd137609e2f991a4f3ff8682c7c11c177153e517c4f818285cce3237f435aa43ad0126c4bab6d SHA512 13cae36920dcbd0ad1978be63f20b35b8424d02b4d9992032fa78c7770d61d1fa7ec1532a48793cab48e703236b7bee7843041253b9e83700903228078b4c025 +DIST quote-1.0.33.crate 28090 BLAKE2B 77c4b166f1200e1ee2ab94a5014acd334c1fe4b7d72851d73768d491c56c6779a0882a304c1f30c88732a6168351f0f786b10516ae537cff993892a749175848 SHA512 c1e76c3c017e8554eebe309f8167fd56fce931981c06798aa85a0cc6d64a9cba6ab103f5a1324e69c6f9ca5dc47a8e31ff2e847850542748697afcd265b5939c +DIST quote-1.0.35.crate 28136 BLAKE2B 81424245e1e2b94459df68bb3a9a866c6a364102b5e1d010ede9c5f8278f8406d7b651957d091c5914e936b494b0f6e9a6a1dd8b7d35cd7d7100f86dee4ec12e SHA512 f5314fb6af17cf36c228e1970c569c29ec248954a450a5f90ba9e2896d04f74904c9cec5a1f74325f2489295a94491eee4ce8fb461e22cd4b34e53f1f881efd2 +DIST quoted_printable-0.4.8.crate 7132 BLAKE2B 8258519be27b010f73fc1835bff917442963601f22cd026d09b8bd12c5c66e691a1e6857432f1b47aa5e044a4ef890d60725e6229f7ce54cbe450900625199e1 SHA512 e889b18c92e34aa6403cad66c6fca00de75cbbda1b41d30f14c27154d93961c973dc77991e36f869a6996117cb3bb08176a4c85f7f5e0a06fa09ab02e75a7460 +DIST quoted_printable-0.5.0.crate 7604 BLAKE2B 470c2668e1778805ca855f3c65ce4b9f35148bbf4b4556e846f04b0fc263dfe237f65f5d00d64472dcf384003ff077a13ff0c36a1ead38cf0e1073707add9bac SHA512 90e4d03590b678ae39a9be7157d1943e670e44df11a69ef5866b06d8eda772943370c66e41d1d25aaf877fb3a55ea3c20b990a243666ab934e168feb9a12442c +DIST rand-0.8.5.crate 87113 BLAKE2B 516f26bb2a969d0d79e957818133f35d2c0b4d9f1b401098ea23c5b80d27599e842b9298c0c5e46e2a6cb6953857bf8a9fb71ec9366c5ce6708cf17df14f179c SHA512 8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2 +DIST rand_chacha-0.3.1.crate 15251 BLAKE2B 645771b2c3e274f085e0837a20306b1d59f6e9032fba8eb38a6d1b30180d15e2f89ffa2a162bf6358da41e030098242d81e71dab4321980d0a4f6ddfc2974ce3 SHA512 8198c580b1b9b0429758ffa49cd8138fa3ce724f0dcf73c767ea7e55611d6a2e4c7cad9950896510def500ce4062b594386c947ac3d89425b4e5c9b04d0b8075 +DIST rand_core-0.6.4.crate 22666 BLAKE2B 8b6b66d50aade877f2779c006f8038db450f808c66d73d79efa66c4178dc03db06f12201bf0e7930181c4b0f4030c49b20cce6eb7839763cf2217cad9710789a SHA512 36c67eb845aa2ccca49d6d680f28d418229bbc5a050729e487fe6b9f9f384fdd7b8d67fc6508b90b79ffb3c26688e72feceb3ecae57d3d7f59338aeb62296f79 +DIST rayon-1.8.0.crate 170172 BLAKE2B e2df52c64435926a13f4f275c4f25a9694316aeb02b73856c600a1a813686ceb20828676d8272393d1aec18eac4f05bfcdc5ef02ff1e19245c547c0313a2a03c SHA512 ab1cef238530d81c255b6631ecfed9cc4f3f8d7cb6a74701d29c1dcb022cc5b859db1d246cf8247d47702fdadcedfe64a6749e24cf6c7258e8c9411af7e4524a +DIST rayon-1.8.1.crate 170448 BLAKE2B 982f7ba7d6a43956e6f438921fea2e40d3b398f4f72a4c89f55657aba6aa0d99912a7240b1c32c1dadafa9852adf440e3153a3f0cc56f6582867fa2794bb5144 SHA512 a83304be8334f5aa1c63468ddc749d8e8124c6947f1472320ba0bd4351c9ae582dba31ff369e9efdafdab439571fbf91b497c2370ec15406cfa810f5161cfb32 +DIST rayon-core-1.12.0.crate 70081 BLAKE2B ef1bb1d430776b0ad49aa523cfe83bb0aa3a381b2e571db74cb8de04bbff884b8c269de31d7afbfd609118c445bf079afd2d4920842c8a8b312d329e4675cfc0 SHA512 588fa479c499e1620e25c5818996f0376d3bf526272af6c50a17ca0ccf0f8f67b03a3a665938575a86a8edc1f101a37ab01133b27f904eb5c291bbfc581135b2 +DIST rayon-core-1.12.1.crate 70701 BLAKE2B a32eb9ae9a71b4f0881f7bfd5375aa7db5681f20f7e0b25e6ecb3161f2aad36b93026c1691d02bf298a48ea07ec9475a237fba457ed0b0b8624aebab2b4988df SHA512 33d0297b682f131c50e1eabc3be583211a5abe790301cbca91bf510e43d6714b7564ca39fab7c4bf6f02aa0df6bb394f386a61320f21ddb6bd7aea1372b5e99e +DIST redox_syscall-0.2.16.crate 24012 BLAKE2B 9497a52044458b1435ea16e86ee072e379b6b11ee31602ea72d6b6072a4a99426f409c2e58108a4e9c36dc193fa49c83951e71f4fd4e158eafff18c594dc01ad SHA512 63b5d876baaf99f5cf737679bc6ac7a9e3d8a41aa93f5c59416ce7e3841e2513bff678773553cfe62fb452707f82acc384ea63aec932a31bf94679cd1caddd27 +DIST redox_syscall-0.3.5.crate 23404 BLAKE2B 85aa4299d9816666bf576f523da5cdeae87b3c8fbb2af103e82258d23f73303c068a4b6c3ef4117ad67958cb31e41f836a9f59f2ce1bc52c23605e34399afcf1 SHA512 16f8f4766932bb54e4740cfdb4f0802f76246c0bf88c1d76c69c115949b124b625d8c3b85d8947073c2e9544f425aa16c10f71fabe3c03d29e424c47fe4ccdde +DIST redox_syscall-0.4.1.crate 24858 BLAKE2B c3301137a0b84e03b09d28dfa377ab3bea74d574a08cee21d35713b278d8b5b30ca2a1d73a0981baeb4644cbb88c86c8eb15ab3bb2692e38b93e6b35fab4e0da SHA512 073ed9d96090cf46eab9877742277a013c62d8da86d9caf2310b4fa868af306511936553579e01309f27067d344226cc8dc5e3aef01d9b900da2febd33848f8d +DIST redox_users-0.4.4.crate 15438 BLAKE2B 5f44e9ef20f1a6c8b22239838f8f6a6648dbebd5b4386b3a2c417e39add8c4a0dc32e4369b8bb4e0ea17678140f596b9bc981b1d56f06de6a38a503600420481 SHA512 7c208116d1171b1f52f22aedcf8ad00076a3d1f062f4018f4a9f5fb2c38d7ed83258589062d1559f64e43f3e2a9ddf789799f57cf87a49ad8a37463ea09aa269 +DIST regex-1.10.2.crate 252839 BLAKE2B 4be7bede72d41634c52eea25566fb13337a84a055aae6fb73d3b18ab9168085ed04ffbfd5b6f87c2f85c9922893b9c9a253a8c874eae9185b2100850443b1517 SHA512 e594f70cc540586e4039e7b905ede9e507757b531f22a94aae185e47732ae0d54bceb2c6aceb815819a9652c01ccf697798d372631f2f864c04ca2eec59759d3 +DIST regex-1.10.3.crate 253101 BLAKE2B 390ebb00bf5430048412883b672d80737e783fd36f40895343cb38ef2e26e2713418c2fb4d66792bfd3be4c990b4518ba120de229a72cbeb7fd5c2af325fbcaf SHA512 d090898465013b0975a6de87fbdcdf76b4896578056f4da83424bd5e7832547a3d8ace643c379c4f14700a0a88dc95950a38645508d1675306c377879a90cf5d +DIST regex-1.9.4.crate 253112 BLAKE2B 434a56ab97d988d0121407f4b49825807c639cbd9c498249da9fdd186a40340157adfeadfb8b0f442fbd63968f4c9fb36c487d9472cacacd1fdba9c357bb9218 SHA512 4c7c478c74dd6a470ff89320a6944ea301967543a5ab281341cb4c8abf1dbbf909f329e73082ff5157db8108eb61b7a1a8b1e88555f848a876bcc5072d23e894 +DIST regex-automata-0.1.10.crate 114533 BLAKE2B 0e357229f6825f14339b1d7c40730b83e62bba12115d01ed20313320766e769a653a2fcd2c9d19af51a82c38e9e42c1a31d005e1f44f5b6fbb3ead7c9c74027f SHA512 56d64da361afce82c6cb49e70b99ce1fca3e1969c54bba5f9971db135f8544c65f49feb8827789947b3d1dcefc9c49a7a434a7ffe0d09c5900345a1733723c5f +DIST regex-automata-0.3.7.crate 607421 BLAKE2B ed040e37e24979118edfe37ddd25443986cab4ab96e6391f9a6f70c6ac308678d5773a14bc2d10e809d7bd26d2725bc45d01493efaaef7e6038152de6fc7fc08 SHA512 967f5d0b452ba782b7e5edcb3e7f1e730407cd65f072eecf9d28d1e4c2cec9954a891a3fb4d69310d299a287a5c6afd22f71f7403dc65e07b7be207a2eac83d9 +DIST regex-automata-0.4.3.crate 617011 BLAKE2B e685724eb037411c1a73d6d355c76e9e32c40f1c9029acaf86477796d3f5ad092b0c5619f4df2fc1ce34243f2ad8af147aa31f83a435e5b5adf55b4c9c8a9359 SHA512 4fc82fe3556f829956c3172447589555ef286fd66ee9a445cbdcdbe57970655e35b6eb0895ba02c344d826609257e0c95d3f7f51858aa260103bed7b08d8c1a8 +DIST regex-automata-0.4.5.crate 617406 BLAKE2B 21826731ed5439a12cdda5a1ef217dc3239a0884d038170855985bf830f2782bdf4dbfd1b1a8812812db3a2399dadf8c173e75db635dfabc97382fda0561bba3 SHA512 0e9681d5c4529d49ff2555b7b73cf234b1f321a7fc634beccdf76c2bce5094e8501403e8caee2b3a16ac299cbe4701d891f1efa380b54f9dc2d92bbacd4de611 +DIST regex-syntax-0.6.29.crate 299752 BLAKE2B 2408ebfe5f0dd6578c33f18e8ea9a0a7a84388420c5b67adcaedde477f3f67fb3e39ba9fab1f6892c7ae7fff754c4aca51314601529cabc6a8fc43af38a11f88 SHA512 28a58950d15df1f0ac4ff4185c05b535e8f5bf0b75f79fad24e40e17a02570d1c9bd9cfc919eed8756a1069bc489c5fdccfd04f6b8266c83e3412b7b4bdc262e +DIST regex-syntax-0.7.5.crate 343366 BLAKE2B af07596e45e3525ffd253d6070ddad08dffc8f0409ea14843a135646da8b37a7a568c12ede809d9fa47eec2329f68da7a3b3c0e0cabfa200de64affe6ecefee3 SHA512 6388dbf68c8c86d8a5bd8cfb13a86e9ab2da1a339fd607c1a16848f85dd21c85d744d694c7b918954ea27eeefc90b589926c9da464343fb78ab639a5e2925efd +DIST regex-syntax-0.8.2.crate 347228 BLAKE2B 211fd1c35ad0f28874d4b4d276e0fb0a27e5a1608f2f16ba2333641b154624e378419daf8d1c955f21ff5f40f6d49c89569b7e11ea5649850846d0fe447a675c SHA512 301dde555f300298f2594490ccd8b92033e4917fe9b8671b8a97db6c827793c73969be85a92999964dcaf3177edda51abeb576811ad6cab9772964dc0a77e728 +DIST rfc2047-decoder-0.2.2.crate 12045 BLAKE2B c6b43d386cacfec23859ac04f276348efed831028f0454668c5701f79c8f0d6af43b529a9054138ba609a76181bf96583781653b6220e59a1d33e707b8972e93 SHA512 e81b276a7be47962a2591e7c39447d42b0ef52443f6473ccb18d8430b506f087358dca8fcf70daa2e9005d311a7d233e2dcadcf12799e9d6dd9e6da5d1dc559d +DIST ring-0.17.6.crate 4146892 BLAKE2B b1e608fd4b60d2e936c4df318215f7b53246557575535664436ba9857af33a730e9de5d69789d74ec1f5eb9a99b371a13043a2b42a596bb7257d79c8bed394b1 SHA512 863f7cedaa6f6ae6e2c384e6bdfe91e28db2bdde78f3650ccbd7e41654efc38f1f742f4842a6d52b608706e71111114943139294773a1d687911eb25522228b4 +DIST ring-0.17.7.crate 4146482 BLAKE2B e08a879db4b3c8577bf20d79ba9dcc9a6dc906fa65005334be4f79b040200cda506ca5114aa0de12c309e483694f4a7ee9bf44efdeedbe12ac82edf4afdd91c9 SHA512 1b75cdcf51ebaa8684410e753e1766b88f95c27559baf88601db2cb267340fa03d7e4db38a2a91632993238be1913261cd116e0e8d8b541c3c8a6ca811d19b36 +DIST rustc_version-0.4.0.crate 12175 BLAKE2B 6fda2ce03eab45d7193fa0d70175cc7ffb56b7be85fb1314092bdcfd3948ea145420569ace3a47218a4a2a6e44a818862cea6dd8cfb945475496f63b591c29da SHA512 f66da7c6efe431db06cd01180d84ba67fcd38f8cd6ef693762957c00ccc2211f23c08079d7f184776e08f28d2d6ca3bdb5f5016f7de245c6193d4722891ba1db +DIST rustix-0.37.27.crate 324534 BLAKE2B 65fc8317c5aa86236b2099104b6841a7d35d4567977218f5e59a85d199aee7d6b9f0278083d93f575b31d77ef8685576b7cba06ce8da6e96a164af30c854ace3 SHA512 e1c648cf11379509b732b9e9ed88ebd36006d8e73755528a09aed4f46df08e23a705696c5e6ff7ea0e4382513edb487f9859a8f1673150d60d70c698216fec3e +DIST rustix-0.38.21.crate 358962 BLAKE2B b3e4915385aaa1783e0024caee2c454d9ce66542ffdb9ab0f0ef02f07b6d583a49b29b25a604832903f7909a0362bcd2260958cfe3fe045af4df2ea5c62c1da8 SHA512 f3b147706e1befb9d743bb57c7f8dc0a1ca8f244ed98069dfc757ee9d7281f097531bf7d1028d21ac798ee27bfb07b2ea6ac395dd0bc6caef4647fac88669833 +DIST rustix-0.38.32.crate 376999 BLAKE2B 681ea50f5405b3a749a26a481995d3a85800378067734bb857e32e5d3764687b0da4b3749d227174440e432b374ae9ada154a8288e4353ca2ff1b851698477f4 SHA512 8f028b4df785aa78fc798f3e053d0a4fb9b3c552a47f66f52f1666f4c1324441be6581ed643c4ef0f56d92e1a078c6d3b45be183fc3df0ed1fc89de0d610cad6 +DIST rustls-0.21.9.crate 283537 BLAKE2B 38db2b38f33223591571af2829017b64c1f319d03295281773a70c4419f1072cb4651e0d4969eb19be467fe6f09039eb0ede2b315b4cb047f0dd3ecf9352f8b1 SHA512 b2be86d232ee32855872bf08d17b325c91b90ef7557154cb9042b072060ef2183e3d106420fa20d3887d0981c810094fe801c66aad407d1bd735b1b443625069 +DIST rustls-0.22.2.crate 332080 BLAKE2B e384541cb737c17af63b494b13533256ac15692124e64db7c3939e61c1097b5ee9ca96ab3e2336500d2554c9fcd8244e76a4f72d05e0791e16432f37ff8cdf39 SHA512 c25f71a3291420ccc33ad21f2495296d092f7d01365f1ce27c71343d9fb5f50c45024d84fdd25791d7ac9aa0dd53d6b7e25f31f35f9a7e823fac8117560ea6c1 +DIST rustls-pemfile-2.0.0.crate 23799 BLAKE2B a2bf833c75ca986ce95dd1adbf42e4741411342c7b479c87afde6287d4f62002a0a6c2489f1a62a8d31f838d2966db3b6d0dc56a534c71f266d8496fe3015c24 SHA512 b96143a5861dfe71f6f2d3ffb4cc63e057a2e6ae8e72cdc5d59fd7b7f55ef58e4e025bd9600b3752a1bdd97e2c7ba1166400712f1c2ba787cbf64b2a57af3e1e +DIST rustls-pemfile-2.1.0.crate 24757 BLAKE2B f356e6b29ae360ad55a7d70e78d053982762f190b88fd569cf2d0e9481537ecaf01afd5a1c40a3a840eb0e2a49fca8665c68eb931229afcb39430d7096210b16 SHA512 0a4ba2f275b715bcb13f9afe7c24aba58b8f283cc7fb683c1c338c02eee3aa80aaf0c8133d6f469b1aa2c8c48e0ff616fa4bd1e6d527f99ad984f2facd38fd30 +DIST rustls-pki-types-1.0.0.crate 20933 BLAKE2B 2d9a01cbf9639f9c33db410520f561f323c05229e839f6ccb886c9e9bd6691d86e9016457631fa86555703c6191939f53ee27cb29aa5cdd7ea7aaf991c48f3fb SHA512 6be24b8b0cefdce0bf67d904464990aed1cae4572e3a02b4c4d6e7c4dc0e423a453fedbbf45c7edc1aa55a355d2fe3e2ac80cef8dfbd462c27242fac49763901 +DIST rustls-pki-types-1.3.1.crate 21637 BLAKE2B 7734df5facdf21120d0dba9d6e2c0e30ac36d4368048e89639d53e68d6cb72a03cab08dc64e443f6d5b43c3f25020016bb2010ec8d20c329fb60d6cd93c9134b SHA512 741cf0def113336865320aecde54a56cd5bbc7f3aad6e71dd209b4e38b642f42d0244b6fabf03a55467aa42fc3d1582bfa1fd5fda6402ae2ca11191f21158939 +DIST rustls-webpki-0.101.7.crate 168808 BLAKE2B ab7177449be359e17f1f4553193e96e71b8e26e1298a0937af658b1a6f9485f051183d1bf8262d52430ea4c3b96263d1fd903c7a5f046bfe5f87b6b97ebb0672 SHA512 680e3d52f699c9d6200e2e738a4245a5114fc7122546c07d3f15f1e6741a52275061b3e016c2240f1dc3eb9f701f7346193bd82e827274fb73b8e9e0d5af4e68 +DIST rustls-webpki-0.102.1.crate 196873 BLAKE2B bc0c573369bfca4ddbf3a8f8cd7f62cad3e4f9bd225a4221355697e82f913b11078417167575204523068da1e1b3543e028969d524851dfea31c0a1da8576d0e SHA512 cee1d6b0251bbc554607415142d1cac78e978b6005d375394e8cb09016cf6f14da5e08fca1a8f19f0add505a1129ef81f37ba14f86eb1ff78823290873a9423e +DIST rustversion-1.0.14.crate 17261 BLAKE2B db30d01914059a893bdb4c448ed0bf04852085c2d948bfbed8819a1d2317c34133cf609abdd806ad628b86974a9c1ab9d09f79743cb8e13257ef32cd444f49c6 SHA512 466d753c28c4899ab3da3e9f3366f7ecc435d484f51e0c07acfa5f3367af0de27ea3bc75efda22159b4990c976b1466a27e7c31c834c72a87d8234318357454b +DIST ryu-1.0.15.crate 46906 BLAKE2B 6d6949e43aaa27fba0ec6002fa11ba859af8d867f87c90d88413267186abbf6302b817985bca3d577ab3fab2e319e11756f144473a16330dfd8fc7b604cdc4b3 SHA512 4655b5647f919082a9b84b889539ae7fb23a1201057cf280efe79c58cb5f040864efb7812cda5021bf6d34838a15d173ac8bdb0fb9fa2dba85173d3efa5a826b +DIST ryu-1.0.16.crate 47351 BLAKE2B 13c72ec8aa608f6c53cf27c95d06b90839c5bec5e54b0441e9c4f779af3dece30d01a2276c717a733f92406a5a02b09c045b2b5f92714fe492d7263b6c6808e6 SHA512 89e3e18346ae6e4035787766f286a6eb62f5294e39ad902cc29e95c53781c4e5dd629f567f22ecc7e9fe9d1c273323da9b867aadc9cd8a066727c58330b51b10 +DIST same-file-1.0.6.crate 10183 BLAKE2B a320c8343e0b38078ba81c4f0159d886bf47764c74efe0d7cd2b3218426e8341b51e523c00a9e5fbc2ee1057618296bd70b576c68751bd55d6ddb352defaca15 SHA512 3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c +DIST schannel-0.1.22.crate 41642 BLAKE2B ccb512f6c6765e5245dcee607b7886411710aa89d317cbaed2f511f74a927a0083042653e070c9d4b976ec83a74f3f37218f3ecb621781ee367b774596227f68 SHA512 6ec962cbd25f25dcee5e31b5012e61d38b97a7e8651a5439ab4cbc8ab33a0e2ce04fa22e06a82ef8750001c6659937ffd8dccb0cbd6971f68b0c354d0075aaa0 +DIST schannel-0.1.23.crate 41667 BLAKE2B 3f34ecf4cc519f5302f0ab5207907a275c68e6fcbb47630aec4ed5d5f1a1cc7475f6d7a8c22361e9878002f9f54314c1f630ab0c1f77ea309714bdb7ada6c9af SHA512 dfce25e3b8bc09d8dd1fce2783fe02ec83f74697cb24aa212ef9369a628685ba488f821cb3e5f863798e0e59995038c8d748f74b89f7929eb8cfd804d5066b84 +DIST scoped-tls-1.0.1.crate 8202 BLAKE2B 20be49f0546691bcff3f0fc257345e432e200836a60b297ff3fe698699ef6a2fe8a5dc6977902a08f7dc63c578aa27607dae0f1889b849c257c59c48a458e1ed SHA512 342f43d53edd33ea3e2197faf5dce37bfbeb0b20b6f0febad4dc6244c3185df127b2c10488e95561260a0ef968f32707460f2d0d23667cebece19b167c0a0c25 +DIST scopeguard-1.1.0.crate 11470 BLAKE2B f774eb90b7d3ffb2efba47518e9d1dead4017ab4b38a4bd74914daa84a5af4bf9eb63da0496e3924499d79cd0439c37447aeda4a21226f95645bddcd6becfabe SHA512 368fa5726df8f42b599993681579a9ffd0196480ee3cd0f9f671e8493f3bedd1e1779bdf2beb329e77e0005fa09b816e3385f309490c0f2781568db275d4d17d +DIST scopeguard-1.2.0.crate 11619 BLAKE2B 8b7e9ed6cefef9ee55407fb9690d57a2a98bb93e5105aeebdb475a52485e9e185255249e1dce8f83cd80534e7402d485aac3efa7e8493b13135de27550cd4bc4 SHA512 6247719a15fe1e4e2d179127b9a934bd2f99367724f41175ed9522f58824b6bc69b35002eae66b35880375ff61d77ac43ddaa78cbde7160a35183a1da32d3fbb +DIST scroll-0.11.0.crate 27354 BLAKE2B 21c885468642a77d6871ccf2bb748972f33c8abd504b2c0232bad9ec21228c3ecc9bc267b44898fc1dc5ab3ec494a8c6e01dfc5bee0dbe93117231de9f056b37 SHA512 84a9b1eb8a10c2bb14b718984ebdbac4a02620a65d6ced24f5346a762d92cc22a69fd204de1ed97044076d098a5ff9b7e20f7f00deca2b1302eb0910934265af +DIST scroll-0.12.0.crate 24145 BLAKE2B 93f070ad4d0656b6cbbbca78d27269e8fd5895c515bcfd51152bf5ce2756d43ff0bf13dd63201f4f1207feb993bfa853c9567a298a040369dc6be91324570deb SHA512 475a9b3f09d4164a7192c9d2fbc209354b9442e669c3cb318bd3f31d1a407aa328543bfe315c12ddd962bf8518ac378476d6b5677ecea170e6d507c70c4ca935 +DIST scroll_derive-0.11.1.crate 4802 BLAKE2B 0d0a7cd3e76bd86c192578091a7d04f0871eda73ffacabc73a45132d49cf4f6de3e4f0a384910ba9b7fe10d26efe40243db1fd03ddb10229e9d3c8114d027e43 SHA512 731bc93c5dd10b9a40d0f5cce5233ed7df3cba386b5d6f769a63abafbb4a856a9222b60f44a5c8a3565711ccf0240710a64a620f257ec836516f8c65583ffae9 +DIST scroll_derive-0.12.0.crate 4693 BLAKE2B 957aa96820cf40ea49562dbc12a419c7b8b06bd94a759aa5494f4ea4fa08a5f154a7dba8acc3d8bd41c1a2f259bfdd2d3f4b4dfd3dabfc30fffa021b4aee4930 SHA512 db2ede0f6d16783915f5f155174fc0cb700cd054a0ec54fddeb899f74da4dc2ad5acd6f0784701f93a95a42cb04c82e7a7de9680ba0fdaf4dbc51a2358610bc2 +DIST sct-0.7.1.crate 27501 BLAKE2B 12f63e62f49a0ed0c5a62c1c9b42a83c1df43401ed1de85f993167d8fc52733908e58ea1fe76cd7ff6128d4d6046d7c0335434672ed1865c8ddb1b3fbaecb590 SHA512 6030295b3b11411f5a7e518db1066282bf11a279c27414c5e959cd430e9fcbb7358e5d69bcc68c8bf696d4c1d9579ed7218b7f9dfbb61de2271c4c3d3316fb7e +DIST security-framework-2.9.2.crate 79295 BLAKE2B 96be139f2d2b9bc2fec7805c9e90f19f68fb6cf3f09a879f1d5952b502951900fd6889451c6866e53394859a0f8a842b4a674c4bfa82cd71f48195c0af365475 SHA512 fdc58c1c12ff849af3acf34208411caee50f30b9d55e20ef9d3922ee37664c606abcf90c4b415e5c22498dff2116fe2b2f374a0bd382c837ae7d281cd1a0a54a +DIST security-framework-sys-2.9.1.crate 18284 BLAKE2B f1484b6b691f3616192ab363c81eb3d6279ad0bae6bb7fbc4eadfd9fc6b6bcd5ce42fb8edab1eb8934f40a1d42714eeb8ca3616871e8f80c90318834901e8ca6 SHA512 3118d1e982d94c5fc6e8ad6270ba398da98a042c7a2060eafb3b78a54491091c46529bec30d4f871744431f01b828ba2a795f695cd20d008441839f3c4350462 +DIST semver-1.0.18.crate 29703 BLAKE2B b1867f552ac87968d895c5e49123bcce0f8aa0ad384e421e5ac88bd04ae203ed6b731d5c77fb8488ec6601f1f02a8f2a207a9d21f1cc66d433032628f5d7beda SHA512 698dcd37b354cfd6ee452dce02d16051f23088ce53f0b4d099e1e4ad0f9350996f0b9b2e1c3ac7d5ed258accd92773266892e945fcae28055d4671c7ae5aac02 +DIST semver-1.0.20.crate 30451 BLAKE2B 7a08bd65749e99d0a881ef315f611f9f02215991aafb317294925e0b88b125acf33e713a45113d229646401520fba22c6f6527015c12b9859d7a65d126de647b SHA512 35a55f1d1e4dc8674d48053da36b7152b5e3bfeb72eebf7d307c491b02d77e6bd4552212551be29e2a2c3951afde292c2614829e668d9382fec0f258dc6484fe +DIST semver-1.0.22.crate 30446 BLAKE2B b77a951d959a3685b0373c80b9991a8567f8926d093b23b7b8fab48595b5d565acf7408fbfc8f4d58331f39e316a8068885d28bcd70c1476d1cda436a2dd88b2 SHA512 7dcf9b6a02650d71d6c9ab3c29e44fdef95af296208f26aa7be6fd6e16773e5e5e66418c303a0589d1165df6dbfd46ad6ebf9eb5b3adab25a51f340947b2d949 +DIST serde-1.0.182.crate 77171 BLAKE2B 54e3f0bb182cb1d9389d176ce504d6a2720b3868df0bd810e9eb1e730efe47c0f2035fd0b5c021da2d476d005206e3a44be1813477516c872844ecc00752cb89 SHA512 94a0f0e2eab1820d398647f79ce060d23112ff256722d395252d4225c5bd7bcccd79f944e761241df4e862c44ff94ffc3cfab160733f301545e4ea2cae7fd967 +DIST serde-1.0.183.crate 77210 BLAKE2B 280e3d253a29b664b4e2d17f41397b17fe22af64417facca42d6ca0c839f1def745380a5402d7a87345bb16f4fdacf9a8c01966579b8c08fb06c05f097a87e68 SHA512 3a27efdff92cb1f6b50449a761efde781af91584b8410fbf5ce37b20005e7d46dc4c750fd1730e15468ea22aac7799421c4e60c74243c65ef7916d3cbadd0ef8 +DIST serde-1.0.193.crate 76863 BLAKE2B 163097e85b5542451896d7381607aa297e3b0342a2641887a01689b13122c6c1ca566fcb7f32f51bb0ecc861aed014f1467edfe21338223d5361555f870425a3 SHA512 82259ca302f42116ecffca3c88bc1212785ce5430f9d29390a9041d4e5943c13b13de119fde644a583960102c4b6e850a16f962d36dc76ac69fc2297ed65a506 +DIST serde-1.0.197.crate 77087 BLAKE2B 4a4e04ededf5fefaabfcc4e17457db823239e8eeee7631a905ed47800ca10d26a93632e3a9d1b784b83f84168d0d649cfa2e6f5f1e68ab15a68e837cd5b6c699 SHA512 69e42825fce6a0a5d109979785daceacfd6afc5641e202fe83da32e2b1f968416557cce97fa014839e873e65f85c27494c8f8e20e6e9e4fbedf20d0291880410 +DIST serde_derive-1.0.182.crate 376750 BLAKE2B 56bff75add8bdcdc7d887eab1d4b0d7d8016a8e6069850e11b07319590aa42bc2fbd57ce69fc4866d62c56768ba236a0642dcae24efa67e2e67be8f9bb2161f5 SHA512 c523b31d92597dc2d80ff0efe491f78fc45663db1f5a86769f8e4d90738ee67c1d7a0f09ae8bd0a9cac2c59c88fe4373bb5e5285ed7227ed983a47aa0f0e6552 +DIST serde_derive-1.0.183.crate 377265 BLAKE2B 041dff0dd5822b3be992cc65c8d789c86f8dda3a42ac77dc1a6c44cad4412c8c9fbb02f7572cc1ec4e4ca731d5f57a765d30f9357827ecf8210ae7f54c26d8f7 SHA512 c19cd2c9665b88b70a12b972c5b30d9ac6c604c77578bda5d7c6c5dbe01f097c1d6d165f1d73c204768427042b7521f43e40ee295c173e685c9ab1b4c23c8fcb +DIST serde_derive-1.0.193.crate 55692 BLAKE2B eeb2a2fbcd0daf5fee1bd6a4f584fed330db58cbd786073311d6a94308c63dfc6b7c2dfbc4b8980064ed66509f0127525b79d99aa96ca0134226fe21715999bb SHA512 05efb144aeee293a0e7dc7540106eb8c4920b2d8dfc25771d73afa8ffcba330104643430a6e396ea2adabbed4ccb23591251479b75449b9c8322799f91d38c41 +DIST serde_derive-1.0.197.crate 55771 BLAKE2B 73708908b6d1e104af4c63b498bd25c5a728e07e22afdf92f15754c0f17636efe44c0560c1f0df1b9a30708e8e8894a62f1ea57c234b6dd861cb9c8dc044eb4b SHA512 669376e248b76a5ee8b9c93fd9fe6d35372e7267fbabc14730539ef28a94e405ee5e9c2cc2846897d59d6153742cdc6799f9e2c87f20b9dad119bd3a86c28994 +DIST serde_json-1.0.104.crate 146130 BLAKE2B 62a613eba9c39bc3f007404995528ac101df3e74d90049e9aca699029f55ce4cee54a1bbfdd9e69cda9ab3e7ba9893fc66f3f9bbbc1eb358d570dd292ae77216 SHA512 06b2f3c818fa5819ff936d2f456fccded743ccc336359bfd1371aecebae9ca2d4f77879f61d1cda510b7a1aaa47b0010688b8e8c656388950e79fa5d007c7f6f +DIST serde_json-1.0.108.crate 146476 BLAKE2B 9c0ceae5566a4e0ce7a6264939862f9dd920bb47d18acebb179798b036c376d97a4e9b0717092903ab90cfbf6fb73d37518e3cc25f3217af010296f5644de396 SHA512 7d8d1b74515388d99983ffbc5696cba022305cf4c797d3ff5d2959fc8fc8f4ce01cc4c9e7ccae7097b06b5acf5307027f6b7315df1fd8f58e681cc5968e79fb6 +DIST serde_json-1.0.114.crate 146986 BLAKE2B 229f0a8e2c0bc35435b49774fab9d4cec4e2323e85e2f97ccaa2a18277ecfb9cff9e9b165786e782cba043e9ac670717364b0f9c145254eefd74582b728f2186 SHA512 2c35cd0e29ee2af6046ce849b5854b82b90f402b51c04ea86b32ce7d67869736f17a4d028dd8245c31201036bcca7a1d3df11d842a92a45b0eaebd809687d436 +DIST serde_spanned-0.6.4.crate 7756 BLAKE2B 58b8bfa3b39368f4bec795bf1bf1b0e19554efa9cbf44a8f5deaef79c926c8cafb4eabd6230b56acd77c75b924b8642a141e3f7827a5fea16633edb764b54124 SHA512 10a71df5cf84abd5c658de0321a4813ce582735fa5cc349694d979acd8c8228fcf69b3c65bba803d706089b49b053c15a8b1c4fc4c19a586596b8cc58cc2ce04 +DIST serde_spanned-0.6.5.crate 8349 BLAKE2B f4f8f798ae3a02c0d5178aa12a94bd1bc08fef88b6a81d782ba07ba36fb0d89927ecf621087faf376b6e53de12f6a96e0880ce0cd01ecc31c5dab7dadc6f3ff4 SHA512 bffe2398629ae5a5a5bb6d5fc2fa0f4b94d02c96e25d1be2fb9ad95d8ca2fa9bfdeb3af11049ee9c050e497f3beca108f03020f88f6de29b208063c3898af354 +DIST sha2-0.10.8.crate 26357 BLAKE2B 1d01b381223a931dc631ad3a1191f5378b1d2f3f9f20474c5f020e366624c73b08330ce8dc4bdd3e63b15f647276f533de655b545b77f70fbedc1a1846f44f0a SHA512 3be73133a6b7690e14acaead47914dc92395dca4191fb657a2ea186fefd0ccd94d12a1121d63a26027d9a9c62b775c53202473edc461587b9dcd75472af77785 +DIST sharded-slab-0.1.7.crate 58227 BLAKE2B 9b4c4e4849ed324cf48c2b905f21139d1d65aa5ab13e7fb11817cac9a32ad09f8dbb1e50a93d40cafa0aba872792bc92f7bd2e219f62f80695409e949c07978b SHA512 3be7438d4a75debb14463477f34de6db1ac38abe958ada5d5dae7ae8d5993e245da69fcb989d91aaaffda5f2b085d4bcc88d10e07ec567b7f40a21437de6d4cb +DIST shell-words-1.1.0.crate 9871 BLAKE2B 7923b36f0ba50c17ac4eebfdda34566b615291253b7b41879b3f64b3fc1325e63948d3d44801e40748b11ddd2ab201b81d238af2a2007c7a57d71f5dcd0667f6 SHA512 05c280a8e1f65b205746560a82e397689a3b5ec934219b558ece3a25efbfdefe903f9172319240e96039b38fb2c4be6e070805aedbdfd10344d9144b9c93de00 +DIST shlex-1.2.0.crate 6584 BLAKE2B ac07c648d9affe62512edab307fe07436dce69b428570ba6455aaf21c178145b1026e35704f920fc177b334cf190f57e393e4dd9e522dd26d133f80fb2c15f47 SHA512 cf48c0c47aac44654a48047fed3568c30f53f19cd131615cabbc247dbdf1eb1b7540b0d188f341251b4876dd0d5fcc13792800f0160f7907e8d8fe9a5e75083f +DIST shlex-1.3.0.crate 18713 BLAKE2B 18800c364d3a628f1a3125097ea82fe6286550c2997235df0bf8483a3906aacabc81308cb239887d46ba2f457cc6f8acd5aca78316707eea5098cd5666aea67d SHA512 5c8cedbe666a14b8a0874defb9208146ce64579cde52ed483e4a794cac5dde6a24bf8d684404edff582f842e1fd4fa3fbeddbe074f191e4ec4aa517aa456fe8a +DIST similar-2.3.0.crate 51082 BLAKE2B 47115ea6a8e10ca7b70dda65673f40350a82ab33928a2d875b37a486806f265c917715170de44100d1caa177cd9ae9453ae8b861bca82472851af0b62a91217a SHA512 d0b8fe77d03a94f9ca3b21bbc481c22055c16930931ef73240c1cccc6a47c5f8133b2921fa88aa290ef9257a9238afea8168f3b4a0d3e5b679cfbb9493c05b14 +DIST similar-2.4.0.crate 53147 BLAKE2B b30771e3c26300f9ad691566af22faf4592225de44dd55abb1231aa3641a32ca71c83fe9253dfcfb0c438b6f599c77358595fa03125d5f343cc617e99354dfbf SHA512 6c8f1cb194c165ff6ad64298d37deb6bab0abdd51921e29395e1c86268c65db1b4a67ac03ba37dbc69a0ea35c0f3770e894de7253f0e410be7bfc7845a45ce7a +DIST siphasher-0.3.10.crate 9889 BLAKE2B e5dd6d265340b4c9e4266ab1ff3a20f1fb87fd493b2d7b5fba32d26421cc858b38929e4ab96941d0c055375b8acebbd04236d994cadca324500ed05064b9bfc9 SHA512 f90425a2cccc9575d377bb92a765d34653ddef1ac12b7c63dc6d700aaa74b525787e11609061c2d3e44ea56fe0e4b8f93f7b13f0279b5de2e0f710c5caffd4ce +DIST smallvec-1.10.0.crate 31564 BLAKE2B e3e46a0781d3a7892a739b001592d462d0704f010363984c439e3fe4f75aecb9720648aa1e9bcc56bb3be848dd40cee578212439f78f07a807c9441c3c3e0147 SHA512 a09110184582dcc01d7a0d3fa8f74c17bf726935126d3654667b8e9c4bc43ad16ccfd8fa94feae7d9b31913aa7ee030fe5936e4b44a36302b6ce5fe37372a7ae +DIST smallvec-1.11.0.crate 34680 BLAKE2B e54d56f6bbffbfa7ce5fe5f04e325b2e5cf19d290e4be278bc00a136e26284625b9c18c7c2b10b7fb8fad0ea7e3770f3cdbcfbaa913f5ac08d0a2f8b4e0de188 SHA512 41bfbecbc2c244497568a41724d65791ec3fd6d8057813d521367cca316c09c2b28fb3973826236b01c1f5d2f905d8d22b0c3c47f957a9ff5d7685591f15ccd7 +DIST smallvec-1.11.1.crate 34831 BLAKE2B bad85ddb1d3a1fcec0cb6aba413f90695e0aa0c16b2b231d6d15095bdd6de1731720ea2b394c3f9a444d6d4763bbf44cff389a01aef3488dc599d2ea63ddbc36 SHA512 d4ed45e8867366072e77f23ebe8b31be96be37e5beed30fc2b5ffea81ab04a2ad2aa34fb4f29724b02a5eb90f8b1d8c40b800ee915453947f90758ce999704b5 +DIST smallvec-1.11.2.crate 34801 BLAKE2B 58645e99db8f02db64d02c75860c7ea41836c427c03ee3b0b23365e73a406e4fd6ac312bf13fc5faef8bb6111c10fcfd5f839d5b3686e9b34d1626f8469fc327 SHA512 5cfb427c3b99b0dbd71f6154ed899abcde9d7d2992977ac7b2ef3a4c3ff51e4efafd133071a69609b4ed6cb269bdc26b79eb72e1988f10dfcaef8185d950cd1d +DIST smallvec-1.13.1.crate 34952 BLAKE2B e0dcf1d26883564cd4f5d20a588562404e193075b1ae011f7f7542009a9466e5df3ade7768e1a8feb8806774b2cee5f15d31779928f83714e7d4b6ed46af9ab9 SHA512 1259ef947400470b8c9e74c5582dbc1a49753aa46420883c1f7d66f320f67bebe733a15a23cd57ba461020fad4ff337a5b298de82754602a78f5e6cec969652d +DIST smawk-0.3.2.crate 13831 BLAKE2B 551ed3406db797765034e2ba53d5aa75eec57cce608097eaf0f1a94fd1df8aa8bd248087a8a3b037d844fc91773f74501686180802a6d75165f771ea1f20ba96 SHA512 39f3cab5a6eaaef6f4e7703a6840ce7a805f6175e02968090a58a12d3420f0a144533e5d6542f1e9ec0e36902046a180386548713ef6148064922ff837fa1602 +DIST snapbox-0.4.14.crate 40833 BLAKE2B 585c3c0926b25d60a437d884c740fe38c2fbe9602248c30a5ce2a7d415bd53213cd5225ce46d799f09e6c6cc45b5e021c72f97c38f0d9cf2cb965ac309d63cb5 SHA512 e9b31e9ced124b220350848df7a747e8be161d9cbae6160f967f789b5675ca4c8df472fd1b0e0d6fc22193b4b539264b390f36a4f981bb8920180dbe3608c12d +DIST snapbox-0.5.7.crate 49447 BLAKE2B 9958ac5a7f5bfe3e3ff523c4774855b60ad94f8d0862cda693397333a8f9d0ca1000e7db01f8a0f55cf9bc88112c52087e3322c506f6cb23e726e3aabe997225 SHA512 d081815dc650b8ec1d565feaed21e88fbd006142bc7de8925d3936b9a80ba7c9e7f2c764f970780d7622107205d8f0414d82f1a7653254d7e1d128dee2913420 +DIST snapbox-macros-0.3.6.crate 6328 BLAKE2B 33dc3953c8ca50e43a75c717314bebaf75edc3463846577e2f2e4db3059b351e7498fdcc0cf6e06c233a927ac933a8de2aac49ff3ee8f2c7d11a462faa88269b SHA512 c1163e70342d0140ccad8a7c02065307ea23e585afa31985704d1eb2c06764e28d5f27b7b98e04698a92c7905606a7c85de9aefeadd1035b8e3a9adb7c9d9da7 +DIST snapbox-macros-0.3.8.crate 6328 BLAKE2B 217515d52debafcda4bbd3cca583c4e029758a54640d726c2c0230062cbbbf4c4b0e97a82fe56a2813a793f799879d8284c62b3cf985ae72e399db7556f317e1 SHA512 a0d4d923a5b64db9794b51c553e011af80ea7f86d797a4af8a81c7ac097808f42c00579225cecace46aea9e818d3b4fe00ebeddaae291c3a4bed61c77e6bbfe4 +DIST socks-0.3.4.crate 13172 BLAKE2B 02fa5e950aae0ae6fadb11f27c455da2ca3ce5db3b63f27ea720bb748e03652038a599c036941240edba0286b61a35699bef8db07716ada851c1077b0592b7dc SHA512 531ab43f277e2dfc6aaefcb584c5fdf910cba51cc5fee73256ef00dae714ace844251cb53ca090fd3e8258115cebbcf65843476913fadba8535cb44166294eb8 +DIST spin-0.9.8.crate 38958 BLAKE2B 8648bf2e48fc618758e3de67f0a493bf3cd22a8d18666164b0d850ed7c0d73650f7b0af783019dd361116bd60c61d24895cdd2c579383cd2700de0e32a23cdae SHA512 b15ad66ba9b308937f34ea166b799676fa45c67224e10cb57530fe33d2a8317ff3e3db3223a3249fa2862cc141c964d2130d3f39910a86ac5ef8aaf8ff4bc6ee +DIST stacker-0.1.15.crate 14656 BLAKE2B 972e5872b402d0572686a617ad72af69a3a19406f41bfde3990949a86a4410594838b0a1e7929102bbd529dcf74fcf2413ae4f9d1cdb48d1c069b8cb4319c0b3 SHA512 536cf41f4dea57541941dc89c61e82af3008d0d847243238d622d2e64bff595ebbe077368de87b3844ed0f06ced6cf5b03100e07534f6f5dde7219994369c988 +DIST static_assertions-1.1.0.crate 18480 BLAKE2B 358dd5ac413d06f62da0388e2016c5fcb8ec68fd7dceb0dbbcb97665c032b7509b7e083c20701648b6a9174485f117c02682ae4bde7ef037e80a85cdf6a0c86e SHA512 46d0e35f77941dee6f60f574c130472248063dc38494c1c4f84f7c048244cc2a58a86fe17c0990e3f0f01406b75ed385a13d00058612b27cf0e867c8d31c92ee +DIST strsim-0.10.0.crate 11355 BLAKE2B bcb25ad0a7284e24e4f17ebe0ccb621bdc4118e499b50b094d98aa7e8fcc0b96716c9953c3516ce7ea78309d41d424892ded595259696a5bbffdcb07802b5c2f SHA512 78b318532addfcf5c1ccc1e14539e258aab9d3cd893cc45d82342549bde838c177d90f13c560671f8f32929af47d0b467db35e6876bd7697d8b3f9e055aeeac1 +DIST subtle-2.5.0.crate 13909 BLAKE2B 660c3a472ca54c9843ce3feea74b802e27fd7f62dd37a30e2a4ba82e4b3a71df63562e8865d5fc675d31d0900998a8730503f91a61450884446a3bdd6af0041b SHA512 f150b1e2037554f8cd3213a54ddbc258f8f670cc4f39e7084cdea4b47538dbc58b834bc93b443d58a4b9087224efc003234042aaf366687dbd32b1e7174082a0 +DIST syn-1.0.102.crate 235699 BLAKE2B b29d1b0ab878eda45c486bce03e1b341eb2c69718201e662d81c131ead2bb5c5abffad848d9cd8d2e45a995dbb4d6a185173b5680973971e0c33bdd9fe43dfe8 SHA512 c9a2b2cf216c3d821decd488ebb49743f2f43940a879856e3a15d2352843c405e6f164c11225e904d18b32a5cd2bd7fcdfa74df40ec5567faeedffe5f523989c +DIST syn-1.0.109.crate 237611 BLAKE2B e827445d00c79a8eeb91eacde472f1987addd6ce9e1df95d7abf6446a77ff4173a8006845f3ae71c1da47193cfb72e0ead9a6d6bad2573be12c17e90735d9ad9 SHA512 12816b9e8cf984024b2fbce9f0ae14cf94d4d2c06f08cc54fb793ce78770bb4cc1288eb7df0ba5e8e937756e1e8e295c53fe07a0c5dde1ea8ddba03b6203b37d +DIST syn-2.0.28.crate 241635 BLAKE2B 5784468a0dd04eb298821ae5a3facf72c5fe5907cc469919b0a0b636bb55bd15e9e3a31c9ceb05b7b0f88e7a53e5891e6874641b61e5fde247a91361ae37047f SHA512 96e83979e70e2e1e46ca2af45d10fb259847d61e327809a51351a988282be9688a8c4942a284504674c8684970082dc15cd9ab9b3584bbfa68ac9716e071f9c5 +DIST syn-2.0.32.crate 242504 BLAKE2B 2c2938c0d711c684c9baf95538e2e76220418646590474b2b654d9242d2818aa7c3e5990208fe231ef64903df17edbbf6cc930e6224c964cad4eae5aeaeae781 SHA512 609f125f8138d17b1185760b1a63f3713079f5214fb56c23012229a56d10ac1c12654466c9ad1ecd6b2aff1126d125abfb0a42bd7f669635e5024b962b0cb0af +DIST syn-2.0.39.crate 244129 BLAKE2B 2cff6626624d03f70f1662af45a8644c28a9f92e2dfe38999bef3ba4a4c1ce825ae598277e9cb7abd5585eebfb17b239effc8d0bbf1c6ac196499f0d288e5e01 SHA512 96cc347cfdb0f9ca0b6c7289279a1cad8fc401625783742292564f7ceca8237ced8d9a3f62069696f6132ed06092dff2baaf4be09ef53b21260d93785b0e27c3 +DIST syn-2.0.40.crate 245201 BLAKE2B 70876ef8e459f582d8045e46fbee7cc00088693d7d6feef1c07bd14dad3f6a555fa97762b8df018847bddbd2e9ad432a2640153adc6eb0e6d9bac821910c74c1 SHA512 27f9bda7df0549142ac0f732387182d5372f1a49facb2c5f20cfafd9b03afa0ed8c1e35b9b6f2659add33f01f00a2bee24de3b5709bb9238503e0064b791e612 +DIST syn-2.0.48.crate 250566 BLAKE2B e46b0863af76c3116c84d01b654a9820b7edc51f75c9c5301a7967d12284f78da602409f34fc40524728350dc6b998a4d738f08b8868f95236b3e5d24c460580 SHA512 926c0ad55cc743df20f9166b6d71fd44421aeb1f073fd86b6ddb53e13cd508b539c0360ce64b07b65597bb14639c8f33acf7e60951e1e9128624517aa3aee325 +DIST tar-0.4.40.crate 51844 BLAKE2B b51c771611c2c1bc6a36d25493dd775bcb5891a2e4a8ae918781abe66c0335a3da30c5e44281fa5282dace34c09754fd2df840c0d74e5b0b4624a519fd455a8b SHA512 90bde0dfca91b6c304d5bcd4c93c653c066b76592927f5ed3025752d6d0244c0d5786c44af99df94dd6cc7a417663205d86f406a3b60f7307ca3c1757239bc12 +DIST target-lexicon-0.12.11.crate 24594 BLAKE2B cf06720caecb5b5758f05c6375fa600da9260aac04017458060406a042dc578d51a2c5b6f189345d45dacea42ba01fbe46853d07f70d7b37cba17d87aa101f9a SHA512 f38701a8e9dd17b7db591b1b4c82c3b75d317e003262bb7b09b9cabd3afab5ab79c02a7dd524910b6941ada3a8f1378ea9e199b2b5938f8f01ee75bb0eae8718 +DIST target-lexicon-0.12.12.crate 25156 BLAKE2B f3803596c75f6c89438592a1176c3748fc2c0524d7d50a20056de1cd26d40c572b05bafcdf6dd702752864bea37c8b4f28f96dadc12a5b3bb1d279b25e489f85 SHA512 6147295c43ba1b7b087a3c5ab51534b2985e4e77e5e15687978cfb9d07e21c4fd9bc7191576d6cabd268d08a44dc733c4a957e59dba8b948c2055d8bb433aeca +DIST target-lexicon-0.12.14.crate 25508 BLAKE2B 5ebb6b49e5c3b0057959557651287d4bf5ffe5b499340019ff64d5fc3b64e780e344982e358c94b1b25a20bf0f526a584aeecc704695b50a55cc268dd65edb97 SHA512 3410ecc0faf854f49c41c99f83972960e67065b1e0e78557a7c4996d996109bfd167d2121a019f5256f996c896cd45af032038ab7918fdcc6ee6311693ce951a +DIST target-lexicon-0.12.7.crate 24402 BLAKE2B 3715b15649566b9f26fe02aad818325a43b54512008e4ea9fcda9ea15a87b8f4baf4ffd7343fc12456c97d8a6b1e121158c4cb61997de0e2d24d1bce93d86850 SHA512 0f3cdbd7515141315934b6ca61c5666f3bf60e259711f68ed3c33468e2bd400cedf824db7158a80fa07e78cc7ac2a0a1eed2df199352176148e9df34b06511a2 +DIST tempfile-3.8.1.crate 32164 BLAKE2B abccff7939df8cd223a5a8ee61e5af7c35335f1cd61b3e72fed9a8565465c293e99938d57b50743141aace3cd20422ad5d3090507ed66561cb0155771fe0a5ec SHA512 b257bfb70793575d59ec4cf4b7492aff83dafb68b367a48594211f476a3b1d4800b69bddc405d8749d8b320c30cbe71be1261a60b4bbc862663b37a6c7d97a3a +DIST tempfile-3.9.0.crate 32182 BLAKE2B 4e802990988aff3ab5173bd96dbd906651a8df46b2619e6a500a3b9e7f4a3cd01dc7ee977791343f7875afdc4793a845000bb363d8c1a6599aeb6b1efcce5d56 SHA512 04e06c966bfa7a1567e7185ebd5c2876b96e46e36af14931bf0eba63795cd20d1c3427b6709a4cab2a68b8d289fdabd5537a50e5407a76e3a9fa0dcc7d3ce6d7 +DIST termcolor-1.4.0.crate 18765 BLAKE2B d7286fcc84843296e2edf074e316ee8fcceb018c08deda7f1048e38108bf1a7c5f6b90dd3150078c413322eda08a1c58300b4adb963d9f51f307ecd08b5b7e10 SHA512 36c8550fe85cb90c4fdd1a6e3f60b42b6c71f65b6128da97d5ad6aac8350d907410899ad4a47bb4dc72ea6d00bc69e5a1ccc80ee9b0e80a1a27912e233f3e416 +DIST termcolor-1.4.1.crate 18773 BLAKE2B 34676efbde8e242415857d6d40a287ae3459678d8222f5144faefb8c84d635686f640e79588d98635c8f25b7628ec6663a01b16e1e462705b5cba7e8b8e61f44 SHA512 b66aad157c4fa2985f764321d157dfb1f0325fd633811870db7919b5579bf7bc19fefe99e1c706cdfa67504c37dc2ca3d283e11d1bb516edcfaf1eb7747a778a +DIST terminal_size-0.2.6.crate 10585 BLAKE2B 8696b9046c717eec8bf7246346af84a5d0cb740ac6e1335a4d8c20476628f4c0dd7c6106cde33513681466e9701d4b05d73f22a3bd2dfabc4d22045a69d31345 SHA512 95f38bc00f8c5e1a6913bb2a0a7c46d96e02a4f3234af1623ad3d7be41eae677e77f1b5d5d005d1e9d778fcc6c87196f67a51ab37caab5b4d299da79c85d06ed +DIST terminal_size-0.3.0.crate 10096 BLAKE2B 097ef50a85945128dcfa36d8ea0fb15f11142c206462a32980dbbba4fe2872abd214823fe3c75e804f3159a97d6e929ec338860e9c89587da509fb9e6da5d339 SHA512 f3bc9144aa8a87556543584a2495df6267ce3bb017f3ed3d00fa43e89b5de783e1285ca62dbad9dd9c3b37e3a476a6f3ab0804eba2411cb594a569bbdb310681 +DIST textwrap-0.16.0.crate 53722 BLAKE2B 44140aa2dfd5076005749449a56e920418e71e34cb92f1d697eb3f3e7f6fe87b0a3861c8a4050a4a62e03187b6cadc4495e4200bee52ee183541431c73e47209 SHA512 97ae8acece5663e1a6b08b827179e96d5ad0ee67d635888cc3d83454b52cf48fce97eb0eba374ba4747834099c74f43d66d9fec868e84be45369a42c1aaec2c3 +DIST textwrap-0.16.1.crate 56012 BLAKE2B 9b5a7c76eca64d089f4fab7095f2d35624527ca223e53b03cc807c6bfe913a99b55197b973a3102e3e5c4055bcd6ab580a0c9d67657180b61435bd6eb7631211 SHA512 3a8d2036c8e4b88866d68b8066a2991756f6bd4ac5c726e63fdffbc894fbdc03bf8b6e0ece4b96684c8e1facb6413190768d51a8539094efe47977c120d31f1b +DIST thiserror-1.0.44.crate 18760 BLAKE2B 4afb9d1cae98afff52c2e9cb67b8bd75815092f87d51ab5afcbf3366ee6ae8fde33c0bfab9458c9c452aee3b324894fddce327475ee754afb9b27794fcd9d279 SHA512 3a8e9346e69216510337e2c27e91e08e7a42a8b6b2abaa776df3937ad4dbfd857fcaff26e97d89965dcfb2003df1f1d1ff88eb239d334e62c806e8d637eb149e +DIST thiserror-1.0.50.crate 19414 BLAKE2B a093f66ad191a8c4b15356f8d29578273b36f9f11b5843195eaa15b70bd4c8eaf6dffb631564386acf35a9ddf856e05055b419af52d4e008f582ae444f3dd5d2 SHA512 65605a9cfbc43447a50980739259a45d933f1eb315926dce909892f7162c79bd04bfcee7b38b5a9fa71b24fbe4416d050ae8e2443932577541513a23ebeeac46 +DIST thiserror-1.0.57.crate 20993 BLAKE2B 4eb90b8ee027e39102d6c030176db94510180f2bd2966503501ff89ca6b49afd61e6d9e1ebf18c08d374ff9de4e958dfcb3da8740fdfe31cceace5be456bfe4b SHA512 0ff7e48c3696f4f4c6af29f3142f0a7bb88a07b7a9877ec243e3ea15d89c48f1898b731311da5d4a7c88060628cae3eeea6a4eccf25bd851cb3075920cb1a936 +DIST thiserror-impl-1.0.44.crate 15086 BLAKE2B 664be3bca31bbcdd2bd8170e5e769d25e0a27c135067c84404d94bb51b5ef02daac76538898969281b0b0309c26b5ac4198e7bc819dec457dcec09e65530f75c SHA512 fe9211f50dc922b957ec3b9b5f132f812fc51fc68d23ad39837dfc174220dafb2b29d66822f34b05f1cd27cd473598d43e17979ccd9c70b056d509cd5c5c9ad7 +DIST thiserror-impl-1.0.50.crate 15357 BLAKE2B 41309507014a2c628b7e91d250335070e4cca6c6c452c90ee7e6173bed049df83ca197b37c16537cf15415550919c248e0f6c798aead760e7bbcd25eab701d50 SHA512 8555e010f94390e93ba757bce9ef25d066ed542f23b843db431a66fbab722584ea0ce6c9d4b6f4d92cea3d91c190336abd567c4a0aa4a27893db25720c5b89c9 +DIST thiserror-impl-1.0.57.crate 15639 BLAKE2B 2838235c5536fcb16d19382fe286850d6fb882b1d77ca4ade6a62e1d4727ef89f69cf0383cf330996f9e2303226d5fd709557331a45c9a91393db1788fbf4422 SHA512 a850806f09b232546d1e0df5e35cd961a8aa32f1d8ac3b24df360981da53b75325a46dc788c994042c95a5887fdc77234b9f6ee5851242f734a613e579548e3c +DIST thread_local-1.1.7.crate 13585 BLAKE2B f497dbcdfaf7dbc8b4b0dd97f77ba93df15b63303e7894c9032c9822a5b8111e0a21db2fa8cfdce5a503f70959ac9cdf48c840b925bdd850dc15e8436ba72379 SHA512 3772452c2a349fb564d29bb06e13c8ae64807db27c3ee217fa04fd0e9847e94adeea582b82ffc2d9116f31ff478eb088550caf1346c263de49b55fa17b431c31 +DIST time-0.3.30.crate 120289 BLAKE2B 917b71ea8362ca14f2564706919e7e62ebd3e8024d48ebcd9ac9799368a12f425b982a7739a73c025155d5dd0650ef8c9fd4642c60a9111294cad7ac2e30672c SHA512 268f0c779e2a44431932aa407f39878ff1412e287f9678574537fe7185f12faf7605c5ef433aa6d364bf77894e819ff3953f870ef7ad208b7203f1c58eccc4e5 +DIST time-0.3.34.crate 118430 BLAKE2B 6d04a20596c9b0961ca104748d9d360f07b16059719d7410fdf1a7a0d5f2aa02aaebf640999464835964bbded2d3257d79c4b0ca3080fbecf13dd2d0aa6962fc SHA512 3997e1b8d9be2f54184ebc9e1355d4b65f0b7bc9439b2b29e4a4acd86ad3a3aa019261112a24d998d76a7f66b266a86536fa50412279911b14d4d7aa7078c116 +DIST time-core-0.1.2.crate 7191 BLAKE2B c477ad3410ff29f3bf4a38fc6ac4a043d49b6d2bdf5cf309ffcd2eec3bb6e4c4b62156ee7f069f0b37ea31c163bc75ccbf35abc1db2833cdd4912135e60ddfc9 SHA512 3861724c23cb806829a01186deb5217ae8252c20af622975264e6670cff528f42155039e4937756a9eb312a5580ffab07949437d5504d684a0e70755046cac52 +DIST time-macros-0.2.15.crate 23568 BLAKE2B ed16207f302e03095e726f0087f9f7c1514cd71b68a17ac804424c526349838171f3bda62d442b8429a89adb084cca1a4117828c3d66d20f2ff8272d7cb2d3a6 SHA512 d6da54996ab99a46b2b2cef83cec62eca2462490db439ba9814502f7d5ecc3018eb266b29453d601677a0ef39797da77a106d407e0e5de3b110ec1c5ae2f3c6b +DIST time-macros-0.2.17.crate 24443 BLAKE2B 5045af9352961db0c97cae2f6ca3e8d2c4f89a129c7ac2ec1d8d20804292aa9f2901a61f910a564954614b68f39311bd381deeb66fed8bdac423227d077f3d14 SHA512 c81747f0b74e68d3b3f36d378ac5911dece8c6b511e5ac793807f854cc31c812b927d0df941f55ff90d3d67512d0ac6a5f63f2de4322c81b05da42f46b4a661c +DIST tinyvec-1.6.0.crate 45991 BLAKE2B e9699d4d80a78978f0ebfd049f5b33d7f23d401cf4f4439ccb168e8c0e322473ad0ea7e2ff0ff69e9aac3e5c4c9ae5a7102185533bfbf96dbe77b3526e700bc9 SHA512 e5acaf353c58c60ae5556130a934f1048abb79cf6668ae467d308bac44b689d8a9997227ea879f4b5fe50f29cde8761801b088d7149bcd063b973056c381921c +DIST tinyvec_macros-0.1.1.crate 5865 BLAKE2B 2bf4f68ca11dc19c72232951605a4c809b34ff38ee365ee4f592a3c41360e23c9330cfba961e2692a0ad568fef4aaaac51c40808d491178cf7a0c4b5a1c5d484 SHA512 10008c7b3a3d50c94b9c370015b76ee082f5dfb6dcacf014dc2f2dbe92f903618d10d0202b21f48fcf98a94ae76fb712db55a5e8ad353645d378cf0e6ec74f7e +DIST toml-0.5.11.crate 54910 BLAKE2B 9ecd5103b33ab47d4be23c897c7095ca381cb79bedcaac4918cddc36fc7cf5d34ab664da52c2273d935f04486e9325241d6b66785d50aac78453c219aab49e1e SHA512 eddb82aeb8fdeb5436579292c6f7a64a90a2c7bb54070beb437bc7890b99795d0505faa8d6451a99e8bcf440f78db8a1b273a697c8ad44275cc4163a9ee49317 +DIST toml-0.8.10.crate 50667 BLAKE2B 815c850d4e2b8f107729c24ff82a6be81160649fff726f07a2c6e2af0283298fd5eadcc5811ba4ef20ce12914ecb43da79fa1840fea8d1572ca59f02f9e2c310 SHA512 24f3b44244d7e91ae50eaf20bde40c177352592aadd2dac697a831a5de9305ac1c93c8dc407579b9bbd8d9984fe34cfdc42c3243cd0057ad83db14bd899bb546 +DIST toml-0.8.8.crate 50451 BLAKE2B 96d5411e8806c9021409ce232a11fd6d81269ef2f56b2a64d7217c9af8d0b31258b8c650e2bce9ca1d561a5fc58d1e556493d06199842a4d81884085622ae3c9 SHA512 6a583ce29d8179b480d29ca5e4624a4d6a8212cc741cd0c27c88ce46526f664a2f32eafd322b648f145f5ee5024d522a126f56befab5f1d68c32f2fb9866c7e5 +DIST toml_datetime-0.6.5.crate 10910 BLAKE2B 93a21ab2784e96ee2e6b56c7b4f733f6ac4c68c1e7d7dac3fbd8aceedb3580e25b4a9c7d9c3f9b5ed152560353b3e80906e37824956dc4ea90bc6f039768f6cb SHA512 502bdedbcbd2ac9fbaa5f4b51f2e409af185f3633f01f8845de5e3b007f2400215ddeb82ac588bc915ed5a5f9d7251ccf93fe2a57cd40fca2927f4c0966357e6 +DIST toml_edit-0.20.7.crate 101056 BLAKE2B 76c8ba87b0acfe74fb225bb1f1ef92ccee3e58e0dff64025e8d0727710e1362ccfe2f6d4625d0f1de7c14db318857c0e24e87831a82ce514bcb21f84d77dfade SHA512 fb6ef6e495e18b5d6eb96eee5c2a39b5539a8cebbaa8b93c3995d1e14d1db26488200633c7368f67ff5f982ab20dce0977601314c643fb2671c3caaae8e584af +DIST toml_edit-0.21.0.crate 101265 BLAKE2B 8cf4fcd93fdc99082c3c43e6629348b67c1e2bb4a3605ea119816b4b3c473bb3b9bf9baed8b189a0dda6d92ff5f08ec58e3cce19fe2667bcdb2ca3dee88d06ec SHA512 6889b7c3b6679db874b9ef099e3bfbce75b7f15cf47860e542af42d449d0795113bf7dc84a7f2d394ee0fe037d7f4c0857c3eeba6902a8b42bb9cbfc96f0f324 +DIST toml_edit-0.22.6.crate 103304 BLAKE2B 93f14ec5e0765673b4621216707605d7c2afef82d0ad9fe1e0c660be62fb65a59e91db3144c7bf04c71cf5848dc970447b3b31255125d3a2be94ababb3d82692 SHA512 9816338008f2727fd53d34164c0be16621b61e22ac4838752839af4bd09e4d361f319bbd188c5732c1af140358d73d645e05faf4d655eb295d6c331293b7f2d2 +DIST tracing-0.1.40.crate 79459 BLAKE2B 33693ee71564fe5925a63dca351e838dfd8612b4b1e49a33a70095e56ca63287c13c772661ace0e540d08c92942d7cbdc51ff2cce4f4b372164d9aa20ec05dee SHA512 5622188a45dddc0d6d3a8244a9b12db6221f4180944ce1019d18f4e613e4bd113dae5d45fb57dd0754f6e8e153b047cdf00c8f200782bb2b868bc2d423d99275 +DIST tracing-attributes-0.1.27.crate 32241 BLAKE2B a20af0f50a90dcd64e5318e55779142da294ba18d1cd40059a8aa964fd3c92834e03ee563e41caaeef71a30e3f027e5c8d167d90e2844da79e0774b267e179b4 SHA512 7dc59f4234c3bf3434fb352baed2b81db4e931eeb3ed207c4a204e480da734be40847b167b808058d2807b5583815625bcd5153e2bbe79804cfa6f069a74ffa0 +DIST tracing-core-0.1.32.crate 61221 BLAKE2B a7815c46af9852ce62498083103c6d359351f4d33609b4291330073b6abf4b63f5e1bb1a7dfed3bbf4d6913ad5217e96999416261af8a70609408a29109e4db6 SHA512 164f79cacfcca533a53b7dbbdc2015aaf851a16e00c72fbc4e5f515b6a6dedfa464e964810009b54f08cbcdc5a314e50245ac7b1b01a71fce4c63db135bf5521 +DIST tracing-log-0.1.4.crate 20640 BLAKE2B 7384a9b564e155248e668c8c3c24911bb437a880397735b89eeb31b09519a3d4fa76abefcfe6d2231972231d0336f42456f720c43ea84614d92052575607e7a8 SHA512 0706f5351cd940639a9a910c3b50099f742ed6880a503ad3c317d4ca318c3ddb54d04790badbf4ba0d968997a1490d2f325b99a842bdad5283006eb55674a998 +DIST tracing-log-0.2.0.crate 17561 BLAKE2B 701bdadd40f1343f3c4901bd8dd188f1dbc0afcdf50807bd0f6df7539635e239b5095696872103125a4d4cfec24af6336fce6f3931363dd5be4f53a09fa584f2 SHA512 0c1f060e8ffb9ff24cee7b85cc2d7d42c69b2f7623a7faecd7422b23b11ae8d5c7691e4635bae76861d444c369d9701ccb147904668023642b223e442e3c8285 +DIST tracing-serde-0.1.3.crate 7329 BLAKE2B 55d924fc3acfd496abca8b42bf3fa4a2511340cf2ebb060fb31bc0b5d81dcbbaa299daef3cddc3647625afd124b9c83efc1ef104f55dc6d4cd4d91e0e667c160 SHA512 3822ac747df404c33573ad2a5c722f9708066a72c2893dbf507563ef29bebcab79cec17515fa87c0fa64be8a08073c38ab57ccc463c74df8caf3df69c72e131b +DIST tracing-subscriber-0.3.17.crate 191711 BLAKE2B f55c8e8c70ca67f57cb3c8a411519f317b9961620e3f7db3a3933d549cb64a5871624c21231bd6a0974c94ecaee2904d2304ac9fde3aa8463f0fcbf99f94b5f9 SHA512 53a2a760d833f729e042b4f76b56c93ff7c50ddba968dfa9294f24425fe9a3dfc6c3b95a526ebd78df852b48b76c85d2f4f7be9170d75a6eea8734f77218e727 +DIST tracing-subscriber-0.3.18.crate 196312 BLAKE2B bc2f04da63b0313d26073eb4a39b549ae37701e4dbf1fe06a2483279a03d9dde981f0efea6ceb5cd441ab313bfe7eaf812971c3ca60dfd4b5d9cf0d2eb7bacd4 SHA512 72f91855637aa476f03077d5f523cbc94989d40b12d7328167f88b081869ed096e6370450831f6cd5f0686cae5628f14eed4696c06a2ec75f56808b64445e0c1 +DIST trycmd-0.14.19.crate 33453 BLAKE2B 528663bd9cf8bad5fad6375c81acab18a8471860407505a85bdbf32f1fb2cea201eec6c1a051f8e63f0ff32507a17a5602b7c7c384290069539ad6cde0e16854 SHA512 6d6eae6bc1617a4ab5846716f6c1c800143c01e84f24df413bd7962e350f964976bf0583d399405dc6df638760e6fed3e418c1056239e9e39d00ea1355485672 +DIST trycmd-0.15.0.crate 33990 BLAKE2B a206f2adca22972ba59b348db7b62b4beba111c300a7faef80483c9458221b25d2f6dc0f63ae75b0f6fa896dfda6487065374a2312ae493b5b912c099b81639e SHA512 4b63bac98a5c609e17d7bb6cad6b052a512799fe3fb49e68e4e19bb0a031f0098356a6a72582c115de636681b6826ed277ab47547f28bef2da692560c0c95743 +DIST twox-hash-1.6.3.crate 21842 BLAKE2B 67c261b2b0a93293717a4e2e07dc11df2abde09da6fe713b9d04917ace73de1b59b8d4fd9449ab46cb7cf496fad1e440effdfa1fae6f5cae4ca78af8cd019c42 SHA512 f7ce63e6e5ca79ce9330caf40b32578a5d2088c5d8ed371604268760d6e212d447d9e3a95378378a283024155bccdaea47597902c488a94c5d5f79770baec8fc +DIST typenum-1.17.0.crate 42849 BLAKE2B a6d1162050679e2c4ab2467f3a77d301f6861882eb7c9749f31d047f383dd5bd2ed5846ad63eed99ccc04d6ac36cc697a305861e1d65880b4d2ef04ee0a79b94 SHA512 99773d5d9f850c0602db4bb67dd062b0ade6f086e155216f1bb2fb6569461ba7e1b7c2f2af81ea8833bc3bfcf3fe5033edecb7c438adae63f59d3e30cf63a508 +DIST unicase-2.6.0.crate 23478 BLAKE2B 6e580108ac81b1cbee70e5bd331f43b12f266dae4f4f758bb8f5f073bd1af61943ee0de34cc27769525b19da8c24f8dea4941d0f5454594ab0cc8b78071ff053 SHA512 7e76a5f344e32c56cf87223585d87a56c79627b52bba0b29eb6de82de874b2964accededa8e9b5741f57944b6750fba5c61e679a50d4fd5a5646f431e2f4f188 +DIST unicase-2.7.0.crate 23783 BLAKE2B 2b74b932b45c9d5b984b57bfe8249496c192944e2e66916919177eac81c509e2d7a5d30a85ea58e8cd5a0b47fec746bdb18723f3f14002fc64af3a0d320a9e7d SHA512 c2b05a3bbd8996e1cf65d7458f5ad95de9797c8349484f8db04967bde15c1f057f62b2f7a60e7367871512071ed5076c0da042169dbbdcaf4d6c16cae62da828 +DIST unicode-bidi-0.3.13.crate 44477 BLAKE2B 90d80e7c57e93aa9aaa83e7c3c1a93bb6e4d51047803e61ed3f7c80361987947b2029a2b679bd301e8a0766ee8ea7f080e9b9b6ebcbb4354e19813a0f7da2abc SHA512 fb094fcfd907d90fa7232432aca0143209446e4c5c73d8a0fe6d2dc44b9dbb5b8b926c59b5e3f9a5a0a36f91c04613509b6e430c9c4adf526e7445e6e8d7a3d9 +DIST unicode-bidi-0.3.15.crate 56811 BLAKE2B 1f1d372c86ec7444f13eb32baf13dfc8699b52156b265a2b53f40c0d771064876405451120fe54739a2679e6991caaf4f63e0644f03729cab814079fef4868c8 SHA512 7a21d5eb05ea8d691dfd54ce4cf7d3693d08067f7a88ef17b8c3044634f46411176b1bde1516c442577910b254007b247f5e40f9932eb601cd96cd574f9d9db8 +DIST unicode-ident-1.0.11.crate 42067 BLAKE2B 3c7cac3d2bf1cbf1cf04716a482f130123e8e6940f7a90a17bc62fca44ac0069688165538f5329b95a72f735b594cfb85e3250738393ffd1b53cb0cd95077d89 SHA512 9682bbee339fb987c9d0bb6a54406d37b28b5c3587372d406402e4341900fec97e3234cd03b5c98b90b6378fd533dc452cac3de90d3ade19c4b09657e4abf6df +DIST unicode-ident-1.0.12.crate 42168 BLAKE2B 4cede03c08758ccd6bf53a0d0057d7542dfdd0c93d342e89f3b90460be85518a9fd24958d8b1da2b5a09b5ddbee8a4263982194158e171c2bba3e394d88d6dac SHA512 bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920 +DIST unicode-ident-1.0.5.crate 35455 BLAKE2B 7e14ce97ac53a88ccec015dea690918a673dc5b49e44de7fdcb5421871da35c4f514c6db9a363d6f4bfcf2e9a61a50a593d345d0b6f388ea882b17a00cd0335d SHA512 d355370daac356d900cd4c0a792d6c0eff114524c4bffce4d7e74469fe2117883ee00bf0e27d950b72e88739473f2045d5f83440a0aedfede97b4d9163b64a6c +DIST unicode-linebreak-0.1.5.crate 15324 BLAKE2B dc560d5b36ed01357c22750feb7f09fd0f57fb0ea543180f6e31c0b71b51df4faaa70ac8482f9cd60e5d1faa5bfd4bebfbfd628dd5913c2c4a858ec04beeca3f SHA512 f37be2f7b04b886e95bb7d0f33bd392b78bb940ef9a01cec487062cf31ec0367306650fad7004df556887a324c714eeb28f697044aad9a429ce07b7b7344af60 +DIST unicode-normalization-0.1.22.crate 122604 BLAKE2B 3f3430b279cc0ce1595392c869442ce676ab097154c688779ebcf726e10c497df59be2cd7bb2f84f99499a9df0654760a10ac92224c17d74775aeebe291241e1 SHA512 a5810d5e9cd93dbb80e013997aa9d38e60834619483a6623eb2859ec5d59a5aec3fc4db123dc7f4e2fe9f2b8799cf6af48bdff22d69a00a23707240e8bf3bb3c +DIST unicode-width-0.1.11.crate 19187 BLAKE2B 6baf7f3b32eb838925e591792abfe11968206d177facefb89ef51daf44c18f3fef1e41c19a47b88b81be50667af626af2024ccc540b240fb6e1d83fdea57076f SHA512 ee06f4144525424327a17578642565f396802f0eea539b3bebc8d9627376a8bc6c5376d83a6ee577068e99fe75815bd765e6d49fb9ab9b253d00594bb15a5ffe +DIST unicode-xid-0.2.4.crate 15352 BLAKE2B 80c327b39f3b8f2cdb5747cde968cfa1efe7b65b6bee9136adc881fa19f66aa5b1010d9d08de55a61b322d665b5b0cb0395e9ac471f6333c40d8dca5d97e123c SHA512 e67bd1258e1961807d9d5fe583a89ab5b82b2a529ecd32cadfc79aa5331380eb4a2db9fd96b74c8eace47f2f29021587d69bcdbf79f7e2650e92a25f7839d03c +DIST uniffi-0.25.0.crate 4244 BLAKE2B a3dc2878a8c6fd0d153a8e27695ea88f453edbbf9c2b3a9831a926e911031632f617451a7aa76a01716ea89bb7af619dbb4ecbc71be9537109e66335d5560b52 SHA512 bdff06b8c89a97d97b504681e30a45387a50a5732577a2240820858ffe0088d88b9e6c76008eb290af52a88f9be28230f4e7abdd8150edaa1976989f57d5821d +DIST uniffi-0.26.1.crate 6042 BLAKE2B 2a54b48da541be31a1c26e20191da1e3af8219be97094757adf356e9a308d223fa57c20ab8e6b7062203e9482b84ef22e6a2c4577ac8a35b247c99d7d73a91e8 SHA512 d668f4a8a992ff99d7272fa6993c606ae9ef1ef873741db1c92d30d4a7e26b0096c60500330e784bfa68ed104598b4e4e5a64c88b0b72b74929607dbb4922481 +DIST uniffi_bindgen-0.25.0.crate 130448 BLAKE2B 3ba2b9db922fcd5b1f75cc012056610a87527189dbec508903160fc4624e08fdf0ddff88a99d9f5980ad2041de5e4b7ba9ca00e47d8995d9298b3cf4a4e0316c SHA512 df9c6defe7edb320a25c446a57409fd32531ab693b2401f9efdba3d28ae93dc1e6c86ba71abcf74618ea74acafc1f9c1c9e0a978ab7733c05edf8cd792db861d +DIST uniffi_bindgen-0.26.1.crate 136172 BLAKE2B af3f086f2ba42e20b7bba21008374f22b344a847274edd5bb2238580ab269bd2243ba1292b1a578ae0511d5005bbb803b56a95b05f1c785a6d00cc4840a47dc8 SHA512 76078ee3c75f8ed2b97954f4e19302928cfbf6c6c4e5a5bc3aab4bc7bee9be28b83b250903ba7d7012aeacd6d02cf4e2d922357853d3715cba5a7f8208062bc4 +DIST uniffi_build-0.25.0.crate 2037 BLAKE2B acac297035d3fd56c4c7ef021290b06feb24c146d53ac69ba63918d2d00ea63ac6593dab4370fcdc508d901d94fc395d1cde5495e8e556be1a51f8d20f12cd27 SHA512 8ba8444f0112b939a56a9826e167ba66d49ec40fdb2763d32f8a3e1eb38539a91a8298f9a66b36e79990afc5a1f5009b488d2f229785bee9edfced6315fed328 +DIST uniffi_build-0.26.1.crate 3883 BLAKE2B f1a31f8aaedd7b194f8aa08f7c633b8c58ed668509226a17051968f826e5bf426aaede99641457b318691380ce33026f01639313e575e3b2bc58402ee2416397 SHA512 c9b0c3cc1b036c5f21ab1c215b19bc35e202c016ad34e432c5acb9cf4388da305f67d5da6f86fa3d278285c97cdaac594ad296751f0a6a8f712aab9168994596 +DIST uniffi_checksum_derive-0.25.0.crate 2396 BLAKE2B 95d35b5dc830c0e1aa71faa035edd1372562817daabd7564edcaad1428fca5558f887c9453fad51bb66be4e9b19994a4661dd89131fff2e555bbba1cbb301db4 SHA512 060c8bad8d34008abd5cf570c4c4e7a1bcc003a4cb22e3cade1f6ef64ea9d053d709d4847f5e699f6c16a0ca4ae5c7d27f6ccd8bf59d6b5dc39e72fc5630b916 +DIST uniffi_checksum_derive-0.26.1.crate 4305 BLAKE2B 21fe2cd7672425934e690480371ea5553296eac72b42fac06673de9c426383d4386c419ecb5210a7addea8505c18087753ee10c6ae5ac86ff5c59b8a7fc5ab65 SHA512 fe08a52ccd9aa79ee51dfd2d816a751859b76914ba2fbed74f61e0113260e730c98672a8a429d8056eaf6aa3b21e3ccc83769b96ebf48a40497a07e20b1d737b +DIST uniffi_core-0.25.0.crate 40850 BLAKE2B 229cc7f99adb2d4f42b462d6451fa5b8c0f863c09e02c3d1a56ee54c547c8d703642318b5c7da7b6eeec45d2ed6a8ff9a15637d043274f07be3b7b38bccb1002 SHA512 e3231d9f7b014eaff1ff9fdcc91b7f7c417b3712718310f321bea0301507746699cad32444fe5f5ebb01f2d82f5ba5389ff567789ecbfa4b959e36df1517929f +DIST uniffi_core-0.26.1.crate 37698 BLAKE2B 7f15c62317f6e3efebb671b277db37545bf915afd9569b9d73f534a687dd4b697d6d3ba2e91e42e5f958da6f2f814cd1f87ca41c5b87795dbcee49db42e593db SHA512 42114ca9b93d8604cc1fc8c166db2d08dbb66f8e86556fb1bc4623a97a7071c1615d2a707924eb83beac79afd59d1acdf98f6fdc087a25ad12801a9a894c513a +DIST uniffi_macros-0.25.0.crate 27745 BLAKE2B 0a96523f794b4c369f7bf7e766c8ee2e28d8b5facb415fc409a85a397d5c9a81409580067821974f27f80d24c4641af70dbdbb9a02accf53ff54c088357a5a3a SHA512 0602d1d6c53d1034f6f50c1160757b6c9fff46589dd0ca9e0f0ddb158c8ab90bb7e05b118b106875f0101858df110dc2ff5e511a5f392ec2874c87fb642b25f0 +DIST uniffi_macros-0.26.1.crate 32582 BLAKE2B c9687b4ec67bf47900ca7ed1bad2d0b289f17dba8800e9f0685067b4692ac564d7e6d3162a409c4f0818b2ae9b16f8ff1495b71114caf9615d374000ca19647f SHA512 0c781a4c7b668492f29eeeea4c56824b556e3079ea6dbce10d7027bd923a68e38adde32ef77a1c7e7817d63bdd355cc74a434c162659fee951d11c45d0da40ab +DIST uniffi_meta-0.25.0.crate 11780 BLAKE2B 09353a27a7af801e8a45cdb338fdb4e6b0cc8f05619b387dd23f15edb62ac22eeec3fb622296b67c67547e7e893215432d069997396adb208108922c9fbc2b00 SHA512 285ceabf6c24a380382ad4e232b1f3f18c0afdd2f5aecdce821820282d414d760bfb2d708772bbb5167013825f23ce6c999e9b979f9ba04226033cb22532581a +DIST uniffi_meta-0.26.1.crate 13951 BLAKE2B 77697d457be106c98616d197f1df318587fcb840fda184740753d913cbb578a5d565400d26369d190c03dcfeba8efdd0bcb23749a2a95ed6b5edc14a0e73c851 SHA512 ecf5616d93e9429ca60fa55d504df9dff4449e4c993029f94ff3e6f52c04b92ea9d29d18c2c1f02055c31ace8c9cc906b9c3d97100e7f6e629d8309a766e1e71 +DIST uniffi_testing-0.25.0.crate 3508 BLAKE2B 72f238af8c8144e79b70f09441e8ee3e3bea8796cb77fa6e78ef3f849b46d4a2089ea922a36c8d586d76779c3c5488978f40164377edb3bfd644313221ab1953 SHA512 b987104a54ef5e2d9b2e1f7cbb6d338213a1e4c26157355907396f802b254088b7584f5a53e710df0f2d5c7cdba3e6f08f0467facaac7265b7f096de38cf8ef7 +DIST uniffi_testing-0.26.1.crate 3511 BLAKE2B df82a0adf8d9e3f69ec4727919377810f4d1a7b141a31a2d10318ed2d663f167a0cbae1be6045c9236af1932c8c4f1f606be474b1c374b231133f819f4c02382 SHA512 286df9fd4ef26ef585904f655eb08359af10935cbc2801ac4d71dba67aa96522ccc8af31d3f8f8523a8aa90fa7dc2880b5a3d8d23690bcbf05c5c2b503101bce +DIST uniffi_udl-0.25.0.crate 18373 BLAKE2B ab06df1f4848d3b8b2783a16291352b3debf01fd0ca22cf53d71a693830eea3124fdfbd1314ba7010193ba38d31fad186a651eae21edef88f5050b703cae1599 SHA512 677195e8f268d2a4fde39518d51a79194e23bd08e279362e1049fd5981c3a56781d499cd7b49a7cc9d72a494c8536674d0ab6c5a11d129ae3e679612e7ac2d61 +DIST uniffi_udl-0.26.1.crate 21484 BLAKE2B 3c7626b4a36655f44986482a2bf5c1867295e5062e9acad3fa42adee923dffe4d7b73fa64e8c2883a03584449e113e0cb5b6436cdecf0d95be87aab60bb7ecc9 SHA512 9d2cb50a5ed1fb69afe963aa7bf6467757e699af53cea9fd725a405611def330490793c87e467377cde3db4be3c3752e3d8e7b75ca0e474e8e2035056fa526ff +DIST unindent-0.1.10.crate 7703 BLAKE2B 75458d7f21ded1eca4bb3f7f55b2fa73bf92b2309316eca1b2ffaa0c9f8d7cd8c7851b96688f6597f4af6973f70e9053c2708c1228fa6a9784e41c778488c4b7 SHA512 46ff1a2c042972af2fe5958677b2fa5adf3b9edbb168bd66cc93baf9d1b128f583d9502b83f174b35866343b57a57c8a91a465eab267dddae919af24095bf6bd +DIST unindent-0.1.11.crate 7700 BLAKE2B d4d1dde410c4194acb51f74f374cf11fa872e49fad8f5f24b596d72476403e5e312fedf7b0bcb1027384d53c8de565368d63c30eaf70a6e6cd958b82e5288ca3 SHA512 f800d6c37fe72477908c91457a738a73d2b8085bb5ae303d6d954405d6ccd98833b5da16a12c3ad1ab75d32a68dedc706dfaacc0fcbb95571dd829cdc03a356a +DIST unindent-0.2.3.crate 7306 BLAKE2B a57407b117e99c230750c7d4a2a0899586c8271e4ba88ecb409c976905c014f42885372c234a75fbfbedf71dbed779f95f735975d150adacdcb61152a49db4c2 SHA512 2f1eb420ea3653b00d3e5fa0c2c105da8fd8a37cb3e699373c168604b799fccd5f0faf0cddce4212d119c2afb0c86b41efc3a50752b83ff7beda2bd84d360505 +DIST unscanny-0.1.0.crate 10338 BLAKE2B fd725928107d4d2ed2686709335ef01136bcd54d34180189906b7c2436e3f77496328484c623dec4920738f4a07e92be7e7581387c4f5b6996fa34c03efd7b0f SHA512 8267e327e4e852d627d416d58ebad5ba937ab6a2477b265fd5f79a98d43ade2d1780e67696b801cae8a4af10da8f7c0c257d2c878289eb6cf7e711dcf357d87c +DIST untrusted-0.9.0.crate 14447 BLAKE2B 8e9c3ae09435af0885bc4a6e3c8943805b48cfc00bdae228c7c43093254e1be15d7005d1026561ff369ec37865d8458203f421a9c89ae3db077f655449621aed SHA512 5929e4079c1c2ff933ae8d8f59a2ecc7a424e71a20d1b8821f75925af68bdf82604b024c008e5464b02e25ff093e561a352b685e755b3d0b27e4c30254689416 +DIST ureq-2.9.1.crate 114348 BLAKE2B d605db0134ead8a77c9b9fc8b06573e82d701ded485f0d88bcd64f6ea1a5232d67bcab47d0b430bb13c79ce249304ecbb7f67d4a3c789f451b9639ada5b3f0a4 SHA512 a8c580f624300e6e1d068814c38719f3624ed63274bc0c4fe06d6ea30023b3e79ad3241fed2ed9f008a8040b49fd2d2271fb0221db1e657369f37060251e3eb6 +DIST ureq-2.9.6.crate 113677 BLAKE2B a795b9a3b0985daf2bb27e489b32387693bbcaf32a126b083d584693a921c8b3dc900987846209497d468b655d30c9b364112905cbad870c6758aec28a5c3268 SHA512 c2c860006e33146589107aa191552530749c143ab93a60ff3fa959dd53bbd03c48d7f4b410ecc4c92c28c2b483ec3c2c720373a6ee54ef8f9c31b069da205f9e +DIST url-2.5.0.crate 78605 BLAKE2B f3fec3477248cbbe67866577eebb03f517c284a5e5cb783132b11ef3ad156a03524f4730f188d822dec85169d7474e265099296d6bdd4adf5ffaa0a118821617 SHA512 4aedbc48b85bcc2853189f5fe8265a01c76516b5507f4e958d8d0b860fe2590c69c95f0f4b9fd6fac9b8d5911bcb0a5e9ab7f8e8b600f37a12db1438976ee5c3 +DIST urlencoding-2.1.3.crate 6538 BLAKE2B 65777b0990aa6b3d27a47f36114da8622026ac8946b5ffb6e04172b666ec7244a55c250a7fb626472bb2b636eb32ee945599cee5ce7351c3cef2322366db15ff SHA512 035848d9243ed6a4528377b56edd7f8bcb5f824381b420dc8f5c4bfc3f1246655c54eaa7de0e4aaa7138e0b08fd796b9ace140ab919aed2d94f6952b577386ac +DIST utf8parse-0.2.1.crate 13435 BLAKE2B a1c111d7ffc60690f2aaa86f034c66ba1abe4e126f1774a4377d41eba3269369862f57515af387ea785d69a8adf46338b5e53761b5ee6f4f4380473f4d9cab0a SHA512 51fba8f1e7eb74b7020fd831e30a67fc8353ac2ee07335c8c3374a5570ac8117f165f6905d4b7f0360095b7b5ed3e739001d02a8cc3c89195baf2cd679136050 +DIST uuid-1.6.1.crate 55554 BLAKE2B f9b8eb34f9197734ae9a1437ded396f5e5a8551b54e532053016e0c00c8007644f4fbbd3827c9878cdbf8acaa981d8ae9c94739af7edb6939ec299075ee4b443 SHA512 b9f3dbad176b3640b4b943d127ac8fcd0938e7bc750430626cc603efdcf5faf479f8de7940d64ed1b5b6e6378b42a1aaf3c1e791ee59b9db9394409261cf3c55 +DIST uuid-1.7.0.crate 42627 BLAKE2B 493f6a3a643d3493a2bd7e0e92a1ccfb7bd722e3a1fc8deb7df0ddc875a822daead1cdd35dc3ac6f26346844100a671318d71e5ad760c9587471d4f05bbb0c69 SHA512 2ea704d082b725d98717d772e1af84fe743929ee32658ebeb111c6fa2395ff5f44558b7e375087617f91c6f7bc242f2db96e80a631071722de6fe15af845e856 +DIST valuable-0.1.0.crate 27718 BLAKE2B ef5ded994c9a6dd302bed27f0d757447b0c86dfefa499c1ef0d25c3a6745ce61cfa2c926826534c9f605f9b89b4a19f91f06f94ae7c03f1ddc4c58fab3ae58bb SHA512 a97f65db1f1c5049a276dbb0e45e25c6fc6ce9d27ac1fcd77c945324cd8216ef60344065c79799ca04e338455e4f7422c44078eea32d5fc359dd0211ee7eb387 +DIST vcpkg-0.2.15.crate 228735 BLAKE2B 6b6bacd9a7fa38919241f45a97f58cae957e58d3aac99df208a26aa718e4f1644f4ccefa31b09151e5c1952288e0e5837c363918b98c7f55079a948a952c1c50 SHA512 7322a21e8811b2fe4e79e09dc321458068ecdf1953f05d36233f3278ecc0b1dfc64194db7010dd46fcf692285f42475beb090c6c6cac0c8f9fe0eb5c770e3172 +DIST version_check-0.9.4.crate 14895 BLAKE2B fa1fa4008af165bfc1fdbe560488afd9d232cfafee94104fbcc4cbc52f234849bff9ddfa88109a1ac682f6d9c1d86b0459893d223f64e65adc08966aaf93dc89 SHA512 b172dc9a3759a4a683ffc39b9a40b03b9974b626a088217de87090466cef695226557c226cf3e469b2b25ee7297b7eb0d7719878cab42457f80146a81943c0c8 +DIST versions-5.0.1.crate 15850 BLAKE2B bad495d74d67d1dc60e2b3d62ed765ade0dae63e99a10b9f28c456deea555ff20e2a28ab28730ee5150266757da54cb3f237506ccdf4ca960f2c89a8a8035e1c SHA512 2b2c4b60b53b7b4e6f69a36a798f74353fe75b952dad5d3fc3f83ac353ad5545332f34d81cb43fef48020dd6e8e0ff4c0fd8b69e262d67ba38e80c1311fff5ab +DIST wait-timeout-0.2.0.crate 12441 BLAKE2B a99d3f57bc6e784ac06167f98b2dc2841f730dfab4fb9772b15e67707f756d6ba7daeb3e992d32291bed3daa85eaa8a8ddde64db5e1acf1cc4031fc9bdc82212 SHA512 db3b7aa2acfd44e64451042b8ba98eecab77a82aa5c58ed08dadb119ab36dee4e26d62baad7978ed56d5ad03019c96be5021455362290f56043981137bac8066 +DIST walkdir-2.4.0.crate 23550 BLAKE2B b4298c01cb38be0479b7ddfee627af01f889b6b6ff432e368bb67f65134c3958a4fe271a5a7dd61b19259ae88f5680e5ce8e12e50a872b05fcba68f59b7073ec SHA512 09e1bc852c01b452c95b26a369831a97bc5c9e0ada3111c73774570dd73bb5b9e4735317d5572304fb48dca44ce7b9f77bbd17c418b6b047b2ab17b8bb42d9d9 +DIST wasi-0.11.0+wasi-snapshot-preview1.crate 28131 BLAKE2B fe501889f25d65e2d032f885cc50c4f8bf7dd70fd5cbc438de349838370d8699e9627b0a4fc76030ea9fe6d508f41d0c9928a875fdbc47e73bfb17241cf7b155 SHA512 043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f +DIST webpki-roots-0.25.3.crate 251565 BLAKE2B dad09323767a29df528fea7fbf58f4f7e4e2c01ad86672b3236774122fdca97279a11aa5e96abbb6405348ed383504bebc5fb654ef84f50ec819a52803380faf SHA512 53770d6b4f7c0f25de31d9658261c1fed57e0ff9c3246a39f257646bec088b0f9a6975fd5505c0fac52dee3eb00df8291c3d5a5aef86899442f5626b5cd8478a +DIST webpki-roots-0.26.0.crate 251778 BLAKE2B ca16fd806c1904a91aa0a3758c0cc96600877c3ed50680f57d85b3fd6b0336b02a70c1e582bc05ea768519bb1459bf642f99ba660ad41e1c9289fda45dafa1c2 SHA512 56b21f5be94d9e34b50f01a4baa647f3d2ecd60a61b8a97edb45d625d0393a4460bcde29b889bdb52c3f44bf3f25ee875730e133c21a65fea68b1b3d106d0a77 +DIST weedle2-4.0.0.crate 17394 BLAKE2B 408f9d0ba07c02bfce7a0403607ff803878ede4d61d7b9114cb51a1140539350bd4f7287d22266ab4771b2c551a188bc7c37c332667f90485889a1dcb831be32 SHA512 ed0cb9328a8f653e22c33dc7f62c135a9bad4deb598769b6c4c5afe1bc059df5d1ac95aa2d21481d56d9a75e3bdc9d46f4467c410a4c9818ff3694cee913cafc +DIST weedle2-5.0.0.crate 17777 BLAKE2B f31cf97f698008ac978a93dbd746c9094bd726bf976a9a68d6702c31b11d5cd3dce148d4cda1a5dbbc0ffce3c3704444e81e691880347021a575530142e1aa1a SHA512 29d722cd3d210dcfdaecc4f430cb115ec3a73cccfb860c98f784b4ef91b07bb33ebc02a7a31f67fb13c9bfff836cf85f183a5f24fb60d963607738c386fbc4c0 +DIST which-5.0.0.crate 16635 BLAKE2B 5319f2effea2b86ed865be31efbb66035670cb80245f212268a9d3b4798b97fb658ef02b4db3ba85aaf82007e0498e98f35f67128bd9a6796accbbb37161fadd SHA512 cf2b6ec2f156f4d6af0bdb8b468965784000158bc7ab8f76fa1b1d7a1a2c732a7392c8ea09d3cc79259411e3ed7ed2d448a6aa94fe7c2fae077186086b0f826a +DIST which-6.0.0.crate 16751 BLAKE2B f681600f2e2af626273e4b189d43dee9ca5c09f1808870c49aa0974d56ea1f944e83a0078656ef519d6c172c0b22a56f5d0adba21ef640afb2665bf9b58a0d54 SHA512 f0da2731701a33a07704672490e53e3b1476f3b06856e7b9e00aecf92dde5b6ae13199780ffe202a19205cc61ba1eeacd519f6a132307d8d2d07d0577cb73b50 +DIST wild-2.2.0.crate 8067 BLAKE2B 628902dd8c2d252397bb0677b59295f37ab088df79cbc92c32d3a17023535d9c192b49bffe23c74a49145e0e3c57cbb84c0db7d41923adc204b291d19d9f3272 SHA512 12a3484f372b5979715d56afdadc6d9b152ee75c1961fd0352f5cfb500691b526d4fc32bee32af7548cb7e6bb20288a5eae710a473bde9d2065fcbfc3f8de851 +DIST wild-2.2.1.crate 8080 BLAKE2B 489a2a625aa8091fdef9f4d49747db7816d82c01384672bd12ff9e4c906f3418fa5a5fa8951b625f6d22a9c1977c523f1b54d7c4252c241413ef6f63d327cb29 SHA512 8f92b83cb2568fed7841ad372111138d9ea5806c21a0affaecc639f0556ab879ca42fe205fe3c1e55a1b5c1c4fb0b705a5566b06bad5c119a1d41df9c01ed2c9 +DIST winapi-0.3.9.crate 1200382 BLAKE2B cb5799749ccd935ea2d7068d953cecf19f543d9db7dc16ad4584bb7005373ada34937a3ced7225544d8bc765da599911c7a3190efefb3a25b7c1bb7123b4f673 SHA512 ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 +DIST winapi-i686-pc-windows-gnu-0.4.0.crate 2918815 BLAKE2B 4d357e4d30f9552972170d65b9a5358b69c46a3e772fe05efc22f3d4ffc1caeeaad7aacdc7abd503a7ad0545f8bd7d22bf351dcb6df76f812fa4d45c34d65df0 SHA512 a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 +DIST winapi-util-0.1.6.crate 12234 BLAKE2B b8db8ec9d7ada5532a22a2d070320174c32ece1f48890e9b028708e194fe72a04287b11910dc2ddc7f9c9674a9d8d39449b3e100725e1f59e59e3047a7e3650b SHA512 b1c949f9bcd34c1949a9d3a7bde6ce62fcf3d2cb66df60af41fe67a9d1acb24e571cdd5ac721be9f1ee4b3af5ef5149b5724ad6e02b558e124ef2a4412d12db9 +DIST winapi-x86_64-pc-windows-gnu-0.4.0.crate 2947998 BLAKE2B 2ad1ea8b5fa07d544e910ccba043ae925269b76b26c9da356305b34b86741dd8b9aff0b9ffe3d562db4fcd7d7c46a11ce9e3168b782b1d89ae6881742b7ede82 SHA512 4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 +DIST windows-0.48.0.crate 11864177 BLAKE2B 39c0e4f058f68a829ee08721818a0b04287af20dfe6e03a125b75566b4c8a58b56557d685600f1f9c215811154f9782f12368d42848445d54dcf9bfd6471349d SHA512 7c906f885fa0a730f1cb1ef4e62f5b602a49d44343febe1d38fcd4cbc28e0342766983796042585fe457aa229333558715b6270e378946faa8f398a7ecc2af8c +DIST windows-sys-0.36.1.crate 3347053 BLAKE2B 818f7812bd9a55a4e95b3d461fa5fcc14569a159882f950d20fd5a6b7d2a2841f082c0bccaab657f5830549e6286a37d9f8fdf825a42403f543b51e35b2d20d4 SHA512 80973e461bef3be0d0d0c13d02b2129aeb0d0700768d637544315654126f101b39f980738035fe325bd96f549493a2245bd7b82511f833efa7bbcb2f62266001 +DIST windows-sys-0.45.0.crate 2568659 BLAKE2B 6f2d634d121a9bf41e2887e277a73f33aee69b04c7fcfc6ff973d21902787997f1e186f530e9226cddc003ffc3f85a179c069c8a8688de459f617df92d33f94f SHA512 f239346c0141b95aa76e0771e2f4e38b9a592f3cd92c6001de353637cd65cd73b94cbf9917a4eaa9b0c0b2e6e2af920b9cf6b3fccb52770df5160254cffc1c47 +DIST windows-sys-0.48.0.crate 2628884 BLAKE2B 551e900de4f67187ef034b60df9fd0e0d8f82a3100ef28e1eabd543ac129d882dc86ffcc1714071aba09e4cb2ae2d2f07ace1a32b99fd989ce525cf05991edab SHA512 bdf534bcf3face31e9ebe11427a911a53f89f4ff5eaea8cccd094e139bfe14b2aec602b1cab1df774794d999477439d9adc6b627a8e33c20334fc348ba2c47ed +DIST windows-sys-0.52.0.crate 2576877 BLAKE2B 69d6b560ccfc8f679e2678663ba606060d71fa28efa82c8aef8cceaa2c63b06f2052764d60163964f939649a26bbec6361ee4b094555e941fae92070db566980 SHA512 24ee0df246c2b456a4987a9124786a28acd358768cc7d1305bccd81bc5bb8822b81a03fb18d35174a520b911c6d9b685f81a34ab319fee13da3b985273584f03 +DIST windows-targets-0.42.2.crate 5492 BLAKE2B 42fc4a7d3e287fe2a70637e890304b49737776596f4a94a6d216668247092135e84322bd04caddd19c83b7700b0f27278e600ce8ed326957fabc21bffcae89b0 SHA512 84fbaffcad9a80beca77506aac26d0c5cb75aa0f21a5a70bcd3f6a16e71e8753ae00d3b89da9262c99756624163dcc0d6074fa9f99dfaae0dc098018209025f9 +DIST windows-targets-0.48.1.crate 6902 BLAKE2B 8e6cd47dea52131c66983cbf4982e88f7bd30416dfae4e380f7afb39f67ee0ac88d40769668dd5aba40d4415f9f00cbc2ac98d598506fed26029f5ec4df3a2c5 SHA512 e48179620cce528292167f1d5ee2deea0659569c996dc90eb4ab62b9ea8baee6c0bea3ab739e06d8793c9690bfc895545ed0039cb633ca39293de79c42ea9de2 +DIST windows-targets-0.48.5.crate 6904 BLAKE2B 7396bb210f37bd51da86f39fca3425c8f6610721d5c4e94f9fafa0a8a8046303b3fcc6979146bcfaa32f4406d242a0455f6cbb220f84c6ff84650e755acf5223 SHA512 e079eeef255a046be7f8e6a31c14f7b230254ebcf05eed2944827bb3d2a0dc30940d87593cf544d5e7ef35f6312b99430efcfb01421d91b02bb9c4bef7d98709 +DIST windows-targets-0.52.0.crate 6229 BLAKE2B 4b1efdd32202f112d3782b586ce60667f5d3b6f97ccae0d7da833aee2ae81ceece88b5ef4126db2448c9019de3f77e4fe66ed4286bb6275d9a5e8ab74725b804 SHA512 0ea09552d89b802ec0d419b640fa02d0af7af602704a0e88ba10f81d123dee0c907460f6ec91224177ec9a948970abd7414740eb219148a4d66c269c2362740e +DIST windows_aarch64_gnullvm-0.42.2.crate 364071 BLAKE2B 97c4e3b2a2dd3f936f9bfcdad23639c9c4c499eed220aec361d26d6013d798efa118e6b298f9cf841ac149d2ae5d58ca653731718450fcf2910bb5f6fa39159f SHA512 75cd7eb1def8ce9d0ff3d7468d2b1cc31cc76c08f981a2460c3d1eb09cff7100d7442863a3591621c1f5f3b3f4badf0b5c95285b6ed583e37283a8403f1095f1 +DIST windows_aarch64_gnullvm-0.48.0.crate 366543 BLAKE2B 9b10f65089fe6da3ff38a1061783f635644ae84f567f891eaced280af68f7ff3919b34289e8850aa34554bb0346903273ff0a7fa743ca8794c2d23a9f1b0185f SHA512 80c5aa74c5669f7acff3882a8e7575f15e8d7cc58c11a1cb731ff423eb9cc9ba43cc6b80e52803c0d44e6a9001655ba87de6f43a9fe858da6d6e3a5c983a2711 +DIST windows_aarch64_gnullvm-0.48.5.crate 418492 BLAKE2B 5c6f7d73ad05740f0bac304ed1ef9b2ea63b0d6ca8f875552ae299a0b73b1557e8fe996f1c2b69be9f2df350c9288690f49ee62239a2896991364331d6c55462 SHA512 20158d31454488f6053d3ad7b97d7fc6eae6cf37e4ba0e50c28bd29b368505eed64199ae31104d5f97b66846be54e5ed25c0ad31ea850819205c573a31ac0996 +DIST windows_aarch64_gnullvm-0.52.0.crate 430182 BLAKE2B f23370c62c4ab3fd885e3ee22e8ec2fb5a3a837a57044c1df3f9986dd4e7e9d0a44ec58be1648a41e1ea4d037afa3077f0f03de0204199a82fb8395731815a4a SHA512 b7c3fe0a2ad5149be0df48fc7a4d15879eb130bd9441c58c25fc71b8a91483f0b553fb1bf29a9302acd348e9083a547430a840b059b0cfe19867ecaffcae986f +DIST windows_aarch64_msvc-0.36.1.crate 661960 BLAKE2B d503150a05c4aa6ec376d1094ad24a7a4b3579d8f60cae65f4a98adfe830dd776c8996d5c3acfbfca1a69598475b918b5de2a162e3253b0b28cd6aa17de2dc13 SHA512 d0c352c78caec9c71bbaa1a688baab8f39a33c903c0492b19398c76e08194183e254ecd3a8b24af3e7e5e1d9d97373dcbab54499236829898a4fd153cfde2ccf +DIST windows_aarch64_msvc-0.42.2.crate 666981 BLAKE2B 9f3cc5592cdede08bcdc1e7c455325279e3b763d96942695e10dccf1dfc37a81c749b69a7d6de883d4c0fa6e8a0d2f578fe2a8d6c42ad8ef6282590bf8fc87b7 SHA512 d2dafa8c94d01c1b65ca1bd631d31f2ef842f1db7accb132ff78c3f8483221b991afd3391563e03dcec42bbc9cbdc0ebdab47b991d25af85b5ba2ac1bbf8db63 +DIST windows_aarch64_msvc-0.48.0.crate 671479 BLAKE2B 0c80f210437628e1d878d1d14e884fea532c7539b3030aa76d46f27d02372c715c6e33d7efdbbd770666472b44a66c30711a33d819ede9cdcd51c96355802d45 SHA512 617e47a7202f1db4dbd3ecea509682135ccd85e3a458c0331b9bc7aa1d84e5756b59c881cb098d5c6d4c951248d13c8253a8e8a50938e1997bd19ceba77262df +DIST windows_aarch64_msvc-0.48.5.crate 798483 BLAKE2B 60c466d6536426425a34b5ca20da97c8127ebeb4fb9b1363911165bada484f8913fcd50e90410b5661e0c27dbfe8f4eeaa62fb17d1f3566bfc82b6255e11619b SHA512 223f016c6f1a44dbc5c8a8428b39438f75380ea06951b7c26ed0877b19d79410c6fde5e4c7f2c839b6e76159131f39a1230e0e3a208dfc425ba9117e3665c4ff +DIST windows_aarch64_msvc-0.52.0.crate 821663 BLAKE2B e6f772858205f7cd871722136aec4d00daea4793ff9dcae53e6311e74526c46aa11c2b3df7a85e6c577757254cbfa5a713e68c694625ca274b64e7a1c5532c23 SHA512 8446bfe5b9fe538415762c8129ab3bf2fe45482e045bce367475747786602ad4ae1187c6e508dd9d7b6be81bfc8d430e0db9c624e35c7cc52e823023e46f5cf1 +DIST windows_i686_gnu-0.36.1.crate 818115 BLAKE2B fdb78cf88e1049d1ed6c474f870dfd1ff37b48bc24726d754cfec5b3e77075162f291f93aa709c07c9fa38ccb21a6c31cb5149dabc2cc8ad8a85c03408384a0b SHA512 e2c60e6639beb879472a06ed4462667eb4a78385df6bcde1ca579af759cf2b4ac70e84f7dd7b736e7fbd1b129061555671fed4b83bcd81a6083cc013963194a5 +DIST windows_i686_gnu-0.42.2.crate 736236 BLAKE2B 4ef0496462afc73d9d72af7e5da1e6d3506a92f8172930e88ae64ab97596ffd31c4f97fb969e9b677e30159c27f00a8e756deb006b630fb98ce83f03c8b762e2 SHA512 ad09d650a05cb91cb6b40f59025c023a4c286bc1194586697c506016df2b9b0d5b02606b81687bc634795a0d9a9b8a73e486599328ae09c853e8e5ba662fc59c +DIST windows_i686_gnu-0.48.0.crate 741490 BLAKE2B 5a4a584f8d8ee5bbd2d4c5b6749a66f2d43fc9e4ef90faab2227709b270f0d46fc26578c029edd96877c71309316ddb32d91c39f46d88f9a484c614f866e3dbe SHA512 15149fdd48b61b6d993acd392dbd353d0280d984ea88745217e4207937174bb90cdd9701f69ff0fe06a842f03607cbb57937d20d79ab577181e605a8a8fadc68 +DIST windows_i686_gnu-0.48.5.crate 844891 BLAKE2B fdc37cd74a4982056bf22fdb7b84e1c55dc838f3cb19ff3648730a77e673ef4ecc0380b3e4277bb8df2fcfa25f57b69014713d9e3ed27c28e19b25b3ea2ab774 SHA512 931ba5c1e4eb8ae73248e00d9611298d1c4b4b0dae719fdeb9243930cd420a103a7bc2738e0a4887c42c8f25728d6c5d64ad141dc092bc3f1d0f35dbe37d303a +DIST windows_i686_gnu-0.52.0.crate 870285 BLAKE2B a7688062a128a1b1394b3978210334e4e2aaa10dce131457c4a11ce0cb3f551e7f4962d1ece1846d8e9526983ced0e0a3ee8c933858e9314b62e76381e086ef9 SHA512 fe993f5bb6e039c257be9b35337e0221f718d23866818bfd19c76aaae236aafc2de4bb5014fcdf919563b5901cdaa14a2136cd086eeed3c83e46a5d02f6aa77e +DIST windows_i686_msvc-0.36.1.crate 724575 BLAKE2B cf964bec007d8432e2009644cf7f89ea7d910ccf9512c067b7bf5c6c825208ce4a36e9864c0cbca137f523983eb46e58e4bd01054cecd7ac7126d2ba9f67ac0c SHA512 02bb1507981229422498ce29f6c777d5e412358040128f84b09d948ccddf0461b078a0a20cc7f6ab7da8595121bb369453ae9ea1f0506aab715662e8c631e737 +DIST windows_i686_msvc-0.42.2.crate 724951 BLAKE2B b084286cd4927efd2889b149abf8a9fe9d3d777130db9e592982660dbf9a96a0f5e723ca121465787aa11877d2d29a5a7d7cf066cdc8fa7e90d7ca7dcb7677f1 SHA512 c1706fc36d4b157c020744a11b3eb5d7dfbf05a0b56775bc717e94b7fd725816b20154fdbcd69ac08dbfb8b8bbfa74fab72d7a9c10399aad6a1cc54cf597e804 +DIST windows_i686_msvc-0.48.0.crate 730056 BLAKE2B 4e4ad6ed94948145199c2ed50fc65e4af08455a0fd058bb0f763d481f30b029f99a2b8dbac087b29e762500a19270f6683baf62ba99d141eb002a5b0b5c8ea05 SHA512 11a50800e709712dbea907275bc0faa46d2eb2969118445ed5b932d9c5957a09592a5b26a40e554c1f5fd56c6d074a07637e6f88eedd2224e1001e62df7b469b +DIST windows_i686_msvc-0.48.5.crate 864300 BLAKE2B 3d3ea8be55e2d6ced0eeda18abe1dffb925a1a78f456d683e4450d9f2fd287ad2e8494d65b2b770c677a12b3a60d10f0435e16c61880e3867c3657fd44892442 SHA512 70e2fb4fdb006a4cbd43ab2c7e940b277a15fb1790dfa2d1fc1f1fd18bead4886f6dc046e44326603e4894d988578917b8932aba5d9a6a4cc8424911cad9dc7e +DIST windows_i686_msvc-0.52.0.crate 888693 BLAKE2B 7a6e9d03e503c8f543e80a8c7bcf3f50cfa7eed462e487ae7b581746d7cc4d871b33e307110d3a3a75226d88e837f9452ac56bf3baf71b66cfab2626cc15558a SHA512 817ac796fd00bed51d80133ec873cf3d3d582ba41fec8a6f6407fbd7544f198e928aa5d710f70c13bbf74a1dde4c91c54e65eb9d3b7518a7f011ea42725eb671 +DIST windows_x86_64_gnu-0.36.1.crate 790934 BLAKE2B 9dec5d966bdc89efbc81989acca242d519f51676ec37487df2bfacd6bfbc5a8de2871be72c5b96a073a899c666e3a39aa60d493e7df39fa90efe869fb744a332 SHA512 598b69e4f2cd3d68f910d526a66dadb465ff30a8c261c9a4455aa1c5b952d23c04f8edaa063cd16fb43564c116a13f06d607f3a0a9c7495054b8bfe1c04d1865 +DIST windows_x86_64_gnu-0.42.2.crate 699373 BLAKE2B 01c70809d564b16b268656e47295e99c992d8f9839fac8a51338a0e7c3b9cdcd0429c456ca8c1c139a8c687ed7ed6c43a82250889d881aadaa65bd037223e0a6 SHA512 5767af3c86e717f93137a89d442230e6b60a649057edb3ab104b1f82c0bcd64fe089dcdf2f4fd486a799bece1ddb5f0449641536b678211945e749ae24f35c1f +DIST windows_x86_64_gnu-0.48.0.crate 703595 BLAKE2B b227efb78a99c43d0538cceadada3fa1840df29adc665787fdcf845b73e77d782da8a9f9aa602e1da61401b550d0107176feb6c397c922a6240b38cc8f04a180 SHA512 38eff1164fb37dbd2bbe53404b20cba92de84cbbd5e4eb9ad60d51fb43d6fdb8b87a1488e2c88ebd4b3ff3b708f93fdc05df4b14a285d3ff11c33ff0d9828602 +DIST windows_x86_64_gnu-0.48.5.crate 801619 BLAKE2B aa7e7e6a6ff9f9553ada3a0a39a9aa798e9d995a8eef36e0b6fdb2a0db93ddecee5548970575271fe43aec74797a420d0ee231d503b5bad1bd999059261e0e33 SHA512 1d6056fae430b3d042bdff3c6217c76be4b8b9f5dada9bad06beaac2db7d7ab9b0a82e44f498ec88e61afa73e99f56d84d445dc3847732b9ce5d947e08485f74 +DIST windows_x86_64_gnu-0.52.0.crate 826213 BLAKE2B 3ca03285ef289fc844261142154e710e996c29940b1c0a7dc3016906ff6452fa50b24f8668fce0ca44bf169ab1228c217fece9f7bddac9ab8bdc54fddafaf8a8 SHA512 2d81af56ad0bc9536f6e066776642a546ce6c6d99551edc0603ffcafe6db15d5d5a32a642b204bbfadf34231daa3894ad7897a9c0c575c2b6bc1e3e58a9a3eb7 +DIST windows_x86_64_gnullvm-0.42.2.crate 364068 BLAKE2B 64bc53e98eb3fc649c9b43a6e734de4e65088e41edacabd49f7afcc5dc6e1065c563ecfc682747dda05978dea2dba4f45c16fcc18c3b00684c3d93681e5a7deb SHA512 d39a8bc948110fe612d3f8d6628b3f0d56620df11d8a49e0fabb6c90389ad407582b3af10e4eab46c79b3d11d2e10753d73d9e55963fbeac085f41e9749bdba3 +DIST windows_x86_64_gnullvm-0.48.0.crate 366536 BLAKE2B 295dc3aef18c604d1579978045f4058b1a315083a8ab842bddf5800ec3460b1530ad88c3464acab712a229290aca235810de8a3b6a253859a354d9fa97277e58 SHA512 8d82fad4c8445030844708aa026a62f1ca43362b8e15f14b0d226c7e9cda04ffa0715087b6a025dbb738e8891de24fcc4a2df071a532917cf03c4a46f934f396 +DIST windows_x86_64_gnullvm-0.48.5.crate 418486 BLAKE2B 12a2199d434617c1df1a839e9f435620ad64b40c579f6d0c3677553ad7a48e5765d12c266b04946402e15c92cff2e4ac4979ce2130750ef426e2672119680284 SHA512 c016d5b5e73832b61ff67929d92fa8c16e154656294357266ad29ce1f44db4ca2d2935dba31a6b571187dc838b1d22f1e3b41fefffd1d719a338439adf1646aa +DIST windows_x86_64_gnullvm-0.52.0.crate 430165 BLAKE2B af9345a1f6e0ed1392ca1534c68d23f3be0fbb6a42b3c5518cee14373e645038526da15e849d14abe45c53766a30c6c2042a626482ba4a05409f325eb6aa36b1 SHA512 e88af35fd1c694dc189783e5c81aafa61aeffbddce4d7130e1125d0ce3d932fafeb345990ffd98477c41b578b7f5090f4f9c0457b02146309b95549c9f8f44f0 +DIST windows_x86_64_msvc-0.36.1.crate 661999 BLAKE2B 4cf967f10d4ce148bac967598168752d1996b4ddf5278a8fca53360566c37c1a014bfb4dfdc0ae2d96e01196c42eb4906ea80d8e9dd23b9e9f3163631c9e253e SHA512 89c22ed51a74f531662d80ae0fa5e0215728db1e6caf3c13eaeba95a93548b43c00b8474f52553ac866ac83c203b6c22dc44fbc870e882a4c9c97ba54b87c631 +DIST windows_x86_64_msvc-0.42.2.crate 666936 BLAKE2B bc3a456e7f8bc272f8978ec69506ec9d89f97b7582ebbe05d8bd57bdf8156ef62d0d2dc6137a97e81d54059d70db97a24af9a038adff357f5dfd28805d6193b5 SHA512 53a35f438903fceb59e36bd2ac331773fb8e6c8c5a6d984e79021761f91b3b4a23efe49d219667a4d0d23dcdbf906da9c24e74fb1cff93395b5c55ff524e3788 +DIST windows_x86_64_msvc-0.48.0.crate 671422 BLAKE2B abb063610dcc38581657133182b7d9efeed5553df67bd2bd6f30f1668a645186e4824f9ef556a5abc84ace10b1b437b6325bbda6df5a64ce880d7dcb743ac786 SHA512 6e598b8e3ac54912a8ebac01b0dd2c58fd282072527d7fedc7f6ebecdfb7dcb09ae46c22293bc0117849437f8b053db5e90406e7a38276f0f0afd06be3966795 +DIST windows_x86_64_msvc-0.48.5.crate 798412 BLAKE2B 8abc0721e2fb337fe17c91d278947d36122d9045b839ba0cf3e690202d242265b676f23cc301da5f9d98c56ca4ecb76f7d6f072ee71bf986a1deca87020b90e5 SHA512 fa1c5cd14ca2ff0082e2504cf59d317dc4dc6f7138d35c12f95d4476a9c13d8b7f5537d0ee251eee7c99411ad31b22263171b7fbd391daa5d3ea3488ceaa61a0 +DIST windows_x86_64_msvc-0.52.0.crate 821600 BLAKE2B cc448b65f98fc0fc4949ae622b7020d2dae927ae45310649f6ef71809740eda9d3db0fc035676c201fd9ab9639e9e7f21e2e992b4c789542f12b419d2c752179 SHA512 3aaee31533a1a48a6ab5cd15b3cadfbd906a93a153e53919d0aa74e440d11e29830554e4e014c215f5b88a475bb733fa8ba4ce9d773d3e23a40ea9ad37ddd0a7 +DIST winnow-0.5.19.crate 147982 BLAKE2B 99b9625ee4c8b6236b1acfd29c267ac4d17c5f911e291d39f71f85a097222a4fbe48606c02acab6d70eccab710852782096bcda90ebe6cefb44ed9d48923ce0b SHA512 dee415c9e901d91d2a4646d1198c5b959c8e7a9ee5b3bfcb5c78159d57fc3905dda80e1c5b45a8a18e024a3e2394022772fecbdb8158ea1513a953c93f48d9a0 +DIST winnow-0.6.2.crate 157140 BLAKE2B 2cb9e63875403fe525739e2e20d4351f51b6f52dc03928af6de4531f388ec5cd0af7e21ef2f621330f7c91b01eb644fafd0618a246ce3c3dfe61d801e8f8e0e3 SHA512 dd54d69f7ce91f7ac2503ec79bf5bc3e45d2e8b0a3fc593487af33396f819c9df145eacd5ab43ecedca592a89ef259351314335de3fe740a05af5889f24fa8a5 +DIST xattr-1.0.1.crate 12258 BLAKE2B 5f7614de3e7179983c9767953b7713fa387ffb011ced680c93edf4a8ce2b0273a10bac6a968f67d7636beafe3c8ceb3015aa97b2b607d591c7cd68f5eaa07725 SHA512 f26860cf452e158ddded144d96b80614068dc6271f38ec3794ced4272c9ad01b9baf4938cf7a249e9716947b9c1b2700266bbd6ec9bc7645a3a2fbca9ab67c67 +DIST xattr-1.3.1.crate 12580 BLAKE2B 25c414d761a7fcd23bbe057add62c6da971cf33149066aa024320ab80e0ec8e8e8d5d3d0506e8de954b8f8c178d34c52a00a5fa9aa109510678098a3e3564b7f SHA512 4047abda42b949cf58f820e15ee99850de483857bbaaef737eeee48e1a2132972470f15bb2ddda56438f6a934918be96607a8de518a5a3dcec7c8ee6c00ad280 +DIST xwin-0.5.0.crate 65006 BLAKE2B 8b4f979120ecfe1e1b38830b2230b1e195a88a91cb1b56c43da211dfa9f7b41ca48aa3dda12b65ba1b3b7e3bfec989433f7b743875c780dfee49c1d2cf38cea9 SHA512 1268bb25e7ae98f97a608acb23997799fbd84a097be35f403b4f2c5a55058960852c8d3e96a509f0022ee7ff79f8671c563a93e8f0fa699d461c5faf41c17730 +DIST yansi-0.5.1.crate 16525 BLAKE2B 3b5a93b98293daae72f53bf3f13bfc05feba8d5b27921f79595f7448fbcb9a0dfa6cd70f467c5735b914c46b7d3592e6cce080c540a458a904308525eb3aa839 SHA512 7b33005a066cc612408a65df6533e8718d1de43efc0fd57416a19dc2b811497570e6e18f100fb26073565e395e711518c27de7d644ae64777713f1a102eb16d2 +DIST zerocopy-0.7.28.crate 147263 BLAKE2B 06a5895cc82f05c749f3630ec1987de363e8e5cbf6b8ff958c7d3ee80ebceffe9652415dfd702dbd7f73a224cfc8b13e119593314d2d98fdcbd7c53fbe3ff34a SHA512 34ed0ef56c007d25982b925db5bf3abb7a19ffbee93306d8369803ce0cfb7c10c2ca27fa2aee64be6e1925f830b7d4476b20603d82c7b6558fbf9134a25afca2 +DIST zerocopy-0.7.32.crate 151096 BLAKE2B 12c7c329ec0e0865467af08306ff4b55ce1e39fd77b094ee48ed9c6e266dfa807bda9ea72a3f7ea989916327f4d9e803d8868995728bfe2fb1c2dc1e5ecff78e SHA512 6729b05eb88029555b88c75feff4f8bc28ad9675edb02b07486381f775c8650c95e2e59612906bd9c34c5e390fd339857ca91573ee9f9ca7948572cff4171c82 +DIST zerocopy-derive-0.7.28.crate 533073 BLAKE2B 588e4eda234d39c702402f71aab6824d34c9bad42e9c28b140dfec3f745b89b0dc2c986118022d5cb3678fce800220c60e52f6ac101994af94558b9be32f8755 SHA512 d34bea0f61e19f723d56c45c5ac526ae73ff810a8b8613c6891ef70f7efe0de2d62d83184e76b5cfe42f4fd3a982f49e27320ec735ad60a6aeb3882e6fe5c156 +DIST zerocopy-derive-0.7.32.crate 37623 BLAKE2B 8b583d39d7bf9c3dbbba578120751c664f87363c5ba3fc45f6506a4059b9e599c43d9fc7bd498a257ff7c9d872af77d39bebdb0e65fb8009eaa2ae9903dece46 SHA512 3ce8528871fd18d6abe92b98503927451d25791c9c4af0ba39a3b6ba2006030bdc137084d080e9b1ac8b5ddf5f2121e0a3ef34bb2033a040f2c72c8149a9fc0d +DIST zeroize-1.7.0.crate 19039 BLAKE2B 2f94a5025f409bd2b96a456d2f78a34c6b05b5554abe7ef3fad2a55a8fcff8a6a1b971be660aa4c2954ab7d6e89bebc431036e349edef74711292f9f64b1dbae SHA512 9d31e3e76e8c861309a3579c21f6da5fd6b056c7d7a350427445a1a832e8827204804783f7f9b808acaa2148efef883d9078bf84943b1db55526bba5bf5a2756 +DIST zip-0.6.6.crate 65789 BLAKE2B acefc076297468d72cb20d8c6234fe5406875056fbf78fc0eac3ac430af78f320ed839f8683bd96fa1a03c457d6ac568d42bd703a902bc37bd126791d8b4c709 SHA512 affd46c17ceaa0545a155250dfd16756f8706dda43bae8a322ec0481dbfb41e4cf3166bf9662fc139ef9d0ab3b0f9f158535b21d2a61b21d38b8b2407813eeef diff --git a/dev-util/maturin/files/maturin-1.4.0-libressl-openssl-sys.patch b/dev-util/maturin/files/maturin-1.4.0-libressl-openssl-sys.patch new file mode 100644 index 0000000..2ab1efd --- /dev/null +++ b/dev-util/maturin/files/maturin-1.4.0-libressl-openssl-sys.patch @@ -0,0 +1,10 @@ +--- a/build/main.rs.orig ++++ b/build/main.rs +@@ -293,6 +293,7 @@ + (3, 8, 0) => ('3', '8', '0'), + (3, 8, 1) => ('3', '8', '1'), + (3, 8, _) => ('3', '8', 'x'), ++ (_, _, _) => ('_', '_', 'x'), + _ => version_error(), + }; + diff --git a/dev-util/maturin/maturin-1.4.0.ebuild b/dev-util/maturin/maturin-1.4.0.ebuild new file mode 100644 index 0000000..2db4115 --- /dev/null +++ b/dev-util/maturin/maturin-1.4.0.ebuild @@ -0,0 +1,554 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CRATES=" + adler@1.0.2 + ahash@0.8.6 + aho-corasick@1.1.2 + allocator-api2@0.2.16 + anstream@0.3.2 + anstream@0.6.4 + anstyle-parse@0.2.1 + anstyle-query@1.0.0 + anstyle-wincon@1.0.2 + anstyle-wincon@3.0.1 + anstyle@1.0.2 + anyhow@1.0.75 + autocfg@1.1.0 + base64@0.13.1 + base64@0.21.5 + bitflags@1.3.2 + bitflags@2.4.1 + block-buffer@0.10.4 + bstr@1.8.0 + byteorder@1.5.0 + bytesize@1.3.0 + bytes@1.5.0 + bzip2-sys@0.1.11+1.0.8 + bzip2@0.4.4 + cab@0.4.1 + camino@1.1.6 + cargo-config2@0.1.16 + cargo-options@0.7.2 + cargo-platform@0.1.5 + cargo-xwin@0.16.2 + cargo-zigbuild@0.18.0 + cargo_metadata@0.18.1 + cbindgen@0.26.0 + cc@1.0.83 + cfb@0.9.0 + cfg-if@1.0.0 + charset@0.1.3 + chumsky@0.9.3 + clap@4.3.24 + clap_builder@4.3.24 + clap_complete@4.3.2 + clap_complete_command@0.5.1 + clap_complete_fig@4.3.1 + clap_complete_nushell@0.1.11 + clap_derive@4.3.12 + clap_lex@0.5.0 + cli-table@0.4.7 + colorchoice@1.0.0 + configparser@3.0.3 + console@0.15.7 + content_inspector@0.2.4 + core-foundation-sys@0.8.4 + core-foundation@0.9.3 + cpufeatures@0.2.11 + crc32fast@1.3.2 + crossbeam-channel@0.5.8 + crossbeam-deque@0.8.3 + crossbeam-epoch@0.9.15 + crossbeam-utils@0.8.16 + crypto-common@0.1.6 + data-encoding@2.5.0 + deranged@0.3.9 + dialoguer@0.11.0 + diff@0.1.13 + digest@0.10.7 + dirs-sys@0.4.1 + dirs@5.0.1 + dissimilar@1.0.7 + dunce@1.0.4 + either@1.9.0 + encode_unicode@0.3.6 + encoding_rs@0.8.33 + equivalent@1.0.1 + errno@0.3.8 + expect-test@1.4.1 + fastrand@2.0.1 + fat-macho@0.4.7 + filetime@0.2.22 + flate2@1.0.28 + fnv@1.0.7 + foreign-types-shared@0.1.1 + foreign-types@0.3.2 + form_urlencoded@1.2.1 + fs-err@2.11.0 + generic-array@0.14.7 + getrandom@0.2.11 + globset@0.4.14 + glob@0.3.1 + goblin@0.7.1 + hashbrown@0.12.3 + hashbrown@0.14.3 + heck@0.4.1 + hermit-abi@0.3.3 + home@0.5.5 + humantime-serde@1.1.1 + humantime@2.1.0 + idna@0.5.0 + ignore@0.4.20 + indexmap@1.9.3 + indexmap@2.1.0 + indicatif@0.17.7 + indoc@2.0.4 + instant@0.1.12 + io-lifetimes@1.0.11 + is-terminal@0.4.9 + itertools@0.11.0 + itertools@0.12.0 + itoa@1.0.9 + keyring@2.0.5 + lazy_static@1.4.0 + lddtree@0.3.3 + libc@0.2.150 + libredox@0.0.1 + linux-keyutils@0.2.3 + linux-raw-sys@0.3.8 + linux-raw-sys@0.4.11 + lock_api@0.4.11 + log@0.4.20 + lzxd@0.1.4 + mailparse@0.14.0 + matchers@0.1.0 + memchr@2.6.4 + memoffset@0.9.0 + mime@0.3.17 + mime_guess@2.0.4 + minijinja@1.0.10 + minimal-lexical@0.2.1 + miniz_oxide@0.7.1 + msi@0.7.0 + multipart@0.18.0 + native-tls@0.2.11 + nom@7.1.3 + normalize-line-endings@0.3.0 + normpath@1.1.1 + number_prefix@0.4.0 + nu-ansi-term@0.46.0 + once_cell@1.18.0 + openssl-macros@0.1.1 + openssl-probe@0.1.5 + openssl-sys@0.9.96 + openssl@0.10.60 + option-ext@0.2.0 + os_pipe@1.1.4 + overload@0.1.1 + parking_lot@0.12.1 + parking_lot_core@0.9.9 + paste@1.0.14 + path-slash@0.2.1 + pep440_rs@0.3.12 + pep508_rs@0.2.3 + percent-encoding@2.3.1 + pin-project-lite@0.2.13 + pkg-config@0.3.27 + plain@0.2.3 + platform-info@2.0.2 + portable-atomic@1.5.1 + powerfmt@0.2.0 + ppv-lite86@0.2.17 + pretty_assertions@1.4.0 + proc-macro2@1.0.70 + psm@0.1.21 + pyproject-toml@0.8.1 + python-pkginfo@0.6.0 + quoted_printable@0.4.8 + quote@1.0.33 + rand@0.8.5 + rand_chacha@0.3.1 + rand_core@0.6.4 + rayon-core@1.12.0 + rayon@1.8.0 + redox_syscall@0.3.5 + redox_syscall@0.4.1 + redox_users@0.4.4 + regex-automata@0.1.10 + regex-automata@0.4.3 + regex-syntax@0.6.29 + regex-syntax@0.8.2 + regex@1.10.2 + rfc2047-decoder@0.2.2 + ring@0.17.6 + rustc_version@0.4.0 + rustix@0.37.27 + rustix@0.38.21 + rustls-pemfile@2.0.0 + rustls-pki-types@1.0.0 + rustls-webpki@0.101.7 + rustls@0.21.9 + rustversion@1.0.14 + ryu@1.0.15 + same-file@1.0.6 + schannel@0.1.22 + scopeguard@1.2.0 + scroll@0.11.0 + scroll_derive@0.11.1 + sct@0.7.1 + security-framework-sys@2.9.1 + security-framework@2.9.2 + semver@1.0.20 + serde@1.0.193 + serde_derive@1.0.193 + serde_json@1.0.108 + serde_spanned@0.6.4 + sha2@0.10.8 + sharded-slab@0.1.7 + shell-words@1.1.0 + shlex@1.2.0 + similar@2.3.0 + smallvec@1.11.2 + smawk@0.3.2 + snapbox-macros@0.3.6 + snapbox@0.4.14 + socks@0.3.4 + spin@0.9.8 + stacker@0.1.15 + static_assertions@1.1.0 + strsim@0.10.0 + syn@1.0.109 + syn@2.0.39 + target-lexicon@0.12.12 + tar@0.4.40 + tempfile@3.8.1 + termcolor@1.4.0 + terminal_size@0.2.6 + textwrap@0.16.0 + thiserror-impl@1.0.50 + thiserror@1.0.50 + thread_local@1.1.7 + time-core@0.1.2 + time-macros@0.2.15 + time@0.3.30 + tinyvec@1.6.0 + tinyvec_macros@0.1.1 + toml@0.5.11 + toml@0.8.8 + toml_datetime@0.6.5 + toml_edit@0.20.7 + toml_edit@0.21.0 + tracing-attributes@0.1.27 + tracing-core@0.1.32 + tracing-log@0.2.0 + tracing-serde@0.1.3 + tracing-subscriber@0.3.18 + tracing@0.1.40 + trycmd@0.14.19 + twox-hash@1.6.3 + typenum@1.17.0 + unicase@2.7.0 + unicode-bidi@0.3.13 + unicode-ident@1.0.12 + unicode-linebreak@0.1.5 + unicode-normalization@0.1.22 + unicode-width@0.1.11 + untrusted@0.9.0 + ureq@2.9.1 + url@2.5.0 + utf8parse@0.2.1 + uuid@1.6.1 + valuable@0.1.0 + vcpkg@0.2.15 + versions@5.0.1 + version_check@0.9.4 + wait-timeout@0.2.0 + walkdir@2.4.0 + wasi@0.11.0+wasi-snapshot-preview1 + webpki-roots@0.25.3 + which@5.0.0 + wild@2.2.0 + winapi-i686-pc-windows-gnu@0.4.0 + winapi-util@0.1.6 + winapi-x86_64-pc-windows-gnu@0.4.0 + winapi@0.3.9 + windows-sys@0.45.0 + windows-sys@0.48.0 + windows-sys@0.52.0 + windows-targets@0.42.2 + windows-targets@0.48.5 + windows-targets@0.52.0 + windows_aarch64_gnullvm@0.42.2 + windows_aarch64_gnullvm@0.48.5 + windows_aarch64_gnullvm@0.52.0 + windows_aarch64_msvc@0.42.2 + windows_aarch64_msvc@0.48.5 + windows_aarch64_msvc@0.52.0 + windows_i686_gnu@0.42.2 + windows_i686_gnu@0.48.5 + windows_i686_gnu@0.52.0 + windows_i686_msvc@0.42.2 + windows_i686_msvc@0.48.5 + windows_i686_msvc@0.52.0 + windows_x86_64_gnullvm@0.42.2 + windows_x86_64_gnullvm@0.48.5 + windows_x86_64_gnullvm@0.52.0 + windows_x86_64_gnu@0.42.2 + windows_x86_64_gnu@0.48.5 + windows_x86_64_gnu@0.52.0 + windows_x86_64_msvc@0.42.2 + windows_x86_64_msvc@0.48.5 + windows_x86_64_msvc@0.52.0 + winnow@0.5.19 + xattr@1.0.1 + xwin@0.5.0 + yansi@0.5.1 + zerocopy-derive@0.7.28 + zerocopy@0.7.28 + zeroize@1.7.0 + zip@0.6.6 +" +# additional crates used by test-crates/* test packages, +# `grep test-crates tests/run.rs` to see which are needed +CRATES_TEST=" + anstyle@1.0.1 + anyhow@1.0.72 + askama@0.12.0 + askama_derive@0.12.1 + askama_escape@0.10.3 + basic-toml@0.1.4 + bincode@1.3.3 + bitflags@2.4.0 + bytes@1.4.0 + cargo-platform@0.1.3 + cargo_metadata@0.15.4 + cc@1.0.73 + cc@1.0.81 + cc@1.0.82 + clap@4.3.21 + clap_builder@4.3.21 + errno-dragonfly@0.1.2 + errno@0.3.2 + fs-err@2.9.0 + generator@0.7.5 + getrandom@0.2.10 + goblin@0.6.1 + hermit-abi@0.3.2 + indoc@1.0.7 + indoc@1.0.9 + libc@0.2.134 + libc@0.2.147 + libc@0.2.149 + linux-raw-sys@0.4.10 + lock_api@0.4.9 + lock_api@0.4.10 + log@0.4.19 + loom@0.5.6 + memchr@2.5.0 + once_cell@1.15.0 + oneshot@0.1.6 + parking_lot_core@0.9.3 + parking_lot_core@0.9.8 + pin-utils@0.1.0 + proc-macro2@1.0.46 + proc-macro2@1.0.66 + proc-macro2@1.0.69 + pyo3-build-config@0.18.3 + pyo3-build-config@0.19.0 + pyo3-build-config@0.19.2 + pyo3-ffi@0.18.3 + pyo3-ffi@0.19.0 + pyo3-ffi@0.19.2 + pyo3-macros-backend@0.19.0 + pyo3-macros-backend@0.19.2 + pyo3-macros@0.19.0 + pyo3-macros@0.19.2 + pyo3@0.19.0 + pyo3@0.19.2 + python3-dll-a@0.2.6 + python3-dll-a@0.2.9 + quote@1.0.21 + quote@1.0.32 + redox_syscall@0.2.16 + regex-automata@0.3.7 + regex-syntax@0.7.5 + regex@1.9.4 + scoped-tls@1.0.1 + scopeguard@1.1.0 + semver@1.0.18 + serde@1.0.182 + serde@1.0.183 + serde_derive@1.0.182 + serde_derive@1.0.183 + serde_json@1.0.104 + siphasher@0.3.10 + smallvec@1.10.0 + smallvec@1.11.0 + smallvec@1.11.1 + syn@1.0.102 + syn@2.0.28 + target-lexicon@0.12.7 + target-lexicon@0.12.11 + thiserror-impl@1.0.44 + thiserror@1.0.44 + tracing-log@0.1.4 + tracing-subscriber@0.3.17 + unicase@2.6.0 + unicode-ident@1.0.5 + unicode-ident@1.0.11 + uniffi@0.25.0 + uniffi_bindgen@0.25.0 + uniffi_build@0.25.0 + uniffi_checksum_derive@0.25.0 + uniffi_core@0.25.0 + uniffi_macros@0.25.0 + uniffi_meta@0.25.0 + uniffi_testing@0.25.0 + uniffi_udl@0.25.0 + unindent@0.1.10 + unindent@0.1.11 + weedle2@4.0.0 + windows-sys@0.36.1 + windows-targets@0.48.1 + windows@0.48.0 + windows_aarch64_gnullvm@0.48.0 + windows_aarch64_msvc@0.36.1 + windows_aarch64_msvc@0.48.0 + windows_i686_gnu@0.36.1 + windows_i686_gnu@0.48.0 + windows_i686_msvc@0.36.1 + windows_i686_msvc@0.48.0 + windows_x86_64_gnullvm@0.48.0 + windows_x86_64_gnu@0.36.1 + windows_x86_64_gnu@0.48.0 + windows_x86_64_msvc@0.36.1 + windows_x86_64_msvc@0.48.0 +" +DISTUTILS_EXT=1 #926507 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( pypy3 python3_{10..12} ) +inherit cargo distutils-r1 edo shell-completion toolchain-funcs + +DESCRIPTION="Build and publish crates with pyo3, rust-cpython and cffi bindings" +HOMEPAGE="https://www.maturin.rs/" +SRC_URI=" + https://github.com/PyO3/maturin/archive/refs/tags/v${PV}.tar.gz + -> ${P}.gh.tar.gz + ${CARGO_CRATE_URIS} + test? ( $(cargo_crate_uris ${CRATES_TEST}) ) +" + +# note: ring is unused, so openssl license can be skipped +LICENSE="|| ( Apache-2.0 MIT ) doc? ( CC-BY-4.0 OFL-1.1 )" +LICENSE+=" + 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD ISC MIT MPL-2.0 + Unicode-DFS-2016 +" # crates +SLOT="0" +KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86" +IUSE="doc +ssl test" +RESTRICT="!test? ( test )" + +RDEPEND="$(python_gen_cond_dep 'dev-python/tomli[${PYTHON_USEDEP}]' 3.10)" +DEPEND="ssl? ( dev-libs/openssl:= )" +BDEPEND=" + dev-python/setuptools-rust[${PYTHON_USEDEP}] + virtual/pkgconfig + doc? ( app-text/mdbook ) + test? ( + ${RDEPEND} + $(python_gen_cond_dep 'dev-python/cffi[${PYTHON_USEDEP}]' 'python*') + dev-python/boltons[${PYTHON_USEDEP}] + dev-python/virtualenv[${PYTHON_USEDEP}] + dev-vcs/git + ) +" +RDEPEND+=" ${DEPEND}" + +QA_FLAGS_IGNORED="usr/bin/${PN}" + +src_prepare() { + pushd "${ECARGO_HOME}"/gentoo/openssl-sys-0.9.96 > /dev/null || die + eapply "${FILESDIR}/${PN}-1.4.0-libressl-openssl-sys.patch" + popd > /dev/null || die + + distutils-r1_src_prepare + + if use test; then + # used to prevent use of network during tests, and silence pip + # if it finds unrelated issues with system packages (bug #913613) + cat > "${T}"/pip.conf <<-EOF || die + [global] + quiet = 2 + + [install] + no-index = yes + no-dependencies = yes + EOF + + # used by *git_sdist_generator tests + git init -q || die + git config --global user.email "larry@gentoo.org" || die + git config --global user.name "Larry the Cow" || die + git add . || die + git commit -qm init || die + fi +} + +src_configure() { + local cargoargs=( + # TODO: try switching to `--profile gentoo` then should be able to + # remove all `use debug` checks and --release in tests, but needs: + # https://github.com/gentoo/gentoo/pull/29510 + $(usev debug '--profile dev') + --no-default-features + # like release.yml + native-tls for better platform support than rustls + --features full,password-storage$(usev ssl ,native-tls) + ) + + export MATURIN_SETUP_ARGS=${cargoargs[*]} + export OPENSSL_NO_VENDOR=1 +} + +python_compile_all() { + use !doc || mdbook build -d html guide || die + + if ! tc-is-cross-compiler; then + local maturin=target/$(usex debug{,} release)/maturin + ${maturin} completions bash > "${T}"/${PN} || die + ${maturin} completions fish > "${T}"/${PN}.fish || die + ${maturin} completions zsh > "${T}"/_${PN} || die + else + ewarn "shell completion files were skipped due to cross-compilation" + fi +} + +python_test() { + local -x COLUMNS=100 # what tests/cmd was generated for + local -x MATURIN_TEST_PYTHON=${EPYTHON} + local -x PIP_CONFIG_FILE=${T}/pip.conf + local -x VIRTUALENV_SYSTEM_SITE_PACKAGES=1 + + local skip=( + # avoid need for wasm over a single hello world test + --skip integration_wasm_hello_world + # fragile depending on rust version, also wants libpypy*-c.so for pypy + --skip pyo3_no_extension_module + ) + + edo cargo test $(usev !debug --release) ${MATURIN_SETUP_ARGS} -- "${skip[@]}" +} + +python_install_all() { + dodoc Changelog.md README.md + use doc && dodoc -r guide/html + + if ! tc-is-cross-compiler; then + dobashcomp "${T}"/${PN} + dofishcomp "${T}"/${PN}.fish + dozshcomp "${T}"/_${PN} + fi +} diff --git a/dev-util/maturin/maturin-1.5.1-r1.ebuild b/dev-util/maturin/maturin-1.5.1-r1.ebuild new file mode 100644 index 0000000..0602d2f --- /dev/null +++ b/dev-util/maturin/maturin-1.5.1-r1.ebuild @@ -0,0 +1,556 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CRATES=" + adler@1.0.2 + ahash@0.8.7 + aho-corasick@1.1.2 + allocator-api2@0.2.16 + anstream@0.6.11 + anstyle-parse@0.2.3 + anstyle-query@1.0.2 + anstyle-wincon@3.0.2 + anstyle@1.0.4 + anyhow@1.0.80 + autocfg@1.1.0 + base64@0.13.1 + base64@0.21.7 + bitflags@1.3.2 + bitflags@2.4.2 + block-buffer@0.10.4 + bstr@1.9.0 + byteorder@1.5.0 + bytesize@1.3.0 + bytes@1.5.0 + bzip2-sys@0.1.11+1.0.8 + bzip2@0.4.4 + cab@0.4.1 + camino@1.1.6 + cargo-config2@0.1.19 + cargo-options@0.7.2 + cargo-platform@0.1.6 + cargo-xwin@0.16.4 + cargo-zigbuild@0.18.3 + cargo_metadata@0.18.1 + cbindgen@0.26.0 + cc@1.0.88 + cfb@0.9.0 + cfg-if@1.0.0 + charset@0.1.3 + chumsky@0.9.3 + clap@4.4.18 + clap_builder@4.4.18 + clap_complete@4.4.9 + clap_complete_command@0.5.1 + clap_complete_nushell@0.1.11 + clap_derive@4.4.7 + clap_lex@0.6.0 + cli-table@0.4.7 + colorchoice@1.0.0 + configparser@3.0.4 + console@0.15.8 + content_inspector@0.2.4 + core-foundation-sys@0.8.6 + core-foundation@0.9.4 + cpufeatures@0.2.12 + crc32fast@1.3.2 + crossbeam-channel@0.5.11 + crossbeam-deque@0.8.5 + crossbeam-epoch@0.9.18 + crossbeam-utils@0.8.19 + crypto-common@0.1.6 + data-encoding@2.5.0 + deranged@0.3.11 + derivative@2.2.0 + dialoguer@0.11.0 + diff@0.1.13 + digest@0.10.7 + dirs-sys@0.4.1 + dirs@5.0.1 + dissimilar@1.0.7 + dunce@1.0.4 + either@1.9.0 + encode_unicode@0.3.6 + encoding_rs@0.8.33 + equivalent@1.0.1 + errno@0.3.8 + expect-test@1.4.1 + fastrand@2.0.1 + fat-macho@0.4.8 + filetime@0.2.23 + flate2@1.0.28 + fnv@1.0.7 + foreign-types-shared@0.1.1 + foreign-types@0.3.2 + form_urlencoded@1.2.1 + fs-err@2.11.0 + generic-array@0.14.7 + getrandom@0.2.12 + globset@0.4.14 + glob@0.3.1 + goblin@0.8.0 + hashbrown@0.12.3 + hashbrown@0.14.3 + heck@0.4.1 + home@0.5.9 + humantime-serde@1.1.1 + humantime@2.1.0 + idna@0.5.0 + ignore@0.4.22 + indexmap@1.9.3 + indexmap@2.2.3 + indicatif@0.17.7 + indoc@2.0.4 + instant@0.1.12 + itertools@0.11.0 + itertools@0.12.1 + itoa@1.0.10 + keyring@2.3.2 + lazy_static@1.4.0 + lddtree@0.3.4 + libc@0.2.153 + libredox@0.0.1 + linux-keyutils@0.2.4 + linux-raw-sys@0.4.13 + lock_api@0.4.11 + log@0.4.20 + lzxd@0.1.4 + mailparse@0.14.1 + matchers@0.1.0 + memchr@2.7.1 + mime@0.3.17 + mime_guess@2.0.4 + minijinja@1.0.12 + minimal-lexical@0.2.1 + miniz_oxide@0.7.1 + msi@0.7.0 + multipart@0.18.0 + native-tls@0.2.11 + nom@7.1.3 + normalize-line-endings@0.3.0 + normpath@1.1.1 + number_prefix@0.4.0 + num-conv@0.1.0 + nu-ansi-term@0.46.0 + once_cell@1.19.0 + openssl-macros@0.1.1 + openssl-probe@0.1.5 + openssl-sys@0.9.99 + openssl@0.10.63 + option-ext@0.2.0 + os_pipe@1.1.5 + overload@0.1.1 + parking_lot@0.12.1 + parking_lot_core@0.9.9 + paste@1.0.14 + path-slash@0.2.1 + pep440_rs@0.5.0 + pep508_rs@0.4.2 + percent-encoding@2.3.1 + pin-project-lite@0.2.13 + pkg-config@0.3.29 + plain@0.2.3 + platform-info@2.0.2 + portable-atomic@1.6.0 + powerfmt@0.2.0 + ppv-lite86@0.2.17 + pretty_assertions@1.4.0 + proc-macro2@1.0.78 + psm@0.1.21 + pyproject-toml@0.10.0 + python-pkginfo@0.6.0 + quoted_printable@0.4.8 + quoted_printable@0.5.0 + quote@1.0.35 + rand@0.8.5 + rand_chacha@0.3.1 + rand_core@0.6.4 + rayon-core@1.12.1 + rayon@1.8.1 + redox_syscall@0.4.1 + redox_users@0.4.4 + regex-automata@0.1.10 + regex-automata@0.4.5 + regex-syntax@0.6.29 + regex-syntax@0.8.2 + regex@1.10.3 + rfc2047-decoder@0.2.2 + ring@0.17.7 + rustc_version@0.4.0 + rustix@0.38.32 + rustls-pemfile@2.1.0 + rustls-pki-types@1.3.1 + rustls-webpki@0.102.1 + rustls@0.22.2 + rustversion@1.0.14 + ryu@1.0.16 + same-file@1.0.6 + schannel@0.1.23 + scopeguard@1.2.0 + scroll@0.12.0 + scroll_derive@0.12.0 + security-framework-sys@2.9.1 + security-framework@2.9.2 + semver@1.0.22 + serde@1.0.197 + serde_derive@1.0.197 + serde_json@1.0.114 + serde_spanned@0.6.5 + sha2@0.10.8 + sharded-slab@0.1.7 + shell-words@1.1.0 + shlex@1.3.0 + similar@2.4.0 + smallvec@1.13.1 + smawk@0.3.2 + snapbox-macros@0.3.8 + snapbox@0.5.7 + socks@0.3.4 + spin@0.9.8 + stacker@0.1.15 + static_assertions@1.1.0 + strsim@0.10.0 + subtle@2.5.0 + syn@1.0.109 + syn@2.0.48 + target-lexicon@0.12.14 + tar@0.4.40 + tempfile@3.9.0 + termcolor@1.4.1 + terminal_size@0.3.0 + textwrap@0.16.1 + thiserror-impl@1.0.57 + thiserror@1.0.57 + thread_local@1.1.7 + time-core@0.1.2 + time-macros@0.2.17 + time@0.3.34 + tinyvec@1.6.0 + tinyvec_macros@0.1.1 + toml@0.5.11 + toml@0.8.10 + toml_datetime@0.6.5 + toml_edit@0.22.6 + tracing-attributes@0.1.27 + tracing-core@0.1.32 + tracing-log@0.2.0 + tracing-serde@0.1.3 + tracing-subscriber@0.3.18 + tracing@0.1.40 + trycmd@0.15.0 + twox-hash@1.6.3 + typenum@1.17.0 + unicase@2.7.0 + unicode-bidi@0.3.15 + unicode-ident@1.0.12 + unicode-linebreak@0.1.5 + unicode-normalization@0.1.22 + unicode-width@0.1.11 + unicode-xid@0.2.4 + unscanny@0.1.0 + untrusted@0.9.0 + ureq@2.9.6 + urlencoding@2.1.3 + url@2.5.0 + utf8parse@0.2.1 + uuid@1.7.0 + valuable@0.1.0 + vcpkg@0.2.15 + versions@5.0.1 + version_check@0.9.4 + wait-timeout@0.2.0 + walkdir@2.4.0 + wasi@0.11.0+wasi-snapshot-preview1 + webpki-roots@0.26.0 + which@5.0.0 + which@6.0.0 + wild@2.2.1 + winapi-i686-pc-windows-gnu@0.4.0 + winapi-util@0.1.6 + winapi-x86_64-pc-windows-gnu@0.4.0 + winapi@0.3.9 + windows-sys@0.48.0 + windows-sys@0.52.0 + windows-targets@0.48.5 + windows-targets@0.52.0 + windows_aarch64_gnullvm@0.48.5 + windows_aarch64_gnullvm@0.52.0 + windows_aarch64_msvc@0.48.5 + windows_aarch64_msvc@0.52.0 + windows_i686_gnu@0.48.5 + windows_i686_gnu@0.52.0 + windows_i686_msvc@0.48.5 + windows_i686_msvc@0.52.0 + windows_x86_64_gnullvm@0.48.5 + windows_x86_64_gnullvm@0.52.0 + windows_x86_64_gnu@0.48.5 + windows_x86_64_gnu@0.52.0 + windows_x86_64_msvc@0.48.5 + windows_x86_64_msvc@0.52.0 + winnow@0.6.2 + xattr@1.3.1 + xwin@0.5.0 + yansi@0.5.1 + zerocopy-derive@0.7.32 + zerocopy@0.7.32 + zeroize@1.7.0 + zip@0.6.6 +" +# additional crates used by test-crates/* test packages, +# `grep test-crates tests/run.rs` to see which are needed +CRATES_TEST=" + anstream@0.3.2 + anstyle-parse@0.2.1 + anstyle-query@1.0.0 + anstyle-wincon@1.0.2 + anstyle@1.0.1 + anyhow@1.0.72 + askama@0.12.0 + askama_derive@0.12.1 + askama_escape@0.10.3 + basic-toml@0.1.4 + bincode@1.3.3 + bitflags@2.4.0 + bytes@1.4.0 + cargo-platform@0.1.3 + cargo_metadata@0.15.4 + cc@1.0.73 + cc@1.0.81 + cc@1.0.82 + cc@1.0.83 + clap@4.3.21 + clap_builder@4.3.21 + clap_derive@4.3.12 + clap_lex@0.5.0 + errno-dragonfly@0.1.2 + errno@0.3.2 + fs-err@2.9.0 + getrandom@0.2.10 + hermit-abi@0.3.2 + is-terminal@0.4.9 + itoa@1.0.9 + libc@0.2.134 + libc@0.2.147 + libc@0.2.149 + linux-raw-sys@0.4.10 + lock_api@0.4.9 + lock_api@0.4.10 + log@0.4.19 + memchr@2.5.0 + memoffset@0.9.0 + once_cell@1.15.0 + once_cell@1.18.0 + oneshot-uniffi@0.1.6 + parking_lot_core@0.9.3 + parking_lot_core@0.9.8 + proc-macro2@1.0.66 + proc-macro2@1.0.69 + proc-macro2@1.0.70 + pyo3-build-config@0.18.3 + pyo3-build-config@0.20.0 + pyo3-build-config@0.20.2 + pyo3-ffi@0.18.3 + pyo3-ffi@0.20.0 + pyo3-ffi@0.20.2 + pyo3-macros-backend@0.20.0 + pyo3-macros-backend@0.20.2 + pyo3-macros@0.20.0 + pyo3-macros@0.20.2 + pyo3@0.20.0 + pyo3@0.20.2 + python3-dll-a@0.2.6 + python3-dll-a@0.2.9 + quote@1.0.32 + quote@1.0.33 + redox_syscall@0.2.16 + redox_syscall@0.3.5 + rustix@0.38.21 + ryu@1.0.15 + scopeguard@1.1.0 + semver@1.0.18 + serde@1.0.182 + serde@1.0.183 + serde_derive@1.0.182 + serde_derive@1.0.183 + serde_json@1.0.104 + siphasher@0.3.10 + smallvec@1.10.0 + smallvec@1.11.0 + smallvec@1.11.1 + syn@2.0.28 + syn@2.0.32 + syn@2.0.40 + target-lexicon@0.12.7 + target-lexicon@0.12.11 + target-lexicon@0.12.12 + textwrap@0.16.0 + thiserror-impl@1.0.44 + thiserror@1.0.44 + unicase@2.6.0 + unicode-ident@1.0.5 + unicode-ident@1.0.11 + uniffi@0.26.1 + uniffi_bindgen@0.26.1 + uniffi_build@0.26.1 + uniffi_checksum_derive@0.26.1 + uniffi_core@0.26.1 + uniffi_macros@0.26.1 + uniffi_meta@0.26.1 + uniffi_testing@0.26.1 + uniffi_udl@0.26.1 + unindent@0.2.3 + weedle2@5.0.0 + windows-sys@0.36.1 + windows-targets@0.48.1 + windows_aarch64_gnullvm@0.48.0 + windows_aarch64_msvc@0.36.1 + windows_aarch64_msvc@0.48.0 + windows_i686_gnu@0.36.1 + windows_i686_gnu@0.48.0 + windows_i686_msvc@0.36.1 + windows_i686_msvc@0.48.0 + windows_x86_64_gnullvm@0.48.0 + windows_x86_64_gnu@0.36.1 + windows_x86_64_gnu@0.48.0 + windows_x86_64_msvc@0.36.1 + windows_x86_64_msvc@0.48.0 +" +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( pypy3 python3_{10..12} ) +inherit cargo distutils-r1 flag-o-matic shell-completion toolchain-funcs + +DESCRIPTION="Build and publish crates with pyo3, rust-cpython and cffi bindings" +HOMEPAGE="https://www.maturin.rs/" +SRC_URI=" + https://github.com/PyO3/maturin/archive/refs/tags/v${PV}.tar.gz + -> ${P}.gh.tar.gz + ${CARGO_CRATE_URIS} + test? ( $(cargo_crate_uris ${CRATES_TEST}) ) +" + +# note: ring is unused, so openssl license can be skipped +LICENSE="|| ( Apache-2.0 MIT ) doc? ( CC-BY-4.0 OFL-1.1 )" +LICENSE+=" + 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD ISC MIT MPL-2.0 + Unicode-DFS-2016 +" # crates +SLOT="0" +KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv ~s390 ~sparc x86" +IUSE="doc +ssl test" +RESTRICT="!test? ( test )" + +# TODO: cleanup after CRATES_TEST's pyo3 is >=0.20.3 (bug #922236) +RESTRICT+=" ppc? ( test )" + +RDEPEND="$(python_gen_cond_dep 'dev-python/tomli[${PYTHON_USEDEP}]' 3.10)" +DEPEND="ssl? ( dev-libs/openssl:= )" +BDEPEND=" + virtual/pkgconfig + doc? ( app-text/mdbook ) + test? ( + ${RDEPEND} + $(python_gen_cond_dep 'dev-python/cffi[${PYTHON_USEDEP}]' 'python*') + dev-python/boltons[${PYTHON_USEDEP}] + dev-python/virtualenv[${PYTHON_USEDEP}] + dev-vcs/git + ) +" +RDEPEND+=" ${DEPEND}" + +QA_FLAGS_IGNORED="usr/bin/${PN}" + +src_prepare() { + pushd "${ECARGO_HOME}"/gentoo/openssl-sys-0.9.99 > /dev/null || die + eapply "${FILESDIR}/${PN}-1.4.0-libressl-openssl-sys.patch" + popd > /dev/null || die + + distutils-r1_src_prepare + + [[ ${CRATES_TEST} == *pyo3@0.20.[0-2]* ]] || die "drop ppc test restrict" + + # we build the Rust executable (just once) via cargo_src_compile + sed -i -e '/setuptools_rust/d' -e '/rust_extensions/d' setup.py || die + + if use test; then + # used to prevent use of network during tests, and silence pip + # if it finds unrelated issues with system packages (bug #913613) + cat > "${T}"/pip.conf <<-EOF || die + [global] + quiet = 2 + + [install] + no-index = yes + no-dependencies = yes + EOF + + # used by *git_sdist_generator tests + git init -q || die + git config --global user.email "larry@gentoo.org" || die + git config --global user.name "Larry the Cow" || die + git add . || die + git commit -qm init || die + fi +} + +src_configure() { + export OPENSSL_NO_VENDOR=1 + + # https://github.com/rust-lang/stacker/issues/79 + use s390 && ! is-flagq '-march=*' && + append-cflags $(test-flags-CC -march=z10) + + local myfeatures=( + # like release.yml + native-tls for better platform support than rustls + full + password-storage + $(usev ssl native-tls) + ) + + cargo_src_configure --no-default-features +} + +python_compile_all() { + cargo_src_compile + + use !doc || mdbook build -d html guide || die + + if ! tc-is-cross-compiler; then + local maturin=target/$(usex debug{,} release)/maturin + ${maturin} completions bash > "${T}"/${PN} || die + ${maturin} completions fish > "${T}"/${PN}.fish || die + ${maturin} completions zsh > "${T}"/_${PN} || die + else + ewarn "shell completion files were skipped due to cross-compilation" + fi +} + +python_test() { + local -x COLUMNS=100 # match clap_builder crate default + local -x MATURIN_TEST_PYTHON=${EPYTHON} + local -x PIP_CONFIG_FILE=${T}/pip.conf + local -x VIRTUALENV_SYSTEM_SITE_PACKAGES=1 + + local skip=( + # avoid need for wasm over a single hello world test + --skip integration_wasm_hello_world + # fragile depending on rust version, also wants libpypy*-c.so for pypy + --skip pyo3_no_extension_module + ) + + cargo_src_test -- "${skip[@]}" +} + +python_install_all() { + cargo_src_install + + dodoc Changelog.md README.md + use doc && dodoc -r guide/html + + if ! tc-is-cross-compiler; then + dobashcomp "${T}"/${PN} + dofishcomp "${T}"/${PN}.fish + dozshcomp "${T}"/_${PN} + fi +} diff --git a/dev-util/maturin/metadata.xml b/dev-util/maturin/metadata.xml new file mode 100644 index 0000000..8f5c9c7 --- /dev/null +++ b/dev-util/maturin/metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>ionen@gentoo.org</email> + <name>Ionen Wolkens</name> + </maintainer> + <upstream> + <changelog>https://www.maturin.rs/changelog.html</changelog> + <remote-id type="github">PyO3/maturin</remote-id> + <remote-id type="pypi">maturin</remote-id> + </upstream> +</pkgmetadata> diff --git a/mail-mta/postfix/Manifest b/mail-mta/postfix/Manifest new file mode 100644 index 0000000..d72f7ae --- /dev/null +++ b/mail-mta/postfix/Manifest @@ -0,0 +1 @@ +DIST postfix-3.5.22.tar.gz 4634825 BLAKE2B af8c0d1ef546ef2d69987501aab1aa2371cc60cadb6748ceab752fe635d7dbecc3b678d4acae8e014d12a514283a6923c39c5770c4bddda5e141461ce9073e6f SHA512 ed14c8fb565c8dc05049e169a253260739fa1866c00aa25de90444ffca885dc515ff6b262b608cf28031a0b17a16a4d691d0273dcbd4a21ad7f21db4d19b6d38 diff --git a/mail-mta/postfix/files/postfix-3.5.8-libressl.patch b/mail-mta/postfix/files/postfix-3.5.8-libressl.patch new file mode 100644 index 0000000..757101e --- /dev/null +++ b/mail-mta/postfix/files/postfix-3.5.8-libressl.patch @@ -0,0 +1,55 @@ +see https://bugs.gentoo.org/678874 + +--- a/src/tls/tls_certkey.c.orig 2019-03-07 23:57:10 UTC ++++ b/src/tls/tls_certkey.c +@@ -144,7 +144,7 @@ static void init_pem_load_state(pem_load + + /* use_chain - load cert, key and chain into ctx or ssl */ + +-#if OPENSSL_VERSION_NUMBER >= 0x1010100fUL ++#if OPENSSL_VERSION_NUMBER >= 0x1010100fUL && !defined(LIBRESSL_VERSION_NUMBER) + static int use_chain(pem_load_state_t *st) + { + int ret; +see https://bugs.gentoo.org/678874 + +--- a/src/tls/tls_server.c.orig 2018-12-26 19:21:49 UTC ++++ b/src/tls/tls_server.c +@@ -518,7 +518,9 @@ TLS_APPL_STATE *tls_server_init(const TL + * ticket decryption callback already (since 2.11) asks OpenSSL to + * avoid issuing new tickets when the presented ticket is re-usable. + */ ++#ifndef LIBRESSL_VERSION_NUMBER + SSL_CTX_set_num_tickets(server_ctx, 1); ++#endif + } + #endif + if (!ticketable) +--- a/src/tls/tls_misc.c.orig ++++ b/src/tls/tls_misc.c +@@ -657,7 +657,7 @@ void tls_param_init(void) + + int tls_library_init(void) + { +- OPENSSL_INIT_SETTINGS *init_settings; ++ // OPENSSL_INIT_SETTINGS *init_settings; + char *conf_name = *var_tls_cnf_name ? var_tls_cnf_name : 0; + char *conf_file = 0; + unsigned long init_opts = 0; +@@ -681,6 +681,7 @@ int tls_library_init(void) + msg_info("tls_library_init: using backwards-compatible defaults"); + return (init_res = TLS_LIB_INIT_OK); + } ++#if 0 + if ((init_settings = OPENSSL_INIT_new()) == 0) { + msg_warn("error allocating OpenSSL init settings, " + "disabling TLS support"); +@@ -763,6 +764,8 @@ int tls_library_init(void) + TLS_LIB_INIT_RETURN(TLS_LIB_INIT_ERR); + } + TLS_LIB_INIT_RETURN(TLS_LIB_INIT_OK); ++#endif ++ return init_res = TLS_LIB_INIT_OK; + } + + /* tls_pre_jail_init - Load TLS related pre-jail tables */ diff --git a/mail-mta/postfix/files/postfix.rc6.2.7 b/mail-mta/postfix/files/postfix.rc6.2.7 new file mode 100644 index 0000000..62f6dda --- /dev/null +++ b/mail-mta/postfix/files/postfix.rc6.2.7 @@ -0,0 +1,85 @@ +#!/sbin/openrc-run +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +extra_started_commands="reload abort flush" + +description_reload="Re-read configuration files. Running processes terminate at their earliest convenience." +description_abort="Stop the Postfix mail system abruptly. Running processes are signaled to stop immediately." +description_flush="Force delivery: attempt to deliver every message in the deferred mail queue." + +# Please read http://www.postfix.org/MULTI_INSTANCE_README.html for multi instance support +CONF_DIR="/etc/postfix" +CONF_OPT="${SVCNAME##*.}" +if [ -n ${CONF_OPT} -a ${SVCNAME} != "postfix" ]; then + CONF_DIR="${CONF_DIR}.${CONF_OPT}" +fi +if [ "${CONF_DIR}" = "/etc/postfix" ]; then + CONF_PARAM="" + CONF_MESSAGE="" +else + CONF_PARAM="-c ${CONF_DIR}" + CONF_MESSAGE="(${CONF_DIR})" +fi + +depend() { + use logger dns ypbind amavisd antivirus postfix_greylist net saslauthd + if [ "${SVCNAME}" = "postfix" ]; then + provide mta + fi +} + +start() { + if [ ! -z "${CONF_PARAM}" ]; then + einfo "Please consider updating your config for postmulti support." + fi + ebegin "Starting postfix ${CONF_MESSAGE}" + if [ ! -d ${CONF_DIR} ]; then + eend 1 "${CONF_DIR} does not exist" + return 1 + fi + /usr/sbin/postfix ${CONF_PARAM} start >/dev/null 2>&1 + eend $? +} + +stop() { + ebegin "Stopping postfix ${CONF_MESSAGE}" + /usr/sbin/postfix ${CONF_PARAM} stop >/dev/null 2>&1 + eend $? +} + +status() { + local _retval + einfon "" + /usr/sbin/postfix ${CONF_PARAM} status + _retval=$? + if [ x${_retval} = 'x0' ]; then + mark_service_started "${SVCNAME}" + eend 0 + else + mark_service_stopped "${SVCNAME}" + eend 3 + fi +} + +reload() { + ebegin "Reloading postfix ${CONF_MESSAGE}" + /usr/sbin/postfix ${CONF_PARAM} reload >/dev/null 2>&1 + eend $? +} + +abort() { + ebegin "Aborting postfix ${CONF_MESSAGE}" + + if service_started "${SVCNAME}"; then + mark_service_stopped "${SVCNAME}" + fi + /usr/sbin/postfix ${CONF_PARAM} abort >/dev/null 2>&1 + eend $? +} + +flush() { + ebegin "Flushing postfix ${CONF_MESSAGE}" + /usr/sbin/postfix ${CONF_PARAM} flush >/dev/null 2>&1 + eend $? +} diff --git a/mail-mta/postfix/files/postfix.service b/mail-mta/postfix/files/postfix.service new file mode 100644 index 0000000..7a72aaa --- /dev/null +++ b/mail-mta/postfix/files/postfix.service @@ -0,0 +1,26 @@ +[Unit] +Description=Postfix Mail Transport Agent +After=network.target + +[Service] +Type=forking +ExecStartPre=-/usr/bin/newaliases +ExecStart=/usr/sbin/postfix start +ExecStop=/usr/sbin/postfix stop +ExecReload=/usr/sbin/postfix reload +# Hardening +PrivateTmp=yes +PrivateDevices=yes +ProtectSystem=full +ReadWritePaths=-/etc/mail/aliases.db -/etc/mail/aliases.cdb -/etc/mail/aliases.lmdb +CapabilityBoundingSet=~ CAP_NET_ADMIN CAP_SYS_ADMIN CAP_SYS_BOOT CAP_SYS_MODULE +MemoryDenyWriteExecute=true +ProtectKernelModules=true +ProtectKernelTunables=true +ProtectControlGroups=true +RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX +RestrictNamespaces=true +RestrictRealtime=true + +[Install] +WantedBy=multi-user.target diff --git a/mail-mta/postfix/files/smtp.pass b/mail-mta/postfix/files/smtp.pass new file mode 100644 index 0000000..f9b5120 --- /dev/null +++ b/mail-mta/postfix/files/smtp.pass @@ -0,0 +1,2 @@ +# +# remotehost user:password diff --git a/mail-mta/postfix/files/smtp.sasl b/mail-mta/postfix/files/smtp.sasl new file mode 100644 index 0000000..82f2945 --- /dev/null +++ b/mail-mta/postfix/files/smtp.sasl @@ -0,0 +1,2 @@ +pwcheck_method:saslauthd +mech_list: PLAIN diff --git a/mail-mta/postfix/metadata.xml b/mail-mta/postfix/metadata.xml new file mode 100644 index 0000000..bfcda1f --- /dev/null +++ b/mail-mta/postfix/metadata.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>eras@gentoo.org</email> + <name>Eray Aslan</name> + </maintainer> + <maintainer type="person"> + <email>williamh@gentoo.org</email> + <name>William Hubbs</name> + </maintainer> + <use> + <flag name="dovecot-sasl">Enable <pkg>net-mail/dovecot</pkg> protocol + version 1 (server only) SASL implementation</flag> + <flag name="eai">Add support for SMTPUTF8</flag> + <flag name="ldap-bind">Add support for binding to LDAP backend + using <pkg>dev-libs/cyrus-sasl</pkg></flag> + <flag name="memcached">Add support for using <pkg>net-misc/memcached</pkg> + for lookup tables</flag> + <flag name="lmdb">Add support for using <pkg>dev-db/lmdb</pkg> + for lookup tables</flag> + </use> +</pkgmetadata> diff --git a/mail-mta/postfix/postfix-3.5.22.ebuild b/mail-mta/postfix/postfix-3.5.22.ebuild new file mode 100644 index 0000000..4c1af31 --- /dev/null +++ b/mail-mta/postfix/postfix-3.5.22.ebuild @@ -0,0 +1,310 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic pam systemd toolchain-funcs + +MY_PV="${PV/_rc/-RC}" +MY_SRC="${PN}-${MY_PV}" +MY_URI="ftp://ftp.porcupine.org/mirrors/postfix-release/official" +RC_VER="2.7" + +DESCRIPTION="A fast and secure drop-in replacement for sendmail" +HOMEPAGE="http://www.postfix.org/" +SRC_URI="${MY_URI}/${MY_SRC}.tar.gz" + +LICENSE="|| ( IBM EPL-2.0 )" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86" +IUSE="+berkdb cdb dovecot-sasl +eai hardened ldap ldap-bind lmdb memcached mbox mysql nis pam postgres sasl selinux sqlite ssl" + +DEPEND=" + acct-group/postfix + acct-group/postdrop + acct-user/postfix + >=dev-libs/libpcre-3.4 + dev-lang/perl + berkdb? ( >=sys-libs/db-3.2:* ) + cdb? ( || ( >=dev-db/tinycdb-0.76 >=dev-db/cdb-0.75-r4 ) ) + eai? ( dev-libs/icu:= ) + ldap? ( net-nds/openldap ) + ldap-bind? ( net-nds/openldap[sasl] ) + lmdb? ( >=dev-db/lmdb-0.9.11 ) + mysql? ( dev-db/mysql-connector-c:0= ) + nis? ( net-libs/libnsl ) + pam? ( sys-libs/pam ) + postgres? ( dev-db/postgresql:* ) + sasl? ( >=dev-libs/cyrus-sasl-2 ) + sqlite? ( dev-db/sqlite:3 ) + ssl? ( dev-libs/openssl:0= )" + +RDEPEND="${DEPEND} + memcached? ( net-misc/memcached ) + net-mail/mailbase + !mail-mta/courier + !mail-mta/esmtp + !mail-mta/exim + !mail-mta/msmtp[mta] + !mail-mta/netqmail + !mail-mta/nullmailer + !mail-mta/sendmail + !mail-mta/opensmtpd + !mail-mta/ssmtp[mta] + selinux? ( sec-policy/selinux-postfix )" + +REQUIRED_USE="ldap-bind? ( ldap sasl )" + +S="${WORKDIR}/${MY_SRC}" + +PATCHES=( + "${FILESDIR}/${PN}-3.5.8-libressl.patch" +) + +src_prepare() { + default + sed -i -e "/^#define ALIAS_DB_MAP/s|:/etc/aliases|:/etc/mail/aliases|" \ + src/util/sys_defs.h || die "sed failed" + # change default paths to better comply with portage standard paths + sed -i -e "s:/usr/local/:/usr/:g" conf/master.cf || die "sed failed" +} + +src_configure() { + for name in CDB LDAP LMDB MYSQL PCRE PGSQL SDBM SQLITE + do + local AUXLIBS_${name}="" + done + + # Make sure LDFLAGS get passed down to the executables. + local mycc="-DHAS_PCRE" mylibs="${LDFLAGS} -ldl" + AUXLIBS_PCRE="$(pcre-config --libs)" + + use pam && mylibs="${mylibs} -lpam" + + if use ldap; then + mycc="${mycc} -DHAS_LDAP" + AUXLIBS_LDAP="-lldap -llber" + fi + + if use mysql; then + mycc="${mycc} -DHAS_MYSQL $(mysql_config --include)" + AUXLIBS_MYSQL="$(mysql_config --libs)" + fi + + if use postgres; then + mycc="${mycc} -DHAS_PGSQL -I$(pg_config --includedir)" + AUXLIBS_PGSQL="-L$(pg_config --libdir) -lpq" + fi + + if use sqlite; then + mycc="${mycc} -DHAS_SQLITE" + AUXLIBS_SQLITE="-lsqlite3 -lpthread" + fi + + if use ssl; then + mycc="${mycc} -DUSE_TLS" + mylibs="${mylibs} -lssl -lcrypto" + fi + + if use lmdb; then + mycc="${mycc} -DHAS_LMDB" + AUXLIBS_LMDB="-llmdb -lpthread" + fi + + if ! use eai; then + mycc="${mycc} -DNO_EAI" + fi + + # broken. and "in other words, not supported" by upstream. + # Use inet_protocols setting in main.cf + #if ! use ipv6; then + # mycc="${mycc} -DNO_IPV6" + #fi + + if use sasl; then + if use dovecot-sasl; then + # Set dovecot as default. + mycc="${mycc} -DDEF_SASL_SERVER=\\\"dovecot\\\"" + fi + if use ldap-bind; then + mycc="${mycc} -DUSE_LDAP_SASL" + fi + mycc="${mycc} -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl" + mylibs="${mylibs} -lsasl2" + elif use dovecot-sasl; then + mycc="${mycc} -DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\\\"dovecot\\\"" + fi + + if ! use nis; then + mycc="${mycc} -DNO_NIS" + fi + + if ! use berkdb; then + mycc="${mycc} -DNO_DB" + if use cdb; then + # change default hash format from Berkeley DB to cdb + mycc="${mycc} -DDEF_DB_TYPE=\\\"cdb\\\"" + fi + fi + + if use cdb; then + mycc="${mycc} -DHAS_CDB -I/usr/include/cdb" + # Tinycdb is preferred. + if has_version dev-db/tinycdb ; then + einfo "Building with dev-db/tinycdb" + AUXLIBS_CDB="-lcdb" + else + einfo "Building with dev-db/cdb" + CDB_PATH="/usr/$(get_libdir)" + for i in cdb.a alloc.a buffer.a unix.a byte.a ; do + AUXLIBS_CDB="${AUXLIBS_CDB} ${CDB_PATH}/${i}" + done + fi + fi + + # Robin H. Johnson <robbat2@gentoo.org> 17/Nov/2006 + # Fix because infra boxes hit 2Gb .db files that fail a 32-bit fstat signed check. + mycc="${mycc} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE" + filter-lfs-flags + + # Workaround for bug #76512 + if use hardened; then + [[ "$(gcc-version)" == "3.4" ]] && replace-flags -O? -Os + fi + + # Remove annoying C++ comment style warnings - bug #378099 + append-flags -Wno-comment + + sed -i -e "/^RANLIB/s/ranlib/$(tc-getRANLIB)/g" "${S}"/makedefs + sed -i -e "/^AR/s/ar/$(tc-getAR)/g" "${S}"/makedefs + + emake makefiles shared=yes dynamicmaps=no pie=yes \ + shlib_directory="/usr/$(get_libdir)/postfix/MAIL_VERSION" \ + DEBUG="" CC="$(tc-getCC)" OPT="${CFLAGS}" CCARGS="${mycc}" AUXLIBS="${mylibs}" \ + AUXLIBS_CDB="${AUXLIBS_CDB}" AUXLIBS_LDAP="${AUXLIBS_LDAP}" \ + AUXLIBS_LMDB="${AUXLIBS_LMDB}" AUXLIBS_MYSQL="${AUXLIBS_MYSQL}" \ + AUXLIBS_PCRE="${AUXLIBS_PCRE}" AUXLIBS_PGSQL="${AUXLIBS_PGSQL}" \ + AUXLIBS_SQLITE="${AUXLIBS_SQLITE}" +} + +src_install() { + LD_LIBRARY_PATH="${S}/lib" \ + /bin/sh postfix-install \ + -non-interactive \ + install_root="${D}" \ + config_directory="/etc/postfix" \ + manpage_directory="/usr/share/man" \ + command_directory="/usr/sbin" \ + mailq_path="/usr/bin/mailq" \ + newaliases_path="/usr/bin/newaliases" \ + sendmail_path="/usr/sbin/sendmail" \ + || die "postfix-install failed" + + # Fix spool removal on upgrade + rm -Rf "${D}"/var + keepdir /var/spool/postfix + + # Install rmail for UUCP, closes bug #19127 + dobin auxiliary/rmail/rmail + + # Provide another link for legacy FSH + dosym ../sbin/sendmail /usr/$(get_libdir)/sendmail + + # Install qshape, posttls-finger and collate + dobin auxiliary/qshape/qshape.pl + doman man/man1/qshape.1 + dobin bin/posttls-finger + doman man/man1/posttls-finger.1 + dobin auxiliary/collate/collate.pl + newdoc auxiliary/collate/README README.collate + + # Performance tuning tools and their manuals + dosbin bin/smtp-{source,sink} bin/qmqp-{source,sink} + doman man/man1/smtp-{source,sink}.1 man/man1/qmqp-{source,sink}.1 + + # Set proper permissions on required files/directories + keepdir /var/lib/postfix + fowners -R postfix:postfix /var/lib/postfix + fperms 0750 /var/lib/postfix + fowners root:postdrop /usr/sbin/post{drop,queue} + fperms 02755 /usr/sbin/post{drop,queue} + + keepdir /etc/postfix + keepdir /etc/postfix/postfix-files.d + if use mbox; then + mypostconf="mail_spool_directory=/var/spool/mail" + else + mypostconf="home_mailbox=.maildir/" + fi + LD_LIBRARY_PATH="${S}/lib" \ + "${D}"/usr/sbin/postconf -c "${D}"/etc/postfix \ + -e ${mypostconf} || die "postconf failed" + + insinto /etc/postfix + newins "${FILESDIR}"/smtp.pass saslpass + fperms 600 /etc/postfix/saslpass + + newinitd "${FILESDIR}"/postfix.rc6.${RC_VER} postfix + # do not start mysql/postgres unnecessarily - bug #359913 + use mysql || sed -i -e "s/mysql //" "${D}/etc/init.d/postfix" + use postgres || sed -i -e "s/postgresql //" "${D}/etc/init.d/postfix" + + dodoc *README COMPATIBILITY HISTORY PORTING RELEASE_NOTES* + mv "${S}"/examples "${D}"/usr/share/doc/${PF}/ + # postfix set-permissions expects uncompressed man files + docompress -x /usr/share/man + + pamd_mimic_system smtp auth account + + if use sasl; then + insinto /etc/sasl2 + newins "${FILESDIR}"/smtp.sasl smtpd.conf + fi + + # header files + insinto /usr/include/postfix + doins include/*.h + + if has_version mail-mta/postfix; then + # let the sysadmin decide when to change the compatibility_level + sed -i -e /^compatibility_level/"s/^/#/" "${D}"/etc/postfix/main.cf || die + fi + + systemd_dounit "${FILESDIR}/${PN}.service" +} + +pkg_preinst() { + if has_version '<mail-mta/postfix-3.4'; then + elog + elog "Postfix-3.4 introduces a new master.cf service 'postlog'" + elog "with type 'unix-dgram' that is used by the new postlogd(8) daemon." + elog "Before backing out to an older Postfix version, edit the master.cf" + elog "file and remove the postlog entry." + elog + fi +} + +pkg_postinst() { + if [[ ! -e /etc/mail/aliases.db ]] ; then + ewarn + ewarn "You must edit /etc/mail/aliases to suit your needs" + ewarn "and then run /usr/bin/newaliases. Postfix will not" + ewarn "work correctly without it." + ewarn + fi + + # check and fix file permissions + "${EROOT}"/usr/sbin/postfix set-permissions + + # configure tls + if use ssl ; then + if "${EROOT}"/usr/sbin/postfix tls all-default-client; then + elog "To configure client side TLS settings:" + elog "${EROOT}"/usr/sbin/postfix tls enable-client + fi + if "${EROOT}"/usr/sbin/postfix tls all-default-server; then + elog "To configure server side TLS settings:" + elog "${EROOT}"/usr/sbin/postfix tls enable-server + fi + fi +} diff --git a/net-analyzer/nmap/Manifest b/net-analyzer/nmap/Manifest new file mode 100644 index 0000000..b89708f --- /dev/null +++ b/net-analyzer/nmap/Manifest @@ -0,0 +1,3 @@ +DIST nmap-7.94-patches.tar.xz 4112 BLAKE2B 0720242bf507f2a1502cf854592d94a57a33d5ac1e520c752e548092f91bbffeb0f6f762f4da27ff445419ff3845060242aa43aba53d0161ae2bebccf728cc97 SHA512 d47e2215e1923af65e3a392c3d990d650e68135f139013c311a26d12cfd0b27d9d5c3cbc27bb8583251a353a6284fb9d518373f17624db242be7060b8bfa0ba5 +DIST nmap-7.94.tar.bz2 11102195 BLAKE2B 5819b458b50e33f6a507ad3c32a731c13e730c40d31a61731c3cfcd41fad8e3fdfcbb721ef46b05a80e406d0a646d0966d4b645551711144822551ef374a443a SHA512 a55cddf9c1d9272243d01251eb3315b26f232d0596818857083222a385398618b428dc2bd8282c3e832527e135a74aeb020ca8609d83d8337342f5d8a04d7f2c +DIST nmap-7.94.tar.bz2.asc 198 BLAKE2B 38a363499fe236f675238ecf015a7e597d66cdd84eef13bed4986b4081c4f1f7a288121e3666e0f31a9282fd84f30cbceb65341f1c173086c7421a8ea719afe9 SHA512 dcbaf88e9ead21f303a7ee5390de0d2bd67477c2628858dc3380b0ac7d73d4d1b330f3b303ff32b0cb9a22eaa37af535bd7aa622531451e404a8c9a256a98eec diff --git a/net-analyzer/nmap/files/nls.m4 b/net-analyzer/nmap/files/nls.m4 new file mode 100644 index 0000000..93df8d3 --- /dev/null +++ b/net-analyzer/nmap/files/nls.m4 @@ -0,0 +1,32 @@ +# nls.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. + +AC_PREREQ([2.50]) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE([nls], + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) +]) diff --git a/net-analyzer/nmap/files/nmap-7.92-libressl.patch b/net-analyzer/nmap/files/nmap-7.92-libressl.patch new file mode 100644 index 0000000..e61ee1f --- /dev/null +++ b/net-analyzer/nmap/files/nmap-7.92-libressl.patch @@ -0,0 +1,67 @@ +https://github.com/nmap/nmap/pull/2485 + +From 9d4d29979c8a24a17cd05968ecf1c42f913051c5 Mon Sep 17 00:00:00 2001 +From: Kyryl Melekhin <k.melekhin@gmail.com> +Date: Thu, 9 Jun 2022 18:52:43 +0000 +Subject: [PATCH] Fix libressl >= 3.5.0 build + +diff --git a/ncat/ncat_ssl.c b/ncat/ncat_ssl.c +index 7749b2964c..76209bc2d6 100644 +--- a/ncat/ncat_ssl.c ++++ b/ncat/ncat_ssl.c +@@ -74,7 +74,9 @@ + #include <openssl/x509.h> + #include <openssl/x509v3.h> + +-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined LIBRESSL_VERSION_NUMBER ++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && \ ++ ((!defined LIBRESSL_VERSION_NUMBER) || \ ++ (defined LIBRESSL_VERSION_NUMBER && LIBRESSL_VERSION_NUMBER >= 0x30500000L)) + #define HAVE_OPAQUE_STRUCTS 1 + #define FUNC_ASN1_STRING_data ASN1_STRING_get0_data + #else +diff --git a/nping/Crypto.cc b/nping/Crypto.cc +index 850438352b..d5e537eef2 100644 +--- a/nping/Crypto.cc ++++ b/nping/Crypto.cc +@@ -70,7 +70,9 @@ + #include <openssl/evp.h> + #include <openssl/err.h> + +-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined LIBRESSL_VERSION_NUMBER ++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && \ ++ ((!defined LIBRESSL_VERSION_NUMBER) || \ ++ (defined LIBRESSL_VERSION_NUMBER && LIBRESSL_VERSION_NUMBER >= 0x30500000L)) + #define HAVE_OPAQUE_EVP_PKEY 1 + #define FUNC_EVP_MD_CTX_init EVP_MD_CTX_reset + #define FUNC_EVP_MD_CTX_cleanup EVP_MD_CTX_reset +diff --git a/nse_openssl.cc b/nse_openssl.cc +index 92dea3ac8e..97987ca1a0 100644 +--- a/nse_openssl.cc ++++ b/nse_openssl.cc +@@ -21,7 +21,9 @@ + #include <openssl/ripemd.h> + #include <openssl/sha.h> + +-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined LIBRESSL_VERSION_NUMBER ++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && \ ++ ((!defined LIBRESSL_VERSION_NUMBER) || \ ++ (defined LIBRESSL_VERSION_NUMBER && LIBRESSL_VERSION_NUMBER >= 0x30500000L)) + #define HAVE_OPAQUE_STRUCTS 1 + #define FUNC_EVP_MD_CTX_init EVP_MD_CTX_reset + #define FUNC_EVP_MD_CTX_cleanup EVP_MD_CTX_reset +diff --git a/nse_ssl_cert.cc b/nse_ssl_cert.cc +index 53f3ddaf5a..f63d77b829 100644 +--- a/nse_ssl_cert.cc ++++ b/nse_ssl_cert.cc +@@ -81,7 +81,9 @@ + #include <openssl/evp.h> + #include <openssl/err.h> + +-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined LIBRESSL_VERSION_NUMBER ++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && \ ++ ((!defined LIBRESSL_VERSION_NUMBER) || \ ++ (defined LIBRESSL_VERSION_NUMBER && LIBRESSL_VERSION_NUMBER >= 0x30500000L)) + /* Technically some of these things were added in 0x10100006 + * but that was pre-release. */ + #define HAVE_OPAQUE_STRUCTS 1 diff --git a/net-analyzer/nmap/files/nmap-7.94-autoconf-2.72.patch b/net-analyzer/nmap/files/nmap-7.94-autoconf-2.72.patch new file mode 100644 index 0000000..bf6affb --- /dev/null +++ b/net-analyzer/nmap/files/nmap-7.94-autoconf-2.72.patch @@ -0,0 +1,33 @@ +https://github.com/nmap/nmap/pull/2763 +https://bugs.gentoo.org/920712 +--- a/libdnet-stripped/config/acinclude.m4 ++++ b/libdnet-stripped/config/acinclude.m4 +@@ -201,6 +201,8 @@ + dnl + AC_DEFUN(AC_DNET_IOCTL_ARP, + [AC_MSG_CHECKING(for arp(7) ioctls) ++ AC_PROG_EGREP ++ AC_PROG_CPP + AC_CACHE_VAL(ac_cv_dnet_ioctl_arp, + AC_EGREP_CPP(werd, [ + # include <sys/types.h> +--- a/libdnet-stripped/configure.in ++++ b/libdnet-stripped/configure.in +@@ -211,7 +211,7 @@ + AC_REPLACE_FUNCS(err strlcpy strsep) + + dnl Checks for other system-specific jonks. +-if test "$CYGWIN" != yes ; then ++AS_IF([test "$CYGWIN" != yes], [ + AC_DNET_BSD_BPF + AC_DNET_LINUX_PROCFS + AC_DNET_LINUX_PF_PACKET +@@ -221,7 +221,7 @@ + AC_DNET_RAWIP_HOST_OFFLEN + AC_DNET_RAWIP_COOKED + AC_DNET_GETKERNINFO +-fi ++]) + + dnl Check for arp interface. + if test "$ac_cv_header_Iphlpapi_h" = yes ; then diff --git a/net-analyzer/nmap/metadata.xml b/net-analyzer/nmap/metadata.xml new file mode 100644 index 0000000..c93c9fd --- /dev/null +++ b/net-analyzer/nmap/metadata.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>sam@gentoo.org</email> + <name>Sam James</name> + </maintainer> + <maintainer type="person"> + <email>dilfridge@gentoo.org</email> + <name>Andreas K. Hüttel</name> + </maintainer> + <use> + <flag name="libssh2">Enable SSH support through <pkg>net-libs/libssh2</pkg></flag> + <flag name="ncat">Install the ncat utility</flag> + <flag name="ndiff">Install the ndiff utility</flag> + <flag name="nping">Install the nping utility</flag> + <flag name="nse">Include support for the Nmap Scripting Engine (NSE)</flag> + <flag name="symlink">Install symlink to nc</flag> + <flag name="zenmap">Install the GTK+ based nmap GUI, zenmap</flag> + </use> + <upstream> + <remote-id type="github">nmap/nmap</remote-id> + </upstream> +</pkgmetadata> diff --git a/net-analyzer/nmap/nmap-7.94.ebuild b/net-analyzer/nmap/nmap-7.94.ebuild new file mode 100644 index 0000000..9971b2a --- /dev/null +++ b/net-analyzer/nmap/nmap-7.94.ebuild @@ -0,0 +1,189 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-4 ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{10..11} ) +PLOCALES="de es fr hi hr hu id it ja pl pt_BR pt_PR ro ru sk zh" +PLOCALE_BACKUP="en" +inherit autotools lua-single plocale python-single-r1 toolchain-funcs + +DESCRIPTION="Network exploration tool and security / port scanner" +HOMEPAGE="https://nmap.org/" +if [[ ${PV} == *9999* ]] ; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/nmap/nmap" + +else + VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/nmap.asc + inherit verify-sig + + SRC_URI="https://nmap.org/dist/${P}.tar.bz2" + SRC_URI+=" verify-sig? ( https://nmap.org/dist/sigs/${P}.tar.bz2.asc )" + + KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" +fi + +SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${PN}-7.94-patches.tar.xz" + +# https://github.com/nmap/nmap/issues/2199 +LICENSE="NPSL-0.95" +SLOT="0" +IUSE="ipv6 libssh2 ncat ndiff nping nls +nse ssl symlink zenmap" +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + nse? ( ${LUA_REQUIRED_USE} ) + symlink? ( ncat ) +" + +RDEPEND=" + dev-libs/liblinear:= + dev-libs/libpcre + net-libs/libpcap + ndiff? ( ${PYTHON_DEPS} ) + libssh2? ( + net-libs/libssh2[zlib] + sys-libs/zlib + ) + nls? ( virtual/libintl ) + nse? ( + ${LUA_DEPS} + sys-libs/zlib + ) + ssl? ( dev-libs/openssl:= ) + symlink? ( + ncat? ( + !net-analyzer/netcat + !net-analyzer/openbsd-netcat + ) + ) + zenmap? ( + ${PYTHON_DEPS} + $(python_gen_cond_dep ' + dev-python/pygobject:3[${PYTHON_USEDEP}] + ') + ) +" +DEPEND="${RDEPEND}" +# Python is always needed at build time for some scripts +BDEPEND=" + ${PYTHON_DEPS} + virtual/pkgconfig + nls? ( sys-devel/gettext ) +" + +if [[ ${PV} != *9999* ]] ; then + BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-nmap )" +fi + +PATCHES=( + "${WORKDIR}"/${PN}-7.94-patches + "${FILESDIR}"/${PN}-7.94-autoconf-2.72.patch + "${FILESDIR}"/${PN}-7.92-libressl.patch +) + +pkg_setup() { + python-single-r1_pkg_setup + + use nse && lua-single_pkg_setup +} + +src_unpack() { + if [[ ${PV} == *9999 ]] ; then + git-r3_src_unpack + elif use verify-sig ; then + # Needed for downloaded patch (which is unsigned, which is fine) + verify-sig_verify_detached "${DISTDIR}"/${P}.tar.bz2{,.asc} + fi + + default +} + +src_prepare() { + default + + # Drop bundled libraries + rm -r liblinear/ libpcap/ libpcre/ libssh2/ libz/ || die + + cat "${FILESDIR}"/nls.m4 >> "${S}"/acinclude.m4 || die + + delete_disabled_locale() { + # Force here as PLOCALES contains supported locales for man + # pages and zenmap doesn't have all of those + rm -rf zenmap/share/zenmap/locale/${1} || die + rm -f zenmap/share/zenmap/locale/${1}.po || die + } + plocale_for_each_disabled_locale delete_disabled_locale + + sed -i \ + -e '/^ALL_LINGUAS =/{s|$| id|g;s|jp|ja|g}' \ + Makefile.in || die + + cp libdnet-stripped/include/config.h.in{,.nmap-orig} || die + + eautoreconf + + if [[ ${CHOST} == *-darwin* ]] ; then + # We need the original for a Darwin-specific fix, bug #604432 + mv libdnet-stripped/include/config.h.in{.nmap-orig,} || die + fi +} + +src_configure() { + export ac_cv_path_PYTHON="${PYTHON}" + export am_cv_pathless_PYTHON="${EPYTHON}" + + local myeconfargs=( + $(use_enable ipv6) + $(use_enable nls) + $(use_with libssh2) + $(use_with ncat) + $(use_with ndiff) + $(use_with nping) + $(use_with nse liblua) + $(use_with ssl openssl) + $(use_with zenmap) + $(usex libssh2 --with-zlib) + $(usex nse --with-zlib) + --cache-file="${S}"/config.cache + # The bundled libdnet is incompatible with the version available in the + # tree, so we cannot use the system library here. + --with-libdnet=included + --with-pcre="${ESYSROOT}"/usr + --without-dpdk + ) + + econf "${myeconfargs[@]}" +} + +src_compile() { + local directory + for directory in . libnetutil nsock/src $(usev ncat) $(usev nping) ; do + emake -C "${directory}" makefile.dep + done + + emake \ + AR="$(tc-getAR)" \ + RANLIB="$(tc-getRANLIB)" +} + +src_install() { + # See bug #831713 for return of -j1 + LC_ALL=C emake \ + -j1 \ + DESTDIR="${D}" \ + STRIP=: \ + nmapdatadir="${EPREFIX}"/usr/share/nmap \ + install + + dodoc CHANGELOG HACKING docs/README docs/*.txt + + if use ndiff || use zenmap ; then + python_optimize + fi + + use symlink && dosym /usr/bin/ncat /usr/bin/nc +} diff --git a/net-dialup/freeradius/Manifest b/net-dialup/freeradius/Manifest new file mode 100644 index 0000000..387fe37 --- /dev/null +++ b/net-dialup/freeradius/Manifest @@ -0,0 +1,2 @@ +DIST freeradius-server-3.2.2.tar.bz2 3418998 BLAKE2B 584d1ff79cf3a75c79f5b24f9e47d7c8d8caee0d706eb47bb387300172f0699f904804d963aab8c252a21fe67f7885a47659b8cd9db5292a6d4db087d72e8e38 SHA512 91dc574560a1f75cafa8bc78c0676f0e3dae7154ecbb395e0e1f6738f78d8bcfe1bff122364452798fd0434c4056fd946799b8f29a1141398bf0542a37870689 +DIST freeradius-server-3.2.3.tar.bz2 3454869 BLAKE2B 525204331a5b123dac7457c6adb755cbe9794dbff4a536ea665fc7d1cac97553e392b7b598741c2a9dd00c81decd00608499d6f25208e389b9f213f54977de84 SHA512 06767153e262a2baa2d0cc74099bc13c23b33c2316348b5dc8ec0f5834c028571bd09b8c01726a6eabeaab8fdc3050f40bfeba2d5b1c299585d1689abad365ce diff --git a/net-dialup/freeradius/files/freeradius-3.0.20-systemd-service.patch b/net-dialup/freeradius/files/freeradius-3.0.20-systemd-service.patch new file mode 100644 index 0000000..0422365 --- /dev/null +++ b/net-dialup/freeradius/files/freeradius-3.0.20-systemd-service.patch @@ -0,0 +1,57 @@ +diff --git a/debian/freeradius.service b/debian/freeradius.service +index 378702d184..ee33c2a294 100644 +--- a/debian/freeradius.service ++++ b/debian/freeradius.service +@@ -7,7 +7,6 @@ Documentation=man:radiusd(8) man:radiusd.conf(5) http://wiki.freeradius.org/ htt + Type=notify + WatchdogSec=60 + NotifyAccess=all +-EnvironmentFile=-/etc/default/freeradius + + # FreeRADIUS can do static evaluation of policy language rules based + # on environmental variables which is very useful for doing per-host +@@ -25,16 +24,15 @@ MemoryLimit=2G + # Ensure the daemon can still write its pidfile after it drops + # privileges. Combination of options that work on a variety of + # systems. Test very carefully if you alter these lines. +-RuntimeDirectory=freeradius ++RuntimeDirectory=radiusd + RuntimeDirectoryMode=0775 + # This does not work on Debian Jessie: +-User=freerad +-Group=freerad +-# This does not work on Ubuntu Bionic: +-ExecStartPre=/bin/chown freerad:freerad /var/run/freeradius ++User=radius ++Group=radius + +-ExecStartPre=/usr/sbin/freeradius $FREERADIUS_OPTIONS -Cx -lstdout +-ExecStart=/usr/sbin/freeradius -f $FREERADIUS_OPTIONS ++ExecStartPre=/usr/sbin/radiusd $RADIUSD_OPTIONS -Cx -lstdout ++ExecStart=/usr/sbin/radiusd -f $RADIUSD_OPTIONS ++ExecReload=/bin/kill -HUP $MAINPID + Restart=on-failure + RestartSec=5 + +@@ -42,7 +40,7 @@ RestartSec=5 + NoNewPrivileges=true + + # Allow binding to secure ports, broadcast addresses, and raw interfaces. +-#CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SETUID CAP_SETGID CAP_CHOWN CAP_DAC_OVERRIDE ++CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SETUID CAP_SETGID CAP_CHOWN CAP_DAC_OVERRIDE + + # Private /tmp that isn't shared by other processes + PrivateTmp=true +@@ -60,10 +58,10 @@ ProtectKernelTunables=true + SystemCallArchitectures=native + + # We shouldn't be writing to the configuration directory +-ReadOnlyDirectories=/etc/freeradius/ ++ReadOnlyDirectories=/etc/raddb/ + + # We can read and write to the log directory. +-ReadWriteDirectories=/var/log/freeradius/ ++ReadWriteDirectories=/var/log/radius/ + + [Install] + WantedBy=multi-user.target diff --git a/net-dialup/freeradius/files/freeradius-3.2.1-libressl.patch b/net-dialup/freeradius/files/freeradius-3.2.1-libressl.patch new file mode 100644 index 0000000..2c5297b --- /dev/null +++ b/net-dialup/freeradius/files/freeradius-3.2.1-libressl.patch @@ -0,0 +1,127 @@ +From OpenBSD: + +https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/net/freeradius/patches/patch-src_main_cb_c +https://github.com/openbsd/ports/blob/master/net/freeradius/patches/patch-src_main_tls_c +https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/net/freeradius/patches/patch-src_modules_rlm_eap_types_rlm_eap_fast_rlm_eap_fast_c +https://github.com/openbsd/ports/blob/master/net/freeradius/patches/patch-src_modules_rlm_pap_rlm_pap_c + +Index: src/main/cb.c +--- a/src/main/cb.c.orig ++++ b/src/main/cb.c +@@ -64,7 +64,7 @@ void cbtls_info(SSL const *s, int where, int ret) + /* + * After a ClientHello, list all the proposed ciphers from the client + */ +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + if (SSL_get_state(s) == TLS_ST_SR_CLNT_HELLO) { + int i; + int num_ciphers; +@@ -192,7 +192,7 @@ void cbtls_msg(int write_p, int msg_version, int conte + state->info.alert_level = 0x00; + state->info.alert_description = 0x00; + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + } else if (content_type == SSL3_RT_INNER_CONTENT_TYPE && buf[0] == SSL3_RT_APPLICATION_DATA) { + /* let tls_ack_handler set application_data */ + state->info.content_type = SSL3_RT_HANDSHAKE; +Index: src/modules/rlm_eap/types/rlm_eap_fast/rlm_eap_fast.c +--- a/src/modules/rlm_eap/types/rlm_eap_fast/rlm_eap_fast.c.orig ++++ b/src/modules/rlm_eap/types/rlm_eap_fast/rlm_eap_fast.c +@@ -200,7 +200,7 @@ static void eap_fast_session_ticket(tls_session_t *tls + } + + // hostap:src/crypto/tls_openssl.c:tls_sess_sec_cb() +-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + static int _session_secret(SSL *s, void *secret, int *secret_len, + UNUSED STACK_OF(SSL_CIPHER) *peer_ciphers, + UNUSED SSL_CIPHER **cipher, void *arg) +@@ -224,7 +224,7 @@ static int _session_secret(SSL *s, void *secret, int * + + RDEBUG("processing PAC-Opaque"); + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + eap_fast_session_ticket(tls_session, s->s3->client_random, s->s3->server_random, secret, secret_len); + #else + uint8_t client_random[SSL3_RANDOM_SIZE]; +Index: src/main/tls.c +--- a/src/main/tls.c.orig ++++ b/src/main/tls.c +@@ -696,7 +696,7 @@ tls_session_t *tls_new_session(TALLOC_CTX *ctx, fr_tls + /* + * Swap empty store with the old one. + */ +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L + conf->old_x509_store = SSL_CTX_get_cert_store(conf->ctx); + /* Bump refcnt so the store is kept allocated till next store replacement */ + X509_STORE_up_ref(conf->old_x509_store); +@@ -2042,7 +2042,7 @@ done: + return 0; + } + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + static SSL_SESSION *cbtls_get_session(SSL *ssl, unsigned char *data, int len, int *copy) + #else + static SSL_SESSION *cbtls_get_session(SSL *ssl, const unsigned char *data, int len, int *copy) +@@ -2426,7 +2426,7 @@ static int cbtls_cache_refresh(SSL *ssl, SSL_SESSION * + return 0; + } + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + static SSL_SESSION *cbtls_cache_load(SSL *ssl, unsigned char *data, int len, int *copy) + #else + static SSL_SESSION *cbtls_cache_load(SSL *ssl, const unsigned char *data, int len, int *copy) +@@ -2962,7 +2962,7 @@ int cbtls_verify(int ok, X509_STORE_CTX *ctx) + char cn_str[1024]; + char buf[64]; + X509 *client_cert; +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L + const STACK_OF(X509_EXTENSION) *ext_list; + #else + STACK_OF(X509_EXTENSION) *ext_list; +@@ -3197,7 +3197,7 @@ int cbtls_verify(int ok, X509_STORE_CTX *ctx) + } + + if (lookup == 0) { +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L + ext_list = X509_get0_extensions(client_cert); + #else + X509_CINF *client_inf; +@@ -3250,7 +3250,7 @@ int cbtls_verify(int ok, X509_STORE_CTX *ctx) + value[0] = '0'; + value[1] = 'x'; + const unsigned char *srcp; +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L + const ASN1_STRING *srcasn1p; + srcasn1p = X509_EXTENSION_get_data(ext); + srcp = ASN1_STRING_get0_data(srcasn1p); +@@ -4274,7 +4274,7 @@ post_ca: + } + } + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) /* SSL_CTX_set1_sigalgs_list */ + if (conf->sigalgs_list) { + char *list; + +Index: src/modules/rlm_pap/rlm_pap.c +--- a/src/modules/rlm_pap/rlm_pap.c.orig ++++ b/src/modules/rlm_pap/rlm_pap.c +@@ -930,7 +930,7 @@ static inline rlm_rcode_t CC_HINT(nonnull) pap_auth_pb + digest_len = SHA512_DIGEST_LENGTH; + break; + +-# if OPENSSL_VERSION_NUMBER >= 0x10101000L ++# if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + case PW_SSHA3_224_PASSWORD: + evp_md = EVP_sha3_224(); + digest_len = SHA224_DIGEST_LENGTH; diff --git a/net-dialup/freeradius/files/freeradius-3.2.3-configure-c99.patch b/net-dialup/freeradius/files/freeradius-3.2.3-configure-c99.patch new file mode 100644 index 0000000..395e97d --- /dev/null +++ b/net-dialup/freeradius/files/freeradius-3.2.3-configure-c99.patch @@ -0,0 +1,38 @@ +https://src.fedoraproject.org/rpms/freeradius/c/1793f410aa789704b5ac0be9cf7d0eaece906d1a?branch=rawhide +https://github.com/FreeRADIUS/freeradius-server/pull/5246 + +The backtrace_symbols function expects a pointer to an array of void * +values, not a pointer to an array of a single element. Removing the +address operator ensures that the right type is used. + +This avoids an unconditional failure of this probe with compilers that +treat incompatible pointer types as a compilation error. + +Submitted upstream: <https://github.com/FreeRADIUS/freeradius-server/pull/5246> + +diff --git a/configure b/configure +index ed01ee2bdd912f63..1e6d2284779cdd58 100755 +--- a/configure ++++ b/configure +@@ -13390,7 +13390,7 @@ main (void) + { + + void *sym[1]; +- backtrace_symbols(&sym, sizeof(sym)) ++ backtrace_symbols(sym, sizeof(sym)) + ; + return 0; + } +diff --git a/configure.ac b/configure.ac +index 76320213b51d7bb4..6a689711d6c90483 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2168,7 +2168,7 @@ if test "x$ac_cv_header_execinfo_h" = "xyes"; then + #include <execinfo.h> + ]], [[ + void *sym[1]; +- backtrace_symbols(&sym, sizeof(sym)) ]])],[ ++ backtrace_symbols(sym, sizeof(sym)) ]])],[ + AC_MSG_RESULT(yes) + ac_cv_lib_execinfo_backtrace_symbols="yes" + ],[ diff --git a/net-dialup/freeradius/files/radius.conf-r6 b/net-dialup/freeradius/files/radius.conf-r6 new file mode 100644 index 0000000..50d2a1c --- /dev/null +++ b/net-dialup/freeradius/files/radius.conf-r6 @@ -0,0 +1,22 @@ +# Config file for /etc/init.d/radiusd + +# see man pages for radiusd run `radiusd -h` +# for valid cmdline options +#RADIUSD_OPTS="" + +# Change this value if you change it in /etc/raddb/radiusd.conf +pidfile=/run/radiusd/radiusd.pid + +# Change these values if you change them in /etc/raddb/radiusd.conf +RADIUSD_USER=radius +RADIUSD_GROUP=radius + +RADIUSD_LOGPATH=/var/log/radius + +# If you set up logging to syslog in /etc/raddb/radiusd.conf, you want +# to uncomment the following line. +#rc_use="logger" + +# If you use ldap, start the ldap server prior to FreeRADIUS to avoid +# startup crashes. +#rc_use="ldap" diff --git a/net-dialup/freeradius/files/radius.init-r4 b/net-dialup/freeradius/files/radius.init-r4 new file mode 100644 index 0000000..dee1842 --- /dev/null +++ b/net-dialup/freeradius/files/radius.init-r4 @@ -0,0 +1,31 @@ +#!/sbin/openrc-run +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +command=/usr/sbin/radiusd +command_args="${RADIUSD_OPTS}" +pidfile="${pidfile:-/run/radiusd/radiusd.pid}" +extra_started_commands="reload" + +depend() { + need localmount + use dns +} + +start_pre() { + if [ ! -f /etc/raddb/radiusd.conf ] ; then + eerror "No /etc/raddb/radiusd.conf file exists!" + return 1 + fi + + checkpath -m0750 -o "${RADIUSD_USER:-root}:${RADIUSD_GROUP:-root}" -d \ + $(dirname ${pidfile}) "${RADIUSD_LOGPATH:-/var/log/radius}" + checkpath -m0750 -o "${RADIUSD_USER:-root}:${RADIUSD_GROUP:-root}" -d \ + $(dirname ${pidfile}) /run/radiusd +} + +reload() { + ebegin "Reloading radiusd" + kill -HUP $(cat ${pidfile}) + eend $? +} diff --git a/net-dialup/freeradius/freeradius-3.2.2.ebuild b/net-dialup/freeradius/freeradius-3.2.2.ebuild new file mode 100644 index 0000000..d25e02d --- /dev/null +++ b/net-dialup/freeradius/freeradius-3.2.2.ebuild @@ -0,0 +1,315 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..11} ) +AUTOTOOLS_DEPEND=">=dev-build/autoconf-2.69" +inherit autotools pam python-single-r1 systemd + +MY_PN=${PN}-server +MY_P=${MY_PN}-${PV} +MY_PV=$(ver_rs 1- "_") + +DESCRIPTION="Highly configurable free RADIUS server" +HOMEPAGE="https://freeradius.org/" +SRC_URI="https://github.com/FreeRADIUS/freeradius-server/releases/download/release_${MY_PV}/${MY_P}.tar.bz2" +S="${WORKDIR}"/${MY_P} + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~sparc x86" + +IUSE=" + debug firebird iodbc kerberos ldap memcached mysql mongodb odbc oracle pam + postgres python readline redis samba selinux sqlite ssl systemd +" + +RESTRICT="firebird? ( bindist )" + +# NOTE: Temporary freeradius doesn't support linking with mariadb client +# libs also if code is compliant, will be available in the next release. +# (http://lists.freeradius.org/pipermail/freeradius-devel/2018-October/013228.html)a + +# TODO: rlm_mschap works with both samba library or without. I need to avoid +# linking of samba library if -samba is used. + +# TODO: unconditional json-c for now as automagic dep despite efforts to stop it +# ditto libpcap. Can restore USE=rest, USE=pcap if/when fixed. + +DEPEND=" + acct-group/radius + acct-user/radius + !net-dialup/cistronradius + dev-libs/libltdl + dev-libs/libpcre + dev-libs/json-c:= + dev-lang/perl:= + net-libs/libpcap + net-misc/curl + sys-libs/gdbm:= + sys-libs/libcap + sys-libs/talloc + virtual/libcrypt:= + firebird? ( dev-db/firebird ) + iodbc? ( dev-db/libiodbc ) + kerberos? ( virtual/krb5 ) + ldap? ( net-nds/openldap:= ) + memcached? ( dev-libs/libmemcached ) + mysql? ( dev-db/mysql-connector-c:= ) + mongodb? ( >=dev-libs/mongo-c-driver-1.13.0-r1 ) + odbc? ( dev-db/unixODBC ) + oracle? ( dev-db/oracle-instantclient[sdk] ) + pam? ( sys-libs/pam ) + postgres? ( dev-db/postgresql:= ) + python? ( ${PYTHON_DEPS} ) + readline? ( sys-libs/readline:= ) + redis? ( dev-libs/hiredis:= ) + samba? ( net-fs/samba ) + sqlite? ( dev-db/sqlite:3 ) + ssl? ( >=dev-libs/openssl-1.0.2:=[-bindist(-)] ) + systemd? ( sys-apps/systemd:= ) +" +RDEPEND=" + ${DEPEND} + selinux? ( sec-policy/selinux-radius ) +" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +# bug #721040 +QA_SONAME="usr/lib.*/libfreeradius-.*.so" + +PATCHES=( + "${FILESDIR}"/${PN}-3.2.1-libressl.patch + "${FILESDIR}"/${PN}-3.0.20-systemd-service.patch +) + +pkg_setup() { + if use python ; then + python-single-r1_pkg_setup + export PYTHONBIN="${EPYTHON}" + fi +} + +src_prepare() { + default + + # Most of the configuration options do not appear as ./configure + # switches. Instead it identifies the directories that are available + # and run through them. These might check for the presence of + # various libraries, in which case they are not built. To avoid + # automagic dependencies, we just remove all the modules that we're + # not interested in using. + # TODO: shift more of these into configure args below as things + # are a bit better now. + use ssl || { rm -r src/modules/rlm_eap/types/rlm_eap_{tls,ttls,peap} || die ; } + use ldap || { rm -r src/modules/rlm_ldap || die ; } + use kerberos || { rm -r src/modules/rlm_krb5 || die ; } + use memcached || { rm -r src/modules/rlm_cache/drivers/rlm_cache_memcached || die ; } + use pam || { rm -r src/modules/rlm_pam || die ; } + + # Drop support for python2 + rm -r src/modules/rlm_python || die + + use python || { rm -r src/modules/rlm_python3 || die ; } + #use rest || { rm -r src/modules/rlm_rest || die ; } + # Do not install ruby rlm module, bug #483108 + rm -r src/modules/rlm_ruby || die + + # These are all things we don't have in portage/I don't want to deal + # with myself. + # + # Requires TNCS library + rm -r src/modules/rlm_eap/types/rlm_eap_tnc || die + # Requires libeap-ikev2 + rm -r src/modules/rlm_eap/types/rlm_eap_ikev2 || die + # Requires some membership.h + rm -r src/modules/rlm_opendirectory || die + # ? + rm -r src/modules/rlm_sql/drivers/rlm_sql_{db2,freetds} || die + + # SQL drivers that are not part of experimental are loaded from a + # file, so we have to remove them from the file itself when we + # remove them. + usesqldriver() { + local flag=$1 + local driver=rlm_sql_${2:-${flag}} + + if ! use ${flag} ; then + rm -r src/modules/rlm_sql/drivers/${driver} || die + sed -i -e /${driver}/d src/modules/rlm_sql/stable || die + fi + } + + sed -i \ + -e 's:^#\tuser = :\tuser = :g' \ + -e 's:^#\tgroup = :\tgroup = :g' \ + -e 's:/var/run/radiusd:/run/radiusd:g' \ + -e '/^run_dir/s:${localstatedir}::g' \ + raddb/radiusd.conf.in || die + + # - Verbosity + # - B uild shared libraries using jlibtool -shared + sed -i \ + -e 's|--silent ||g' \ + -e 's:--mode=\(compile\|link\):& -shared:g' \ + scripts/libtool.mk || die + + # Crude measure to stop jlibtool from running ranlib and ar + sed -i \ + -e '/LIBRARIAN/s|".*"|"true"|g' \ + -e '/RANLIB/s|".*"|"true"|g' \ + scripts/jlibtool.c || die + + usesqldriver mysql + usesqldriver postgres postgresql + usesqldriver firebird + usesqldriver iodbc + usesqldriver odbc unixodbc + usesqldriver oracle + usesqldriver sqlite + usesqldriver mongodb mongo + + eautoreconf +} + +src_configure() { + # Do not try to enable static with static-libs; upstream is a + # massacre of libtool best practices so you also have to make sure + # to --enable-shared explicitly. + local myeconfargs=( + # Revisit confcache when not needing to use ac_cv anymore + # for automagic deps. + #--cache-file="${S}"/config.cache + + --enable-shared + --disable-ltdl-install + --disable-silent-rules + --with-system-libtool + --with-system-libltdl + + --enable-strict-dependencies + --without-rlm_couchbase + --without-rlm_securid + --without-rlm_unbound + --without-rlm_idn + #--without-rlm_json + #$(use_with rest libfreeradius-json) + + # Our OpenSSL should be patched. Avoid false-positive failures. + --disable-openssl-version-check + --with-ascend-binary + --with-udpfromto + --with-dhcp + --with-pcre + --with-iodbc-include-dir=/usr/include/iodbc + --with-experimental-modules + --with-docdir=/usr/share/doc/${PF} + --with-logdir=/var/log/radius + + $(use_enable debug developer) + $(use_with ldap edir) + $(use_with redis rlm_cache_redis) + $(use_with redis rlm_redis) + $(use_with redis rlm_rediswho) + $(use_with ssl openssl) + $(use_with systemd systemd) + ) + + # bug #77613 + if has_version app-crypt/heimdal ; then + myeconfargs+=( --enable-heimdal-krb5 ) + fi + + if use python ; then + myeconfargs+=( + --with-rlm-python3-bin=${EPYTHON} + --with-rlm-python3-config-bin=${EPYTHON}-config + ) + fi + + if ! use readline ; then + export ac_cv_lib_readline=no + fi + + #if ! use pcap ; then + # export ac_cv_lib_pcap_pcap_open_live=no + # export ac_cv_header_pcap_h=no + #fi + + econf "${myeconfargs[@]}" +} + +src_compile() { + # Verbose, do not generate certificates + emake \ + Q='' ECHO=true \ + LOCAL_CERT_PRODUCTS='' +} + +src_install() { + dodir /etc + + diropts -m0750 -o root -g radius + dodir /etc/raddb + + diropts -m0750 -o radius -g radius + dodir /var/log/radius + + keepdir /var/log/radius/radacct + diropts + + # - Verbose, do not install certificates + # - Parallel install fails (bug #509498) + emake -j1 \ + Q='' ECHO=true \ + LOCAL_CERT_PRODUCTS='' \ + R="${D}" \ + install + + if use pam ; then + pamd_mimic_system radiusd auth account password session + fi + + # bug #711756 + fowners -R radius:radius /etc/raddb + fowners -R radius:radius /var/log/radius + + dodoc CREDITS + + rm "${ED}"/usr/sbin/rc.radiusd || die + + newinitd "${FILESDIR}"/radius.init-r4 radiusd + newconfd "${FILESDIR}"/radius.conf-r6 radiusd + + if ! use systemd ; then + # If systemd builtin is not enabled we need use Type=Simple + # as systemd .service + sed -i -e 's:^Type=.*::g' \ + -e 's:^WatchdogSec=.*::g' -e 's:^NotifyAccess=all.*::g' \ + "${S}"/debian/freeradius.service + fi + + systemd_dounit "${S}"/debian/freeradius.service + + find "${ED}" \( -name "*.a" -o -name "*.la" \) -delete || die +} + +pkg_config() { + if use ssl ; then + cd "${ROOT}"/etc/raddb/certs || die + + ./bootstrap || die "Error while running ./bootstrap script." + chown root:radius "${ROOT}"/etc/raddb/certs || die + chown root:radius "${ROOT}"/etc/raddb/certs/ca.pem || die + chown root:radius "${ROOT}"/etc/raddb/certs/server.{key,crt,pem} || die + fi +} + +pkg_preinst() { + if ! has_version ${CATEGORY}/${PN} && use ssl ; then + elog "You have to run \`emerge --config =${CATEGORY}/${PF}\` to be able" + elog "to start the radiusd service." + fi +} diff --git a/net-dialup/freeradius/freeradius-3.2.3.ebuild b/net-dialup/freeradius/freeradius-3.2.3.ebuild new file mode 100644 index 0000000..00eeeee --- /dev/null +++ b/net-dialup/freeradius/freeradius-3.2.3.ebuild @@ -0,0 +1,322 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..11} ) +AUTOTOOLS_DEPEND=">=dev-build/autoconf-2.69" +inherit autotools pam python-single-r1 systemd + +MY_PN=${PN}-server +MY_P=${MY_PN}-${PV} +MY_PV=$(ver_rs 1- "_") + +DESCRIPTION="Highly configurable free RADIUS server" +HOMEPAGE="https://freeradius.org/" +SRC_URI="https://github.com/FreeRADIUS/freeradius-server/releases/download/release_${MY_PV}/${MY_P}.tar.bz2" +S="${WORKDIR}"/${MY_P} + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~sparc ~x86" + +IUSE=" + debug firebird iodbc kerberos ldap memcached mysql mongodb odbc oracle pam + postgres python readline redis samba selinux sqlite ssl systemd +" + +RESTRICT="firebird? ( bindist )" + +# NOTE: Temporary freeradius doesn't support linking with mariadb client +# libs also if code is compliant, will be available in the next release. +# (http://lists.freeradius.org/pipermail/freeradius-devel/2018-October/013228.html)a + +# TODO: rlm_mschap works with both samba library or without. I need to avoid +# linking of samba library if -samba is used. + +# TODO: unconditional json-c for now as automagic dep despite efforts to stop it +# ditto libpcap. Can restore USE=rest, USE=pcap if/when fixed. + +DEPEND=" + acct-group/radius + acct-user/radius + !net-dialup/cistronradius + dev-libs/libltdl + dev-libs/libpcre + dev-libs/json-c:= + dev-lang/perl:= + net-libs/libpcap + net-misc/curl + sys-libs/gdbm:= + sys-libs/libcap + sys-libs/talloc + virtual/libcrypt:= + firebird? ( dev-db/firebird ) + iodbc? ( dev-db/libiodbc ) + kerberos? ( virtual/krb5 ) + ldap? ( net-nds/openldap:= ) + memcached? ( dev-libs/libmemcached ) + mysql? ( dev-db/mysql-connector-c:= ) + mongodb? ( >=dev-libs/mongo-c-driver-1.13.0-r1 ) + odbc? ( dev-db/unixODBC ) + oracle? ( dev-db/oracle-instantclient[sdk] ) + pam? ( sys-libs/pam ) + postgres? ( dev-db/postgresql:= ) + python? ( ${PYTHON_DEPS} ) + readline? ( sys-libs/readline:= ) + redis? ( dev-libs/hiredis:= ) + samba? ( net-fs/samba ) + sqlite? ( dev-db/sqlite:3 ) + ssl? ( >=dev-libs/openssl-1.0.2:=[-bindist(-)] ) + systemd? ( sys-apps/systemd:= ) +" +RDEPEND=" + ${DEPEND} + selinux? ( sec-policy/selinux-radius ) +" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +# bug #721040 +QA_SONAME="usr/lib.*/libfreeradius-.*.so" + +QA_CONFIG_IMPL_DECL_SKIP=( + # Not available on Linux (bug #900048) + htonll + htonlll +) + +PATCHES=( + "${FILESDIR}"/${PN}-3.2.1-libressl.patch + "${FILESDIR}"/${PN}-3.0.20-systemd-service.patch + "${FILESDIR}"/${PN}-3.2.3-configure-c99.patch +) + +pkg_setup() { + if use python ; then + python-single-r1_pkg_setup + export PYTHONBIN="${EPYTHON}" + fi +} + +src_prepare() { + default + + # Most of the configuration options do not appear as ./configure + # switches. Instead it identifies the directories that are available + # and run through them. These might check for the presence of + # various libraries, in which case they are not built. To avoid + # automagic dependencies, we just remove all the modules that we're + # not interested in using. + # TODO: shift more of these into configure args below as things + # are a bit better now. + use ssl || { rm -r src/modules/rlm_eap/types/rlm_eap_{tls,ttls,peap} || die ; } + use ldap || { rm -r src/modules/rlm_ldap || die ; } + use kerberos || { rm -r src/modules/rlm_krb5 || die ; } + use memcached || { rm -r src/modules/rlm_cache/drivers/rlm_cache_memcached || die ; } + use pam || { rm -r src/modules/rlm_pam || die ; } + + # Drop support for python2 + rm -r src/modules/rlm_python || die + + use python || { rm -r src/modules/rlm_python3 || die ; } + #use rest || { rm -r src/modules/rlm_rest || die ; } + # Do not install ruby rlm module, bug #483108 + rm -r src/modules/rlm_ruby || die + + # These are all things we don't have in portage/I don't want to deal + # with myself. + # + # Requires TNCS library + rm -r src/modules/rlm_eap/types/rlm_eap_tnc || die + # Requires libeap-ikev2 + rm -r src/modules/rlm_eap/types/rlm_eap_ikev2 || die + # Requires some membership.h + rm -r src/modules/rlm_opendirectory || die + # ? + rm -r src/modules/rlm_sql/drivers/rlm_sql_{db2,freetds} || die + + # SQL drivers that are not part of experimental are loaded from a + # file, so we have to remove them from the file itself when we + # remove them. + usesqldriver() { + local flag=$1 + local driver=rlm_sql_${2:-${flag}} + + if ! use ${flag} ; then + rm -r src/modules/rlm_sql/drivers/${driver} || die + sed -i -e /${driver}/d src/modules/rlm_sql/stable || die + fi + } + + sed -i \ + -e 's:^#\tuser = :\tuser = :g' \ + -e 's:^#\tgroup = :\tgroup = :g' \ + -e 's:/var/run/radiusd:/run/radiusd:g' \ + -e '/^run_dir/s:${localstatedir}::g' \ + raddb/radiusd.conf.in || die + + # - Verbosity + # - B uild shared libraries using jlibtool -shared + sed -i \ + -e 's|--silent ||g' \ + -e 's:--mode=\(compile\|link\):& -shared:g' \ + scripts/libtool.mk || die + + # Crude measure to stop jlibtool from running ranlib and ar + sed -i \ + -e '/LIBRARIAN/s|".*"|"true"|g' \ + -e '/RANLIB/s|".*"|"true"|g' \ + scripts/jlibtool.c || die + + usesqldriver mysql + usesqldriver postgres postgresql + usesqldriver firebird + usesqldriver iodbc + usesqldriver odbc unixodbc + usesqldriver oracle + usesqldriver sqlite + usesqldriver mongodb mongo + + eautoreconf +} + +src_configure() { + # Do not try to enable static with static-libs; upstream is a + # massacre of libtool best practices so you also have to make sure + # to --enable-shared explicitly. + local myeconfargs=( + # Revisit confcache when not needing to use ac_cv anymore + # for automagic deps. + #--cache-file="${S}"/config.cache + + --enable-shared + --disable-ltdl-install + --disable-silent-rules + --with-system-libtool + --with-system-libltdl + + --enable-strict-dependencies + --without-rlm_couchbase + --without-rlm_securid + --without-rlm_unbound + --without-rlm_idn + #--without-rlm_json + #$(use_with rest libfreeradius-json) + + # Our OpenSSL should be patched. Avoid false-positive failures. + --disable-openssl-version-check + --with-ascend-binary + --with-udpfromto + --with-dhcp + --with-pcre + --with-iodbc-include-dir=/usr/include/iodbc + --with-experimental-modules + --with-docdir=/usr/share/doc/${PF} + --with-logdir=/var/log/radius + + $(use_enable debug developer) + $(use_with ldap edir) + $(use_with redis rlm_cache_redis) + $(use_with redis rlm_redis) + $(use_with redis rlm_rediswho) + $(use_with ssl openssl) + $(use_with systemd systemd) + ) + + # bug #77613 + if has_version app-crypt/heimdal ; then + myeconfargs+=( --enable-heimdal-krb5 ) + fi + + if use python ; then + myeconfargs+=( + --with-rlm-python3-bin=${EPYTHON} + --with-rlm-python3-config-bin=${EPYTHON}-config + ) + fi + + if ! use readline ; then + export ac_cv_lib_readline=no + fi + + #if ! use pcap ; then + # export ac_cv_lib_pcap_pcap_open_live=no + # export ac_cv_header_pcap_h=no + #fi + + econf "${myeconfargs[@]}" +} + +src_compile() { + # Verbose, do not generate certificates + emake \ + Q='' ECHO=true \ + LOCAL_CERT_PRODUCTS='' +} + +src_install() { + dodir /etc + + diropts -m0750 -o root -g radius + dodir /etc/raddb + + diropts -m0750 -o radius -g radius + dodir /var/log/radius + + keepdir /var/log/radius/radacct + diropts + + # - Verbose, do not install certificates + # - Parallel install fails (bug #509498) + emake -j1 \ + Q='' ECHO=true \ + LOCAL_CERT_PRODUCTS='' \ + R="${D}" \ + install + + if use pam ; then + pamd_mimic_system radiusd auth account password session + fi + + # bug #711756 + fowners -R radius:radius /etc/raddb + fowners -R radius:radius /var/log/radius + + dodoc CREDITS + + rm "${ED}"/usr/sbin/rc.radiusd || die + + newinitd "${FILESDIR}"/radius.init-r4 radiusd + newconfd "${FILESDIR}"/radius.conf-r6 radiusd + + if ! use systemd ; then + # If systemd builtin is not enabled we need use Type=Simple + # as systemd .service + sed -i -e 's:^Type=.*::g' \ + -e 's:^WatchdogSec=.*::g' -e 's:^NotifyAccess=all.*::g' \ + "${S}"/debian/freeradius.service + fi + + systemd_dounit "${S}"/debian/freeradius.service + + find "${ED}" \( -name "*.a" -o -name "*.la" \) -delete || die +} + +pkg_config() { + if use ssl ; then + cd "${ROOT}"/etc/raddb/certs || die + + ./bootstrap || die "Error while running ./bootstrap script." + chown root:radius "${ROOT}"/etc/raddb/certs || die + chown root:radius "${ROOT}"/etc/raddb/certs/ca.pem || die + chown root:radius "${ROOT}"/etc/raddb/certs/server.{key,crt,pem} || die + fi +} + +pkg_preinst() { + if ! has_version ${CATEGORY}/${PN} && use ssl ; then + elog "You have to run \`emerge --config =${CATEGORY}/${PF}\` to be able" + elog "to start the radiusd service." + fi +} diff --git a/net-dialup/freeradius/metadata.xml b/net-dialup/freeradius/metadata.xml new file mode 100644 index 0000000..f88a6ec --- /dev/null +++ b/net-dialup/freeradius/metadata.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <!-- maintainer-needed --> + <use> + <flag name="memcached"> + Include <pkg>dev-libs/libmemcached</pkg> in caching drivers + </flag> + <flag name="redis"> + Include support for Redis database + </flag> + <flag name="mongodb"> + Include support for MongoDB database + </flag> + </use> + <upstream> + <remote-id type="github">FreeRADIUS/freeradius-server</remote-id> + </upstream> +</pkgmetadata> diff --git a/net-libs/ldns/Manifest b/net-libs/ldns/Manifest new file mode 100644 index 0000000..ad02f5a --- /dev/null +++ b/net-libs/ldns/Manifest @@ -0,0 +1 @@ +DIST ldns-1.8.3.tar.gz 1299856 BLAKE2B 2250445da3beec76c96fbb5cbc00f8d6a5bb6ed5867da7f23511d46ac73d6101303eb6ad85def426b7f9287f6a629a95117bcfa6eb46b775d07ed84048162c7f SHA512 c318747bd975ade389d048680b80495fb083b46507d8dcea7d4d42c75823f56a35b438dcc5320803d39583e5a1e515a51686f7f9010c061a6e8199e1a5505ae9 diff --git a/net-libs/ldns/files/ldns-1.7.1-libressl.patch b/net-libs/ldns/files/ldns-1.7.1-libressl.patch new file mode 100644 index 0000000..916380b --- /dev/null +++ b/net-libs/ldns/files/ldns-1.7.1-libressl.patch @@ -0,0 +1,84 @@ +From OpenBSD. + +Fix build with opaque DSA/RSA in LibreSSL 3.5. +https://github.com/NLnetLabs/ldns/pull/151 + +Index: dnssec.c +--- a/dnssec.c.orig ++++ b/dnssec.c +@@ -380,7 +380,7 @@ ldns_key_buf2dsa_raw(const unsigned char* key, size_t + BN_free(Y); + return NULL; + } +-#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) ++#if OPENSSL_VERSION_NUMBER < 0x10100000 + #ifndef S_SPLINT_S + dsa->p = P; + dsa->q = Q; +@@ -466,7 +466,7 @@ ldns_key_buf2rsa_raw(const unsigned char* key, size_t + BN_free(modulus); + return NULL; + } +-#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) ++#if OPENSSL_VERSION_NUMBER < 0x10100000 + #ifndef S_SPLINT_S + rsa->n = modulus; + +Fix build with opaque DSA/RSA in LibreSSL 3.5. +https://github.com/NLnetLabs/ldns/pull/151 + +Index: host2str.c +--- a/host2str.c.orig ++++ b/host2str.c +@@ -2207,7 +2207,7 @@ ldns_key2buffer_str(ldns_buffer *output, const ldns_ke + const BIGNUM *n=NULL, *e=NULL, *d=NULL, + *p=NULL, *q=NULL, *dmp1=NULL, + *dmq1=NULL, *iqmp=NULL; +-#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) ++#if OPENSSL_VERSION_NUMBER < 0x10100000 + n = rsa->n; + e = rsa->e; + d = rsa->d; +@@ -2259,7 +2259,7 @@ ldns_key2buffer_str(ldns_buffer *output, const ldns_ke + if(1) { + const BIGNUM *p=NULL, *q=NULL, *g=NULL, + *priv_key=NULL, *pub_key=NULL; +-#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) ++#if OPENSSL_VERSION_NUMBER < 0x10100000 + #ifndef S_SPLINT_S + p = dsa->p; + q = dsa->q; + +Fix build with opaque DSA/RSA in LibreSSL 3.5. +https://github.com/NLnetLabs/ldns/pull/151 + +Index: keys.c +--- a/keys.c.orig ++++ b/keys.c +@@ -860,7 +860,7 @@ ldns_key_new_frm_fp_rsa_l(FILE *f, int *line_nr) + } + #endif /* splint */ + +-#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) ++#if OPENSSL_VERSION_NUMBER < 0x10100000 + # ifndef S_SPLINT_S + rsa->n = n; + rsa->e = e; +@@ -980,7 +980,7 @@ ldns_key_new_frm_fp_dsa_l(FILE *f, ATTR_UNUSED(int *li + } + #endif /* splint */ + +-#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) ++#if OPENSSL_VERSION_NUMBER < 0x10100000 + # ifndef S_SPLINT_S + dsa->p = p; + dsa->q = q; +@@ -1657,7 +1657,7 @@ ldns_key_rsa2bin(unsigned char *data, RSA *k, uint16_t + if (!k) { + return false; + } +-#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) ++#if OPENSSL_VERSION_NUMBER < 0x10100000 + n = k->n; + e = k->e; + #else diff --git a/net-libs/ldns/files/ldns-1.8.1-pkgconfig.patch b/net-libs/ldns/files/ldns-1.8.1-pkgconfig.patch new file mode 100644 index 0000000..7731ff6 --- /dev/null +++ b/net-libs/ldns/files/ldns-1.8.1-pkgconfig.patch @@ -0,0 +1,10 @@ +--- a/packaging/libldns.pc.in ++++ b/packaging/libldns.pc.in +@@ -8,6 +8,6 @@ + URL: http://www.nlnetlabs.nl/projects/ldns + Version: @PACKAGE_VERSION@ + Requires: ++Requires.private: libcrypto libssl + Libs: -L${libdir} -lldns +-Libs.private: @LDFLAGS@ + Cflags: -I${includedir} diff --git a/net-libs/ldns/files/ldns-1.8.3-configure-strict.patch b/net-libs/ldns/files/ldns-1.8.3-configure-strict.patch new file mode 100644 index 0000000..37b8095 --- /dev/null +++ b/net-libs/ldns/files/ldns-1.8.3-configure-strict.patch @@ -0,0 +1,139 @@ +https://github.com/NLnetLabs/ldns/commit/59af7359ed744327aaf0deb2e6ac90fe9e191ba6 + +From 59af7359ed744327aaf0deb2e6ac90fe9e191ba6 Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Sat, 19 Nov 2022 01:31:57 +0000 +Subject: [PATCH] acx_nlnetlabs.m4: fix -Wstrict-prototypes + +Fix -Wstrict-prototypes as it's easy to do and avoids future warnings. Noticed +when doing Clang 16 / GCC 14 / C23 work. + +For more information, see LWN.net [0] or LLVM's Discourse [1], the Gentoo wiki [2], +or the (new) c-std-porting mailing list [3]. + +[0] https://lwn.net/Articles/913505/ +[1] https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213 +[2] https://wiki.gentoo.org/wiki/Modern_C_porting +[3] hosted at lists.linux.dev. + +Signed-off-by: Sam James <sam@gentoo.org> +--- a/acx_nlnetlabs.m4 ++++ b/acx_nlnetlabs.m4 +@@ -183,7 +183,7 @@ dnl cache=`echo $1 | sed 'y%.=/+- %___p__%'` + AC_CACHE_VAL(cv_prog_cc_flag_needed_$cache, + [ + echo '$2' > conftest.c +-echo 'void f(){}' >>conftest.c ++echo 'void f(void){}' >>conftest.c + if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then + eval "cv_prog_cc_flag_needed_$cache=no" + else +@@ -229,7 +229,7 @@ dnl DEPFLAG: set to flag that generates dependencies. + AC_DEFUN([ACX_DEPFLAG], + [ + AC_MSG_CHECKING([$CC dependency flag]) +-echo 'void f(){}' >conftest.c ++echo 'void f(void){}' >conftest.c + if test "`$CC -MM conftest.c 2>&1`" = "conftest.o: conftest.c"; then + DEPFLAG="-MM" + else +@@ -268,7 +268,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAUL + #include <getopt.h> + #endif + +-int test() { ++int test(void) { + int a; + char **opts = NULL; + struct timeval tv; +@@ -305,7 +305,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAUL + #include <getopt.h> + #endif + +-int test() { ++int test(void) { + int a; + char **opts = NULL; + struct timeval tv; +@@ -331,7 +331,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG, + [ + #include <stdbool.h> + #include <ctype.h> +-int test() { ++int test(void) { + int a = 0; + return a; + } +@@ -341,7 +341,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED(-D_BSD_SOURCE -D_DEFAULT_SOURCE, + [ + #include <ctype.h> + +-int test() { ++int test(void) { + int a; + a = isascii(32); + return a; +@@ -352,7 +352,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED(-D_GNU_SOURCE, + [ + #include <netinet/in.h> + +-int test() { ++int test(void) { + struct in6_pktinfo inf; + int a = (int)sizeof(inf); + return a; +@@ -366,7 +366,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED(-D_GNU_SOURCE -D_FRSRESGID, + [ + #include <unistd.h> + +-int test() { ++int test(void) { + int a = setresgid(0,0,0); + a = setresuid(0,0,0); + return a; +@@ -381,7 +381,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED(-D_POSIX_C_SOURCE=200112, + #endif + #include <netdb.h> + +-int test() { ++int test(void) { + int a = 0; + char *t; + time_t time = 0; +@@ -409,7 +409,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED(-D__EXTENSIONS__, + #include <getopt.h> + #endif + +-int test() { ++int test(void) { + int a; + char **opts = NULL; + struct timeval tv; +@@ -809,7 +809,7 @@ dnl try to see if an additional _LARGEFILE_SOURCE 1 is needed to get fseeko + ACX_CHECK_COMPILER_FLAG_NEEDED(-D_LARGEFILE_SOURCE=1, + [ + #include <stdio.h> +-int test() { ++int test(void) { + int a = fseeko(stdin, 0, 0); + return a; + } +@@ -834,7 +834,7 @@ char* (*f) () = getaddrinfo; + #ifdef __cplusplus + } + #endif +-int main() { ++int main(void) { + ; + return 0; + } +@@ -898,7 +898,7 @@ cache=`echo $1 | sed 'y%.=/+-%___p_%'` + AC_CACHE_VAL(cv_cc_deprecated_$cache, + [ + echo '$3' >conftest.c +-echo 'void f(){ $2 }' >>conftest.c ++echo 'void f(void){ $2 }' >>conftest.c + if test -z "`$CC $CPPFLAGS $CFLAGS -c conftest.c 2>&1 | grep -e deprecated -e unavailable`"; then + eval "cv_cc_deprecated_$cache=no" + else + diff --git a/net-libs/ldns/files/ldns-1.8.3-docs.patch b/net-libs/ldns/files/ldns-1.8.3-docs.patch new file mode 100644 index 0000000..6b4e758 --- /dev/null +++ b/net-libs/ldns/files/ldns-1.8.3-docs.patch @@ -0,0 +1,95 @@ +https://bugs.gentoo.org/892065 +https://github.com/NLnetLabs/ldns/commit/5d5c95a947d98dd292ba81e95ca90ba6aeccb1d0 + +From 5d5c95a947d98dd292ba81e95ca90ba6aeccb1d0 Mon Sep 17 00:00:00 2001 +From: Willem Toorop <willem@nlnetlabs.nl> +Date: Mon, 5 Sep 2022 10:01:18 +0200 +Subject: [PATCH] Fix building documentation in build directory. + +Thanks Michael Tokarev +--- a/Makefile.in ++++ b/Makefile.in +@@ -270,7 +270,7 @@ doxygen: + @if test ! -e doc/header.html ; then \ + $(INSTALL) -c -m 644 $(srcdir)/doc/header.html doc/ ; \ + fi ; +- $(doxygen) $(srcdir)/libdns.doxygen ++ $(doxygen) libdns.doxygen + + doc: manpages $(doxygen) + @$(INSTALL) -d doc +--- a/ldns/net.h.in ++++ b/ldns/net.h.in +@@ -91,13 +91,12 @@ int ldns_tcp_bgsend(ldns_buffer *qbin, const struct sockaddr_storage *to, sockle + + /** + * Sends a buffer to an ip using tcp and return the response as a ldns_pkt +- * \param[in] qbin the ldns_buffer to be send ++ * \param[out] result packet with the answer + * \param[in] qbin the ldns_buffer to be send + * \param[in] to the ip addr to send to + * \param[in] tolen length of the ip addr + * \param[in] timeout the timeout value for the network + * \param[out] answersize size of the packet +- * \param[out] result packet with the answer + * \return status + */ + ldns_status ldns_tcp_send(uint8_t **result, ldns_buffer *qbin, const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout, size_t *answersize); +--- a/libdns.doxygen.in ++++ b/libdns.doxygen.in +@@ -51,7 +51,7 @@ PROJECT_BRIEF = + # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy + # the logo to the output directory. + +-PROJECT_LOGO = doc/images/LogoInGradientBar2-y100.png ++PROJECT_LOGO = @srcdir@/doc/images/LogoInGradientBar2-y100.png + + # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path + # into which the generated documentation will be written. If a relative path is +@@ -854,12 +854,12 @@ WARN_LOGFILE = + # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING + # Note: If this tag is empty the current directory is searched. + +-INPUT = . \ +- ldns/ \ +- doc/ \ +- examples/ldns-mx.c \ +- examples/ldns-read-zone.c \ +- examples/ldns-signzone.c ++INPUT = ldns/ \ ++ @srcdir@/doc/ \ ++ @srcdir@/examples/ldns-mx.c \ ++ @srcdir@/examples/ldns-read-zone.c \ ++ @srcdir@/examples/ldns-signzone.c \ ++ @srcdir@ + + # This tag can be used to specify the character encoding of the source files + # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +@@ -936,7 +936,7 @@ EXCLUDE_SYMBOLS = + # that contain example code fragments that are included (see the \include + # command). + +-EXAMPLE_PATH = examples ++EXAMPLE_PATH = @srcdir@/examples + + # If the value of the EXAMPLE_PATH tag contains directories, you can use the + # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +@@ -956,7 +956,7 @@ EXAMPLE_RECURSIVE = NO + # that contain images that are to be included in the documentation (see the + # \image command). + +-IMAGE_PATH = doc/images ++IMAGE_PATH = @srcdir@/doc/images + + # The INPUT_FILTER tag can be used to specify a program that doxygen should + # invoke to filter for each input file. Doxygen will invoke the filter program +@@ -1798,7 +1798,7 @@ COMPACT_LATEX = NO + # The default value is: a4. + # This tag requires that the tag GENERATE_LATEX is set to YES. + +-PAPER_TYPE = a4wide ++PAPER_TYPE = a4 + + # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names + # that should be included in the LaTeX output. The package can be specified just + diff --git a/net-libs/ldns/files/ldns-1.8.3-swig-4.2.0.patch b/net-libs/ldns/files/ldns-1.8.3-swig-4.2.0.patch new file mode 100644 index 0000000..8165371 --- /dev/null +++ b/net-libs/ldns/files/ldns-1.8.3-swig-4.2.0.patch @@ -0,0 +1,101 @@ +https://bugs.gentoo.org/921302 +https://github.com/NLnetLabs/ldns/pull/232 +https://github.com/NLnetLabs/ldns/pull/233 + +From daf38095763f758c77be538da25c267dc5cb73c8 Mon Sep 17 00:00:00 2001 +From: Florian Weimer <fweimer@redhat.com> +Date: Fri, 26 Jan 2024 11:30:39 +0100 +Subject: [PATCH] SWIG_Python_str_AsChar removal in SWIG 4.2.0 + +The replacement, SWIG_PyUnicode_AsUTF8AndSize, has different +memory management requirements. +--- + contrib/python/ldns_rdf.i | 21 +++++++++++++++++++-- + 1 file changed, 19 insertions(+), 2 deletions(-) + +diff --git a/contrib/python/ldns_rdf.i b/contrib/python/ldns_rdf.i +index 5d7448fd..60daf1a7 100644 +--- a/contrib/python/ldns_rdf.i ++++ b/contrib/python/ldns_rdf.i +@@ -56,7 +56,11 @@ + */ + %typemap(arginit, noblock=1) const ldns_rdf * + { ++#if SWIG_VERSION >= 0x040200 ++ PyObject *$1_bytes = NULL; ++#else + char *$1_str = NULL; ++#endif + } + + /* +@@ -66,11 +70,17 @@ + %typemap(in, noblock=1) const ldns_rdf * (void* argp, $1_ltype tmp = 0, int res) + { + if (Python_str_Check($input)) { ++ const char *argstr; ++#if SWIG_VERSION >= 0x040200 ++ argstr = SWIG_PyUnicode_AsUTF8AndSize($input, NULL, &$1_bytes); ++#else + $1_str = SWIG_Python_str_AsChar($input); +- if ($1_str == NULL) { ++ argstr = $1_str; ++#endif ++ if (argstr == NULL) { + %argument_fail(SWIG_TypeError, "char *", $symname, $argnum); + } +- tmp = ldns_dname_new_frm_str($1_str); ++ tmp = ldns_dname_new_frm_str(argstr); + if (tmp == NULL) { + %argument_fail(SWIG_TypeError, "char *", $symname, $argnum); + } +@@ -90,10 +100,17 @@ + */ + %typemap(freearg, noblock=1) const ldns_rdf * + { ++#if SWIG_VERSION >= 0x040200 ++ if ($1_bytes != NULL) { ++ /* Is not NULL only when a conversion form string occurred. */ ++ Py_XDECREF($1_bytes); ++ } ++#else + if ($1_str != NULL) { + /* Is not NULL only when a conversion form string occurred. */ + SWIG_Python_str_DelForPy3($1_str); /* Is a empty macro for Python < 3. */ + } ++#endif + } + + %nodefaultctor ldns_struct_rdf; /* No default constructor. */ + +From f91f61e10be595a6a46845112aaed7da24551bf9 Mon Sep 17 00:00:00 2001 +From: Florian Weimer <fweimer@redhat.com> +Date: Fri, 26 Jan 2024 11:57:03 +0100 +Subject: [PATCH] 32-bit compatibility for Python SWIG bindings + +The ssize_t type can be int instead of long, and the pointer +types are incompatible. +--- + contrib/python/ldns.i | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/contrib/python/ldns.i b/contrib/python/ldns.i +index 881ba5e85..b4a740820 100644 +--- a/contrib/python/ldns.i ++++ b/contrib/python/ldns.i +@@ -99,12 +99,14 @@ + %typemap(in, noblock=1) (ssize_t) + { + int $1_res = 0; +- $1_res = SWIG_AsVal_long($input, &$1); ++ long val; ++ $1_res = SWIG_AsVal_long($input, &val); + if (!SWIG_IsOK($1_res)) { + SWIG_exception_fail(SWIG_ArgError($1_res), "in method '" + "$symname" "', argument " "$argnum" " of type '" + "$type""'"); + } ++ $1 = val; + } + + diff --git a/net-libs/ldns/ldns-1.8.3-r1.ebuild b/net-libs/ldns/ldns-1.8.3-r1.ebuild new file mode 100644 index 0000000..e927b84 --- /dev/null +++ b/net-libs/ldns/ldns-1.8.3-r1.ebuild @@ -0,0 +1,95 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..11} ) +inherit autotools python-single-r1 multilib-minimal + +DESCRIPTION="A library with the aim to simplify DNS programming in C" +HOMEPAGE="https://www.nlnetlabs.nl/projects/ldns/" +SRC_URI="https://www.nlnetlabs.nl/downloads/${PN}/${P}.tar.gz" + +LICENSE="BSD" +SLOT="0/3" +KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="doc examples python static-libs" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" +RESTRICT="test" # missing test directory + +BDEPEND=" + python? ( dev-lang/swig ) + doc? ( app-text/doxygen ) +" +DEPEND=" + python? ( ${PYTHON_DEPS} ) + >=dev-libs/openssl-1.1.1l-r1:0=[${MULTILIB_USEDEP},static-libs?] + examples? ( net-libs/libpcap ) +" +RDEPEND=" + ${DEPEND} + !<net-dns/ldns-utils-1.8.0-r2 +" + +MULTILIB_CHOST_TOOLS=( + /usr/bin/ldns-config +) + +PATCHES=( + "${FILESDIR}/ldns-1.8.1-pkgconfig.patch" + "${FILESDIR}/${P}-docs.patch" + "${FILESDIR}/${P}-configure-strict.patch" +) + +pkg_setup() { + use python && python-single-r1_pkg_setup +} + +src_prepare() { + default + + # Drop after 1.8.3 + eautoreconf +} + +multilib_src_configure() { + # "OpenSSL does not support offline DANE verification (Needed for the + # DANE-TA usage type). Please upgrade OpenSSL to version >= 1.1.0 or rerun + # with --disable-dane-verify or --disable-dane-ta-usage" + + ECONF_SOURCE="${S}" econf \ + $(use_enable static-libs static) \ + $(multilib_native_use_with python pyldns) \ + $(multilib_native_use_with python pyldnsx) \ + --with-ssl="${EPREFIX}"/usr \ + $(multilib_native_with drill) \ + $(multilib_native_use_with examples) \ + --disable-dane-ta-usage \ + --disable-rpath +} + +multilib_src_compile() { + default + + if multilib_is_native_abi && use doc ; then + emake doxygen + fi +} + +multilib_src_install() { + default + + if multilib_is_native_abi && use doc ; then + dodoc -r doc/html + fi +} + +multilib_src_install_all() { + dodoc Changelog README* + + find "${D}" -name '*.la' -delete || die + use python && python_optimize + + insinto /usr/share/vim/vimfiles/ftdetect + doins libdns.vim +} diff --git a/net-libs/ldns/ldns-1.8.3-r2.ebuild b/net-libs/ldns/ldns-1.8.3-r2.ebuild new file mode 100644 index 0000000..24228b9 --- /dev/null +++ b/net-libs/ldns/ldns-1.8.3-r2.ebuild @@ -0,0 +1,96 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..11} ) +inherit autotools python-single-r1 multilib-minimal + +DESCRIPTION="A library with the aim to simplify DNS programming in C" +HOMEPAGE="https://www.nlnetlabs.nl/projects/ldns/" +SRC_URI="https://www.nlnetlabs.nl/downloads/${PN}/${P}.tar.gz" + +LICENSE="BSD" +SLOT="0/3" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="doc examples python static-libs" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" +RESTRICT="test" # missing test directory + +BDEPEND=" + python? ( dev-lang/swig ) + doc? ( app-text/doxygen ) +" +DEPEND=" + python? ( ${PYTHON_DEPS} ) + >=dev-libs/openssl-1.1.1l-r1:0=[${MULTILIB_USEDEP},static-libs?] + examples? ( net-libs/libpcap ) +" +RDEPEND=" + ${DEPEND} + !<net-dns/ldns-utils-1.8.0-r2 +" + +MULTILIB_CHOST_TOOLS=( + /usr/bin/ldns-config +) + +PATCHES=( + "${FILESDIR}/ldns-1.8.1-pkgconfig.patch" + "${FILESDIR}/${P}-docs.patch" + "${FILESDIR}/${P}-configure-strict.patch" + "${FILESDIR}/${PN}-1.8.3-swig-4.2.0.patch" +) + +pkg_setup() { + use python && python-single-r1_pkg_setup +} + +src_prepare() { + default + + # Drop after 1.8.3 + eautoreconf +} + +multilib_src_configure() { + # "OpenSSL does not support offline DANE verification (Needed for the + # DANE-TA usage type). Please upgrade OpenSSL to version >= 1.1.0 or rerun + # with --disable-dane-verify or --disable-dane-ta-usage" + + ECONF_SOURCE="${S}" econf \ + $(use_enable static-libs static) \ + $(multilib_native_use_with python pyldns) \ + $(multilib_native_use_with python pyldnsx) \ + --with-ssl="${EPREFIX}"/usr \ + $(multilib_native_with drill) \ + $(multilib_native_use_with examples) \ + --disable-dane-ta-usage \ + --disable-rpath +} + +multilib_src_compile() { + default + + if multilib_is_native_abi && use doc ; then + emake doxygen + fi +} + +multilib_src_install() { + default + + if multilib_is_native_abi && use doc ; then + dodoc -r doc/html + fi +} + +multilib_src_install_all() { + dodoc Changelog README* + + find "${D}" -name '*.la' -delete || die + use python && python_optimize + + insinto /usr/share/vim/vimfiles/ftdetect + doins libdns.vim +} diff --git a/net-libs/ldns/metadata.xml b/net-libs/ldns/metadata.xml new file mode 100644 index 0000000..8fe7da4 --- /dev/null +++ b/net-libs/ldns/metadata.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>mschiff@gentoo.org</email> + <name>Marc Schiffbauer</name> + </maintainer> + <longdescription lang="en"> + ldns is a library with the aim to simplify DNS programming in C. All + lowlevel DNS/DNSSEC operations are supported. We also define a higher + level API which allows a programmer to (for instance) create or sign + packets. + </longdescription> + <upstream> + <remote-id type="github">NLnetLabs/ldns</remote-id> + </upstream> +</pkgmetadata> diff --git a/net-misc/aria2/Manifest b/net-misc/aria2/Manifest deleted file mode 100644 index f26538b..0000000 --- a/net-misc/aria2/Manifest +++ /dev/null @@ -1 +0,0 @@ -DIST aria2-1.34.0.tar.xz 1525908 BLAKE2B 479145af229f5fe864e54c511197bedb306199dbda608416aa295930a8392c7a118993b5a1634db20b380ab448cc8a397a351b6b64560ca263a0818d47a1ae64 SHA512 80bc43e242c06acc95030021cb347b4ec230729f3d7e512ca1932941b34ef95c312a34007a226869e5d720839a400e66cdb072ccab5d42228d8cf3d828723dcc diff --git a/net-misc/aria2/aria2-1.34.0-r1.ebuild b/net-misc/aria2/aria2-1.34.0-r1.ebuild deleted file mode 100644 index ceac9fc..0000000 --- a/net-misc/aria2/aria2-1.34.0-r1.ebuild +++ /dev/null @@ -1,158 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="6" - -inherit bash-completion-r1 - -DESCRIPTION="A download utility with segmented downloading with BitTorrent support" -HOMEPAGE="https://aria2.github.io/" -SRC_URI="https://github.com/aria2/${PN}/releases/download/release-${PV}/${P}.tar.xz" - -LICENSE="GPL-2" -KEYWORDS="amd64 ~arm ~ppc ~ppc64 ~sparc x86 ~amd64-linux ~x86-linux" -SLOT="0" -IUSE="adns bittorrent +gnutls jemalloc libressl libuv +libxml2 metalink +nettle nls sqlite scripts ssh ssl tcmalloc test xmlrpc" - -CDEPEND="sys-libs/zlib:0= - ssl? ( - app-misc/ca-certificates - gnutls? ( >=net-libs/gnutls-1.2.9:0= ) - !gnutls? ( - !libressl? ( dev-libs/openssl:0= ) - libressl? ( dev-libs/libressl:0= ) ) ) - adns? ( >=net-dns/c-ares-1.5.0:0= ) - bittorrent? ( - ssl? ( - gnutls? ( - nettle? ( >=dev-libs/nettle-2.4:0=[gmp] >=dev-libs/gmp-6:0= ) - !nettle? ( >=dev-libs/libgcrypt-1.2.2:0= ) ) ) - !ssl? ( - nettle? ( >=dev-libs/nettle-2.4:0=[gmp] >=dev-libs/gmp-6:0= ) - !nettle? ( >=dev-libs/libgcrypt-1.2.2:0= ) ) ) - jemalloc? ( dev-libs/jemalloc ) - libuv? ( >=dev-libs/libuv-1.13:0= ) - metalink? ( - libxml2? ( >=dev-libs/libxml2-2.6.26:2= ) - !libxml2? ( dev-libs/expat:0= ) ) - sqlite? ( dev-db/sqlite:3= ) - ssh? ( net-libs/libssh2:= ) - tcmalloc? ( dev-util/google-perftools ) - xmlrpc? ( - libxml2? ( >=dev-libs/libxml2-2.6.26:2= ) - !libxml2? ( dev-libs/expat:0= ) )" - -DEPEND="${CDEPEND} - app-arch/xz-utils - virtual/pkgconfig - nls? ( sys-devel/gettext ) - test? ( >=dev-util/cppunit-1.12.0:0 )" -RDEPEND="${CDEPEND} - nls? ( virtual/libiconv virtual/libintl ) - scripts? ( dev-lang/ruby )" - -# xmlrpc has no explicit switch, it's turned out by any XML library -# so metalink implicitly forces it on -REQUIRED_USE="?? ( jemalloc tcmalloc ) - metalink? ( xmlrpc )" -RESTRICT="!test? ( test )" - -pkg_setup() { - if use scripts && ! use xmlrpc; then - ewarn "Please note that you may need to enable USE=xmlrpc to run the aria2rpc" - ewarn "and aria2mon scripts against the local aria2." - fi -} - -src_prepare() { - eapply "${FILESDIR}"/${P}-make_unique.patch - # https://bugs.gentoo.org/674622 (CVE-2019-3500) - eapply "${FILESDIR}"/${P}-mask-headers.patch - eapply "${FILESDIR}"/aria2-libressl.patch - default - sed -i -e "s|/tmp|${T}|" test/*.cc test/*.txt || die "sed failed" -} - -src_configure() { - local myconf=( - # threads, epoll: check for best portability - - # do not try to compile and run a test LIBXML program - --disable-xmltest - # enable the shared library - --enable-libaria2 - # zlib should always be available anyway - --with-libz - --with-ca-bundle="${EPREFIX}/etc/ssl/certs/ca-certificates.crt" - - # optional features - $(use_enable bittorrent) - $(use_enable metalink) - $(use_enable nls) - $(use_with adns libcares) - $(use_with jemalloc) - $(use_with libuv) - $(use_with sqlite sqlite3) - $(use_with ssh libssh2) - $(use_with tcmalloc) - ) - - # SSL := gnutls / openssl - # USE=ssl - # + USE=gnutls -> gnutls - # + USE=-gnutls -> openssl - - if use ssl; then - myconf+=( $(use_with gnutls) $(use_with !gnutls openssl) ) - else - myconf+=( --without-gnutls --without-openssl ) - fi - - # message-digest := nettle / gcrypt / openssl - # bignum := nettle+gmp / gcrypt / openssl - # bittorrent := message-digest + bignum - # USE=bittorrent - # + USE=(ssl -gnutls) -> openssl - # + USE=nettle -> nettle+gmp - # + USE=-nettle -> gcrypt - - if use !bittorrent || use ssl && use !gnutls; then - myconf+=( --without-libgcrypt --without-libnettle --without-libgmp ) - else - myconf+=( $(use_with !nettle libgcrypt) - $(use_with nettle libnettle) $(use_with nettle libgmp) ) - fi - - # metalink+xmlrpc := libxml2 / expat - # USE=(metalink || xmlrpc) - # + USE=libxml2 -> libxml2 - # + USE=-libxml2 -> expat - - if use metalink || use xmlrpc; then - myconf+=( $(use_with !libxml2 libexpat) $(use_with libxml2) ) - else - myconf+=( --without-libexpat --without-libxml2 ) - fi - - # Note: - # - always enable gzip/http compression since zlib should always be available anyway - # - always enable epoll since we can assume kernel 2.6.x - # - other options for threads: solaris, pth, win32 - econf "${myconf[@]}" -} - -src_install() { - default - rm -rf "${D}"/usr/share/doc/aria2 \ - "${D}"/usr/share/doc/${PF}/README{,.html} - - dobashcomp doc/bash_completion/aria2c - use scripts && dobin doc/xmlrpc/aria2{mon,rpc} -} - -pkg_postinst() { - if use xmlrpc; then - elog "If you would like to use the additional aria2mon and aria2rpc tools," - elog "you need to have \033[1mdev-lang/ruby\033[0m installed." - fi -} diff --git a/net-misc/aria2/files/aria2-1.34.0-make_unique.patch b/net-misc/aria2/files/aria2-1.34.0-make_unique.patch deleted file mode 100644 index 448d6cf..0000000 --- a/net-misc/aria2/files/aria2-1.34.0-make_unique.patch +++ /dev/null @@ -1,44 +0,0 @@ -From e8e04d6f22a507e8374651d3d2343cd9fb986993 Mon Sep 17 00:00:00 2001 -From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> -Date: Thu, 17 May 2018 18:39:44 +0900 -Subject: [PATCH] Fix build failure when InternalDHKeyExchange is used - ---- - src/bignum.h | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/src/bignum.h b/src/bignum.h -index e59ab6bbf..5fb4402bc 100644 ---- a/src/bignum.h -+++ b/src/bignum.h -@@ -19,6 +19,8 @@ - #include <memory> - #include <stdint.h> - -+#include "a2functional.h" -+ - namespace bignum { - - template <size_t dim> class ulong { -@@ -31,17 +33,17 @@ template <size_t dim> class ulong { - std::unique_ptr<char_t[]> buf_; - - public: -- inline ulong() : buf_(make_unique<char_t[]>(dim)) {} -- inline ulong(size_t t) : buf_(make_unique<char_t[]>(dim)) -+ inline ulong() : buf_(aria2::make_unique<char_t[]>(dim)) {} -+ inline ulong(size_t t) : buf_(aria2::make_unique<char_t[]>(dim)) - { - memcpy(buf_.get(), (char_t*)&t, sizeof(t)); - } -- inline ulong(const ulong<dim>& rhs) : buf_(make_unique<char_t[]>(dim)) -+ inline ulong(const ulong<dim>& rhs) : buf_(aria2::make_unique<char_t[]>(dim)) - { - memcpy(buf_.get(), rhs.buf_.get(), dim); - } - explicit inline ulong(const char_t* data, size_t size) -- : buf_(make_unique<char_t[]>(dim)) -+ : buf_(aria2::make_unique<char_t[]>(dim)) - { - if (size > dim) { - throw std::bad_alloc(); diff --git a/net-misc/aria2/files/aria2-1.34.0-mask-headers.patch b/net-misc/aria2/files/aria2-1.34.0-mask-headers.patch deleted file mode 100644 index 694681d..0000000 --- a/net-misc/aria2/files/aria2-1.34.0-mask-headers.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 37368130ca7de5491a75fd18a20c5c5cc641824a Mon Sep 17 00:00:00 2001 -From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> -Date: Sat, 5 Jan 2019 09:32:40 +0900 -Subject: [PATCH] Mask headers - ---- - src/HttpConnection.cc | 18 ++++++++++++------ - 1 file changed, 12 insertions(+), 6 deletions(-) - -diff --git a/src/HttpConnection.cc b/src/HttpConnection.cc -index 77cb9d27a..be5b97723 100644 ---- a/src/HttpConnection.cc -+++ b/src/HttpConnection.cc -@@ -102,11 +102,17 @@ std::string HttpConnection::eraseConfidentialInfo(const std::string& request) - std::string result; - std::string line; - while (getline(istr, line)) { -- if (util::startsWith(line, "Authorization: Basic")) { -- result += "Authorization: Basic ********\n"; -+ if (util::istartsWith(line, "Authorization: ")) { -+ result += "Authorization: <snip>\n"; - } -- else if (util::startsWith(line, "Proxy-Authorization: Basic")) { -- result += "Proxy-Authorization: Basic ********\n"; -+ else if (util::istartsWith(line, "Proxy-Authorization: ")) { -+ result += "Proxy-Authorization: <snip>\n"; -+ } -+ else if (util::istartsWith(line, "Cookie: ")) { -+ result += "Cookie: <snip>\n"; -+ } -+ else if (util::istartsWith(line, "Set-Cookie: ")) { -+ result += "Set-Cookie: <snip>\n"; - } - else { - result += line; -@@ -154,8 +160,8 @@ std::unique_ptr<HttpResponse> HttpConnection::receiveResponse() - const auto& proc = outstandingHttpRequests_.front()->getHttpHeaderProcessor(); - if (proc->parse(socketRecvBuffer_->getBuffer(), - socketRecvBuffer_->getBufferLength())) { -- A2_LOG_INFO( -- fmt(MSG_RECEIVE_RESPONSE, cuid_, proc->getHeaderString().c_str())); -+ A2_LOG_INFO(fmt(MSG_RECEIVE_RESPONSE, cuid_, -+ eraseConfidentialInfo(proc->getHeaderString()).c_str())); - auto result = proc->getResult(); - if (result->getStatusCode() / 100 == 1) { - socketRecvBuffer_->drain(proc->getLastBytesProcessed()); diff --git a/net-misc/aria2/files/aria2-libressl.patch b/net-misc/aria2/files/aria2-libressl.patch deleted file mode 100644 index 4c20b1b..0000000 --- a/net-misc/aria2/files/aria2-libressl.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/libssl_compat.h b/src/libssl_compat.h -index 0e03bfd7..cb2e3d97 100644 ---- a/src/libssl_compat.h -+++ b/src/libssl_compat.h -@@ -44,6 +44,7 @@ - #endif // !defined(LIBRESSL_VERSION_NUMBER) - - #define OPENSSL_101_API \ -- (!LIBRESSL_IN_USE && OPENSSL_VERSION_NUMBER >= 0x1010000fL) -+ ((!LIBRESSL_IN_USE && OPENSSL_VERSION_NUMBER >= 0x1010000fL) || \ -+ (LIBRESSL_IN_USE && LIBRESSL_VERSION_NUMBER >= 0x20700000L)) - - #endif // LIBSSL_COMPAT_H diff --git a/net-misc/aria2/metadata.xml b/net-misc/aria2/metadata.xml deleted file mode 100644 index e5e58f4..0000000 --- a/net-misc/aria2/metadata.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> -<pkgmetadata> - <maintainer type="person"> - <email>dev-zero@gentoo.org</email> - <name>Tiziano Müller</name> - </maintainer> - <maintainer type="person"> - <email>mgorny@gentoo.org</email> - <name>Michał Górny</name> - </maintainer> - <use> - <flag name="bittorrent">Enable support for the bittorrent protocol.</flag> - <flag name="libuv">Use <pkg>dev-libs/libuv</pkg> backend.</flag> - <flag name="libxml2">Use <pkg>dev-libs/libxml2</pkg> for XML parsing (preferred) instead of <pkg>dev-libs/expat</pkg>.</flag> - <flag name="nettle">Use <pkg>dev-libs/nettle</pkg> and <pkg>dev-libs/gmp</pkg> for bittorrent/metalink crypto instead of <pkg>dev-libs/libgcrypt</pkg> (when <pkg>dev-libs/openssl</pkg> is not being used).</flag> - <flag name="metalink">Enable support for metalink.</flag> - <flag name="scripts">Install additional scripts which use aria2's xmlrpc functionality.</flag> - <flag name="ssh">Enable SFTP support.</flag> - </use> - <upstream> - <remote-id type="sourceforge">aria2</remote-id> - <remote-id type="github">tatsuhiro-t/aria2</remote-id> - </upstream> -</pkgmetadata> diff --git a/net-misc/seafile-client/Manifest b/net-misc/seafile-client/Manifest new file mode 100644 index 0000000..6014a70 --- /dev/null +++ b/net-misc/seafile-client/Manifest @@ -0,0 +1,2 @@ +DIST seafile-client-8.0.9.tar.gz 11716754 BLAKE2B 2087d2b31ce4696fdaaaa723da7a353c54ebebef86c84b62146d806692066165d0499f5fd6d3be108130d28c297020eafc3497be03131c8a8751f34f33eece90 SHA512 d0b55883f8d00138c092309994047652c6a5aa8b66182f83b6c852f1721794d9d8125da5fba282e9efdb92a0a97a55ecd6e225ab6a7916718a05ea2b7f4bd944 +DIST seafile-client-9.0.3.tar.gz 11718581 BLAKE2B cb2cecc9b02df4edb7b7191fd609ee5bc3548849c68b3c0cd8f59641bd0716791c2272633c0ba0f4f7b374a1302fd81a8f1396736961cb4e6e4ef1dd8db82c85 SHA512 c2d77c5f9407fd6d4ce3dfd47044de83a3c3e0bbbd1b66f1566ad54a8aa5391f51f70c7e094f16216a653a5ef0e9b8de1025ee56ce56c496c31c87983fbee4d7 diff --git a/net-misc/seafile-client/files/seafile-client-7.0.9-libressl.patch b/net-misc/seafile-client/files/seafile-client-7.0.9-libressl.patch new file mode 100644 index 0000000..2a11455 --- /dev/null +++ b/net-misc/seafile-client/files/seafile-client-7.0.9-libressl.patch @@ -0,0 +1,31 @@ +https://github.com/haiwen/seafile-client/pull/1452 +https://github.com/haiwen/seafile-client/pull/1314 + +From b5b1719c5b69c5c9f2396782ced71523d013446d Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Sat, 8 Apr 2023 18:25:37 -0700 +Subject: [PATCH] rsa: Fix the build with libressl 3.7 + +Newer versions of libressl no longer need this legacy code path. + +Patch from OpenBSD: + +https://github.com/openbsd/ports/blob/26afb45924c9faa3bbd31e76a21130bbad474994/net/seafile/client/patches/patch-src_utils_rsa_cpp +--- + src/utils/rsa.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/utils/rsa.cpp b/src/utils/rsa.cpp +index 350b79012..943a55f3b 100644 +--- a/src/utils/rsa.cpp ++++ b/src/utils/rsa.cpp +@@ -13,7 +13,8 @@ namespace { + + /* Forward compatibility functions if libssl < 1.1.0. */ + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || \ ++ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL) + + int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d) + { diff --git a/net-misc/seafile-client/files/seafile-client-7.0.9-qt-5.15.patch b/net-misc/seafile-client/files/seafile-client-7.0.9-qt-5.15.patch new file mode 100644 index 0000000..ef9c2f7 --- /dev/null +++ b/net-misc/seafile-client/files/seafile-client-7.0.9-qt-5.15.patch @@ -0,0 +1,37 @@ +https://github.com/haiwen/seafile-client/pull/1297 + +From 86ebea086c6b78738b3140c922c909331d2b9a94 Mon Sep 17 00:00:00 2001 +From: Joffrey <j-off@live.fr> +Date: Fri, 29 May 2020 15:59:11 +0000 +Subject: [PATCH] Fix build with Qt5 v5.15.0 + +--- + src/ui/events-list-view.cpp | 1 + + src/ui/private-share-dialog.cpp | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/src/ui/events-list-view.cpp b/src/ui/events-list-view.cpp +index b1d04abb..09536b9e 100644 +--- a/src/ui/events-list-view.cpp ++++ b/src/ui/events-list-view.cpp +@@ -1,4 +1,5 @@ + #include <QPainter> ++#include <QPainterPath> + #include <QApplication> + #include <QPixmap> + #include <QToolTip> +diff --git a/src/ui/private-share-dialog.cpp b/src/ui/private-share-dialog.cpp +index 511d476b..284cc043 100644 +--- a/src/ui/private-share-dialog.cpp ++++ b/src/ui/private-share-dialog.cpp +@@ -2,6 +2,7 @@ + #include <QCompleter> + #include <QLineEdit> + #include <QPainter> ++#include <QPainterPath> + #include <QResizeEvent> + #include <QStringList> + #include <QStringListModel> +-- +2.26.2 + diff --git a/net-misc/seafile-client/files/seafile-client-8.0.6-select-qt5.patch b/net-misc/seafile-client/files/seafile-client-8.0.6-select-qt5.patch new file mode 100644 index 0000000..4d3a3d1 --- /dev/null +++ b/net-misc/seafile-client/files/seafile-client-8.0.6-select-qt5.patch @@ -0,0 +1,23 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1c4a4447..5747df46 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -133,14 +133,12 @@ ENDIF() + #################### + ###### BEGIN: QT configuration + #################### +-FIND_PROGRAM(qmake_executable NAMES qmake qmake.exe) +-EXECUTE_PROCESS(COMMAND +- bash -c "${qmake_executable} --version | grep -iE '^using qt version [0-9.]+' | awk '{print $4}'" +- OUTPUT_VARIABLE DETECTED_QT_VERSION +- OUTPUT_STRIP_TRAILING_WHITESPACE) ++FIND_PACKAGE(Qt5Core) ++SET(DETECTED_QT_VERSION ${Qt5Core_VERSION}) + MESSAGE("Qt version: ${DETECTED_QT_VERSION}") ++GET_TARGET_PROPERTY(QMAKE_EXECUTABLE_PATH Qt5::qmake IMPORTED_LOCATION) + EXECUTE_PROCESS(COMMAND +- bash -c "qmake --version|grep -iE '^using qt version [0-9]'|awk '{print $4}'|grep -iE '^[0-9]'|awk -F . '{print $1}'" ++ bash -c "${QMAKE_EXECUTABLE_PATH} --version|grep -iE '^using qt version [0-9]'|awk '{print $4}'|grep -iE '^[0-9]'|awk -F . '{print $1}'" + OUTPUT_VARIABLE QT_VERSION_MAJOR + OUTPUT_STRIP_TRAILING_WHITESPACE) + MESSAGE("QT_VERSION_MAJOR: ${QT_VERSION_MAJOR}") diff --git a/net-misc/seafile-client/metadata.xml b/net-misc/seafile-client/metadata.xml new file mode 100644 index 0000000..1e23f1b --- /dev/null +++ b/net-misc/seafile-client/metadata.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <!-- maintainer-needed --> + <use> + <flag name="shibboleth">Build support for Shibboleth single sign-on</flag> + </use> + <upstream> + <remote-id type="github">haiwen/seafile-client</remote-id> + </upstream> +</pkgmetadata> diff --git a/net-misc/seafile-client/seafile-client-8.0.9.ebuild b/net-misc/seafile-client/seafile-client-8.0.9.ebuild new file mode 100644 index 0000000..7b9668c --- /dev/null +++ b/net-misc/seafile-client/seafile-client-8.0.9.ebuild @@ -0,0 +1,56 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Upstream is moving tags repeatedly, then we use commit hash. +RELEASE_COMMIT="5701514e89114b97795d4cfcbc3b59a1fd2f91e8" + +inherit xdg cmake + +DESCRIPTION="Seafile desktop client" +HOMEPAGE="https://www.seafile.com/ https://github.com/haiwen/seafile-client/" +SRC_URI="https://github.com/haiwen/${PN}/archive/${RELEASE_COMMIT}.tar.gz -> ${P}.tar.gz" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="amd64 ~x86" +IUSE="shibboleth test" +RESTRICT="!test? ( test )" + +RDEPEND="dev-db/sqlite:3 + dev-libs/glib:2 + dev-libs/jansson:= + dev-libs/openssl:= + dev-qt/qtcore:5 + dev-qt/qtdbus:5 + dev-qt/qtgui:5 + dev-qt/qtnetwork:5 + dev-qt/qtwidgets:5 + >=net-libs/libsearpc-3.2.0_p1 + ~net-misc/seafile-${PV} + sys-libs/zlib + virtual/opengl + elibc_musl? ( sys-libs/fts-standalone ) + shibboleth? ( dev-qt/qtwebengine:5[widgets] )" +DEPEND="${RDEPEND} + test? ( dev-qt/qttest:5 )" +BDEPEND="dev-qt/linguist-tools:5" + +PATCHES=( + "${FILESDIR}/${PN}-8.0.6-select-qt5.patch" + "${FILESDIR}/${PN}-7.0.9-qt-5.15.patch" + "${FILESDIR}/${PN}-7.0.9-libressl.patch" +) + +S="${WORKDIR}/${PN}-${RELEASE_COMMIT}" + +src_configure() { + local mycmakeargs=( + -DBUILD_SHIBBOLETH_SUPPORT="$(usex shibboleth)" + -DBUILD_TESTING="$(usex test)" + ) + # 863554 + use elibc_musl && mycmakeargs+=( -DCMAKE_CXX_STANDARD_LIBRARIES="-lfts" ) + cmake_src_configure +} diff --git a/net-misc/seafile-client/seafile-client-9.0.3.ebuild b/net-misc/seafile-client/seafile-client-9.0.3.ebuild new file mode 100644 index 0000000..6868c4a --- /dev/null +++ b/net-misc/seafile-client/seafile-client-9.0.3.ebuild @@ -0,0 +1,56 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Upstream is moving tags repeatedly, then we use commit hash. +RELEASE_COMMIT="57aa79cf4d1175a39cde20a38167db4fd3e12293" + +inherit xdg cmake + +DESCRIPTION="Seafile desktop client" +HOMEPAGE="https://www.seafile.com/ https://github.com/haiwen/seafile-client/" +SRC_URI="https://github.com/haiwen/${PN}/archive/${RELEASE_COMMIT}.tar.gz -> ${P}.tar.gz" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="shibboleth test" +RESTRICT="!test? ( test )" + +RDEPEND="dev-db/sqlite:3 + dev-libs/glib:2 + dev-libs/jansson:= + dev-libs/openssl:= + dev-qt/qtcore:5 + dev-qt/qtdbus:5 + dev-qt/qtgui:5 + dev-qt/qtnetwork:5 + dev-qt/qtwidgets:5 + >=net-libs/libsearpc-3.2.0_p1 + ~net-misc/seafile-${PV} + sys-libs/zlib + virtual/opengl + elibc_musl? ( sys-libs/fts-standalone ) + shibboleth? ( dev-qt/qtwebengine:5[widgets] )" +DEPEND="${RDEPEND} + test? ( dev-qt/qttest:5 )" +BDEPEND="dev-qt/linguist-tools:5" + +PATCHES=( + "${FILESDIR}/${PN}-8.0.6-select-qt5.patch" + "${FILESDIR}/${PN}-7.0.9-qt-5.15.patch" + "${FILESDIR}/${PN}-7.0.9-libressl.patch" +) + +S="${WORKDIR}/${PN}-${RELEASE_COMMIT}" + +src_configure() { + local mycmakeargs=( + -DBUILD_SHIBBOLETH_SUPPORT="$(usex shibboleth)" + -DBUILD_TESTING="$(usex test)" + ) + # 863554 + use elibc_musl && mycmakeargs+=( -DCMAKE_CXX_STANDARD_LIBRARIES="-lfts" ) + cmake_src_configure +} diff --git a/net-misc/socat/Manifest b/net-misc/socat/Manifest new file mode 100644 index 0000000..13d9ff4 --- /dev/null +++ b/net-misc/socat/Manifest @@ -0,0 +1 @@ +DIST socat-1.7.4.4.tar.bz2 522127 BLAKE2B 221b1c7c1ef0ac9c2402a6917ce7740a7ed857ceae4f4c346ed3c69c261fd0f9ca667e21cab5f97427d3947b06fdb0ac6d090852465878db968a24b8ece587ad SHA512 3eedfbf599ecf1d6fd391d03d710044bc5e18a762395bc4cb151b96fe673d405a6630da3070ecddd5ac558126b56aa65feaa74d528eeb755a04aa0ec61690651 diff --git a/net-misc/socat/metadata.xml b/net-misc/socat/metadata.xml new file mode 100644 index 0000000..001f8b0 --- /dev/null +++ b/net-misc/socat/metadata.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>sam@gentoo.org</email> + <name>Sam James</name> + </maintainer> + <maintainer type="project"> + <email>netmon@gentoo.org</email> + <name>Gentoo network monitoring and analysis project</name> + </maintainer> + <upstream> + <remote-id type="cpe">cpe:/a:dest-unreach:socat</remote-id> + </upstream> +</pkgmetadata> diff --git a/net-misc/socat/socat-1.7.4.4-r1.ebuild b/net-misc/socat/socat-1.7.4.4-r1.ebuild new file mode 100644 index 0000000..e7c8d89 --- /dev/null +++ b/net-misc/socat/socat-1.7.4.4-r1.ebuild @@ -0,0 +1,52 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic toolchain-funcs + +MY_P=${P/_beta/-b} +DESCRIPTION="Multipurpose relay (SOcket CAT)" +HOMEPAGE="http://www.dest-unreach.org/socat/ https://repo.or.cz/socat.git" +SRC_URI="http://www.dest-unreach.org/socat/download/${MY_P}.tar.bz2" +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" +IUSE="ipv6 readline ssl tcpd" + +DEPEND="ssl? ( >=dev-libs/openssl-3:0= ) + readline? ( sys-libs/readline:= ) + tcpd? ( sys-apps/tcp-wrappers )" +RDEPEND="${DEPEND}" + +# Tests are a large bash script +# Hard to disable individual tests needing network or privileges +# in 1.7.4.2: FAILED: 59 329 +RESTRICT="test" + +DOCS=( BUGREPORTS CHANGES DEVELOPMENT EXAMPLES FAQ FILES PORTING README SECURITY ) + +src_configure() { + # bug #293324 + filter-flags '-Wno-error*' + + tc-export AR + + # libressl doesn't have OPENSSL_INIT_new() + export ac_cv_func_OPENSSL_init_ssl=no + + econf \ + $(use_enable ssl openssl) \ + $(use_enable readline) \ + $(use_enable ipv6 ip6) \ + $(use_enable tcpd libwrap) +} + +src_install() { + default + + docinto html + dodoc doc/*.html doc/*.css +} diff --git a/net-misc/stunnel/Manifest b/net-misc/stunnel/Manifest new file mode 100644 index 0000000..de88c81 --- /dev/null +++ b/net-misc/stunnel/Manifest @@ -0,0 +1,4 @@ +DIST stunnel-5.64.tar.gz 869088 BLAKE2B c6be054b825e57c1ac44adf28d4546ab78250cf9d7b17bc9e039d2715ca2316fef674a3ed2c4419a5a7ad6fa85b56809f736d0dca0bc672521347d5f51d2ed23 SHA512 85ed22664420db3c97b871f1afeb6483e547f421f0419fed1ccb4f3563ea154b6aeb6ae7221f001557c786a3406ada4c7b0d44b208dcf98f16209229aee4e0aa +DIST stunnel-5.65.tar.gz 872293 BLAKE2B 45cc4dd0ec91cb9a99c10d26910b05325af29ec2609c0b86d5aceb07fbd495ff6fe39b0fe2c5895358596ee34ed822870c6eb1a538e30557f4485d042f5ae781 SHA512 96ca0535a07d5ea050a5d985c0ab6299bb92e551715120f536869a7b408b795fdc251782aaa7a4a282749d3146726d71c8b3c25430969aa55745a863abe5728a +DIST stunnel-5.68.tar.gz 884989 BLAKE2B e2551b2052db0719203b24dcf16a2ef74c078dccd1200d25502defcef1301456e755a71a1a2b6ab7b43fc9ddc04cd031fca83ffb760528133a0e22ae22e64d40 SHA512 cdc3b8ab4cd35ba722b5248c005ae58a39d79a80600447417b1d0d01fd3aa9e8b22f8568c3177423be99d7395bb15a8754e975fb953556cd80a9cc11e185e9fb +DIST stunnel-5.71.tar.gz 895646 BLAKE2B d323363c7bfdd6c0b7931b84a6069cf9a8337e967c31e14d15976d7932f0c0d6f40f7a1cbf5abbdff0e9edc52176cdcead4f848653088193b2debf4e77443b42 SHA512 c7004f48b93b3415305eec1193d51b7bf51a3bdd2cdc9f6ae588f563b32408b1ecde83b9f3f5b658f945ab5bcc5124390c38235394aad4471bf5b666081af2a2 diff --git a/net-misc/stunnel/files/stunnel-5.59-libressl.patch b/net-misc/stunnel/files/stunnel-5.59-libressl.patch new file mode 100644 index 0000000..1e61881 --- /dev/null +++ b/net-misc/stunnel/files/stunnel-5.59-libressl.patch @@ -0,0 +1,237 @@ +From OpenBSD. + +Index: src/common.h +--- a/src/common.h.orig ++++ b/src/common.h +@@ -454,7 +454,7 @@ extern char *sys_errlist[]; + #define OPENSSL_NO_TLS1_2 + #endif /* OpenSSL older than 1.0.1 || defined(OPENSSL_NO_TLS1) */ + +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + #ifndef OPENSSL_NO_SSL2 + #define OPENSSL_NO_SSL2 + #endif /* !defined(OPENSSL_NO_SSL2) */ +Index: src/client.c +--- a/src/client.c.orig ++++ b/src/client.c +@@ -750,7 +750,7 @@ NOEXPORT void print_cipher(CLI *c) { /* print negotiat + NOEXPORT void transfer(CLI *c) { + int timeout; /* s_poll_wait timeout in seconds */ + int pending; /* either processed on unprocessed TLS data */ +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + int has_pending=0, prev_has_pending; + #endif + int watchdog=0; /* a counter to detect an infinite loop */ +@@ -797,7 +797,7 @@ NOEXPORT void transfer(CLI *c) { + + /****************************** wait for an event */ + pending=SSL_pending(c->ssl); +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + /* only attempt to process SSL_has_pending() data once */ + prev_has_pending=has_pending; + has_pending=SSL_has_pending(c->ssl); +@@ -1202,7 +1202,7 @@ NOEXPORT void transfer(CLI *c) { + s_log(LOG_ERR, + "please report the problem to Michal.Trojnara@stunnel.org"); + stunnel_info(LOG_ERR); +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + s_log(LOG_ERR, "protocol=%s, SSL_pending=%d, SSL_has_pending=%d", + SSL_get_version(c->ssl), + SSL_pending(c->ssl), SSL_has_pending(c->ssl)); +Index: src/ctx.c +--- a/src/ctx.c.orig ++++ b/src/ctx.c +@@ -91,7 +91,7 @@ NOEXPORT void set_prompt(const char *); + NOEXPORT int ui_retry(); + + /* session tickets */ +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int generate_session_ticket_cb(SSL *, void *); + NOEXPORT int decrypt_session_ticket_cb(SSL *, SSL_SESSION *, + const unsigned char *, size_t, SSL_TICKET_STATUS, void *); +@@ -179,7 +179,7 @@ int context_init(SERVICE_OPTIONS *section) { /* init T + } + current_section=section; /* setup current section for callbacks */ + +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + /* set the security level */ + if(section->security_level>=0) { + /* set the user-specified value */ +@@ -265,7 +265,7 @@ int context_init(SERVICE_OPTIONS *section) { /* init T + #endif + + /* setup session tickets */ +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + SSL_CTX_set_session_ticket_cb(section->ctx, generate_session_ticket_cb, + decrypt_session_ticket_cb, NULL); + #endif /* OpenSSL 1.1.1 or later */ +@@ -539,7 +539,7 @@ NOEXPORT int ecdh_init(SERVICE_OPTIONS *section) { + /**************************************** initialize OpenSSL CONF */ + + NOEXPORT int conf_init(SERVICE_OPTIONS *section) { +-#if OPENSSL_VERSION_NUMBER>=0x10002000L ++#if OPENSSL_VERSION_NUMBER>=0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) + SSL_CONF_CTX *cctx; + NAME_LIST *curr; + char *cmd, *param; +@@ -1045,7 +1045,7 @@ NOEXPORT int ui_retry() { + + /**************************************** session tickets */ + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + + typedef struct { + void *session_authenticated; +@@ -1538,7 +1538,7 @@ NOEXPORT void info_callback(const SSL *ssl, int where, + + c=SSL_get_ex_data((SSL *)ssl, index_ssl_cli); + if(c) { +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + OSSL_HANDSHAKE_STATE state=SSL_get_state(ssl); + #else + int state=SSL_get_state((SSL *)ssl); +Index: src/options.c +--- a/src/options.c.orig ++++ b/src/options.c +@@ -38,7 +38,7 @@ + #include "common.h" + #include "prototypes.h" + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + #define DEFAULT_CURVES "X25519:P-256:X448:P-521:P-384" + #else /* OpenSSL version < 1.1.1 */ + #define DEFAULT_CURVES "prime256v1" +Index: src/prototypes.h +--- a/src/prototypes.h.orig ++++ b/src/prototypes.h +@@ -736,7 +736,7 @@ int getnameinfo(const struct sockaddr *, socklen_t, + extern CLI *thread_head; + #endif + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_OS_THREADS + +@@ -787,7 +787,7 @@ typedef enum { + + extern CRYPTO_RWLOCK *stunnel_locks[STUNNEL_LOCKS]; + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + /* Emulate the OpenSSL 1.1 locking API for older OpenSSL versions */ + CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); + int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *); +Index: src/ssl.c +--- a/src/ssl.c.orig ++++ b/src/ssl.c +@@ -44,7 +44,7 @@ NOEXPORT void cb_new_auth(void *parent, void *ptr, CRY + #if OPENSSL_VERSION_NUMBER>=0x30000000L + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void **from_d, int idx, long argl, void *argp); +-#elif OPENSSL_VERSION_NUMBER>=0x10100000L ++#elif OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); + #else +@@ -87,7 +87,7 @@ int fips_available() { /* either FIPS provider or cont + } + + int ssl_init(void) { /* init TLS before parsing configuration file */ +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + OPENSSL_INIT_SETTINGS *conf=OPENSSL_INIT_new(); + #ifdef USE_WIN32 + OPENSSL_INIT_set_config_filename(conf, "..\\config\\openssl.cnf"); +@@ -161,7 +161,7 @@ NOEXPORT void cb_new_auth(void *parent, void *ptr, CRY + #if OPENSSL_VERSION_NUMBER>=0x30000000L + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void **from_d, int idx, long argl, void *argp) { +-#elif OPENSSL_VERSION_NUMBER>=0x10100000L ++#elif OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp) { + #else +Index: src/sthreads.c +--- a/src/sthreads.c.orig ++++ b/src/sthreads.c +@@ -120,7 +120,7 @@ void thread_id_init(void) { + /**************************************** locking */ + + /* we only need to initialize locking with OpenSSL older than 1.1.0 */ +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_PTHREAD + +@@ -279,7 +279,7 @@ NOEXPORT int s_atomic_add(int *val, int amount, CRYPTO + + CRYPTO_RWLOCK *stunnel_locks[STUNNEL_LOCKS]; + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_OS_THREADS + +@@ -387,7 +387,8 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, + + void locking_init(void) { + size_t i; +-#if defined(USE_OS_THREADS) && OPENSSL_VERSION_NUMBER<0x10100004L ++#if defined(USE_OS_THREADS) && \ ++ (OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER)) + size_t num; + + /* initialize the OpenSSL static locking */ +Index: src/tls.c +--- a/src/tls.c.orig ++++ b/src/tls.c +@@ -41,7 +41,7 @@ + volatile int tls_initialized=0; + + NOEXPORT void tls_platform_init(); +-#if OPENSSL_VERSION_NUMBER<0x10100000L ++#if OPENSSL_VERSION_NUMBER<0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT void free_function(void *); + #endif + +@@ -52,7 +52,7 @@ void tls_init() { + tls_platform_init(); + tls_initialized=1; + ui_tls=tls_alloc(NULL, NULL, "ui"); +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + CRYPTO_set_mem_functions(str_alloc_detached_debug, + str_realloc_detached_debug, str_free_debug); + #else +@@ -184,7 +184,7 @@ TLS_DATA *tls_get() { + + /**************************************** OpenSSL allocator hook */ + +-#if OPENSSL_VERSION_NUMBER<0x10100000L ++#if OPENSSL_VERSION_NUMBER<0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT void free_function(void *ptr) { + /* CRYPTO_set_mem_ex_functions() needs a function rather than a macro */ + /* unfortunately, OpenSSL provides no file:line information here */ +Index: src/verify.c +--- a/src/verify.c.orig ++++ b/src/verify.c +@@ -351,7 +351,7 @@ NOEXPORT int cert_check_local(X509_STORE_CTX *callback + cert=X509_STORE_CTX_get_current_cert(callback_ctx); + subject=X509_get_subject_name(cert); + +-#if OPENSSL_VERSION_NUMBER<0x10100006L ++#if OPENSSL_VERSION_NUMBER<0x10100006L || defined(LIBRESSL_VERSION_NUMBER) + #define X509_STORE_CTX_get1_certs X509_STORE_get1_certs + #endif + /* modern API allows retrieving multiple matching certificates */ diff --git a/net-misc/stunnel/files/stunnel-5.65-libressl.patch b/net-misc/stunnel/files/stunnel-5.65-libressl.patch new file mode 100644 index 0000000..ac878f6 --- /dev/null +++ b/net-misc/stunnel/files/stunnel-5.65-libressl.patch @@ -0,0 +1,246 @@ +From OpenBSD. + +diff --git a/src/client.c b/src/client.c +index 6a5aeb3..d416127 100644 +--- a/src/client.c ++++ b/src/client.c +@@ -753,7 +753,7 @@ NOEXPORT void print_cipher(CLI *c) { /* print negotiated cipher */ + NOEXPORT void transfer(CLI *c) { + int timeout; /* s_poll_wait timeout in seconds */ + int pending; /* either processed on unprocessed TLS data */ +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + int has_pending=0, prev_has_pending; + #endif + int watchdog=0; /* a counter to detect an infinite loop */ +@@ -800,7 +800,7 @@ NOEXPORT void transfer(CLI *c) { + + /****************************** wait for an event */ + pending=SSL_pending(c->ssl); +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + /* only attempt to process SSL_has_pending() data once */ + prev_has_pending=has_pending; + has_pending=SSL_has_pending(c->ssl); +@@ -1205,7 +1205,7 @@ NOEXPORT void transfer(CLI *c) { + s_log(LOG_ERR, + "please report the problem to Michal.Trojnara@stunnel.org"); + stunnel_info(LOG_ERR); +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + s_log(LOG_ERR, "protocol=%s, SSL_pending=%d, SSL_has_pending=%d", + SSL_get_version(c->ssl), + SSL_pending(c->ssl), SSL_has_pending(c->ssl)); +diff --git a/src/common.h b/src/common.h +index bc37eb5..87bfe54 100644 +--- a/src/common.h ++++ b/src/common.h +@@ -457,7 +457,7 @@ extern char *sys_errlist[]; + #define OPENSSL_NO_TLS1_2 + #endif /* OpenSSL older than 1.0.1 || defined(OPENSSL_NO_TLS1) */ + +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + #ifndef OPENSSL_NO_SSL2 + #define OPENSSL_NO_SSL2 + #endif /* !defined(OPENSSL_NO_SSL2) */ +diff --git a/src/ctx.c b/src/ctx.c +index a2202b7..a39ee4c 100644 +--- a/src/ctx.c ++++ b/src/ctx.c +@@ -94,7 +94,7 @@ NOEXPORT void set_prompt(const char *); + NOEXPORT int ui_retry(void); + + /* session tickets */ +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int generate_session_ticket_cb(SSL *, void *); + NOEXPORT int decrypt_session_ticket_cb(SSL *, SSL_SESSION *, + const unsigned char *, size_t, SSL_TICKET_STATUS, void *); +@@ -182,7 +182,7 @@ int context_init(SERVICE_OPTIONS *section) { /* init TLS context */ + } + current_section=section; /* setup current section for callbacks */ + +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + /* set the security level */ + if(section->security_level>=0) { + /* set the user-specified value */ +@@ -270,7 +270,7 @@ int context_init(SERVICE_OPTIONS *section) { /* init TLS context */ + #endif + + /* setup session tickets */ +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + SSL_CTX_set_session_ticket_cb(section->ctx, generate_session_ticket_cb, + decrypt_session_ticket_cb, NULL); + #endif /* OpenSSL 1.1.1 or later */ +@@ -544,7 +544,7 @@ NOEXPORT int ecdh_init(SERVICE_OPTIONS *section) { + /**************************************** initialize OpenSSL CONF */ + + NOEXPORT int conf_init(SERVICE_OPTIONS *section) { +-#if OPENSSL_VERSION_NUMBER>=0x10002000L ++#if OPENSSL_VERSION_NUMBER>=0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) + SSL_CONF_CTX *cctx; + NAME_LIST *curr; + char *cmd, *param; +@@ -1050,7 +1050,7 @@ NOEXPORT int ui_retry() { + + /**************************************** session tickets */ + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + + typedef struct { + void *session_authenticated; +@@ -1541,7 +1541,7 @@ NOEXPORT void info_callback(const SSL *ssl, int where, int ret) { + + c=SSL_get_ex_data(ssl, index_ssl_cli); + if(c) { +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + OSSL_HANDSHAKE_STATE state=SSL_get_state(ssl); + #else + int state=SSL_get_state((SSL *)ssl); +diff --git a/src/options.c b/src/options.c +index 9ac9c7e..dfcf8b2 100644 +--- a/src/options.c ++++ b/src/options.c +@@ -37,7 +37,7 @@ + + #include "prototypes.h" + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + #define DEFAULT_CURVES "X25519:P-256:X448:P-521:P-384" + #else /* OpenSSL version < 1.1.1 */ + #define DEFAULT_CURVES "prime256v1" +diff --git a/src/prototypes.h b/src/prototypes.h +index 89d77b8..832942d 100644 +--- a/src/prototypes.h ++++ b/src/prototypes.h +@@ -726,7 +726,7 @@ int getnameinfo(const struct sockaddr *, socklen_t, + extern CLI *thread_head; + #endif + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_OS_THREADS + +@@ -777,7 +777,7 @@ typedef enum { + + extern CRYPTO_RWLOCK *stunnel_locks[STUNNEL_LOCKS]; + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + /* Emulate the OpenSSL 1.1 locking API for older OpenSSL versions */ + CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); + int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *); +diff --git a/src/ssl.c b/src/ssl.c +index fd6106b..526da34 100644 +--- a/src/ssl.c ++++ b/src/ssl.c +@@ -43,7 +43,7 @@ NOEXPORT void cb_new_auth(void *parent, void *ptr, CRYPTO_EX_DATA *ad, + #if OPENSSL_VERSION_NUMBER>=0x30000000L + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void **from_d, int idx, long argl, void *argp); +-#elif OPENSSL_VERSION_NUMBER>=0x10100000L ++#elif OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); + #else +@@ -102,7 +102,7 @@ int fips_available() { /* either FIPS provider or container is available */ + + /* initialize libcrypto before invoking API functions that require it */ + void crypto_init(char *stunnel_dir) { +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + OPENSSL_INIT_SETTINGS *conf=OPENSSL_INIT_new(); + #ifdef USE_WIN32 + char *path; +@@ -200,7 +200,7 @@ NOEXPORT void cb_new_auth(void *parent, void *ptr, CRYPTO_EX_DATA *ad, + #if OPENSSL_VERSION_NUMBER>=0x30000000L + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void **from_d, int idx, long argl, void *argp) { +-#elif OPENSSL_VERSION_NUMBER>=0x10100000L ++#elif OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp) { + #else +diff --git a/src/sthreads.c b/src/sthreads.c +index e3e442e..9f343e9 100644 +--- a/src/sthreads.c ++++ b/src/sthreads.c +@@ -123,7 +123,7 @@ NOEXPORT void thread_id_init() { + /**************************************** locking */ + + /* we only need to initialize locking with OpenSSL older than 1.1.0 */ +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_PTHREAD + +@@ -283,7 +283,7 @@ NOEXPORT int s_atomic_add(int *val, int amount, CRYPTO_RWLOCK *lock) { + + CRYPTO_RWLOCK *stunnel_locks[STUNNEL_LOCKS]; + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_OS_THREADS + +@@ -391,7 +391,8 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock) { + + NOEXPORT void locking_init() { + size_t i; +-#if defined(USE_OS_THREADS) && OPENSSL_VERSION_NUMBER<0x10100004L ++#if defined(USE_OS_THREADS) && \ ++ (OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER)) + size_t num; + + /* initialize the OpenSSL static locking */ +diff --git a/src/tls.c b/src/tls.c +index 43266d3..5de3435 100644 +--- a/src/tls.c ++++ b/src/tls.c +@@ -40,7 +40,7 @@ + volatile int tls_initialized=0; + + NOEXPORT void tls_platform_init(void); +-#if OPENSSL_VERSION_NUMBER<0x10100000L ++#if OPENSSL_VERSION_NUMBER<0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT void free_function(void *); + #endif + +@@ -51,7 +51,7 @@ void tls_init() { + tls_platform_init(); + tls_initialized=1; + ui_tls=tls_alloc(NULL, NULL, "ui"); +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + CRYPTO_set_mem_functions(str_alloc_detached_debug, + str_realloc_detached_debug, str_free_debug); + #else +@@ -183,7 +183,7 @@ TLS_DATA *tls_get() { + + /**************************************** OpenSSL allocator hook */ + +-#if OPENSSL_VERSION_NUMBER<0x10100000L ++#if OPENSSL_VERSION_NUMBER<0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT void free_function(void *ptr) { + /* CRYPTO_set_mem_ex_functions() needs a function rather than a macro */ + /* unfortunately, OpenSSL provides no file:line information here */ +diff --git a/src/verify.c b/src/verify.c +index 4058d6c..dbb4880 100644 +--- a/src/verify.c ++++ b/src/verify.c +@@ -350,7 +350,7 @@ NOEXPORT int cert_check_local(X509_STORE_CTX *callback_ctx) { + cert=X509_STORE_CTX_get_current_cert(callback_ctx); + subject=X509_get_subject_name(cert); + +-#if OPENSSL_VERSION_NUMBER<0x10100006L ++#if OPENSSL_VERSION_NUMBER<0x10100006L || defined(LIBRESSL_VERSION_NUMBER) + #define X509_STORE_CTX_get1_certs X509_STORE_get1_certs + #endif + /* modern API allows retrieving multiple matching certificates */ diff --git a/net-misc/stunnel/files/stunnel-5.68-libressl.patch b/net-misc/stunnel/files/stunnel-5.68-libressl.patch new file mode 100644 index 0000000..7bae42f --- /dev/null +++ b/net-misc/stunnel/files/stunnel-5.68-libressl.patch @@ -0,0 +1,321 @@ +commit deb3cc400a32c21712b6b748da616ef4a1b0d86a +Author: orbea <orbea@riseup.net> +Date: Tue Apr 11 15:13:02 2023 -0700 + + libressl (From OpenBSD) + +diff --git a/src/client.c b/src/client.c +index ac4a115..dda42c2 100644 +--- a/src/client.c ++++ b/src/client.c +@@ -773,7 +773,7 @@ NOEXPORT void print_cipher(CLI *c) { /* print negotiated cipher */ + NOEXPORT void transfer(CLI *c) { + int timeout; /* s_poll_wait timeout in seconds */ + int pending; /* either processed on unprocessed TLS data */ +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + int has_pending=0, prev_has_pending; + #endif + int watchdog=0; /* a counter to detect an infinite loop */ +@@ -820,7 +820,7 @@ NOEXPORT void transfer(CLI *c) { + + /****************************** wait for an event */ + pending=SSL_pending(c->ssl); +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + /* only attempt to process SSL_has_pending() data once */ + prev_has_pending=has_pending; + has_pending=SSL_has_pending(c->ssl); +@@ -1225,7 +1225,7 @@ NOEXPORT void transfer(CLI *c) { + s_log(LOG_ERR, + "please report the problem to Michal.Trojnara@stunnel.org"); + stunnel_info(LOG_ERR); +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + s_log(LOG_ERR, "protocol=%s, SSL_pending=%d, SSL_has_pending=%d", + SSL_get_version(c->ssl), + SSL_pending(c->ssl), SSL_has_pending(c->ssl)); +diff --git a/src/common.h b/src/common.h +index 8fe50b4..52435d7 100644 +--- a/src/common.h ++++ b/src/common.h +@@ -459,7 +459,7 @@ extern char *sys_errlist[]; + #define OPENSSL_NO_TLS1_2 + #endif /* OpenSSL older than 1.0.1 || defined(OPENSSL_NO_TLS1) */ + +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + #ifndef OPENSSL_NO_SSL2 + #define OPENSSL_NO_SSL2 + #endif /* !defined(OPENSSL_NO_SSL2) */ +@@ -505,7 +505,7 @@ int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); + /* not defined in public headers before OpenSSL 0.9.8 */ + STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); + #endif /* !defined(OPENSSL_NO_COMP) */ +-#if OPENSSL_VERSION_NUMBER>=0x10101000L ++#if OPENSSL_VERSION_NUMBER>=0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + #include <openssl/storeerr.h> + #endif /* OPENSSL_VERSION_NUMBER>=0x10101000L */ + #if OPENSSL_VERSION_NUMBER>=0x30000000L +diff --git a/src/ctx.c b/src/ctx.c +index 6a42a6b..90d6273 100644 +--- a/src/ctx.c ++++ b/src/ctx.c +@@ -94,7 +94,7 @@ NOEXPORT void set_prompt(const char *); + NOEXPORT int ui_retry(void); + + /* session tickets */ +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int generate_session_ticket_cb(SSL *, void *); + NOEXPORT int decrypt_session_ticket_cb(SSL *, SSL_SESSION *, + const unsigned char *, size_t, SSL_TICKET_STATUS, void *); +@@ -133,7 +133,7 @@ NOEXPORT void sslerror_log(unsigned long, const char *, int, const char *); + + /**************************************** initialize section->ctx */ + +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + typedef long unsigned SSL_OPTIONS_TYPE; + #else + typedef long SSL_OPTIONS_TYPE; +@@ -184,7 +184,7 @@ int context_init(SERVICE_OPTIONS *section) { /* init TLS context */ + } + current_section=section; /* setup current section for callbacks */ + +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + /* set the security level */ + if(section->security_level>=0) { + /* set the user-specified value */ +@@ -272,7 +272,7 @@ int context_init(SERVICE_OPTIONS *section) { /* init TLS context */ + #endif + + /* setup session tickets */ +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + SSL_CTX_set_session_ticket_cb(section->ctx, generate_session_ticket_cb, + decrypt_session_ticket_cb, NULL); + #endif /* OpenSSL 1.1.1 or later */ +@@ -546,7 +546,7 @@ NOEXPORT int ecdh_init(SERVICE_OPTIONS *section) { + /**************************************** initialize OpenSSL CONF */ + + NOEXPORT int conf_init(SERVICE_OPTIONS *section) { +-#if OPENSSL_VERSION_NUMBER>=0x10002000L ++#if OPENSSL_VERSION_NUMBER>=0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) + SSL_CONF_CTX *cctx; + NAME_LIST *curr; + char *cmd, *param; +@@ -1085,7 +1085,7 @@ NOEXPORT int ui_retry() { + + /**************************************** session tickets */ + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + + typedef struct { + void *session_authenticated; +@@ -1573,7 +1573,7 @@ NOEXPORT void info_callback(const SSL *ssl, int where, int ret) { + CLI *c; + SSL_CTX *ctx; + const char *state_string; +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + OSSL_HANDSHAKE_STATE state=SSL_get_state(ssl); + #else + int state=SSL_get_state((SSL *)ssl); +diff --git a/src/prototypes.h b/src/prototypes.h +index 0ecd719..1084ce2 100644 +--- a/src/prototypes.h ++++ b/src/prototypes.h +@@ -733,7 +733,7 @@ int getnameinfo(const struct sockaddr *, socklen_t, + extern CLI *thread_head; + #endif + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_OS_THREADS + +@@ -784,7 +784,7 @@ typedef enum { + + extern CRYPTO_RWLOCK *stunnel_locks[STUNNEL_LOCKS]; + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + /* Emulate the OpenSSL 1.1 locking API for older OpenSSL versions */ + CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); + int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *); +diff --git a/src/ssl.c b/src/ssl.c +index 2fd0c77..e465fe1 100644 +--- a/src/ssl.c ++++ b/src/ssl.c +@@ -43,7 +43,7 @@ NOEXPORT void cb_new_auth(void *parent, void *ptr, CRYPTO_EX_DATA *ad, + #if OPENSSL_VERSION_NUMBER>=0x30000000L + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void **from_d, int idx, long argl, void *argp); +-#elif OPENSSL_VERSION_NUMBER>=0x10100000L ++#elif OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); + #else +@@ -103,7 +103,7 @@ int fips_available() { /* either FIPS provider or container is available */ + + /* initialize libcrypto before invoking API functions that require it */ + void crypto_init() { +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + OPENSSL_INIT_SETTINGS *conf; + #endif /* OPENSSL_VERSION_NUMBER>=0x10100000L */ + #ifdef USE_WIN32 +@@ -146,7 +146,7 @@ void crypto_init() { + #endif /* USE_WIN32 */ + + /* initialize OpenSSL */ +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + conf=OPENSSL_INIT_new(); + #ifdef USE_WIN32 + stunnel_dir=tstr2str(stunnel_exe_path); +@@ -246,7 +246,7 @@ NOEXPORT void cb_new_auth(void *parent, void *ptr, CRYPTO_EX_DATA *ad, + #if OPENSSL_VERSION_NUMBER>=0x30000000L + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void **from_d, int idx, long argl, void *argp) { +-#elif OPENSSL_VERSION_NUMBER>=0x10100000L ++#elif OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp) { + #else +diff --git a/src/sthreads.c b/src/sthreads.c +index d0104ee..23ca48c 100644 +--- a/src/sthreads.c ++++ b/src/sthreads.c +@@ -123,7 +123,7 @@ NOEXPORT void thread_id_init() { + /**************************************** locking */ + + /* we only need to initialize locking with OpenSSL older than 1.1.0 */ +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_PTHREAD + +@@ -283,7 +283,7 @@ NOEXPORT int s_atomic_add(int *val, int amount, CRYPTO_RWLOCK *lock) { + + CRYPTO_RWLOCK *stunnel_locks[STUNNEL_LOCKS]; + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_OS_THREADS + +@@ -391,7 +391,8 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock) { + + NOEXPORT void locking_init() { + size_t i; +-#if defined(USE_OS_THREADS) && OPENSSL_VERSION_NUMBER<0x10100004L ++#if defined(USE_OS_THREADS) && \ ++ (OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER)) + size_t num; + + /* initialize the OpenSSL static locking */ +diff --git a/src/str.c b/src/str.c +index 5b464a1..9837c49 100644 +--- a/src/str.c ++++ b/src/str.c +@@ -93,7 +93,7 @@ NOEXPORT LEAK_ENTRY leak_hash_table[LEAK_TABLE_SIZE], + *leak_results[LEAK_TABLE_SIZE]; + NOEXPORT int leak_result_num=0; + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + DEFINE_STACK_OF(LEAK_ENTRY) + #endif /* OpenSSL version >= 1.1.1 */ + +@@ -107,7 +107,9 @@ NOEXPORT ALLOC_LIST *get_alloc_list_ptr(void *, const char *, int); + NOEXPORT void str_leak_debug(const ALLOC_LIST *, int); + + NOEXPORT LEAK_ENTRY *leak_search(const ALLOC_LIST *); ++#if !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int leak_cmp(const LEAK_ENTRY *const *, const LEAK_ENTRY *const *); ++#endif /* LIBRESSL_VERSION_NUMBER */ + NOEXPORT void leak_report(void); + NOEXPORT long leak_threshold(void); + +@@ -555,7 +557,7 @@ NOEXPORT LEAK_ENTRY *leak_search(const ALLOC_LIST *alloc_list) { + void leak_table_utilization() { + int i, utilization=0; + int64_t grand_total=0; +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + STACK_OF(LEAK_ENTRY) *stats; + #endif /* OpenSSL version >= 1.1.1 */ + +@@ -572,7 +574,7 @@ void leak_table_utilization() { + s_log(LOG_DEBUG, "Leak detection table utilization: %d/%d (%05.2f%%)", + utilization, LEAK_TABLE_SIZE, 100.0*utilization/LEAK_TABLE_SIZE); + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + /* log up to 5 most frequently used heap allocations */ + stats=sk_LEAK_ENTRY_new_reserve(leak_cmp, utilization); + for(i=0; i<LEAK_TABLE_SIZE; ++i) +@@ -589,6 +591,7 @@ void leak_table_utilization() { + #endif /* OpenSSL version >= 1.1.1 */ + } + ++#if !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int leak_cmp(const LEAK_ENTRY *const *a, const LEAK_ENTRY *const *b) { + int64_t d = (*a)->total - (*b)->total; + if(d>0) +@@ -597,6 +600,7 @@ NOEXPORT int leak_cmp(const LEAK_ENTRY *const *a, const LEAK_ENTRY *const *b) { + return -1; + return 0; + } ++#endif /* LIBRESSL_VERSION_NUMBER */ + + /* report identified leaks */ + NOEXPORT void leak_report() { +diff --git a/src/tls.c b/src/tls.c +index 691dfa2..bd1b66a 100644 +--- a/src/tls.c ++++ b/src/tls.c +@@ -40,7 +40,7 @@ + volatile int tls_initialized=0; + + NOEXPORT void tls_platform_init(void); +-#if OPENSSL_VERSION_NUMBER<0x10100000L ++#if OPENSSL_VERSION_NUMBER<0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT void free_function(void *); + #endif + +@@ -51,7 +51,7 @@ void tls_init() { + tls_platform_init(); + tls_initialized=1; + ui_tls=tls_alloc(NULL, NULL, "ui"); +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + CRYPTO_set_mem_functions(str_alloc_detached_debug, + str_realloc_detached_debug, str_free_debug); + #else +@@ -184,7 +184,7 @@ TLS_DATA *tls_get() { + + /**************************************** OpenSSL allocator hook */ + +-#if OPENSSL_VERSION_NUMBER<0x10100000L ++#if OPENSSL_VERSION_NUMBER<0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT void free_function(void *ptr) { + /* CRYPTO_set_mem_ex_functions() needs a function rather than a macro */ + /* unfortunately, OpenSSL provides no file:line information here */ +diff --git a/src/verify.c b/src/verify.c +index 4d8c087..9e71e2c 100644 +--- a/src/verify.c ++++ b/src/verify.c +@@ -388,7 +388,7 @@ NOEXPORT int cert_check_local(X509_STORE_CTX *callback_ctx) { + cert=X509_STORE_CTX_get_current_cert(callback_ctx); + subject=X509_get_subject_name(cert); + +-#if OPENSSL_VERSION_NUMBER<0x10100006L ++#if OPENSSL_VERSION_NUMBER<0x10100006L || defined(LIBRESSL_VERSION_NUMBER) + #define X509_STORE_CTX_get1_certs X509_STORE_get1_certs + #endif + /* modern API allows retrieving multiple matching certificates */ diff --git a/net-misc/stunnel/files/stunnel-5.71-dont-clobber-fortify-source.patch b/net-misc/stunnel/files/stunnel-5.71-dont-clobber-fortify-source.patch new file mode 100644 index 0000000..723b9c5 --- /dev/null +++ b/net-misc/stunnel/files/stunnel-5.71-dont-clobber-fortify-source.patch @@ -0,0 +1,15 @@ +Don't clobber toolchain defaults. + +https://bugs.gentoo.org/892992 +--- a/configure.ac ++++ b/configure.ac +@@ -109,7 +109,8 @@ if test "${GCC}" = yes; then + AX_APPEND_LINK_FLAGS([-Wl,-z,now]) + AX_APPEND_LINK_FLAGS([-Wl,-z,noexecstack]) + fi +-AX_APPEND_COMPILE_FLAGS([-D_FORTIFY_SOURCE=2]) ++ ++AX_ADD_FORTIFY_SOURCE + + AC_MSG_NOTICE([**************************************** libtool]) + LT_INIT([disable-static]) diff --git a/net-misc/stunnel/files/stunnel-5.71-libressl.patch b/net-misc/stunnel/files/stunnel-5.71-libressl.patch new file mode 100644 index 0000000..cd29227 --- /dev/null +++ b/net-misc/stunnel/files/stunnel-5.71-libressl.patch @@ -0,0 +1,302 @@ +Rebased from an OpenBSD patch. + +--- a/src/client.c ++++ b/src/client.c +@@ -783,7 +783,7 @@ NOEXPORT void print_cipher(CLI *c) { /* print negotiated cipher */ + NOEXPORT void transfer(CLI *c) { + int timeout; /* s_poll_wait timeout in seconds */ + int pending; /* either processed on unprocessed TLS data */ +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + int has_pending=0, prev_has_pending; + #endif + int watchdog=0; /* a counter to detect an infinite loop */ +@@ -830,7 +830,7 @@ NOEXPORT void transfer(CLI *c) { + + /****************************** wait for an event */ + pending=SSL_pending(c->ssl); +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + /* only attempt to process SSL_has_pending() data once */ + prev_has_pending=has_pending; + has_pending=SSL_has_pending(c->ssl); +@@ -1253,7 +1253,7 @@ NOEXPORT void transfer(CLI *c) { + s_log(LOG_ERR, + "please report the problem to Michal.Trojnara@stunnel.org"); + stunnel_info(LOG_ERR); +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + s_log(LOG_ERR, "protocol=%s, SSL_pending=%d, SSL_has_pending=%d", + SSL_get_version(c->ssl), + SSL_pending(c->ssl), SSL_has_pending(c->ssl)); +--- a/src/common.h ++++ b/src/common.h +@@ -459,7 +459,7 @@ extern char *sys_errlist[]; + #define OPENSSL_NO_TLS1_2 + #endif /* OpenSSL older than 1.0.1 || defined(OPENSSL_NO_TLS1) */ + +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + #ifndef OPENSSL_NO_SSL2 + #define OPENSSL_NO_SSL2 + #endif /* !defined(OPENSSL_NO_SSL2) */ +@@ -505,7 +505,7 @@ int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); + /* not defined in public headers before OpenSSL 0.9.8 */ + STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); + #endif /* !defined(OPENSSL_NO_COMP) */ +-#if OPENSSL_VERSION_NUMBER>=0x10101000L ++#if OPENSSL_VERSION_NUMBER>=0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + #include <openssl/storeerr.h> + #endif /* OPENSSL_VERSION_NUMBER>=0x10101000L */ + #if OPENSSL_VERSION_NUMBER>=0x30000000L +--- a/src/ctx.c ++++ b/src/ctx.c +@@ -94,7 +94,7 @@ NOEXPORT void set_prompt(const char *); + NOEXPORT int ui_retry(void); + + /* session tickets */ +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int generate_session_ticket_cb(SSL *, void *); + NOEXPORT int decrypt_session_ticket_cb(SSL *, SSL_SESSION *, + const unsigned char *, size_t, SSL_TICKET_STATUS, void *); +@@ -133,7 +133,7 @@ NOEXPORT void sslerror_log(unsigned long, const char *, int, const char *); + + /**************************************** initialize section->ctx */ + +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + typedef long unsigned SSL_OPTIONS_TYPE; + #else + typedef long SSL_OPTIONS_TYPE; +@@ -186,7 +186,7 @@ int context_init(SERVICE_OPTIONS *section) { /* init TLS context */ + } + current_section=section; /* setup current section for callbacks */ + +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + /* set the security level */ + if(section->security_level>=0) { + /* set the user-specified value */ +@@ -274,7 +274,7 @@ int context_init(SERVICE_OPTIONS *section) { /* init TLS context */ + #endif + + /* setup session tickets */ +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + SSL_CTX_set_session_ticket_cb(section->ctx, generate_session_ticket_cb, + decrypt_session_ticket_cb, NULL); + #endif /* OpenSSL 1.1.1 or later */ +@@ -573,7 +573,7 @@ NOEXPORT int ecdh_init(SERVICE_OPTIONS *section) { + /**************************************** initialize OpenSSL CONF */ + + NOEXPORT int conf_init(SERVICE_OPTIONS *section) { +-#if OPENSSL_VERSION_NUMBER>=0x10002000L ++#if OPENSSL_VERSION_NUMBER>=0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) + SSL_CONF_CTX *cctx; + NAME_LIST *curr; + char *cmd, *param; +@@ -1133,7 +1133,7 @@ NOEXPORT int ui_retry() { + + /**************************************** session tickets */ + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + + typedef struct { + void *session_authenticated; +@@ -1621,7 +1621,7 @@ NOEXPORT void info_callback(const SSL *ssl, int where, int ret) { + CLI *c; + SSL_CTX *ctx; + const char *state_string; +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + OSSL_HANDSHAKE_STATE state=SSL_get_state(ssl); + #else + int state=SSL_get_state((SSL *)ssl); +--- a/src/ocsp.c ++++ b/src/ocsp.c +@@ -108,7 +108,7 @@ int ocsp_init(SERVICE_OPTIONS *section) { + } + s_log(LOG_DEBUG, "OCSP: Client OCSP stapling enabled"); + } else { +-#if OPENSSL_VERSION_NUMBER>=0x10002000L ++#if OPENSSL_VERSION_NUMBER>=0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) + if(!section->psk_keys) { + if(SSL_CTX_set_tlsext_status_cb(section->ctx, ocsp_server_cb)==TLSEXT_STATUSTYPE_ocsp) + s_log(LOG_DEBUG, "OCSP: Server OCSP stapling enabled"); +--- a/src/prototypes.h ++++ b/src/prototypes.h +@@ -72,7 +72,7 @@ typedef struct servername_list_struct SERVERNAME_LIST; + typedef HANDLE THREAD_ID; + #endif + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_OS_THREADS + +@@ -798,7 +798,7 @@ extern CLI *thread_head; + + extern CRYPTO_RWLOCK *stunnel_locks[STUNNEL_LOCKS]; + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + /* Emulate the OpenSSL 1.1 locking API for older OpenSSL versions */ + CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); + int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *); +--- a/src/ssl.c ++++ b/src/ssl.c +@@ -48,7 +48,7 @@ NOEXPORT int cb_new_auth(void *parent, void *ptr, CRYPTO_EX_DATA *ad, + #if OPENSSL_VERSION_NUMBER>=0x30000000L + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void **from_d, int idx, long argl, void *argp); +-#elif OPENSSL_VERSION_NUMBER>=0x10100000L ++#elif OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); + #else +@@ -108,7 +108,7 @@ int fips_available() { /* either FIPS provider or container is available */ + + /* initialize libcrypto before invoking API functions that require it */ + void crypto_init() { +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + OPENSSL_INIT_SETTINGS *conf; + #endif /* OPENSSL_VERSION_NUMBER>=0x10100000L */ + #ifdef USE_WIN32 +@@ -151,7 +151,7 @@ void crypto_init() { + #endif /* USE_WIN32 */ + + /* initialize OpenSSL */ +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + conf=OPENSSL_INIT_new(); + #ifdef USE_WIN32 + stunnel_dir=tstr2str(stunnel_exe_path); +@@ -259,7 +259,7 @@ NOEXPORT int cb_new_auth(void *parent, void *ptr, CRYPTO_EX_DATA *ad, + #if OPENSSL_VERSION_NUMBER>=0x30000000L + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void **from_d, int idx, long argl, void *argp) { +-#elif OPENSSL_VERSION_NUMBER>=0x10100000L ++#elif OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int cb_dup_addr(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp) { + #else +--- a/src/sthreads.c ++++ b/src/sthreads.c +@@ -123,7 +123,7 @@ NOEXPORT void thread_id_init() { + /**************************************** locking */ + + /* we only need to initialize locking with OpenSSL older than 1.1.0 */ +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_PTHREAD + +@@ -283,7 +283,7 @@ NOEXPORT int s_atomic_add(int *val, int amount, CRYPTO_RWLOCK *lock) { + + CRYPTO_RWLOCK *stunnel_locks[STUNNEL_LOCKS]; + +-#if OPENSSL_VERSION_NUMBER<0x10100004L ++#if OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER) + + #ifdef USE_OS_THREADS + +@@ -391,7 +391,8 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock) { + + NOEXPORT void locking_init() { + size_t i; +-#if defined(USE_OS_THREADS) && OPENSSL_VERSION_NUMBER<0x10100004L ++#if defined(USE_OS_THREADS) && \ ++ (OPENSSL_VERSION_NUMBER<0x10100004L || defined(LIBRESSL_VERSION_NUMBER)) + size_t num; + + /* initialize the OpenSSL static locking */ +--- a/src/str.c ++++ b/src/str.c +@@ -93,7 +93,7 @@ NOEXPORT LEAK_ENTRY leak_hash_table[LEAK_TABLE_SIZE], + *leak_results[LEAK_TABLE_SIZE]; + NOEXPORT int leak_result_num=0; + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + DEFINE_STACK_OF(LEAK_ENTRY) + #endif /* OpenSSL version >= 1.1.1 */ + +@@ -107,7 +107,7 @@ NOEXPORT ALLOC_LIST *get_alloc_list_ptr(void *, const char *, int); + NOEXPORT void str_leak_debug(const ALLOC_LIST *, int); + + NOEXPORT LEAK_ENTRY *leak_search(const ALLOC_LIST *); +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int leak_cmp(const LEAK_ENTRY *const *, const LEAK_ENTRY *const *); + #endif /* OpenSSL version >= 1.1.1 */ + NOEXPORT void leak_report(void); +@@ -558,7 +558,7 @@ NOEXPORT LEAK_ENTRY *leak_search(const ALLOC_LIST *alloc_list) { + void leak_table_utilization() { + int i, utilization=0; + int64_t grand_total=0; +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + STACK_OF(LEAK_ENTRY) *stats; + #endif /* OpenSSL version >= 1.1.1 */ + +@@ -575,7 +575,7 @@ void leak_table_utilization() { + s_log(LOG_DEBUG, "Leak detection table utilization: %d/%d (%05.2f%%)", + utilization, LEAK_TABLE_SIZE, 100.0*utilization/LEAK_TABLE_SIZE); + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + /* log up to 5 most frequently used heap allocations */ + stats=sk_LEAK_ENTRY_new_reserve(leak_cmp, utilization); + for(i=0; i<LEAK_TABLE_SIZE; ++i) +@@ -592,7 +592,7 @@ void leak_table_utilization() { + #endif /* OpenSSL version >= 1.1.1 */ + } + +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT int leak_cmp(const LEAK_ENTRY *const *a, const LEAK_ENTRY *const *b) { + int64_t d = (*a)->total - (*b)->total; + if(d>0) +--- a/src/tls.c ++++ b/src/tls.c +@@ -40,7 +40,7 @@ + volatile int tls_initialized=0; + + NOEXPORT void tls_platform_init(void); +-#if OPENSSL_VERSION_NUMBER<0x10100000L ++#if OPENSSL_VERSION_NUMBER<0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT void free_function(void *); + #endif + +@@ -51,7 +51,7 @@ void tls_init() { + tls_platform_init(); + tls_initialized=1; + ui_tls=tls_alloc(NULL, NULL, "ui"); +-#if OPENSSL_VERSION_NUMBER>=0x10100000L ++#if OPENSSL_VERSION_NUMBER>=0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + CRYPTO_set_mem_functions(str_alloc_detached_debug, + str_realloc_detached_debug, str_free_debug); + #else +@@ -184,7 +184,7 @@ TLS_DATA *tls_get() { + + /**************************************** OpenSSL allocator hook */ + +-#if OPENSSL_VERSION_NUMBER<0x10100000L ++#if OPENSSL_VERSION_NUMBER<0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + NOEXPORT void free_function(void *ptr) { + /* CRYPTO_set_mem_ex_functions() needs a function rather than a macro */ + /* unfortunately, OpenSSL provides no file:line information here */ +--- a/src/verify.c ++++ b/src/verify.c +@@ -379,7 +379,7 @@ NOEXPORT int cert_check_local(X509_STORE_CTX *callback_ctx) { + cert=X509_STORE_CTX_get_current_cert(callback_ctx); + subject=X509_get_subject_name(cert); + +-#if OPENSSL_VERSION_NUMBER<0x10100006L ++#if OPENSSL_VERSION_NUMBER<0x10100006L || defined(LIBRESSL_VERSION_NUMBER) + #define X509_STORE_CTX_get1_certs X509_STORE_get1_certs + #endif + /* modern API allows retrieving multiple matching certificates */ diff --git a/net-misc/stunnel/files/stunnel-5.71-respect-EPYTHON-for-tests.patch b/net-misc/stunnel/files/stunnel-5.71-respect-EPYTHON-for-tests.patch new file mode 100644 index 0000000..3c421da --- /dev/null +++ b/net-misc/stunnel/files/stunnel-5.71-respect-EPYTHON-for-tests.patch @@ -0,0 +1,12 @@ +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -7,8 +7,7 @@ EXTRA_DIST = maketest.py plugin_collection.py reader.py error.py plugins + + # try to find a supported python version (>= 3.7) that works + check-local: +- for v in $$(seq 20 -1 7); do command -v python3.$$v && break; done || ( echo "Python 3.7 or later not found" && false ) +- for v in $$(seq 20 -1 7); do command -v python3.$$v && python3.$$v $(srcdir)/maketest.py --debug=10 --libs=$(SSLDIR)/lib64:$(SSLDIR)/lib && break; done ++ ${EPYTHON} $(srcdir)/maketest.py --debug=10 --libs=$(SSLDIR)/lib64:$(SSLDIR)/lib + + dist-hook: + rm -rf $(distdir)/__pycache__ $(distdir)/plugins/__pycache__ diff --git a/net-misc/stunnel/files/stunnel-r2 b/net-misc/stunnel/files/stunnel-r2 new file mode 100644 index 0000000..abd4298 --- /dev/null +++ b/net-misc/stunnel/files/stunnel-r2 @@ -0,0 +1,55 @@ +#!/sbin/openrc-run +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +extra_started_commands="reload" +SERVICENAME=${SVCNAME#*.} +SERVICENAME=${SERVICENAME:-stunnel} +STUNNEL_CONFIGFILE=${STUNNEL_CONFIGFILE:-/etc/stunnel/${SERVICENAME}.conf} + +depend() { + need net + before logger +} + +get_config() { + if [ ! -e ${STUNNEL_CONFIGFILE} ] ; then + eerror "You need to create ${STUNNEL_CONFIGFILE} first." + return 1 + fi + CHROOT=$(grep "^chroot" ${STUNNEL_CONFIGFILE} | sed "s;.*= *;;") + [ -n "${CHROOT}" ] && CHROOT="--chroot ${CHROOT}" + PIDFILE=$(grep "^pid" ${STUNNEL_CONFIGFILE} | sed "s;.*= *;;") + PIDFILE=${PIDFILE:-/run/stunnel/${SERVICENAME}.pid} + SETUID=$(grep "^setuid" ${STUNNEL_CONFIGFILE} | sed "s;.*= *;;") + SETUID=${SETUID:-stunnel} + SETGID=$(grep "^setgid" ${STUNNEL_CONFIGFILE} | sed "s;.*= *;;") + SETGID=${SETGID:-stunnel} +} + +start() { + get_config || return 1 + checkpath -d -m 0775 -o root:stunnel /run/stunnel + if [ "$(dirname ${PIDFILE})" != "/run" ]; then + checkpath -d -m 0755 -o ${SETUID}:${SETGID} -q $(dirname ${PIDFILE}) + fi + ebegin "Starting ${SVCNAME}" + start-stop-daemon --start --pidfile "${PIDFILE}" ${CHROOT} \ + --exec /usr/bin/stunnel -- ${STUNNEL_CONFIGFILE} ${STUNNEL_OPTIONS} + eend $? "Failed to start ${SVCNAME}" +} + +stop() { + get_config || return 1 + ebegin "Stopping ${SVCNAME}" + start-stop-daemon --stop --quiet --exec /usr/bin/stunnel \ + --pidfile ${PIDFILE} + eend $? "Failed to stop ${SVCNAME}" +} + +reload() { + get_config || return 1 + ebegin "Reloading ${SVCNAME}" + start-stop-daemon --signal HUP --pidfile ${PIDFILE} --name stunnel + eend $? +} diff --git a/net-misc/stunnel/files/stunnel.conf b/net-misc/stunnel/files/stunnel.conf new file mode 100644 index 0000000..547ee96 --- /dev/null +++ b/net-misc/stunnel/files/stunnel.conf @@ -0,0 +1,61 @@ +# Sample stunnel configuration file by Michal Trojnara 2002-2005 +# Some options used here may not be adequate for your particular configuration +# Please make sure you understand them (especially the effect of chroot jail) + +# Certificate/key is needed in server mode and optional in client mode +# cert = /etc/stunnel/stunnel.pem +# key = /etc/stunnel/stunnel.pem + +# Some security enhancements for UNIX systems - comment them out on Win32 +# chroot = /chroot/stunnel/ +setuid = stunnel +setgid = stunnel +# PID is created inside chroot jail +pid = /run/stunnel/stunnel.pid + +# Some performance tunings +socket = l:TCP_NODELAY=1 +socket = r:TCP_NODELAY=1 +#compression = rle + +# Workaround for Eudora bug +#options = DONT_INSERT_EMPTY_FRAGMENTS + +# Authentication stuff +#verify = 2 +# Don't forget to c_rehash CApath +# CApath is located inside chroot jail: +#CApath = /certs +# It's often easier to use CAfile: +#CAfile = /etc/stunnel/certs.pem +# Don't forget to c_rehash CRLpath +# CRLpath is located inside chroot jail: +#CRLpath = /crls +# Alternatively you can use CRLfile: +#CRLfile = /etc/stunnel/crls.pem + +# Some debugging stuff useful for troubleshooting +#debug = 7 +#output = stunnel.log + +# Use it for client mode +#client = yes + +# Service-level configuration + +#[pop3s] +#accept = 995 +#connect = 110 + +#[imaps] +#accept = 993 +#connect = 143 + +#[ssmtp] +#accept = 465 +#connect = 25 + +#[https] +#accept = 443 +#connect = 80 +#TIMEOUTclose = 0 diff --git a/net-misc/stunnel/files/stunnel.tmpfiles.conf b/net-misc/stunnel/files/stunnel.tmpfiles.conf new file mode 100644 index 0000000..4433c8a --- /dev/null +++ b/net-misc/stunnel/files/stunnel.tmpfiles.conf @@ -0,0 +1 @@ +d /run/stunnel 0770 stunnel stunnel - diff --git a/net-misc/stunnel/metadata.xml b/net-misc/stunnel/metadata.xml new file mode 100644 index 0000000..4d7c40f --- /dev/null +++ b/net-misc/stunnel/metadata.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <!-- maintainer-needed --> + <use> + <flag name="stunnel3">Install the stunnel3 wrapper.</flag> + </use> + <longdescription lang="en"> + Stunnel is a program that allows you to encrypt arbitrary TCP + connections inside SSL (Secure Sockets Layer) available on both Unix and + Windows. Stunnel can allow you to secure non-SSL aware daemons and + protocols (like POP, IMAP, LDAP, etc) by having Stunnel provide the + encryption, requiring no changes to the daemon's code. + </longdescription> + <upstream> + <changelog>https://www.stunnel.org/NEWS.html</changelog> + </upstream> +</pkgmetadata> diff --git a/net-misc/stunnel/stunnel-5.64-r2.ebuild b/net-misc/stunnel/stunnel-5.64-r2.ebuild new file mode 100644 index 0000000..e95db60 --- /dev/null +++ b/net-misc/stunnel/stunnel-5.64-r2.ebuild @@ -0,0 +1,104 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit ssl-cert systemd tmpfiles + +DESCRIPTION="TLS/SSL - Port Wrapper" +HOMEPAGE="https://www.stunnel.org/index.html" +SRC_URI=" + https://www.stunnel.org/downloads/${P}.tar.gz + ftp://ftp.stunnel.org/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://www.usenix.org.uk/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://ftp.nluug.nl/pub/networking/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://www.namesdir.com/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://stunnel.cybermirror.org/archive/${PV%%.*}.x/${P}.tar.gz + http://mirrors.zerg.biz/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + ftp://mirrors.go-parts.com/stunnel/archive/${PV%%.*}.x/${P}.tar.gz +" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~ia64 ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos" +IUSE="ipv6 selinux stunnel3 tcpd" + +DEPEND=" + dev-libs/openssl:0= + tcpd? ( sys-apps/tcp-wrappers ) +" + +RDEPEND=" + acct-user/stunnel + acct-group/stunnel + ${DEPEND} + selinux? ( sec-policy/selinux-stunnel ) + stunnel3? ( dev-lang/perl ) +" + +RESTRICT="test" + +src_prepare() { + # Hack away generation of certificate + sed -i -e "s/^install-data-local:/do-not-run-this:/" \ + tools/Makefile.in || die "sed failed" + + # bug 656420 + eapply "${FILESDIR}"/${PN}-5.59-libressl.patch + + echo "CONFIG_PROTECT=\"/etc/stunnel/stunnel.conf\"" > "${T}"/20stunnel + + eapply_user +} + +src_configure() { + local myeconfargs=( + --libdir="${EPREFIX}/usr/$(get_libdir)" + $(use_enable ipv6) + $(use_enable tcpd libwrap) + --with-ssl="${EPREFIX}"/usr + --disable-fips + ) + + econf "${myeconfargs[@]}" +} + +src_install() { + emake DESTDIR="${D}" install + rm -rf "${ED}"/usr/share/doc/${PN} + rm -f "${ED}"/etc/stunnel/stunnel.conf-sample \ + "${ED}"/usr/share/man/man8/stunnel.{fr,pl}.8 + use stunnel3 || rm -f "${ED}"/usr/bin/stunnel3 + + dodoc AUTHORS.md BUGS.md CREDITS.md PORTS.md README.md TODO.md + docinto html + dodoc doc/stunnel.html doc/en/VNC_StunnelHOWTO.html tools/ca.html \ + tools/importCA.html + + insinto /etc/stunnel + doins "${FILESDIR}"/stunnel.conf + newinitd "${FILESDIR}"/stunnel-r2 stunnel + + doenvd "${T}"/20stunnel + + systemd_dounit "${S}/tools/stunnel.service" + newtmpfiles "${FILESDIR}"/stunnel.tmpfiles.conf stunnel.conf + + find "${ED}" -name '*.la' -delete || die +} + +pkg_postinst() { + if [ ! -f "${EROOT}"/etc/stunnel/stunnel.key ]; then + install_cert /etc/stunnel/stunnel + chown stunnel:stunnel "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem} + chmod 0640 "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem} + fi + + tmpfiles_process stunnel.conf + + einfo "If you want to run multiple instances of stunnel, create a new config" + einfo "file ending with .conf in /etc/stunnel/. **Make sure** you change " + einfo "\'pid= \' with a unique filename. For openrc make a symlink from the" + einfo "stunnel init script to \'stunnel.name\' and use that to start|stop" + einfo "your custom instance" +} diff --git a/net-misc/stunnel/stunnel-5.65-r2.ebuild b/net-misc/stunnel/stunnel-5.65-r2.ebuild new file mode 100644 index 0000000..91062e9 --- /dev/null +++ b/net-misc/stunnel/stunnel-5.65-r2.ebuild @@ -0,0 +1,103 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit ssl-cert systemd tmpfiles + +DESCRIPTION="TLS/SSL - Port Wrapper" +HOMEPAGE="https://www.stunnel.org/index.html" +SRC_URI=" + https://www.stunnel.org/downloads/${P}.tar.gz + ftp://ftp.stunnel.org/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://www.usenix.org.uk/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://ftp.nluug.nl/pub/networking/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://www.namesdir.com/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://stunnel.cybermirror.org/archive/${PV%%.*}.x/${P}.tar.gz + http://mirrors.zerg.biz/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + ftp://mirrors.go-parts.com/stunnel/archive/${PV%%.*}.x/${P}.tar.gz +" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~ia64 ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos" +IUSE="selinux stunnel3 tcpd" + +DEPEND=" + dev-libs/openssl:0= + tcpd? ( sys-apps/tcp-wrappers ) +" + +RDEPEND=" + acct-user/stunnel + acct-group/stunnel + ${DEPEND} + selinux? ( sec-policy/selinux-stunnel ) + stunnel3? ( dev-lang/perl ) +" + +RESTRICT="test" + +src_prepare() { + # Hack away generation of certificate + sed -i -e "s/^install-data-local:/do-not-run-this:/" \ + tools/Makefile.in || die "sed failed" + + # bug 656420 + eapply "${FILESDIR}"/${PN}-5.65-libressl.patch + + echo "CONFIG_PROTECT=\"/etc/stunnel/stunnel.conf\"" > "${T}"/20stunnel + + eapply_user +} + +src_configure() { + local myeconfargs=( + --libdir="${EPREFIX}/usr/$(get_libdir)" + $(use_enable tcpd libwrap) + --with-ssl="${EPREFIX}"/usr + --disable-fips + ) + + econf "${myeconfargs[@]}" +} + +src_install() { + emake DESTDIR="${D}" install + rm -rf "${ED}"/usr/share/doc/${PN} + rm -f "${ED}"/etc/stunnel/stunnel.conf-sample \ + "${ED}"/usr/share/man/man8/stunnel.{fr,pl}.8 + use stunnel3 || rm -f "${ED}"/usr/bin/stunnel3 + + dodoc AUTHORS.md BUGS.md CREDITS.md PORTS.md README.md TODO.md + docinto html + dodoc doc/stunnel.html doc/en/VNC_StunnelHOWTO.html tools/ca.html \ + tools/importCA.html + + insinto /etc/stunnel + doins "${FILESDIR}"/stunnel.conf + newinitd "${FILESDIR}"/stunnel-r2 stunnel + + doenvd "${T}"/20stunnel + + systemd_dounit "${S}/tools/stunnel.service" + newtmpfiles "${FILESDIR}"/stunnel.tmpfiles.conf stunnel.conf + + find "${ED}" -name '*.la' -delete || die +} + +pkg_postinst() { + if [ ! -f "${EROOT}"/etc/stunnel/stunnel.key ]; then + install_cert /etc/stunnel/stunnel + chown stunnel:stunnel "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem} + chmod 0640 "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem} + fi + + tmpfiles_process stunnel.conf + + einfo "If you want to run multiple instances of stunnel, create a new config" + einfo "file ending with .conf in /etc/stunnel/. **Make sure** you change " + einfo "\'pid= \' with a unique filename. For openrc make a symlink from the" + einfo "stunnel init script to \'stunnel.name\' and use that to start|stop" + einfo "your custom instance" +} diff --git a/net-misc/stunnel/stunnel-5.68.ebuild b/net-misc/stunnel/stunnel-5.68.ebuild new file mode 100644 index 0000000..6412689 --- /dev/null +++ b/net-misc/stunnel/stunnel-5.68.ebuild @@ -0,0 +1,103 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit ssl-cert systemd tmpfiles + +DESCRIPTION="TLS/SSL - Port Wrapper" +HOMEPAGE="https://www.stunnel.org/index.html" +SRC_URI=" + https://www.stunnel.org/downloads/${P}.tar.gz + ftp://ftp.stunnel.org/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://www.usenix.org.uk/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://ftp.nluug.nl/pub/networking/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://www.namesdir.com/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://stunnel.cybermirror.org/archive/${PV%%.*}.x/${P}.tar.gz + http://mirrors.zerg.biz/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + ftp://mirrors.go-parts.com/stunnel/archive/${PV%%.*}.x/${P}.tar.gz +" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~ia64 ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos" +IUSE="selinux stunnel3 tcpd" + +DEPEND=" + dev-libs/openssl:0= + tcpd? ( sys-apps/tcp-wrappers ) +" + +RDEPEND=" + acct-user/stunnel + acct-group/stunnel + ${DEPEND} + selinux? ( sec-policy/selinux-stunnel ) + stunnel3? ( dev-lang/perl ) +" + +RESTRICT="test" + +src_prepare() { + # Hack away generation of certificate + sed -i -e "s/^install-data-local:/do-not-run-this:/" \ + tools/Makefile.in || die "sed failed" + + # bug 656420 + eapply "${FILESDIR}"/${PN}-5.68-libressl.patch + + echo "CONFIG_PROTECT=\"/etc/stunnel/stunnel.conf\"" > "${T}"/20stunnel + + eapply_user +} + +src_configure() { + local myeconfargs=( + --libdir="${EPREFIX}/usr/$(get_libdir)" + $(use_enable tcpd libwrap) + --with-ssl="${EPREFIX}"/usr + --disable-fips + ) + + econf "${myeconfargs[@]}" +} + +src_install() { + emake DESTDIR="${D}" install + rm -rf "${ED}"/usr/share/doc/${PN} + rm -f "${ED}"/etc/stunnel/stunnel.conf-sample \ + "${ED}"/usr/share/man/man8/stunnel.{fr,pl}.8 + use stunnel3 || rm -f "${ED}"/usr/bin/stunnel3 + + dodoc AUTHORS.md BUGS.md CREDITS.md PORTS.md README.md TODO.md + docinto html + dodoc doc/stunnel.html doc/en/VNC_StunnelHOWTO.html tools/ca.html \ + tools/importCA.html + + insinto /etc/stunnel + doins "${FILESDIR}"/stunnel.conf + newinitd "${FILESDIR}"/stunnel-r2 stunnel + + doenvd "${T}"/20stunnel + + systemd_dounit "${S}/tools/stunnel.service" + newtmpfiles "${FILESDIR}"/stunnel.tmpfiles.conf stunnel.conf + + find "${ED}" -name '*.la' -delete || die +} + +pkg_postinst() { + if [ ! -f "${EROOT}"/etc/stunnel/stunnel.key ]; then + install_cert /etc/stunnel/stunnel + chown stunnel:stunnel "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem} + chmod 0640 "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem} + fi + + tmpfiles_process stunnel.conf + + einfo "If you want to run multiple instances of stunnel, create a new config" + einfo "file ending with .conf in /etc/stunnel/. **Make sure** you change " + einfo "\'pid= \' with a unique filename. For openrc make a symlink from the" + einfo "stunnel init script to \'stunnel.name\' and use that to start|stop" + einfo "your custom instance" +} diff --git a/net-misc/stunnel/stunnel-5.71-r1.ebuild b/net-misc/stunnel/stunnel-5.71-r1.ebuild new file mode 100644 index 0000000..e1ab73d --- /dev/null +++ b/net-misc/stunnel/stunnel-5.71-r1.ebuild @@ -0,0 +1,133 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) +inherit autotools python-any-r1 ssl-cert systemd tmpfiles + +DESCRIPTION="TLS/SSL - Port Wrapper" +HOMEPAGE="https://www.stunnel.org/index.html" +SRC_URI=" + https://www.stunnel.org/downloads/${P}.tar.gz + ftp://ftp.stunnel.org/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://www.usenix.org.uk/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://ftp.nluug.nl/pub/networking/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://www.namesdir.com/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://stunnel.cybermirror.org/archive/${PV%%.*}.x/${P}.tar.gz + http://mirrors.zerg.biz/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + ftp://mirrors.go-parts.com/stunnel/archive/${PV%%.*}.x/${P}.tar.gz +" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 arm ~arm64 ~hppa ~ia64 ~mips ppc ppc64 ~s390 sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos" +IUSE="selinux stunnel3 systemd tcpd test" +RESTRICT="!test? ( test )" + +DEPEND=" + dev-libs/openssl:= + tcpd? ( sys-apps/tcp-wrappers ) + systemd? ( sys-apps/systemd:= ) +" +RDEPEND=" + ${DEPEND} + acct-user/stunnel + acct-group/stunnel + selinux? ( sec-policy/selinux-stunnel ) + stunnel3? ( dev-lang/perl ) +" +# autoconf-archive for F_S patch +BDEPEND=" + dev-build/autoconf-archive + test? ( + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/cryptography[${PYTHON_USEDEP}]') + ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-5.71-libressl.patch #656420 + "${FILESDIR}"/${PN}-5.71-dont-clobber-fortify-source.patch + "${FILESDIR}"/${PN}-5.71-respect-EPYTHON-for-tests.patch +) + +python_check_deps() { + python_has_version "dev-python/cryptography[${PYTHON_USEDEP}]" +} + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +src_prepare() { + default + + # Hack away generation of certificate + sed -i -e "s/^install-data-local:/do-not-run-this:/" \ + tools/Makefile.am || die "sed failed" + + echo "CONFIG_PROTECT=\"/etc/stunnel/stunnel.conf\"" > "${T}"/20stunnel || die + + # We pass --disable-fips to configure, so avoid spurious test failures + rm tests/plugins/p10_fips.py tests/plugins/p11_fips_cipher.py || die + + # Needed for FORTIFY_SOURCE patch + eautoreconf +} + +src_configure() { + local myeconfargs=( + --libdir="${EPREFIX}/usr/$(get_libdir)" + --with-ssl="${EPREFIX}"/usr + --disable-fips + $(use_enable tcpd libwrap) + $(use_enable systemd) + ) + + econf "${myeconfargs[@]}" +} + +src_install() { + emake DESTDIR="${D}" install + + rm -rf "${ED}"/usr/share/doc/${PN} || die + rm -f "${ED}"/etc/stunnel/stunnel.conf-sample \ + "${ED}"/usr/share/man/man8/stunnel.{fr,pl}.8 || die + + if ! use stunnel3 ; then + rm -f "${ED}"/usr/bin/stunnel3 || die + fi + + dodoc AUTHORS.md BUGS.md CREDITS.md PORTS.md README.md TODO.md + docinto html + dodoc doc/stunnel.html doc/en/VNC_StunnelHOWTO.html tools/ca.html \ + tools/importCA.html + + insinto /etc/stunnel + doins "${FILESDIR}"/stunnel.conf + newinitd "${FILESDIR}"/stunnel-r2 stunnel + + doenvd "${T}"/20stunnel + + systemd_dounit "${S}/tools/stunnel.service" + newtmpfiles "${FILESDIR}"/stunnel.tmpfiles.conf stunnel.conf + + find "${ED}" -name '*.la' -delete || die +} + +pkg_postinst() { + if [[ ! -f "${EROOT}"/etc/stunnel/stunnel.key ]]; then + install_cert /etc/stunnel/stunnel + chown stunnel:stunnel "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem} + chmod 0640 "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem} + fi + + tmpfiles_process stunnel.conf + + einfo "If you want to run multiple instances of stunnel, create a new config" + einfo "file ending with .conf in /etc/stunnel/. **Make sure** you change " + einfo "\'pid= \' with a unique filename. For openrc make a symlink from the" + einfo "stunnel init script to \'stunnel.name\' and use that to start|stop" + einfo "your custom instance" +} diff --git a/net-misc/stunnel/stunnel-5.71.ebuild b/net-misc/stunnel/stunnel-5.71.ebuild new file mode 100644 index 0000000..d8ddd73 --- /dev/null +++ b/net-misc/stunnel/stunnel-5.71.ebuild @@ -0,0 +1,126 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) +inherit autotools python-any-r1 ssl-cert systemd tmpfiles + +DESCRIPTION="TLS/SSL - Port Wrapper" +HOMEPAGE="https://www.stunnel.org/index.html" +SRC_URI=" + https://www.stunnel.org/downloads/${P}.tar.gz + ftp://ftp.stunnel.org/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://www.usenix.org.uk/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://ftp.nluug.nl/pub/networking/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://www.namesdir.com/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + http://stunnel.cybermirror.org/archive/${PV%%.*}.x/${P}.tar.gz + http://mirrors.zerg.biz/stunnel/archive/${PV%%.*}.x/${P}.tar.gz + ftp://mirrors.go-parts.com/stunnel/archive/${PV%%.*}.x/${P}.tar.gz +" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos" +IUSE="selinux stunnel3 systemd tcpd test" +RESTRICT="!test? ( test )" + +DEPEND=" + dev-libs/openssl:= + tcpd? ( sys-apps/tcp-wrappers ) + systemd? ( sys-apps/systemd:= ) +" +RDEPEND=" + ${DEPEND} + acct-user/stunnel + acct-group/stunnel + selinux? ( sec-policy/selinux-stunnel ) + stunnel3? ( dev-lang/perl ) +" +# autoconf-archive for F_S patch +BDEPEND=" + dev-build/autoconf-archive + test? ( ${PYTHON_DEPS} ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-5.71-libressl.patch #656420 + "${FILESDIR}"/${PN}-5.71-dont-clobber-fortify-source.patch + "${FILESDIR}"/${PN}-5.71-respect-EPYTHON-for-tests.patch +) + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +src_prepare() { + default + + # Hack away generation of certificate + sed -i -e "s/^install-data-local:/do-not-run-this:/" \ + tools/Makefile.am || die "sed failed" + + echo "CONFIG_PROTECT=\"/etc/stunnel/stunnel.conf\"" > "${T}"/20stunnel || die + + # We pass --disable-fips to configure, so avoid spurious test failures + rm tests/plugins/p10_fips.py tests/plugins/p11_fips_cipher.py || die + + # Needed for FORTIFY_SOURCE patch + eautoreconf +} + +src_configure() { + local myeconfargs=( + --libdir="${EPREFIX}/usr/$(get_libdir)" + --with-ssl="${EPREFIX}"/usr + --disable-fips + $(use_enable tcpd libwrap) + $(use_enable systemd) + ) + + econf "${myeconfargs[@]}" +} + +src_install() { + emake DESTDIR="${D}" install + + rm -rf "${ED}"/usr/share/doc/${PN} || die + rm -f "${ED}"/etc/stunnel/stunnel.conf-sample \ + "${ED}"/usr/share/man/man8/stunnel.{fr,pl}.8 || die + + if ! use stunnel3 ; then + rm -f "${ED}"/usr/bin/stunnel3 || die + fi + + dodoc AUTHORS.md BUGS.md CREDITS.md PORTS.md README.md TODO.md + docinto html + dodoc doc/stunnel.html doc/en/VNC_StunnelHOWTO.html tools/ca.html \ + tools/importCA.html + + insinto /etc/stunnel + doins "${FILESDIR}"/stunnel.conf + newinitd "${FILESDIR}"/stunnel-r2 stunnel + + doenvd "${T}"/20stunnel + + systemd_dounit "${S}/tools/stunnel.service" + newtmpfiles "${FILESDIR}"/stunnel.tmpfiles.conf stunnel.conf + + find "${ED}" -name '*.la' -delete || die +} + +pkg_postinst() { + if [[ ! -f "${EROOT}"/etc/stunnel/stunnel.key ]]; then + install_cert /etc/stunnel/stunnel + chown stunnel:stunnel "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem} + chmod 0640 "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem} + fi + + tmpfiles_process stunnel.conf + + einfo "If you want to run multiple instances of stunnel, create a new config" + einfo "file ending with .conf in /etc/stunnel/. **Make sure** you change " + einfo "\'pid= \' with a unique filename. For openrc make a symlink from the" + einfo "stunnel init script to \'stunnel.name\' and use that to start|stop" + einfo "your custom instance" +} diff --git a/net-nds/openldap/Manifest b/net-nds/openldap/Manifest new file mode 100644 index 0000000..1e7927c --- /dev/null +++ b/net-nds/openldap/Manifest @@ -0,0 +1,2 @@ +DIST openldap-OPENLDAP_REL_ENG_2_6_3.tar.gz 6244895 BLAKE2B 97792a1b368de44867b0ce9eef38601c3e64b7d40e4ca206295bee110097697c919040d2220eea6f0581812e09a2cc3e6afb4a243a5072a8a0a95f24f9fb354b SHA512 1c882a0cd0729b5d0f40b58588d0e36ae3b1cae6d569f0576e940c7c63d03c29ed2c9db87695a87594ba99a927ef4cba491bddba3ce049025fd5883463122ba7 +DIST rfc2307bis.schema-20140524 12262 BLAKE2B 98031f49e9bde1e4821e637af3382364d8344ed7017649686a088070d96a632dffa6c661552352656b1b159c0fd962965580069a64c7f3d5bb6a3ed75f60fd99 SHA512 83b89a1deeefc8566b97e7e865b9b6d04541099cbdf719e24538a7d27d61b6209e87ab9003a9f140bd9afd018ec569e71721e3a24090e1902c8b6659d2ba103e diff --git a/net-nds/openldap/files/DB_CONFIG.fast.example b/net-nds/openldap/files/DB_CONFIG.fast.example new file mode 100644 index 0000000..8b52062 --- /dev/null +++ b/net-nds/openldap/files/DB_CONFIG.fast.example @@ -0,0 +1,25 @@ +# $OpenLDAP: pkg/ldap/servers/slapd/DB_CONFIG,v 1.1 2004/06/18 02:49:08 kurt Exp $ +# Example DB_CONFIG file for use with slapd(8) BDB/HDB databases. +# +# See Sleepycat Berkeley DB documentation +# <http://www.sleepycat.com/docs/ref/env/db_config.html> +# for detail description of DB_CONFIG syntax and semantics. +# +# Hints can also be found in the OpenLDAP Software FAQ +# <http://www.openldap.org/faq/index.cgi?file=2> + +# one 0.25 GB cache +set_cachesize 0 16777216 0 + +# Data Directory +#set_data_dir db + +# Transaction Log settings +set_lg_regionmax 262144 +set_lg_bsize 524288 +#set_lg_dir logs + +# When using (and only when using) slapadd(8) or slapindex(8), +# the following flags may be useful: +#set_flags DB_TXN_NOSYNC +#set_flags DB_TXN_NOT_DURABLE diff --git a/net-nds/openldap/files/openldap-2.2.14-perlthreadsfix.patch b/net-nds/openldap/files/openldap-2.2.14-perlthreadsfix.patch new file mode 100644 index 0000000..2a8c4bc --- /dev/null +++ b/net-nds/openldap/files/openldap-2.2.14-perlthreadsfix.patch @@ -0,0 +1,11 @@ +--- a/servers/slapd/back-perl/Makefile.in ++++ b/servers/slapd/back-perl/Makefile.in +@@ -31,7 +31,7 @@ + + shared_LDAP_LIBS = $(LDAP_LIBLDAP_R_LA) $(LDAP_LIBLBER_LA) + NT_LINK_LIBS = -L.. -lslapd $(@BUILD_LIBS_DYNAMIC@_LDAP_LIBS) +-UNIX_LINK_LIBS = $(@BUILD_LIBS_DYNAMIC@_LDAP_LIBS) ++UNIX_LINK_LIBS = $(@BUILD_LIBS_DYNAMIC@_LDAP_LIBS) `perl -MExtUtils::Embed -e ldopts` + + LIBBASE = back_perl + diff --git a/net-nds/openldap/files/openldap-2.4.11-libldap_r.patch b/net-nds/openldap/files/openldap-2.4.11-libldap_r.patch new file mode 100644 index 0000000..f63ad3c --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.11-libldap_r.patch @@ -0,0 +1,10 @@ +--- a/servers/slapd/slapi/Makefile.in ++++ b/servers/slapd/slapi/Makefile.in +@@ -37,6 +37,7 @@ + XLIBS = $(LIBRARY) + XXLIBS = + NT_LINK_LIBS = $(AC_LIBS) ++UNIX_LINK_LIBS = ../../../libraries/libldap_r/libldap_r.la $(LTHREAD_LIBS) + + XINCPATH = -I$(srcdir)/.. -I$(srcdir) + XDEFS = $(MODULES_CPPFLAGS) diff --git a/net-nds/openldap/files/openldap-2.4.15-ppolicy.patch b/net-nds/openldap/files/openldap-2.4.15-ppolicy.patch new file mode 100644 index 0000000..1196f1b --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.15-ppolicy.patch @@ -0,0 +1,12 @@ +--- a/clients/tools/common.c ++++ b/clients/tools/common.c +@@ -1315,8 +1315,8 @@ + int nsctrls = 0; + + #ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST ++ LDAPControl c; + if ( ppolicy ) { +- LDAPControl c; + c.ldctl_oid = LDAP_CONTROL_PASSWORDPOLICYREQUEST; + c.ldctl_value.bv_val = NULL; + c.ldctl_value.bv_len = 0; diff --git a/net-nds/openldap/files/openldap-2.4.17-gcc44.patch b/net-nds/openldap/files/openldap-2.4.17-gcc44.patch new file mode 100644 index 0000000..a782da4 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.17-gcc44.patch @@ -0,0 +1,10 @@ +--- a/contrib/ldapc++/src/SaslInteractionHandler.cpp ++++ b/contrib/ldapc++/src/SaslInteractionHandler.cpp +@@ -13,6 +13,7 @@ + #include <termios.h> + #endif + ++#include <stdio.h> + #include <string.h> + #include "SaslInteractionHandler.h" + #include "SaslInteraction.h" diff --git a/net-nds/openldap/files/openldap-2.4.28-fix-dash.patch b/net-nds/openldap/files/openldap-2.4.28-fix-dash.patch new file mode 100644 index 0000000..bca213d --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.28-fix-dash.patch @@ -0,0 +1,24 @@ +Our libtool needs bash to work properly. +Patch unbreaks build when /bin/sh points to dash: + + Entering subdirectory liblber + /bin/sh ../../libtool --mode=compile x86_64-pc-linux-gnu-gcc -O0 -D_GNU_SOURCE -I../../include -I../../include -I/usr/include/db4.8 -DLDAP_CONNECTIONLESS -DLBER_LIBRARY -c assert.c + ../../build/mkversion -v "2.4.28" liblber.la > version.c + /bin/sh ../../libtool --mode=compile x86_64-pc-linux-gnu-gcc -O0 -D_GNU_SOURCE -I../../include -I../../include -I/usr/include/db4.8 -DLDAP_CONNECTIONLESS -DLBER_LIBRARY -c decode.c + eval: 1: base_compile+= x86_64-pc-linux-gnu-gcc: not found + eval: 1: base_compile+= -O0: not found + eval: 1: base_compile+= -D_GNU_SOURCE: not found + eval: 1: base_compile+= x86_64-pc-linux-gnu-gcc: not found + ... + make[2]: *** [decode.lo] Error 1 +--- a/build/top.mk ++++ b/build/top.mk +@@ -20,7 +20,7 @@ VERSION= @VERSION@ + RELEASEDATE= @OPENLDAP_RELEASE_DATE@ + + @SET_MAKE@ +-SHELL = /bin/sh ++SHELL = @SHELL@ + + top_builddir = @top_builddir@ + diff --git a/net-nds/openldap/files/openldap-2.4.28-gnutls-gcrypt.patch b/net-nds/openldap/files/openldap-2.4.28-gnutls-gcrypt.patch new file mode 100644 index 0000000..0d9b88f --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.28-gnutls-gcrypt.patch @@ -0,0 +1,11 @@ +--- a/configure.in ++++ b/configure.in +@@ -1214,7 +1214,7 @@ + ol_with_tls=gnutls + ol_link_tls=yes + +- TLS_LIBS="-lgnutls" ++ TLS_LIBS="-lgnutls -lgcrypt" + + AC_DEFINE(HAVE_GNUTLS, 1, + [define if you have GNUtls]) diff --git a/net-nds/openldap/files/openldap-2.4.31-gcc47.patch b/net-nds/openldap/files/openldap-2.4.31-gcc47.patch new file mode 100644 index 0000000..5b6af4b --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.31-gcc47.patch @@ -0,0 +1,16 @@ +Fix building with gcc-4.7 + +https://bugs.gentoo.org/show_bug.cgi?id=420959 +http://www.openldap.org/its/index.cgi/Incoming?id=7304;page=16 #ITS 7304 + +Patch written by Kacper Kowalik <xarthisius@gentoo.org> +--- a/contrib/ldapc++/src/SaslInteractionHandler.cpp ++++ b/contrib/ldapc++/src/SaslInteractionHandler.cpp +@@ -16,6 +16,7 @@ + + #include <stdio.h> + #include <string.h> ++#include <unistd.h> + #include "SaslInteractionHandler.h" + #include "SaslInteraction.h" + #include "debug.h" diff --git a/net-nds/openldap/files/openldap-2.4.35-contrib-samba4.patch b/net-nds/openldap/files/openldap-2.4.35-contrib-samba4.patch new file mode 100644 index 0000000..8ee3891 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.35-contrib-samba4.patch @@ -0,0 +1,37 @@ +--- a/contrib/slapd-modules/samba4/Makefile ++++ b/contrib/slapd-modules/samba4/Makefile +@@ -20,7 +20,8 @@ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 -Wall ++#OPT = -g -O2 -Wall ++OPT = -Wall + DEFS = -DSLAPD_OVER_RDNVAL=SLAPD_MOD_DYNAMIC \ + -DSLAPD_OVER_PGUID=SLAPD_MOD_DYNAMIC \ + -DSLAPD_OVER_VERNUM=SLAPD_MOD_DYNAMIC +@@ -41,20 +42,20 @@ + .SUFFIXES: .c .o .lo + + .c.lo: +- $(LIBTOOL) --mode=compile $(CC) $(OPT) $(DEFS) $(INCS) -c $< ++ $(LIBTOOL) --mode=compile $(CC) $(OPT) $(CFLAGS) $(DEFS) $(INCS) -c $< + + all: $(PROGRAMS) + + pguid.la: pguid.lo +- $(LIBTOOL) --mode=link $(CC) $(OPT) -version-info $(LTVER) \ ++ $(LIBTOOL) --mode=link $(CC) $(OPT) $(CFLAGS) -version-info $(LTVER) \ + -rpath $(moduledir) -module -o $@ $? $(LIBS) + + rdnval.la: rdnval.lo +- $(LIBTOOL) --mode=link $(CC) $(OPT) -version-info $(LTVER) \ ++ $(LIBTOOL) --mode=link $(CC) $(OPT) $(CFLAGS) -version-info $(LTVER) \ + -rpath $(moduledir) -module -o $@ $? $(LIBS) + + vernum.la: vernum.lo +- $(LIBTOOL) --mode=link $(CC) $(OPT) -version-info $(LTVER) \ ++ $(LIBTOOL) --mode=link $(CC) $(OPT) $(CFLAGS) -version-info $(LTVER) \ + -rpath $(moduledir) -module -o $@ $? $(LIBS) + + clean: diff --git a/net-nds/openldap/files/openldap-2.4.35-contrib-smbk5pwd.patch b/net-nds/openldap/files/openldap-2.4.35-contrib-smbk5pwd.patch new file mode 100644 index 0000000..ca02404 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.35-contrib-smbk5pwd.patch @@ -0,0 +1,47 @@ +--- a/contrib/slapd-modules/smbk5pwd/Makefile ++++ b/contrib/slapd-modules/smbk5pwd/Makefile +@@ -21,16 +21,23 @@ + SSL_INC = + SSL_LIB = -lcrypto + +-HEIMDAL_INC = -I/usr/heimdal/include +-HEIMDAL_LIB = -L/usr/heimdal/lib -lkrb5 -lkadm5srv ++#HEIMDAL_INC = -I/usr/heimdal/include ++#HEIMDAL_LIB = -L/usr/heimdal/lib -lkrb5 -lkadm5srv ++KRB5_INC = $(HEIMDAL_INC) ++KRB5_LIB = $(HEIMDAL_LIB) -lkrb5 -lkadm5srv + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 -Wall ++#OPT = -g -O2 -Wall ++OPT = -Wall + # Omit DO_KRB5, DO_SAMBA or DO_SHADOW if you don't want to support it. +-DEFS = -DDO_KRB5 -DDO_SAMBA -DDO_SHADOW +-INCS = $(LDAP_INC) $(HEIMDAL_INC) $(SSL_INC) +-LIBS = $(LDAP_LIB) $(HEIMDAL_LIB) $(SSL_LIB) ++#DEFS = -DDO_KRB5 -DDO_SAMBA -DDO_SHADOW ++INCS = $(LDAP_INC) $(KRB5_INC) $(SSL_INC) ++ifneq (DDO_KRB5,$(findstring DDO_KRB5,$(DEFS))) ++ LIBS=$(LDAP_LIB) $(SSL_LIB) ++else ++ LIBS=$(LDAP_LIB) $(KRB5_LIB) $(SSL_LIB) ++endif + + PROGRAMS = smbk5pwd.la + LTVER = 0:0:0 +@@ -46,12 +53,12 @@ + .SUFFIXES: .c .o .lo + + .c.lo: +- $(LIBTOOL) --mode=compile $(CC) $(OPT) $(DEFS) $(INCS) -c $< ++ $(LIBTOOL) --mode=compile $(CC) $(OPT) $(CFLAGS) $(DEFS) $(INCS) -c $< + + all: $(PROGRAMS) + + smbk5pwd.la: smbk5pwd.lo +- $(LIBTOOL) --mode=link $(CC) $(OPT) -version-info $(LTVER) \ ++ $(LIBTOOL) --mode=link $(CC) $(OPT) $(CFLAGS) -version-info $(LTVER) \ + -rpath $(moduledir) -module -o $@ $? $(LIBS) + + clean: diff --git a/net-nds/openldap/files/openldap-2.4.40-slapd-conf b/net-nds/openldap/files/openldap-2.4.40-slapd-conf new file mode 100644 index 0000000..8ecc732 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.40-slapd-conf @@ -0,0 +1,64 @@ +# +# See slapd.conf(5) for details on configuration options. +# This file should NOT be world readable. +# +include /etc/openldap/schema/core.schema + +# Define global ACLs to disable default read access. + +# Do not enable referrals until AFTER you have a working directory +# service AND an understanding of referrals. +#referral ldap://root.openldap.org + +pidfile /run/openldap/slapd.pid +argsfile /run/openldap/slapd.args + +# Load dynamic backend modules: +###INSERTDYNAMICMODULESHERE### + +# Sample security restrictions +# Require integrity protection (prevent hijacking) +# Require 112-bit (3DES or better) encryption for updates +# Require 63-bit encryption for simple bind +# security ssf=1 update_ssf=112 simple_bind=64 + +# Sample access control policy: +# Root DSE: allow anyone to read it +# Subschema (sub)entry DSE: allow anyone to read it +# Other DSEs: +# Allow self write access +# Allow authenticated users read access +# Allow anonymous users to authenticate +# Directives needed to implement policy: +# access to dn.base="" by * read +# access to dn.base="cn=Subschema" by * read +# access to * +# by self write +# by users read +# by anonymous auth +# +# if no access controls are present, the default policy +# allows anyone and everyone to read anything but restricts +# updates to rootdn. (e.g., "access to * by * read") +# +# rootdn can always read and write EVERYTHING! + +####################################################################### +# BDB database definitions +####################################################################### + +database hdb +suffix "dc=my-domain,dc=com" +# <kbyte> <min> +checkpoint 32 30 +rootdn "cn=Manager,dc=my-domain,dc=com" +# Cleartext passwords, especially for the rootdn, should +# be avoid. See slappasswd(8) and slapd.conf(5) for details. +# Use of strong authentication encouraged. +rootpw secret +# The database directory MUST exist prior to running slapd AND +# should only be accessible by the slapd and slap tools. +# Mode 700 recommended. +directory /var/lib/openldap-data +# Indices to maintain +index objectClass eq diff --git a/net-nds/openldap/files/openldap-2.4.42-mdb-unbundle.patch b/net-nds/openldap/files/openldap-2.4.42-mdb-unbundle.patch new file mode 100644 index 0000000..6ec6888 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.42-mdb-unbundle.patch @@ -0,0 +1,136 @@ +--- a/build/top.mk ++++ b/build/top.mk +@@ -160,6 +160,7 @@ + LTHREAD_LIBS = @LTHREAD_LIBS@ + + BDB_LIBS = @BDB_LIBS@ ++MDB_LIBS = @MDB_LIBS@ + SLAPD_NDB_LIBS = @SLAPD_NDB_LIBS@ + + LDAP_LIBLBER_LA = $(LDAP_LIBDIR)/liblber/liblber.la +--- ./build/openldap.m4.orig ++++ ./build/openldap.m4 +@@ -563,6 +563,38 @@ + ], [ol_cv_bdb_compat=yes], [ol_cv_bdb_compat=no])]) + ]) + ++dnl -------------------------------------------------------------------- ++dnl Check for version compatility with back-mdb ++AC_DEFUN([OL_MDB_COMPAT], ++[AC_CACHE_CHECK([if LMDB version supported by MDB backends], [ol_cv_mdb_compat],[ ++ AC_EGREP_CPP(__mdb_version_compat,[ ++#include <lmdb.h> ++ ++/* require 0.9.14 or later */ ++#if MDB_VERSION_FULL >= 0x00000009000E ++ __mdb_version_compat ++#endif ++ ], [ol_cv_mdb_compat=yes], [ol_cv_mdb_compat=no])]) ++]) ++ ++dnl ++dnl -------------------------------------------------------------------- ++dnl Find any MDB ++AC_DEFUN([OL_MDB], ++[ol_cv_mdb=no ++AC_CHECK_HEADERS(lmdb.h) ++if test $ac_cv_header_lmdb_h = yes; then ++ OL_MDB_COMPAT ++ ++ if test $ol_cv_mdb_compat != yes ; then ++ AC_MSG_ERROR([LMDB version incompatible with MDB backends]) ++ fi ++ ++ ol_cv_lib_mdb=-llmdb ++ ol_cv_mdb=yes ++fi ++]) ++ + dnl + dnl ==================================================================== + dnl Check POSIX Thread version +--- a/servers/slapd/back-mdb/Makefile.in ++++ b/servers/slapd/back-mdb/Makefile.in +@@ -25,11 +25,10 @@ + extended.lo operational.lo \ + attr.lo index.lo key.lo filterindex.lo \ + dn2entry.lo dn2id.lo id2entry.lo idl.lo \ +- nextid.lo monitor.lo mdb.lo midl.lo ++ nextid.lo monitor.lo + + LDAP_INCDIR= ../../../include + LDAP_LIBDIR= ../../../libraries +-MDB_SUBDIR = $(srcdir)/$(LDAP_LIBDIR)/liblmdb + + BUILD_OPT = "--enable-mdb" + BUILD_MOD = @BUILD_MDB@ +@@ -44,7 +43,7 @@ + + LIBBASE = back_mdb + +-XINCPATH = -I.. -I$(srcdir)/.. -I$(MDB_SUBDIR) ++XINCPATH = -I.. -I$(srcdir)/.. + XDEFS = $(MODULES_CPPFLAGS) + + all-local-lib: ../.backend +@@ -52,11 +51,5 @@ + ../.backend: lib$(LIBBASE).a + @touch $@ + +-mdb.lo: $(MDB_SUBDIR)/mdb.c +- $(LTCOMPILE_MOD) $(MDB_SUBDIR)/mdb.c +- +-midl.lo: $(MDB_SUBDIR)/midl.c +- $(LTCOMPILE_MOD) $(MDB_SUBDIR)/midl.c +- + veryclean-local-lib: FORCE + $(RM) $(XXHEADERS) $(XXSRCS) .links +--- a/configure.in ++++ b/configure.in +@@ -519,6 +519,7 @@ + dnl Initialize vars + LDAP_LIBS= + BDB_LIBS= ++MDB_LIBS= + SLAPD_NDB_LIBS= + SLAPD_NDB_INCS= + LTHREAD_LIBS= +@@ -1905,6 +1906,30 @@ + fi + + dnl ---------------------------------------------------------------- ++ol_link_mdb=no ++ ++if test $ol_enable_mdb != no; then ++ OL_MDB ++ ++ if test $ol_cv_mdb = no ; then ++ AC_MSG_ERROR(MDB: LMDB not available) ++ fi ++ ++ AC_DEFINE(HAVE_MDB,1, ++ [define this if LMDB is available]) ++ ++ dnl $ol_cv_lib_mdb should be yes or -llmdb ++ dnl (it could be no, but that would be an error ++ if test $ol_cv_lib_mdb != yes ; then ++ MDB_LIBS="$MDB_LIBS $ol_cv_lib_mdb" ++ fi ++ ++ SLAPD_LIBS="$SLAPD_LIBS \$(MDB_LIBS)" ++ ++ ol_link_mdb=yes ++fi ++ ++dnl ---------------------------------------------------------------- + + if test $ol_enable_dynamic = yes && test $enable_shared = yes ; then + BUILD_LIBS_DYNAMIC=shared +@@ -3133,6 +3158,7 @@ + AC_SUBST(LDAP_LIBS) + AC_SUBST(SLAPD_LIBS) + AC_SUBST(BDB_LIBS) ++AC_SUBST(MDB_LIBS) + AC_SUBST(SLAPD_NDB_LIBS) + AC_SUBST(SLAPD_NDB_INCS) + AC_SUBST(LTHREAD_LIBS) diff --git a/net-nds/openldap/files/openldap-2.4.45-fix-lmpasswd-gnutls-symbols.patch b/net-nds/openldap/files/openldap-2.4.45-fix-lmpasswd-gnutls-symbols.patch new file mode 100644 index 0000000..05e515c --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.45-fix-lmpasswd-gnutls-symbols.patch @@ -0,0 +1,109 @@ +If GnuTLS is used, the lmpasswd module for USE=samba does not compile. +Forward-port an old Debian patch that upstream never applied. + +Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> +Signed-off-by: Steffen Hau <steffen@hauihau.de> +X-Gentoo-Bug: http://bugs.gentoo.org/show_bug.cgi?id=233633 +X-Upstream-Bug: http://www.openldap.org/its/index.cgi/Software%20Enhancements?id=4997 +X-Debian-Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=245341 + +--- a/libraries/liblutil/passwd.c ++++ b/libraries/liblutil/passwd.c +@@ -51,6 +51,26 @@ typedef unsigned char des_data_block[8]; + typedef PK11Context *des_context[1]; + #define DES_ENCRYPT CKA_ENCRYPT + ++#elif defined(HAVE_GNUTLS_GNUTLS_H) && !defined(DES_ENCRYPT) ++# include <gcrypt.h> ++static int gcrypt_init = 0; ++ ++typedef const void* des_key; ++typedef unsigned char DES_cblock[8]; ++typedef DES_cblock des_data_block; ++typedef int DES_key_schedule; /* unused */ ++typedef DES_key_schedule des_context; /* unused */ ++#define des_failed(encrypted) 0 ++#define des_finish(key, schedule) ++ ++#define DES_set_key_unchecked( key, key_sched ) \ ++ gcry_cipher_setkey( hd, key, 8 ) ++ ++#define DES_ecb_encrypt( input, output, key_sched, enc ) \ ++ gcry_cipher_encrypt( hd, *output, 8, *input, 8 ) ++ ++#define DES_set_odd_parity( key ) do {} while(0) ++ + #endif + + #endif /* SLAPD_LMHASH */ +@@ -651,7 +671,7 @@ static int chk_md5( + + #ifdef SLAPD_LMHASH + +-#if defined(HAVE_OPENSSL) ++#if defined(HAVE_OPENSSL) || defined(HAVE_GNUTLS_GNUTLS_H) + + /* + * abstract away setting the parity. +@@ -841,6 +861,19 @@ static int chk_lanman( + des_data_block StdText = "KGS!@#$%"; + des_data_block PasswordHash1, PasswordHash2; + char PasswordHash[33], storedPasswordHash[33]; ++ ++#if defined(HAVE_GNUTLS_GNUTLS_H) && !defined(DES_ENCRYPT) ++ gcry_cipher_hd_t hd; ++ ++ if ( !gcrypt_init ) { ++ gcry_check_version( GCRYPT_VERSION ); ++ gcrypt_init = 1; ++ } ++ ++ schedule = schedule; /* unused - avoid warning */ ++ ++ gcry_cipher_open( &hd, GCRY_CIPHER_DES, GCRY_CIPHER_MODE_ECB, 0 ); ++#endif /* HAVE_GNUTLS_GNUTLS_H && !DES_ENCRYPT */ + + for( i=0; i<cred->bv_len; i++) { + if(cred->bv_val[i] == '\0') { +@@ -883,6 +916,10 @@ static int chk_lanman( + strncpy( storedPasswordHash, passwd->bv_val, 32 ); + storedPasswordHash[32] = '\0'; + ldap_pvt_str2lower( storedPasswordHash ); ++ ++#if defined(HAVE_GNUTLS_GNUTLS_H) && !defined(DES_ENCRYPT) ++ gcry_cipher_close( hd ); ++#endif /* HAVE_GNUTLS_GNUTLS_H && !DES_ENCRYPT */ + + return memcmp( PasswordHash, storedPasswordHash, 32) ? LUTIL_PASSWD_ERR : LUTIL_PASSWD_OK; + } +@@ -1138,6 +1175,19 @@ static int hash_lanman( + des_data_block PasswordHash1, PasswordHash2; + char PasswordHash[33]; + ++#if defined(HAVE_GNUTLS_GNUTLS_H) && !defined(DES_ENCRYPT) ++ gcry_cipher_hd_t hd; ++ ++ if ( !gcrypt_init ) { ++ gcry_check_version( GCRYPT_VERSION ); ++ gcrypt_init = 1; ++ } ++ ++ schedule = schedule; /* unused - avoid warning */ ++ ++ gcry_cipher_open( &hd, GCRY_CIPHER_DES, GCRY_CIPHER_MODE_ECB, 0 ); ++#endif /* HAVE_GNUTLS_GNUTLS_H && !DES_ENCRYPT */ ++ + for( i=0; i<passwd->bv_len; i++) { + if(passwd->bv_val[i] == '\0') { + return LUTIL_PASSWD_ERR; /* NUL character in password */ +@@ -1168,6 +1218,10 @@ static int hash_lanman( + + hash->bv_val = PasswordHash; + hash->bv_len = 32; ++ ++#if defined(HAVE_GNUTLS_GNUTLS_H) && !defined(DES_ENCRYPT) ++ gcry_cipher_close( hd ); ++#endif /* HAVE_GNUTLS_GNUTLS_H && !DES_ENCRYPT */ + + return pw_string( scheme, hash ); + } diff --git a/net-nds/openldap/files/openldap-2.4.47-warnings.patch b/net-nds/openldap/files/openldap-2.4.47-warnings.patch new file mode 100644 index 0000000..10f2111 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.47-warnings.patch @@ -0,0 +1,35 @@ +--- a/include/ldap.h ++++ b/include/ldap.h +@@ -2041,6 +2041,10 @@ LDAP_F( int ) + ldap_is_ldapi_url LDAP_P(( + LDAP_CONST char *url )); + ++LDAP_F( int ) ++ldap_is_ldapc_url LDAP_P(( ++ LDAP_CONST char *url )); ++ + LDAP_F( int ) + ldap_url_parse LDAP_P(( + LDAP_CONST char *url, +--- a/include/ldap_int_thread.h ++++ b/include/ldap_int_thread.h +@@ -33,7 +33,7 @@ LDAP_END_DECL + * definitions for POSIX Threads * + * * + **********************************/ +- ++#define __USE_UNIX98 + #include <pthread.h> + #ifdef HAVE_SCHED_H + #include <sched.h> +--- a/libraries/libldap/tls2.c ++++ b/libraries/libldap/tls2.c +@@ -76,6 +76,8 @@ static oid_name oids[] = { + + #ifdef HAVE_TLS + ++int ldap_pvt_tls_check_hostname( LDAP *ld, void *s, const char *name_in ); ++ + void + ldap_pvt_tls_ctx_free ( void *c ) + { diff --git a/net-nds/openldap/files/openldap-2.4.6-evolution-ntlm.patch b/net-nds/openldap/files/openldap-2.4.6-evolution-ntlm.patch new file mode 100644 index 0000000..e8bcc50 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.4.6-evolution-ntlm.patch @@ -0,0 +1,189 @@ +--- a/include/ldap.h ++++ b/include/ldap.h +@@ -2461,5 +2461,26 @@ ldap_parse_deref_control LDAP_P(( + LDAPControl **ctrls, + LDAPDerefRes **drp )); + ++/* ++ * hacks for NTLM ++ */ ++#define LDAP_AUTH_NTLM_REQUEST ((ber_tag_t) 0x8aU) ++#define LDAP_AUTH_NTLM_RESPONSE ((ber_tag_t) 0x8bU) ++LDAP_F( int ) ++ldap_ntlm_bind LDAP_P(( ++ LDAP *ld, ++ LDAP_CONST char *dn, ++ ber_tag_t tag, ++ struct berval *cred, ++ LDAPControl **sctrls, ++ LDAPControl **cctrls, ++ int *msgidp )); ++LDAP_F( int ) ++ldap_parse_ntlm_bind_result LDAP_P(( ++ LDAP *ld, ++ LDAPMessage *res, ++ struct berval *challenge)); ++ ++ + LDAP_END_DECL + #endif /* _LDAP_H */ +--- a/libraries/libldap/Makefile.in ++++ b/libraries/libldap/Makefile.in +@@ -20,7 +20,7 @@ PROGRAMS = apitest dntest ftest ltest ur + SRCS = bind.c open.c result.c error.c compare.c search.c \ + controls.c messages.c references.c extended.c cyrus.c \ + modify.c add.c modrdn.c delete.c abandon.c \ +- sasl.c gssapi.c sbind.c unbind.c cancel.c \ ++ sasl.c ntlm.c gssapi.c sbind.c unbind.c cancel.c \ + filter.c free.c sort.c passwd.c whoami.c \ + getdn.c getentry.c getattr.c getvalues.c addentry.c \ + request.c os-ip.c url.c pagectrl.c sortctrl.c vlvctrl.c \ +@@ -33,7 +33,7 @@ SRCS = bind.c open.c result.c error.c co + OBJS = bind.lo open.lo result.lo error.lo compare.lo search.lo \ + controls.lo messages.lo references.lo extended.lo cyrus.lo \ + modify.lo add.lo modrdn.lo delete.lo abandon.lo \ +- sasl.lo gssapi.lo sbind.lo unbind.lo cancel.lo \ ++ sasl.lo ntlm.lo gssapi.lo sbind.lo unbind.lo cancel.lo \ + filter.lo free.lo sort.lo passwd.lo whoami.lo \ + getdn.lo getentry.lo getattr.lo getvalues.lo addentry.lo \ + request.lo os-ip.lo url.lo pagectrl.lo sortctrl.lo vlvctrl.lo \ +--- /dev/null ++++ b/libraries/libldap/ntlm.c +@@ -0,0 +1,137 @@ ++/* $OpenLDAP: pkg/ldap/libraries/libldap/ntlm.c,v 1.1.4.10 2002/01/04 20:38:21 kurt Exp $ */ ++/* ++ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. ++ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file ++ */ ++ ++/* Mostly copied from sasl.c */ ++ ++#include "portable.h" ++ ++#include <stdlib.h> ++#include <stdio.h> ++ ++#include <ac/socket.h> ++#include <ac/string.h> ++#include <ac/time.h> ++#include <ac/errno.h> ++ ++#include "ldap-int.h" ++ ++int ++ldap_ntlm_bind( ++ LDAP *ld, ++ LDAP_CONST char *dn, ++ ber_tag_t tag, ++ struct berval *cred, ++ LDAPControl **sctrls, ++ LDAPControl **cctrls, ++ int *msgidp ) ++{ ++ BerElement *ber; ++ int rc; ++ ber_int_t id; ++ ++ Debug( LDAP_DEBUG_TRACE, "ldap_ntlm_bind\n", 0, 0, 0 ); ++ ++ assert( ld != NULL ); ++ assert( LDAP_VALID( ld ) ); ++ assert( msgidp != NULL ); ++ ++ if( msgidp == NULL ) { ++ ld->ld_errno = LDAP_PARAM_ERROR; ++ return ld->ld_errno; ++ } ++ ++ /* create a message to send */ ++ if ( (ber = ldap_alloc_ber_with_options( ld )) == NULL ) { ++ ld->ld_errno = LDAP_NO_MEMORY; ++ return ld->ld_errno; ++ } ++ ++ assert( LBER_VALID( ber ) ); ++ ++ LDAP_NEXT_MSGID( ld, id ); ++ rc = ber_printf( ber, "{it{istON}" /*}*/, ++ id, LDAP_REQ_BIND, ++ ld->ld_version, dn, tag, ++ cred ); ++ ++ /* Put Server Controls */ ++ if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) { ++ ber_free( ber, 1 ); ++ return ld->ld_errno; ++ } ++ ++ if ( ber_printf( ber, /*{*/ "N}" ) == -1 ) { ++ ld->ld_errno = LDAP_ENCODING_ERROR; ++ ber_free( ber, 1 ); ++ return ld->ld_errno; ++ } ++ ++ /* send the message */ ++ *msgidp = ldap_send_initial_request( ld, LDAP_REQ_BIND, dn, ber, id ); ++ ++ if(*msgidp < 0) ++ return ld->ld_errno; ++ ++ return LDAP_SUCCESS; ++} ++ ++int ++ldap_parse_ntlm_bind_result( ++ LDAP *ld, ++ LDAPMessage *res, ++ struct berval *challenge) ++{ ++ ber_int_t errcode; ++ ber_tag_t tag; ++ BerElement *ber; ++ ber_len_t len; ++ ++ Debug( LDAP_DEBUG_TRACE, "ldap_parse_ntlm_bind_result\n", 0, 0, 0 ); ++ ++ assert( ld != NULL ); ++ assert( LDAP_VALID( ld ) ); ++ assert( res != NULL ); ++ ++ if ( ld == NULL || res == NULL ) { ++ return LDAP_PARAM_ERROR; ++ } ++ ++ if( res->lm_msgtype != LDAP_RES_BIND ) { ++ ld->ld_errno = LDAP_PARAM_ERROR; ++ return ld->ld_errno; ++ } ++ ++ if ( ld->ld_error ) { ++ LDAP_FREE( ld->ld_error ); ++ ld->ld_error = NULL; ++ } ++ if ( ld->ld_matched ) { ++ LDAP_FREE( ld->ld_matched ); ++ ld->ld_matched = NULL; ++ } ++ ++ /* parse results */ ++ ++ ber = ber_dup( res->lm_ber ); ++ ++ if( ber == NULL ) { ++ ld->ld_errno = LDAP_NO_MEMORY; ++ return ld->ld_errno; ++ } ++ ++ tag = ber_scanf( ber, "{ioa" /*}*/, ++ &errcode, challenge, &ld->ld_error ); ++ ber_free( ber, 0 ); ++ ++ if( tag == LBER_ERROR ) { ++ ld->ld_errno = LDAP_DECODING_ERROR; ++ return ld->ld_errno; ++ } ++ ++ ld->ld_errno = errcode; ++ ++ return( ld->ld_errno ); ++} diff --git a/net-nds/openldap/files/openldap-2.6.1-cloak.patch b/net-nds/openldap/files/openldap-2.6.1-cloak.patch new file mode 100644 index 0000000..e023a14 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.6.1-cloak.patch @@ -0,0 +1,21 @@ +--- a/contrib/slapd-modules/cloak/cloak.c ++++ b/contrib/slapd-modules/cloak/cloak.c +@@ -29,6 +29,7 @@ + #include "ac/socket.h" + + #include "lutil.h" ++#include "attr.h" + #include "slap.h" + #include "slap-config.h" + +--- a/servers/slapd/attr.h ++++ b/servers/slapd/attr.h +@@ -0,0 +1,8 @@ ++#ifndef OPENLDAP_SERVERS_SLAPD_ATTR_H_ ++#define OPENLDAP_SERVERS_SLAPD_ATTR_H_ ++ ++#endif //OPENLDAP_SERVERS_SLAPD_ATTR_H_ ++ ++#include "slap.h" ++ ++void attr_clean( Attribute *a ); diff --git a/net-nds/openldap/files/openldap-2.6.1-fix-bashism-configure.patch b/net-nds/openldap/files/openldap-2.6.1-fix-bashism-configure.patch new file mode 100644 index 0000000..c2acb67 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.6.1-fix-bashism-configure.patch @@ -0,0 +1,11 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -2055,7 +2055,7 @@ dnl + WITH_SYSTEMD=no + systemdsystemunitdir= + ol_link_systemd=no +-if test $ol_enable_slapd == no && test $ol_enable_balancer != yes ; then ++if test $ol_enable_slapd = no && test $ol_enable_balancer != yes ; then + if test $ol_with_systemd != no ; then + AC_MSG_WARN([servers disabled, ignoring --with-systemd=$ol_with_systemd argument]) + ol_with_systemd=no diff --git a/net-nds/openldap/files/openldap-2.6.1-fix-missing-mapping.patch b/net-nds/openldap/files/openldap-2.6.1-fix-missing-mapping.patch new file mode 100644 index 0000000..1d65955 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.6.1-fix-missing-mapping.patch @@ -0,0 +1,15 @@ +From 59e013602d7b1aa0d7da79d65367c9ec391b96f8 Mon Sep 17 00:00:00 2001 +From: Simon Pichugin <spichugi@redhat.com> +Date: Wed, 3 Nov 2021 19:03:40 -0700 +Subject: [PATCH] Fix missing mapping + +--- a/libraries/liblber/lber.map ++++ b/libraries/liblber/lber.map +@@ -121,6 +121,7 @@ OPENLDAP_2.200 + ber_sockbuf_io_fd; + ber_sockbuf_io_readahead; + ber_sockbuf_io_tcp; ++ ber_sockbuf_io_udp; + ber_sockbuf_remove_io; + ber_sos_dump; + ber_start; diff --git a/net-nds/openldap/files/openldap-2.6.1-flags.patch b/net-nds/openldap/files/openldap-2.6.1-flags.patch new file mode 100644 index 0000000..39ceeec --- /dev/null +++ b/net-nds/openldap/files/openldap-2.6.1-flags.patch @@ -0,0 +1,352 @@ +--- a/contrib/slapd-modules/acl/Makefile ++++ b/contrib/slapd-modules/acl/Makefile +@@ -8,7 +8,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/addpartial/Makefile ++++ b/contrib/slapd-modules/addpartial/Makefile +@@ -8,7 +8,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/adremap/Makefile ++++ b/contrib/slapd-modules/adremap/Makefile +@@ -19,7 +19,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_ADREMAP=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/allop/Makefile ++++ b/contrib/slapd-modules/allop/Makefile +@@ -9,7 +9,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/allowed/Makefile ++++ b/contrib/slapd-modules/allowed/Makefile +@@ -20,7 +20,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_ALLOWED=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/authzid/Makefile ++++ b/contrib/slapd-modules/authzid/Makefile +@@ -20,7 +20,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/autogroup/Makefile ++++ b/contrib/slapd-modules/autogroup/Makefile +@@ -8,7 +8,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/cloak/Makefile ++++ b/contrib/slapd-modules/cloak/Makefile +@@ -9,7 +9,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_CLOAK=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/comp_match/Makefile ++++ b/contrib/slapd-modules/comp_match/Makefile +@@ -31,7 +31,7 @@ SSL_LIB = -lcrypto -L$(SSL_DIR)/lib + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DLDAP_COMPONENT + INCS = $(LDAP_INC) $(SNACC_INC) $(SSL_INC) + LIBS = $(LDAP_LIB) $(SNACC_LIB) $(SSL_LIB) +--- a/contrib/slapd-modules/datamorph/Makefile ++++ b/contrib/slapd-modules/datamorph/Makefile +@@ -22,7 +22,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_DATAMORPH=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/denyop/Makefile ++++ b/contrib/slapd-modules/denyop/Makefile +@@ -8,7 +8,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_DENYOP=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/dsaschema/Makefile ++++ b/contrib/slapd-modules/dsaschema/Makefile +@@ -8,7 +8,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/dupent/Makefile ++++ b/contrib/slapd-modules/dupent/Makefile +@@ -20,7 +20,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_DUPENT=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/kinit/Makefile ++++ b/contrib/slapd-modules/kinit/Makefile +@@ -8,7 +8,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) -lkrb5 +--- a/contrib/slapd-modules/lastbind/Makefile ++++ b/contrib/slapd-modules/lastbind/Makefile +@@ -19,7 +19,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_LASTBIND=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/lastmod/Makefile ++++ b/contrib/slapd-modules/lastmod/Makefile +@@ -9,7 +9,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_LASTMOD=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/noopsrch/Makefile ++++ b/contrib/slapd-modules/noopsrch/Makefile +@@ -20,7 +20,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 -Wall ++OPT = -Wall -Wall + DEFS = -DSLAPD_OVER_NOOPSRCH=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/nops/Makefile ++++ b/contrib/slapd-modules/nops/Makefile +@@ -9,7 +9,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_NOPS=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/nssov/Makefile ++++ b/contrib/slapd-modules/nssov/Makefile +@@ -27,7 +27,7 @@ NLDAPD_INC=-Inss-pam-ldapd + + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install +-OPT = -g -O2 ++OPT = -Wall + CC = gcc + DEFS = + INCS = $(LDAP_INC) $(NLDAPD_INC) +--- a/contrib/slapd-modules/passwd/Makefile ++++ b/contrib/slapd-modules/passwd/Makefile +@@ -9,7 +9,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/passwd/pbkdf2/Makefile ++++ b/contrib/slapd-modules/passwd/pbkdf2/Makefile +@@ -9,7 +9,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + #DEFS = -DSLAPD_PBKDF2_DEBUG + + SSL_INC = +--- a/contrib/slapd-modules/passwd/sha2/Makefile ++++ b/contrib/slapd-modules/passwd/sha2/Makefile +@@ -9,7 +9,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + #DEFS = -DSLAPD_SHA2_DEBUG + INCS = $(LDAP_INC) +--- a/contrib/slapd-modules/passwd/totp/Makefile ++++ b/contrib/slapd-modules/passwd/totp/Makefile +@@ -9,7 +9,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/ppm/Makefile ++++ b/contrib/slapd-modules/ppm/Makefile +@@ -18,7 +18,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/liblber/liblber.la $(LDAP_BUILD)/libraries/li + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 -fpic ++OPT = -Wall -fpic + + # To skip linking against CRACKLIB make CRACK=no + CRACK=yes +--- a/contrib/slapd-modules/proxyOld/Makefile ++++ b/contrib/slapd-modules/proxyOld/Makefile +@@ -20,7 +20,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/rbac/Makefile ++++ b/contrib/slapd-modules/rbac/Makefile +@@ -9,7 +9,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_RBAC=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/samba4/Makefile ++++ b/contrib/slapd-modules/samba4/Makefile +@@ -20,7 +20,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_RDNVAL=SLAPD_MOD_DYNAMIC \ + -DSLAPD_OVER_PGUID=SLAPD_MOD_DYNAMIC \ + -DSLAPD_OVER_VERNUM=SLAPD_MOD_DYNAMIC +--- a/contrib/slapd-modules/smbk5pwd/Makefile ++++ b/contrib/slapd-modules/smbk5pwd/Makefile +@@ -27,7 +27,7 @@ HEIMDAL_LIB = -L/usr/heimdal/lib -lkrb5 -lkadm5srv + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + # Omit DO_KRB5, DO_SAMBA or DO_SHADOW if you don't want to support it. + DEFS = -DDO_KRB5 -DDO_SAMBA -DDO_SHADOW + INCS = $(LDAP_INC) $(HEIMDAL_INC) $(SSL_INC) +--- a/contrib/slapd-modules/trace/Makefile ++++ b/contrib/slapd-modules/trace/Makefile +@@ -8,7 +8,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_TRACE=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/usn/Makefile ++++ b/contrib/slapd-modules/usn/Makefile +@@ -8,7 +8,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_USN=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/variant/Makefile ++++ b/contrib/slapd-modules/variant/Makefile +@@ -22,7 +22,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + LIBTOOL = $(LDAP_BUILD)/libtool + INSTALL = /usr/bin/install + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = -DSLAPD_OVER_VARIANT=SLAPD_MOD_DYNAMIC + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) +--- a/contrib/slapd-modules/vc/Makefile ++++ b/contrib/slapd-modules/vc/Makefile +@@ -20,7 +20,7 @@ LDAP_LIB = $(LDAP_BUILD)/libraries/libldap/libldap.la \ + + LIBTOOL = $(LDAP_BUILD)/libtool + CC = gcc +-OPT = -g -O2 ++OPT = -Wall + DEFS = + INCS = $(LDAP_INC) + LIBS = $(LDAP_LIB) diff --git a/net-nds/openldap/files/openldap-2.6.1-system-mdb.patch b/net-nds/openldap/files/openldap-2.6.1-system-mdb.patch new file mode 100644 index 0000000..e29ba0b --- /dev/null +++ b/net-nds/openldap/files/openldap-2.6.1-system-mdb.patch @@ -0,0 +1,140 @@ +--- a/build/openldap.m4 ++++ b/build/openldap.m4 +@@ -243,6 +243,40 @@ OL_RESOLVER_TRY(ol_cv_resolver_none) + OL_RESOLVER_TRY(ol_cv_resolver_resolv,[-lresolv]) + OL_RESOLVER_TRY(ol_cv_resolver_bind,[-lbind]) + ]) ++ ++dnl -------------------------------------------------------------------- ++dnl Check for version compatility with back-mdb ++AC_DEFUN([OL_MDB_COMPAT], ++[AC_CACHE_CHECK([if LMDB version supported by MDB backends], [ol_cv_mdb_compat],[ ++ AC_EGREP_CPP(__mdb_version_compat,[ ++#include <lmdb.h> ++ ++/* require 0.9.18 or later */ ++#if MDB_VERSION_FULL >= 0x000000090012 ++ __mdb_version_compat ++#endif ++ ], [ol_cv_mdb_compat=yes], [ol_cv_mdb_compat=no])]) ++]) ++ ++dnl ++dnl -------------------------------------------------------------------- ++dnl Find any MDB ++AC_DEFUN([OL_MDB], ++[ol_cv_mdb=no ++AC_CHECK_HEADERS(lmdb.h) ++if test $ac_cv_header_lmdb_h = yes; then ++ OL_MDB_COMPAT ++ ++ if test $ol_cv_mdb_compat != yes ; then ++ AC_MSG_ERROR([LMDB version incompatible with MDB backends]) ++ fi ++ ++ ol_cv_lib_mdb=-llmdb ++ ol_cv_mdb=yes ++fi ++]) ++ ++ + dnl + dnl ==================================================================== + dnl Check POSIX Thread version +--- a/build/top.mk ++++ b/build/top.mk +@@ -164,6 +164,7 @@ CLIENT_LIBS = @CLIENT_LIBS@ + LUTIL_LIBS = @LUTIL_LIBS@ + LTHREAD_LIBS = @LTHREAD_LIBS@ + ++MDB_LIBS = @MDB_LIBS@ + SLAPD_NDB_LIBS = @SLAPD_NDB_LIBS@ + WT_LIBS = @WT_LIBS@ + +--- a/configure.ac ++++ b/configure.ac +@@ -547,6 +547,7 @@ AC_MSG_RESULT(done) + dnl ---------------------------------------------------------------- + dnl Initialize vars + LDAP_LIBS= ++MDB_LIBS= + SLAPD_NDB_LIBS= + SLAPD_NDB_INCS= + LTHREAD_LIBS= +@@ -646,6 +647,32 @@ dnl Checks for programs + + AC_DEFINE(HAVE_MKVERSION, 1, [define this if you have mkversion]) + ++dnl ---------------------------------------------------------------- ++ol_link_mdb=no ++ ++AS_IF([test x$ol_enable_mdb != xno], [ ++ OL_MDB ++ ++ if test $ol_cv_mdb = no ; then ++ AC_MSG_ERROR(MDB: LMDB not available) ++ fi ++ ++ AC_DEFINE(HAVE_MDB,1, ++ [define this if LMDB is available]) ++ ++ dnl $ol_cv_lib_mdb should be yes or -llmdb ++ dnl (it could be no, but that would be an error ++ if test $ol_cv_lib_mdb != yes ; then ++ MDB_LIBS="$MDB_LIBS $ol_cv_lib_mdb" ++ fi ++ ++ SLAPD_LIBS="$SLAPD_LIBS \$(MDB_LIBS)" ++ ++ ol_link_mdb=yes ++]) ++ ++dnl ---------------------------------------------------------------- ++ + dnl ---------------------------------------------------------------- + dnl + dnl Determine which C translator to use +@@ -3150,6 +3177,7 @@ dnl pwmods + AC_SUBST(LDAP_LIBS) + AC_SUBST(CLIENT_LIBS) + AC_SUBST(SLAPD_LIBS) ++AC_SUBST(MDB_LIBS) + AC_SUBST(BALANCER_LIBS) + AC_SUBST(SLAPD_NDB_LIBS) + AC_SUBST(SLAPD_NDB_INCS) +--- a/servers/slapd/back-mdb/Makefile.in ++++ b/servers/slapd/back-mdb/Makefile.in +@@ -25,11 +25,10 @@ OBJS = init.lo tools.lo config.lo \ + extended.lo operational.lo \ + attr.lo index.lo key.lo filterindex.lo \ + dn2entry.lo dn2id.lo id2entry.lo idl.lo \ +- nextid.lo monitor.lo mdb.lo midl.lo ++ nextid.lo monitor.lo + + LDAP_INCDIR= ../../../include + LDAP_LIBDIR= ../../../libraries +-MDB_SUBDIR = $(srcdir)/$(LDAP_LIBDIR)/liblmdb + + BUILD_OPT = "--enable-mdb" + BUILD_MOD = @BUILD_MDB@ +@@ -44,7 +43,7 @@ UNIX_LINK_LIBS = $(@BUILD_LIBS_DYNAMIC@_LDAP_LIBS) + + LIBBASE = back_mdb + +-XINCPATH = -I.. -I$(srcdir)/.. -I$(MDB_SUBDIR) ++XINCPATH = -I.. -I$(srcdir)/.. + XDEFS = $(MODULES_CPPFLAGS) + + all-local-lib: ../.backend +@@ -52,11 +51,5 @@ all-local-lib: ../.backend + ../.backend: lib$(LIBBASE).a + @touch $@ + +-mdb.lo: $(MDB_SUBDIR)/mdb.c +- $(LTCOMPILE_MOD) $(MDB_SUBDIR)/mdb.c +- +-midl.lo: $(MDB_SUBDIR)/midl.c +- $(LTCOMPILE_MOD) $(MDB_SUBDIR)/midl.c +- + veryclean-local-lib: FORCE + $(RM) $(XXHEADERS) $(XXSRCS) .links diff --git a/net-nds/openldap/files/openldap-2.6.3-clang16.patch b/net-nds/openldap/files/openldap-2.6.3-clang16.patch new file mode 100644 index 0000000..7027197 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.6.3-clang16.patch @@ -0,0 +1,185 @@ +From ee4983302d6f052e77ab0332d2a128d169c2eacb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me> +Date: Tue, 15 Nov 2022 21:45:27 +0100 +Subject: [PATCH] Remove default-int/k&r declarations from the configure macros + +Recently, Clang tried to switch to having K&R prototypes and other +non-strictly-conforming prototypes error out, as a result of C2x changes +to the standard. These have been located across many packages, and +range in severity from mild compile errors to runtime misconfiguration +as a result of broken configure scripts. + +This covers all the instances I could find by grepping around the +codebase, and gets OpenLDAP building on my system. + +Bug: https://bugs.gentoo.org/871288 +Bug: https://bugs.gentoo.org/871372 +--- a/build/openldap.m4 ++++ b/build/openldap.m4 +@@ -154,6 +154,7 @@ fi + if test $ol_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <ctype.h> ++#include <stdlib.h> + #ifndef HAVE_EBCDIC + # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') + # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +@@ -394,9 +395,7 @@ AC_DEFUN([OL_PTHREAD_TEST_FUNCTION],[[ + AC_DEFUN([OL_PTHREAD_TEST_PROGRAM], + [AC_LANG_SOURCE([OL_PTHREAD_TEST_INCLUDES + +-int main(argc, argv) +- int argc; +- char **argv; ++int main(int argc, char **argv) + { + OL_PTHREAD_TEST_FUNCTION + } +@@ -518,7 +517,7 @@ AC_CACHE_CHECK([for compatible POSIX regex],ol_cv_c_posix_regex,[ + #include <sys/types.h> + #include <regex.h> + static char *pattern, *string; +-main() ++int main(void) + { + int rc; + regex_t re; +@@ -545,7 +544,8 @@ AC_DEFUN([OL_C_UPPER_LOWER], + [AC_CACHE_CHECK([if toupper() requires islower()],ol_cv_c_upper_lower,[ + AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include <ctype.h> +-main() ++#include <stdlib.h> ++int main(void) + { + if ('C' == toupper('C')) + exit(0); +@@ -603,7 +603,7 @@ AC_DEFUN([OL_NONPOSIX_STRERROR_R], + ]])],[ol_cv_nonposix_strerror_r=yes],[ol_cv_nonposix_strerror_r=no]) + else + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +- main() { ++ int main(void) { + char buf[100]; + buf[0] = 0; + strerror_r( 1, buf, sizeof buf ); +--- a/configure.ac ++++ b/configure.ac +@@ -1031,7 +1031,11 @@ dnl ---------------------------------------------------------------- + AC_CHECK_HEADERS( sys/epoll.h ) + if test "${ac_cv_header_sys_epoll_h}" = yes; then + AC_MSG_CHECKING(for epoll system call) +- AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv) ++ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h> ++#ifdef HAVE_SYS_POLL_H ++#include <sys/epoll.h> ++#endif ++int main(int argc, char **argv) + { + int epfd = epoll_create(256); + exit (epfd == -1 ? 1 : 0); +@@ -1493,10 +1497,8 @@ pthread_rwlock_t rwlock; + dnl save the flags + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include <pthread.h> +-#ifndef NULL +-#define NULL (void*)0 +-#endif +-]], [[pthread_detach(NULL);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no]) ++pthread_t thread; ++]], [[pthread_detach(thread);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no]) + ]) + + if test $ol_cv_func_pthread_detach = no ; then +@@ -1551,6 +1553,9 @@ dnl esac + AC_CACHE_CHECK([if select yields when using pthreads], + ol_cv_pthread_select_yields,[ + AC_RUN_IFELSE([AC_LANG_SOURCE([[ ++#define _XOPEN_SOURCE 500 /* For pthread_setconcurrency() on glibc */ ++#include <stdlib.h> ++#include <stdio.h> + #include <sys/types.h> + #include <sys/time.h> + #include <unistd.h> +@@ -1561,8 +1566,7 @@ dnl esac + + static int fildes[2]; + +-static void *task(p) +- void *p; ++static void *task(void *p) + { + int i; + struct timeval tv; +@@ -1586,9 +1590,7 @@ static void *task(p) + exit(0); /* if we exit here, the select blocked the whole process */ + } + +-int main(argc, argv) +- int argc; +- char **argv; ++int main(int argc, char **argv) + { + pthread_t t; + +--- a/contrib/ldaptcl/tclAppInit.c ++++ b/contrib/ldaptcl/tclAppInit.c +@@ -45,9 +45,7 @@ EXTERN int Tcltest_Init _ANSI_ARGS_((Tcl_Interp *interp)); + */ + + int +-main(argc, argv) +- int argc; /* Number of command-line arguments. */ +- char **argv; /* Values of command-line arguments. */ ++main(int argc, char **argv) + { + #ifdef USE_TCLX + TclX_Main(argc, argv, Tcl_AppInit); +--- a/contrib/ldaptcl/tkAppInit.c ++++ b/contrib/ldaptcl/tkAppInit.c +@@ -37,16 +37,9 @@ int (*tclDummyMathPtr)() = matherr; + * This is the main program for the application. + *----------------------------------------------------------------------------- + */ +-#ifdef __cplusplus + int + main (int argc, + char **argv) +-#else +-int +-main (argc, argv) +- int argc; +- char **argv; +-#endif + { + #ifdef USE_TCLX + TkX_Main(argc, argv, Tcl_AppInit); +@@ -68,14 +61,8 @@ main (argc, argv) + * interp->result if an error occurs. + *----------------------------------------------------------------------------- + */ +-#ifdef __cplusplus + int + Tcl_AppInit (Tcl_Interp *interp) +-#else +-int +-Tcl_AppInit (interp) +- Tcl_Interp *interp; +-#endif + { + if (Tcl_Init (interp) == TCL_ERROR) { + return TCL_ERROR; +--- a/servers/slapd/syslog.c ++++ b/servers/slapd/syslog.c +@@ -209,7 +209,7 @@ openlog(const char *ident, int logstat, int logfac) + } + + void +-closelog() ++closelog(void) + { + (void)close(LogFile); + LogFile = -1; +-- +2.38.1 + diff --git a/net-nds/openldap/files/openldap-2.6.3-slapd-conf b/net-nds/openldap/files/openldap-2.6.3-slapd-conf new file mode 100644 index 0000000..4555c62 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.6.3-slapd-conf @@ -0,0 +1,64 @@ +# +# See slapd.conf(5) for details on configuration options. +# This file should NOT be world readable. +# +include /etc/openldap/schema/core.schema + +# Define global ACLs to disable default read access. + +# Do not enable referrals until AFTER you have a working directory +# service AND an understanding of referrals. +#referral ldap://root.openldap.org + +pidfile /run/openldap/slapd.pid +argsfile /run/openldap/slapd.args + +# Load dynamic backend modules: +###INSERTDYNAMICMODULESHERE### + +# Sample security restrictions +# Require integrity protection (prevent hijacking) +# Require 112-bit (3DES or better) encryption for updates +# Require 63-bit encryption for simple bind +# security ssf=1 update_ssf=112 simple_bind=64 + +# Sample access control policy: +# Root DSE: allow anyone to read it +# Subschema (sub)entry DSE: allow anyone to read it +# Other DSEs: +# Allow self write access +# Allow authenticated users read access +# Allow anonymous users to authenticate +# Directives needed to implement policy: +# access to dn.base="" by * read +# access to dn.base="cn=Subschema" by * read +# access to * +# by self write +# by users read +# by anonymous auth +# +# if no access controls are present, the default policy +# allows anyone and everyone to read anything but restricts +# updates to rootdn. (e.g., "access to * by * read") +# +# rootdn can always read and write EVERYTHING! + +####################################################################### +# BDB database definitions +####################################################################### + +database mdb +suffix "dc=my-domain,dc=com" +# <kbyte> <min> +checkpoint 32 30 +rootdn "cn=Manager,dc=my-domain,dc=com" +# Cleartext passwords, especially for the rootdn, should +# be avoid. See slappasswd(8) and slapd.conf(5) for details. +# Use of strong authentication encouraged. +rootpw secret +# The database directory MUST exist prior to running slapd AND +# should only be accessible by the slapd and slap tools. +# Mode 700 recommended. +directory /var/lib/openldap-data +# Indices to maintain +index objectClass eq diff --git a/net-nds/openldap/files/openldap-2.6.4-clang16.patch b/net-nds/openldap/files/openldap-2.6.4-clang16.patch new file mode 100644 index 0000000..bcbdf0b --- /dev/null +++ b/net-nds/openldap/files/openldap-2.6.4-clang16.patch @@ -0,0 +1,234 @@ +https://git.openldap.org/openldap/openldap/-/merge_requests/605 + +From 83e2db9bf9fc2530a0ea6ca538a7732f6ad9de0e Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Thu, 9 Feb 2023 23:17:53 +0000 +Subject: [PATCH 1/3] build: fix compatibility with stricter C99 compilers + +Fix the following warnings: +- -Wimplicit-int (fatal with Clang 16) +- -Wimplicit-function-declaration (fatal with Clang 16) +- -Wincompatible-function-pointer-types (fatal with Clang 16) +- -Wint-conversion (fatal with Clang 15) +- Old style prototypes (K&R, removed from C23) + +These warnings-now-error led to misconfigurations and failure to build +OpenLDAP, as the tests used during configure caused the wrong results +to be emitted. + +For more information, see LWN.net [0] or LLVM's Discourse [1], the Gentoo wiki [2], +or the (new) c-std-porting mailing list [3]. + +[0] https://lwn.net/Articles/913505/ +[1] https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213 +[2] https://wiki.gentoo.org/wiki/Modern_C_porting +[3] hosted at lists.linux.dev. + +Bug: https://bugs.gentoo.org/871288 +Signed-off-by: Sam James <sam@gentoo.org> +--- a/build/openldap.m4 ++++ b/build/openldap.m4 +@@ -154,6 +154,7 @@ fi + if test $ol_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <ctype.h> ++#include <stdlib.h> + #ifndef HAVE_EBCDIC + # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') + # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +@@ -360,9 +361,7 @@ AC_DEFUN([OL_PTHREAD_TEST_FUNCTION],[[ + AC_DEFUN([OL_PTHREAD_TEST_PROGRAM], + [AC_LANG_SOURCE([OL_PTHREAD_TEST_INCLUDES + +-int main(argc, argv) +- int argc; +- char **argv; ++int main(int argc, char **argv) + { + OL_PTHREAD_TEST_FUNCTION + } +@@ -484,7 +483,7 @@ AC_CACHE_CHECK([for compatible POSIX regex],ol_cv_c_posix_regex,[ + #include <sys/types.h> + #include <regex.h> + static char *pattern, *string; +-main() ++int main(void) + { + int rc; + regex_t re; +@@ -511,7 +510,8 @@ AC_DEFUN([OL_C_UPPER_LOWER], + [AC_CACHE_CHECK([if toupper() requires islower()],ol_cv_c_upper_lower,[ + AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include <ctype.h> +-main() ++#include <stdlib.h> ++int main(void) + { + if ('C' == toupper('C')) + exit(0); +@@ -569,7 +569,7 @@ AC_DEFUN([OL_NONPOSIX_STRERROR_R], + ]])],[ol_cv_nonposix_strerror_r=yes],[ol_cv_nonposix_strerror_r=no]) + else + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +- main() { ++ int main(void) { + char buf[100]; + buf[0] = 0; + strerror_r( 1, buf, sizeof buf ); +--- a/configure.ac ++++ b/configure.ac +@@ -1017,7 +1017,11 @@ dnl ---------------------------------------------------------------- + AC_CHECK_HEADERS( sys/epoll.h ) + if test "${ac_cv_header_sys_epoll_h}" = yes; then + AC_MSG_CHECKING(for epoll system call) +- AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv) ++ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h> ++#ifdef HAVE_SYS_POLL_H ++#include <sys/epoll.h> ++#endif ++int main(int argc, char **argv) + { + int epfd = epoll_create(256); + exit (epfd == -1 ? 1 : 0); +@@ -1479,10 +1483,8 @@ pthread_rwlock_t rwlock; + dnl save the flags + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include <pthread.h> +-#ifndef NULL +-#define NULL (void*)0 +-#endif +-]], [[pthread_detach(NULL);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no]) ++pthread_t thread; ++]], [[pthread_detach(thread);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no]) + ]) + + if test $ol_cv_func_pthread_detach = no ; then +@@ -1537,6 +1539,9 @@ dnl esac + AC_CACHE_CHECK([if select yields when using pthreads], + ol_cv_pthread_select_yields,[ + AC_RUN_IFELSE([AC_LANG_SOURCE([[ ++#define _XOPEN_SOURCE 500 /* For pthread_setconcurrency() on glibc */ ++#include <stdlib.h> ++#include <stdio.h> + #include <sys/types.h> + #include <sys/time.h> + #include <unistd.h> +@@ -1547,8 +1552,7 @@ dnl esac + + static int fildes[2]; + +-static void *task(p) +- void *p; ++static void *task(void *p) + { + int i; + struct timeval tv; +@@ -1572,9 +1576,7 @@ static void *task(p) + exit(0); /* if we exit here, the select blocked the whole process */ + } + +-int main(argc, argv) +- int argc; +- char **argv; ++int main(int argc, char **argv) + { + pthread_t t; + +-- +GitLab + + +From 853d613f39ae9e8d7dad4492076959c2d80e38c1 Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Thu, 9 Feb 2023 23:20:32 +0000 +Subject: [PATCH 2/3] contrib: fix old-style K&R declarations + +Removed in C23. + +For more information, see LWN.net [0] or LLVM's Discourse [1], the Gentoo wiki [2], +or the (new) c-std-porting mailing list [3]. + +[0] https://lwn.net/Articles/913505/ +[1] https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213 +[2] https://wiki.gentoo.org/wiki/Modern_C_porting +[3] hosted at lists.linux.dev. + +Signed-off-by: Sam James <sam@gentoo.org> +--- a/contrib/ldaptcl/tclAppInit.c ++++ b/contrib/ldaptcl/tclAppInit.c +@@ -45,9 +45,7 @@ EXTERN int Tcltest_Init _ANSI_ARGS_((Tcl_Interp *interp)); + */ + + int +-main(argc, argv) +- int argc; /* Number of command-line arguments. */ +- char **argv; /* Values of command-line arguments. */ ++main(int argc, char **argv) + { + #ifdef USE_TCLX + TclX_Main(argc, argv, Tcl_AppInit); +--- a/contrib/ldaptcl/tkAppInit.c ++++ b/contrib/ldaptcl/tkAppInit.c +@@ -37,16 +37,9 @@ int (*tclDummyMathPtr)() = matherr; + * This is the main program for the application. + *----------------------------------------------------------------------------- + */ +-#ifdef __cplusplus + int + main (int argc, + char **argv) +-#else +-int +-main (argc, argv) +- int argc; +- char **argv; +-#endif + { + #ifdef USE_TCLX + TkX_Main(argc, argv, Tcl_AppInit); +@@ -68,14 +61,8 @@ main (argc, argv) + * interp->result if an error occurs. + *----------------------------------------------------------------------------- + */ +-#ifdef __cplusplus + int + Tcl_AppInit (Tcl_Interp *interp) +-#else +-int +-Tcl_AppInit (interp) +- Tcl_Interp *interp; +-#endif + { + if (Tcl_Init (interp) == TCL_ERROR) { + return TCL_ERROR; +-- +GitLab + + +From b4b3d026461b16f4f462e70225a5a0493647f0c8 Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Thu, 9 Feb 2023 23:20:51 +0000 +Subject: [PATCH 3/3] servers: fix -Wstrict-prototypes + +For more information, see LWN.net [0] or LLVM's Discourse [1], the Gentoo wiki [2], +or the (new) c-std-porting mailing list [3]. + +[0] https://lwn.net/Articles/913505/ +[1] https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213 +[2] https://wiki.gentoo.org/wiki/Modern_C_porting +[3] hosted at lists.linux.dev. + +Signed-off-by: Sam James <sam@gentoo.org> +--- a/servers/slapd/syslog.c ++++ b/servers/slapd/syslog.c +@@ -209,7 +209,7 @@ openlog(const char *ident, int logstat, int logfac) + } + + void +-closelog() ++closelog(void) + { + (void)close(LogFile); + LogFile = -1; +-- +GitLab diff --git a/net-nds/openldap/files/openldap-2.6.4-libressl.patch b/net-nds/openldap/files/openldap-2.6.4-libressl.patch new file mode 100644 index 0000000..48a8a43 --- /dev/null +++ b/net-nds/openldap/files/openldap-2.6.4-libressl.patch @@ -0,0 +1,38 @@ +https://bugs.gentoo.org/903001 +https://bugs.openldap.org/show_bug.cgi?id=10039 +https://git.openldap.org/openldap/openldap/-/merge_requests/613 +https://git.openldap.org/openldap/openldap/-/commit/cb73e60a49f85bf5207b2fd0f557013be29ac072 + +From cb73e60a49f85bf5207b2fd0f557013be29ac072 Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Wed, 12 Apr 2023 12:55:46 -0700 +Subject: [PATCH] ITS#10039 Test for SSL_CTX_set_ciphersuites() + +When configuring OpenLDAP using --with-tls=openssl with LibreSSL the +configure will fail to detect SSL_export_keyring_material_early() since +LibreSSL doesn't support this function yet. However OpenLDAP doesn't +actually use this function and only checks for it to ensure a modern +OpenSSL API is used. This can be easily solved by checking for an +equivalent modern OpenSSL function which both LibreSSL and OpenSSL both +support such as SSL_CTX_set_ciphersuites(). Doing this allows the build +and tests to succeed with modern LibreSSL versions. This was tested with +LibreSSL >= 3.6. + +Bug: https://bugs.openldap.org/show_bug.cgi?id=10039 +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 2cf28ef346..c4e2a905e2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1243,7 +1243,7 @@ if test $ol_with_tls = openssl || test $ol_with_tls = auto ; then + [#endif]])], + , [AC_MSG_FAILURE([OpenSSL 1.1.1 or newer required])]) + +- AC_CHECK_LIB(ssl, SSL_export_keying_material_early, ++ AC_CHECK_LIB(ssl, SSL_CTX_set_ciphersuites, + [have_openssl=yes], [have_openssl=no], + [-lcrypto]) + diff --git a/net-nds/openldap/files/slapd-2.6.1.service b/net-nds/openldap/files/slapd-2.6.1.service new file mode 100644 index 0000000..ff571d2 --- /dev/null +++ b/net-nds/openldap/files/slapd-2.6.1.service @@ -0,0 +1,13 @@ +[Unit] +Description=OpenLDAP Server Daemon +After=network.target + +[Service] +Type=notify +PIDFile=/run/openldap/slapd.pid +ExecStartPre=/usr/sbin/slaptest -Q -u $SLAPD_OPTIONS +ExecStart=/usr/lib/openldap/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS +NotifyAccess=all + +[Install] +WantedBy=multi-user.target diff --git a/net-nds/openldap/files/slapd-confd-2.4.28-r1 b/net-nds/openldap/files/slapd-confd-2.4.28-r1 new file mode 100644 index 0000000..ef19899 --- /dev/null +++ b/net-nds/openldap/files/slapd-confd-2.4.28-r1 @@ -0,0 +1,26 @@ +# conf.d file for openldap +# +# To enable both the standard unciphered server and the ssl encrypted +# one uncomment this line or set any other server starting options +# you may desire. + +# If you have multiple slapd instances per #376699, this will provide a default config +INSTANCE="openldap${SVCNAME#slapd}" + +# If you use the classical configuration file: +OPTS_CONF="-f /etc/${INSTANCE}/slapd.conf" +# Uncomment this instead to use the new slapd.d configuration directory for openldap 2.3 +#OPTS_CONF="-F /etc/${INSTANCE}/slapd.d" +# (the OPTS_CONF variable is also passed to slaptest during startup) + +OPTS="${OPTS_CONF} -h 'ldaps:// ldap:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'" +# Optional connectionless LDAP: +#OPTS="${OPTS_CONF} -h 'ldaps:// ldap:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock cldap://'" + +# If you change the above listen statement to bind on a specific IP for +# listening, you should ensure that interface is up here (change eth0 as +# needed). +#rc_need="net.eth0" + +# Specify the kerberos keytab file +#KRB5_KTNAME=/etc/openldap/krb5-ldap.keytab diff --git a/net-nds/openldap/files/slapd-confd-2.6.1 b/net-nds/openldap/files/slapd-confd-2.6.1 new file mode 100644 index 0000000..9e7babb --- /dev/null +++ b/net-nds/openldap/files/slapd-confd-2.6.1 @@ -0,0 +1,26 @@ +# conf.d file for openldap +# +# To enable both the standard unciphered server and the ssl encrypted +# one uncomment this line or set any other server starting options +# you may desire. + +# If you have multiple slapd instances per #376699, this will provide a default config +INSTANCE="openldap${SVCNAME#slapd}" + +# If you use the classical configuration file: +OPTS_CONF="-f /etc/${INSTANCE}/slapd.conf" +# Uncomment this instead to use the new slapd.d configuration directory for openldap 2.3 +#OPTS_CONF="-F /etc/${INSTANCE}/slapd.d" +# (the OPTS_CONF variable is also passed to slaptest during startup) + +OPTS="${OPTS_CONF} -h 'ldaps:// ldap:// ldapi://%2frun%2fopenldap%2fslapd.sock'" +# Optional connectionless LDAP: +#OPTS="${OPTS_CONF} -h 'ldaps:// ldap:// ldapi://%2frun%2fopenldap%2fslapd.sock cldap://'" + +# If you change the above listen statement to bind on a specific IP for +# listening, you should ensure that interface is up here (change eth0 as +# needed). +#rc_need="net.eth0" + +# Specify the kerberos keytab file +#KRB5_KTNAME=/etc/openldap/krb5-ldap.keytab diff --git a/net-nds/openldap/files/slapd-initd-2.4.40-r2 b/net-nds/openldap/files/slapd-initd-2.4.40-r2 new file mode 100644 index 0000000..bf408e3 --- /dev/null +++ b/net-nds/openldap/files/slapd-initd-2.4.40-r2 @@ -0,0 +1,64 @@ +#!/sbin/openrc-run +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +extra_commands="checkconfig" + +[ -z "$INSTANCE" ] && INSTANCE="openldap${SVCNAME#slapd}" +PIDDIR=/run/openldap +PIDFILE=$PIDDIR/$SVCNAME.pid + +depend() { + need net + before dbus hald avahi-daemon + provide ldap +} + +start() { + checkpath -q -d ${PIDDIR} -o ldap:ldap + if ! checkconfig -Q ; then + eerror "There is a problem with your slapd.conf!" + return 1 + fi + ebegin "Starting ldap-server" + [ -n "$KRB5_KTNAME" ] && export KRB5_KTNAME + eval start-stop-daemon --start --pidfile ${PIDFILE} --exec /usr/lib/openldap/slapd -- -u ldap -g ldap "${OPTS}" + eend $? +} + +stop() { + ebegin "Stopping ldap-server" + start-stop-daemon --stop --signal 2 --quiet --pidfile ${PIDFILE} + eend $? +} + +checkconfig() { + # checks requested by bug #502948 + # Step 1: extract the last valid config file or config dir + set -- $OPTS + while [ -n "$*" ]; do + opt=$1 ; shift + if [ "$opt" = "-f" -o "$opt" = "-F" ] ; then + CONF=$1 + shift + fi + done + set -- + # Fallback + CONF=${CONF-/etc/openldap/slapd.conf} + [ -d $CONF ] && CONF=${CONF}/* + DBDIRS=`eval awk '"/^(directory|olcDbDirectory:)/{print \\$2}"' $CONF` + for d in $DBDIRS; do + if [ ! -d $d ]; then + eerror "Directory $d in config does not exist!" + return 1 + fi + /usr/bin/find $d ! -name DB_CONFIG ! -user ldap -o ! -group ldap |grep -sq . + if [ $? -ne 0 ]; then + ewarn "You have files in $d not owned by the ldap user, you must ensure they are accessible to the slapd instance!" + fi + [ ! -e $d/DB_CONFIG ] && ewarn "$d/DB_CONFIG does not exist, slapd performance may be sub-optimal" + done + # now test the config fully + /usr/sbin/slaptest -u "$@" ${OPTS_CONF} +} diff --git a/net-nds/openldap/files/slapd.service b/net-nds/openldap/files/slapd.service new file mode 100644 index 0000000..3427b87 --- /dev/null +++ b/net-nds/openldap/files/slapd.service @@ -0,0 +1,12 @@ +[Unit] +Description=OpenLDAP Server Daemon +After=network.target + +[Service] +Type=forking +PIDFile=/run/openldap/slapd.pid +ExecStartPre=/usr/sbin/slaptest -Q -u $SLAPD_OPTIONS +ExecStart=/usr/lib/openldap/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS + +[Install] +WantedBy=multi-user.target diff --git a/net-nds/openldap/files/slapd.service.conf b/net-nds/openldap/files/slapd.service.conf new file mode 100644 index 0000000..812ea68 --- /dev/null +++ b/net-nds/openldap/files/slapd.service.conf @@ -0,0 +1,12 @@ +[Service] +# Use the classical configuration file: +#Environment="SLAPD_OPTIONS=-f /etc/openldap/slapd.conf" +# Use the slapd configuration directory: +#Environment="SLAPD_OPTIONS=-F /etc/openldap/slapd.d" + +Environment="SLAPD_URLS=ldaps:/// ldap:/// ldapi:///" +# Other examples: +#Environment="SLAPD_URLS=ldap://127.0.0.1/ ldap://10.0.0.1:1389/ cldap:///" + +# Specify the kerberos keytab file +#Environment=KRB5_KTNAME=/etc/openldap/krb5-ldap.keytab diff --git a/net-nds/openldap/files/slapd.tmpfilesd b/net-nds/openldap/files/slapd.tmpfilesd new file mode 100644 index 0000000..634cea1 --- /dev/null +++ b/net-nds/openldap/files/slapd.tmpfilesd @@ -0,0 +1,2 @@ +# openldap runtime directory for slapd.arg and slapd.pid +d /run/openldap 0755 ldap ldap - diff --git a/net-nds/openldap/metadata.xml b/net-nds/openldap/metadata.xml new file mode 100644 index 0000000..115e7b6 --- /dev/null +++ b/net-nds/openldap/metadata.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>ldap-bugs@gentoo.org</email> + </maintainer> + <use> + <flag name="argon2">Enable password hashing algorithm from <pkg>app-crypt/argon2</pkg></flag> + <flag name="autoca">Automatic Certificate Authority overlay</flag> + <flag name="cleartext">Enable use of cleartext passwords</flag> + <flag name="experimental">Enable experimental backend options</flag> + <flag name="kinit">Enable support for kerberos init</flag> + <flag name="odbc">Enable ODBC and SQL backend options</flag> + <flag name="overlays">Enable contributed OpenLDAP overlays</flag> + <flag name="smbkrb5passwd">Enable overlay for syncing ldap, unix and lanman passwords</flag> + <flag name="minimal">Build libraries & userspace tools only. Does not install any server code</flag> + <flag name="pbkdf2">Enable support for pbkdf2 passwords</flag> + <flag name="sha2">Enable support for pw-sha2 password hashes</flag> + </use> + <upstream> + <bugs-to>https://bugs.openldap.org/</bugs-to> + <remote-id type="cpe">cpe:/a:openldap:openldap</remote-id> + <remote-id type="github">openldap/openldap</remote-id> + <remote-id type="gitlab">openldap/openldap</remote-id> + </upstream> +</pkgmetadata> diff --git a/net-nds/openldap/openldap-2.6.3-r7.ebuild b/net-nds/openldap/openldap-2.6.3-r7.ebuild new file mode 100644 index 0000000..493fe72 --- /dev/null +++ b/net-nds/openldap/openldap-2.6.3-r7.ebuild @@ -0,0 +1,828 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +# Re cleanups: +# 2.5.x is an LTS release so we want to keep it for a while. + +inherit autotools flag-o-matic multilib multilib-minimal preserve-libs ssl-cert toolchain-funcs systemd tmpfiles + +MY_PV="$(ver_rs 1-2 _)" + +BIS_PN=rfc2307bis.schema +BIS_PV=20140524 +BIS_P="${BIS_PN}-${BIS_PV}" + +DESCRIPTION="LDAP suite of application and development tools" +HOMEPAGE="https://www.openldap.org/" +SRC_URI=" + https://gitlab.com/openldap/${PN}/-/archive/OPENLDAP_REL_ENG_${MY_PV}/${PN}-OPENLDAP_REL_ENG_${MY_PV}.tar.gz + mirror://gentoo/${BIS_P} +" +S="${WORKDIR}"/${PN}-OPENLDAP_REL_ENG_${MY_PV} + +LICENSE="OPENLDAP GPL-2" +# Subslot added for bug #835654 +SLOT="0/$(ver_cut 1-2)" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ~ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux" + +IUSE_DAEMON="argon2 +cleartext crypt experimental minimal samba tcpd" +IUSE_OVERLAY="overlays perl autoca" +IUSE_OPTIONAL="debug gnutls iodbc ipv6 odbc sasl ssl selinux static-libs +syslog test" +IUSE_CONTRIB="kerberos kinit pbkdf2 sha2 smbkrb5passwd" +IUSE_CONTRIB="${IUSE_CONTRIB} cxx" +IUSE="systemd ${IUSE_DAEMON} ${IUSE_BACKEND} ${IUSE_OVERLAY} ${IUSE_OPTIONAL} ${IUSE_CONTRIB}" +REQUIRED_USE="cxx? ( sasl ) + pbkdf2? ( ssl ) + test? ( cleartext sasl ) + autoca? ( !gnutls ) + ?? ( test minimal ) + kerberos? ( ?? ( kinit smbkrb5passwd ) )" +RESTRICT="!test? ( test )" + +# openssl is needed to generate lanman-passwords required by samba +COMMON_DEPEND=" + kernel_linux? ( sys-apps/util-linux ) + ssl? ( + !gnutls? ( + >=dev-libs/openssl-1.0.1h-r2:0=[${MULTILIB_USEDEP}] + ) + gnutls? ( + >=net-libs/gnutls-2.12.23-r6:=[${MULTILIB_USEDEP}] + >=dev-libs/libgcrypt-1.5.3:0=[${MULTILIB_USEDEP}] + ) + ) + sasl? ( dev-libs/cyrus-sasl:= ) + !minimal? ( + dev-libs/libltdl + sys-fs/e2fsprogs + >=dev-db/lmdb-0.9.18:= + argon2? ( app-crypt/argon2:= ) + crypt? ( virtual/libcrypt:= ) + tcpd? ( sys-apps/tcp-wrappers ) + odbc? ( !iodbc? ( dev-db/unixODBC ) + iodbc? ( dev-db/libiodbc ) ) + perl? ( dev-lang/perl:=[-build(-)] ) + samba? ( + dev-libs/openssl:0= + ) + smbkrb5passwd? ( + dev-libs/openssl:0= + kerberos? ( app-crypt/heimdal ) + ) + kerberos? ( + virtual/krb5 + kinit? ( !app-crypt/heimdal ) + ) + ) +" +DEPEND="${COMMON_DEPEND} + sys-apps/groff +" +RDEPEND="${COMMON_DEPEND} + selinux? ( sec-policy/selinux-ldap ) +" + +# The user/group are only used for running daemons which are +# disabled in minimal builds, so elide the accounts too. +BDEPEND="!minimal? ( + acct-group/ldap + acct-user/ldap +) +" + +# for tracking versions +OPENLDAP_VERSIONTAG=".version-tag" +OPENLDAP_DEFAULTDIR_VERSIONTAG="/var/lib/openldap-data" + +MULTILIB_WRAPPED_HEADERS=( + # USE=cxx + /usr/include/LDAPAsynConnection.h + /usr/include/LDAPAttrType.h + /usr/include/LDAPAttribute.h + /usr/include/LDAPAttributeList.h + /usr/include/LDAPConnection.h + /usr/include/LDAPConstraints.h + /usr/include/LDAPControl.h + /usr/include/LDAPControlSet.h + /usr/include/LDAPEntry.h + /usr/include/LDAPEntryList.h + /usr/include/LDAPException.h + /usr/include/LDAPExtResult.h + /usr/include/LDAPMessage.h + /usr/include/LDAPMessageQueue.h + /usr/include/LDAPModList.h + /usr/include/LDAPModification.h + /usr/include/LDAPObjClass.h + /usr/include/LDAPRebind.h + /usr/include/LDAPRebindAuth.h + /usr/include/LDAPReferenceList.h + /usr/include/LDAPResult.h + /usr/include/LDAPSaslBindResult.h + /usr/include/LDAPSchema.h + /usr/include/LDAPSearchReference.h + /usr/include/LDAPSearchResult.h + /usr/include/LDAPSearchResults.h + /usr/include/LDAPUrl.h + /usr/include/LDAPUrlList.h + /usr/include/LdifReader.h + /usr/include/LdifWriter.h + /usr/include/SaslInteraction.h + /usr/include/SaslInteractionHandler.h + /usr/include/StringList.h + /usr/include/TlsOptions.h +) + +PATCHES=( + "${FILESDIR}"/${PN}-2.4.28-fix-dash.patch + "${FILESDIR}"/${PN}-2.6.1-system-mdb.patch + "${FILESDIR}"/${PN}-2.6.1-cloak.patch + "${FILESDIR}"/${PN}-2.6.1-flags.patch + "${FILESDIR}"/${PN}-2.6.1-fix-missing-mapping.patch + "${FILESDIR}"/${PN}-2.6.1-fix-bashism-configure.patch + "${FILESDIR}"/${PN}-2.6.3-clang16.patch + "${FILESDIR}"/${PN}-2.6.4-libressl.patch +) + +openldap_filecount() { + local dir="$1" + find "${dir}" -type f ! -name '.*' ! -name 'DB_CONFIG*' | wc -l +} + +openldap_find_versiontags() { + # scan for all datadirs + local openldap_datadirs=() + if [[ -f "${EROOT}"/etc/openldap/slapd.conf ]]; then + openldap_datadirs=( $(awk '{if($1 == "directory") print $2 }' "${EROOT}"/etc/openldap/slapd.conf) ) + fi + openldap_datadirs+=( ${OPENLDAP_DEFAULTDIR_VERSIONTAG} ) + + einfo + einfo "Scanning datadir(s) from slapd.conf and" + einfo "the default installdir for Versiontags" + einfo "(${OPENLDAP_DEFAULTDIR_VERSIONTAG} may appear twice)" + einfo + + # scan datadirs if we have a version tag + openldap_found_tag=0 + have_files=0 + for each in ${openldap_datadirs[@]} ; do + CURRENT_TAGDIR="${EROOT}$(sed "s:\/::" <<< ${each})" + CURRENT_TAG="${CURRENT_TAGDIR}/${OPENLDAP_VERSIONTAG}" + if [[ -d "${CURRENT_TAGDIR}" ]] && [[ "${openldap_found_tag}" == 0 ]] ; then + einfo "- Checking ${each}..." + if [[ -r "${CURRENT_TAG}" ]] ; then + # yey, we have one :) + einfo " Found Versiontag in ${each}" + source "${CURRENT_TAG}" + if [[ "${OLDPF}" == "" ]] ; then + eerror "Invalid Versiontag found in ${CURRENT_TAGDIR}" + eerror "Please delete it" + eerror + die "Please kill the invalid versiontag in ${CURRENT_TAGDIR}" + fi + + OLD_MAJOR=$(ver_cut 2-3 ${OLDPF}) + + [[ "$(openldap_filecount ${CURRENT_TAGDIR})" -gt 0 ]] && have_files=1 + + # are we on the same branch? + if [[ "${OLD_MAJOR}" != "${PV:0:3}" ]] ; then + ewarn " Versiontag doesn't match current major release!" + if [[ "${have_files}" == "1" ]] ; then + eerror " Versiontag says other major and you (probably) have datafiles!" + echo + openldap_upgrade_howto + else + einfo " No real problem, seems there's no database." + fi + else + einfo " Versiontag is fine here :)" + fi + else + einfo " Non-tagged dir ${each}" + [[ "$(openldap_filecount ${each})" -gt 0 ]] && have_files=1 + if [[ "${have_files}" == "1" ]] ; then + einfo " EEK! Non-empty non-tagged datadir, counting `ls -a ${each} | wc -l` files" + echo + + eerror + eerror "Your OpenLDAP Installation has a non tagged datadir that" + eerror "possibly contains a database at ${CURRENT_TAGDIR}" + eerror + eerror "Please export data if any entered and empty or remove" + eerror "the directory, installation has been stopped so you" + eerror "can take required action" + eerror + eerror "For a HOWTO on exporting the data, see instructions in the ebuild" + eerror + openldap_upgrade_howto + die "Please move the datadir ${CURRENT_TAGDIR} away" + fi + fi + einfo + fi + done + [[ "${have_files}" == "1" ]] && einfo "DB files present" || einfo "No DB files present" + + # Now we must check for the major version of sys-libs/db linked against. + # TODO: remove this as we dropped bdb support (gone upstream) in 2.6.1? + SLAPD_PATH="${EROOT}/usr/$(get_libdir)/openldap/slapd" + if [[ "${have_files}" == "1" ]] && [[ -f "${SLAPD_PATH}" ]]; then + OLDVER="$(/usr/bin/ldd ${SLAPD_PATH} \ + | awk '/libdb-/{gsub("^libdb-","",$1);gsub(".so$","",$1);print $1}')" + local fail=0 + + # This will not cover detection of cn=Config based configuration, but + # it's hopefully good enough. + if grep -sq '^backend.*shell' "${EROOT}"/etc/openldap/slapd.conf; then + eerror " OpenLDAP >= 2.5.x has dropped support for Shell backend." + eerror " You will need to migrate per upstream's migration notes" + eerror " at https://www.openldap.org/doc/admin25/appendix-upgrading.html." + eerror " Your existing database will not be accessible until it is" + eerror " converted away from backend shell!" + echo + fail=1 + fi + if has_version "${CATEGORY}/${PN}[berkdb]" || grep -sq '^backend.*(bdb|hdb)' /etc/openldap/slapd.conf; then + eerror " OpenLDAP >= 2.5.x has dropped support for Berkeley DB." + eerror " You will need to migrate per upstream's migration notes" + eerror " at https://www.openldap.org/doc/admin25/appendix-upgrading.html." + eerror " Your existing database will not be accessible until it is" + eerror " converted to mdb!" + echo + fail=1 + elif [[ -z "${OLDVER}" ]] && [[ -z "${NEWVER}" ]]; then + : + # Nothing wrong here. + elif [[ -z "${OLDVER}" ]] && [[ -n "${NEWVER}" ]]; then + eerror " Your existing version of OpenLDAP was not built against" + eerror " any version of sys-libs/db, but the new one will build" + eerror " against ${NEWVER} and your database may be inaccessible." + echo + fail=1 + elif [[ -n "${OLDVER}" ]] && [[ -z "${NEWVER}" ]]; then + eerror " Your existing version of OpenLDAP was built against" + eerror " sys-libs/db:${OLDVER}, but the new one will not be" + eerror " built against any version and your database may be" + eerror " inaccessible." + echo + fail=1 + elif [[ "${OLDVER}" != "${NEWVER}" ]]; then + eerror " Your existing version of OpenLDAP was built against" + eerror " sys-libs/db:${OLDVER}, but the new one will build against" + eerror " ${NEWVER} and your database would be inaccessible." + echo + fail=1 + fi + [[ "${fail}" == "1" ]] && openldap_upgrade_howto + fi + + echo + einfo + einfo "All datadirs are fine, proceeding with merge now..." + einfo +} + +openldap_upgrade_howto() { + local d l i + eerror + eerror "A (possible old) installation of OpenLDAP was detected," + eerror "installation will not proceed for now." + eerror + eerror "As major version upgrades can corrupt your database," + eerror "you need to dump your database and re-create it afterwards." + eerror + eerror "Additionally, rebuilding against different major versions of the" + eerror "sys-libs/db libraries will cause your database to be inaccessible." + eerror "" + d="$(date -u +%s)" + l="/root/ldapdump.${d}" + i="${l}.raw" + eerror " 1. /etc/init.d/slapd stop" + eerror " 2. slapcat -l ${i}" + eerror " 3. grep -E -v '^(entry|context)CSN:' <${i} >${l}" + eerror " 4. mv /var/lib/openldap-data/ /var/lib/openldap-data-backup/" + eerror " 5. emerge --update \=net-nds/${PF}" + eerror " 6. etc-update, and ensure that you apply the changes" + eerror " 7. slapadd -l ${l}" + eerror " 8. chown ldap:ldap /var/lib/openldap-data/*" + eerror " 9. /etc/init.d/slapd start" + eerror "10. Check that your data is intact." + eerror "11. Set up the new replication system." + eerror + if [[ "${FORCE_UPGRADE}" != "1" ]]; then + die "You need to upgrade your database first" + else + eerror "You have the magical FORCE_UPGRADE=1 in place." + eerror "Don't say you weren't warned about data loss." + fi +} + +pkg_setup() { + if ! use sasl && use cxx ; then + die "To build the ldapc++ library you must emerge openldap with sasl support" + fi + # Bug #322787 + if use minimal && ! has_version "net-nds/openldap" ; then + einfo "No datadir scan needed, openldap not installed" + elif use minimal && has_version 'net-nds/openldap[minimal]' ; then + einfo "Skipping scan for previous datadirs as requested by minimal useflag" + else + openldap_find_versiontags + fi +} + +src_prepare() { + rm -r libraries/liblmdb || die 'could not removed bundled lmdb directory' + + for filename in doc/drafts/draft-ietf-ldapext-acl-model-xx.txt; do + iconv -f iso-8859-1 -t utf-8 "$filename" > "$filename.utf8" + mv "$filename.utf8" "$filename" + done + + default + + sed -i \ + -e "s:\$(localstatedir)/run:${EPREFIX}/run:" \ + -e '/MKDIR.*.(DESTDIR)\/run/d' \ + -e '/MKDIR.*.(DESTDIR).*.(runstatedir)/d' \ + servers/slapd/Makefile.in || die 'adjusting slapd Makefile.in failed' + + pushd build &>/dev/null || die "pushd build" + einfo "Making sure upstream build strip does not do stripping too early" + sed -i.orig \ + -e '/^STRIP/s,-s,,g' \ + top.mk || die "Failed to remove to early stripping" + popd &>/dev/null || die + + eautoreconf + multilib_copy_sources +} + +build_contrib_module() { + # <dir> [<target>] + pushd "${S}/contrib/slapd-modules/$1" &>/dev/null || die "pushd contrib/slapd-modules/$1" + einfo "Compiling contrib-module: $1" + local target="${2:-all}" + emake \ + LDAP_BUILD="${BUILD_DIR}" prefix="${EPREFIX}/usr" \ + CC="${CC}" libexecdir="${EPREFIX}/usr/$(get_libdir)/openldap" \ + "$target" + popd &>/dev/null || die +} + +multilib_src_configure() { + # Optional Features + myconf+=( + --enable-option-checking + $(use_enable debug) + --enable-dynamic + $(use_enable syslog) + $(use_enable ipv6) + --enable-local + ) + + # Optional Packages + myconf+=( + --without-fetch + ) + + if ! use minimal && multilib_is_native_abi; then + # SLAPD (Standalone LDAP Daemon) Options + # overlay chaining requires '--enable-ldap' #296567 + # see https://www.openldap.org/doc/admin26/overlays.html#Chaining + myconf+=( + --enable-ldap=yes + --enable-slapd + $(use_enable cleartext) + $(use_enable crypt) + $(multilib_native_use_enable sasl spasswd) + --disable-slp + $(use_enable tcpd wrappers) + ) + if use experimental ; then + # connectionless ldap per bug #342439 + # connectionless is a unsupported feature according to Howard Chu + # see https://bugs.openldap.org/show_bug.cgi?id=9739 + append-cppflags -DLDAP_CONNECTIONLESS + + myconf+=( + --enable-dynacl + # ACI build as dynamic module not supported (yet) + --enable-aci=yes + ) + fi + + for option in modules rlookups slapi; do + myconf+=( --enable-${option} ) + done + + # static SLAPD backends + for backend in mdb; do + myconf+=( --enable-${backend}=yes ) + done + + # module SLAPD backends + for backend in asyncmeta dnssrv meta null passwd relay sock; do + # missing modules: wiredtiger (not available in portage) + myconf+=( --enable-${backend}=mod ) + done + + use perl && myconf+=( --enable-perl=mod ) + + if use odbc ; then + myconf+=( --enable-sql=mod ) + if use iodbc ; then + myconf+=( --with-odbc="iodbc" ) + append-cflags -I"${EPREFIX}"/usr/include/iodbc + else + myconf+=( --with-odbc="unixodbc" ) + fi + fi + + use overlays && myconf+=( --enable-overlays=mod ) + use autoca && myconf+=( --enable-autoca=mod ) || myconf+=( --enable-autoca=no ) + # compile-in the syncprov + myconf+=( --enable-syncprov=yes ) + + # SLAPD Password Module Options + myconf+=( + $(use_enable argon2) + ) + + # Optional Packages + myconf+=( + $(use_with systemd) + $(multilib_native_use_with sasl cyrus-sasl) + ) + else + myconf+=( + --disable-backends + --disable-slapd + --disable-mdb + --disable-overlays + --disable-autoca + --disable-syslog + --without-systemd + ) + fi + + # Library Generation & Linking Options + myconf+=( + $(use_enable static-libs static) + --enable-shared + --enable-versioning + --with-pic + ) + + # some cross-compiling tests don't pan out well. + tc-is-cross-compiler && myconf+=( + --with-yielding-select=yes + ) + + local ssl_lib="no" + if use ssl || ( ! use minimal && use samba ) ; then + if use gnutls ; then + myconf+=( --with-tls="gnutls" ) + else + # disable MD2 hash function + append-cflags -DOPENSSL_NO_MD2 + myconf+=( --with-tls="openssl" ) + fi + else + myconf+=( --with-tls="no" ) + fi + + tc-export AR CC CXX + + ECONF_SOURCE="${S}" econf \ + --libexecdir="${EPREFIX}"/usr/$(get_libdir)/openldap \ + --localstatedir="${EPREFIX}"/var \ + --runstatedir="${EPREFIX}"/run \ + --sharedstatedir="${EPREFIX}"/var/lib \ + "${myconf[@]}" + + # argument '--runstatedir' seems to have no effect therefore this workaround + sed -i \ + -e 's:^runstatedir=.*:runstatedir=${EPREFIX}/run:' \ + configure contrib/ldapc++/configure contrib/ldaptcl/configure || die 'could not set runstatedir' + + sed -i \ + -e "s:/var/run/sasl2/mux:${EPREFIX}/run/sasl2/mux:" \ + doc/guide/admin/security.sdf || die 'could not fix run path in doc' + + emake depend +} + +src_configure_cxx() { + # This needs the libraries built by the first build run. + # we have to run it AFTER the main build, not just after the main configure + local myconf_ldapcpp=( + --with-libldap="${E}/lib" + --with-ldap-includes="${S}/include" + ) + + mkdir -p "${BUILD_DIR}"/contrib/ldapc++ || die "could not create ${BUILD_DIR}/contrib/ldapc++ directory" + pushd "${BUILD_DIR}/contrib/ldapc++" &>/dev/null || die "pushd contrib/ldapc++" + local LDFLAGS=${LDFLAGS} + local CPPFLAGS=${CPPFLAGS} + append-ldflags -L"${BUILD_DIR}"/libraries/liblber/.libs \ + -L"${BUILD_DIR}"/libraries/libldap/.libs + append-cppflags -I"${BUILD_DIR}"/include + ECONF_SOURCE=${S}/contrib/ldapc++ \ + econf "${myconf_ldapcpp[@]}" + popd &>/dev/null || die "popd contrib/ldapc++" +} + +multilib_src_compile() { + tc-export AR CC CXX + emake CC="$(tc-getCC)" SHELL="${EPREFIX}"/bin/sh + + if ! use minimal && multilib_is_native_abi ; then + if use cxx ; then + einfo "Building contrib library: ldapc++" + src_configure_cxx + pushd "${BUILD_DIR}/contrib/ldapc++" &>/dev/null || die "pushd contrib/ldapc++" + emake + popd &>/dev/null || die + fi + + if use smbkrb5passwd ; then + einfo "Building contrib-module: smbk5pwd" + pushd "${S}/contrib/slapd-modules/smbk5pwd" &>/dev/null || die "pushd contrib/slapd-modules/smbk5pwd" + + MY_DEFS="-DDO_SHADOW" + if use samba ; then + MY_DEFS="${MY_DEFS} -DDO_SAMBA" + MY_KRB5_INC="" + fi + if use kerberos ; then + MY_DEFS="${MY_DEFS} -DDO_KRB5" + MY_KRB5_INC="$(krb5-config --cflags)" + fi + + emake \ + DEFS="${MY_DEFS}" \ + KRB5_INC="${MY_KRB5_INC}" \ + LDAP_BUILD="${BUILD_DIR}" \ + libexecdir="${EPREFIX}/usr/$(get_libdir)/openldap" + popd &>/dev/null || die + fi + + if use overlays ; then + einfo "Building contrib-module: samba4" + pushd "${S}/contrib/slapd-modules/samba4" &>/dev/null || die "pushd contrib/slapd-modules/samba4" + + emake \ + LDAP_BUILD="${BUILD_DIR}" \ + CC="$(tc-getCC)" libexecdir="${EPREFIX}/usr/$(get_libdir)/openldap" + popd &>/dev/null || die + fi + + if use kerberos ; then + if use kinit ; then + build_contrib_module "kinit" "kinit.c" "kinit" + fi + build_contrib_module "passwd" "pw-kerberos.la" + fi + + if use pbkdf2; then + build_contrib_module "passwd/pbkdf2" + fi + + if use sha2 ; then + build_contrib_module "passwd/sha2" + fi + + # We could build pw-radius if GNURadius would install radlib.h + build_contrib_module "passwd" "pw-netscape.la" + + #build_contrib_module "acl" "posixgroup.la" # example code only + #build_contrib_module "acl" "gssacl.la" # example code only, also needs kerberos + build_contrib_module "addpartial" + build_contrib_module "allop" + build_contrib_module "allowed" + build_contrib_module "autogroup" + build_contrib_module "cloak" + # build_contrib_module "comp_match" # really complex, adds new external deps, questionable demand + build_contrib_module "denyop" + build_contrib_module "dsaschema" + build_contrib_module "dupent" + build_contrib_module "lastbind" + # lastmod may not play well with other overlays + build_contrib_module "lastmod" + build_contrib_module "noopsrch" + #build_contrib_module "nops" https://bugs.gentoo.org/641576 + #build_contrib_module "nssov" RESO:LATER + build_contrib_module "trace" + # build slapi-plugins + pushd "${S}/contrib/slapi-plugins/addrdnvalues" &>/dev/null || die "pushd contrib/slapi-plugins/addrdnvalues" + einfo "Building contrib-module: addrdnvalues plugin" + $(tc-getCC) -shared \ + -I"${BUILD_DIR}"/include \ + -I../../../include \ + ${CFLAGS} \ + -fPIC \ + ${LDFLAGS} \ + -o libaddrdnvalues-plugin.so \ + addrdnvalues.c || die "Building libaddrdnvalues-plugin.so failed" + popd &>/dev/null || die + fi +} + +multilib_src_test() { + if multilib_is_native_abi; then + cd "tests" + pwd + # emake test => runs only lloadd & mdb, in serial; skips ldif,sql,wt,regression + # emake partests => runs ALL of the tests in parallel + # wt/WiredTiger is not supported in Gentoo + TESTS=( plloadd pmdb ) + #TESTS+=( pldif ) # not done by default, so also exclude here + #use odbc && TESTS+=( psql ) # not done by default, so also exclude here + emake "${TESTS[@]}" + fi +} + +multilib_src_install() { + emake CC="$(tc-getCC)" \ + DESTDIR="${D}" SHELL="${EPREFIX}"/bin/sh install + + if ! use minimal && multilib_is_native_abi; then + # openldap modules go here + # TODO: write some code to populate slapd.conf with moduleload statements + keepdir /usr/$(get_libdir)/openldap/openldap/ + + # initial data storage dir + keepdir /var/lib/openldap-data + use prefix || fowners ldap:ldap /var/lib/openldap-data + fperms 0700 /var/lib/openldap-data + + echo "OLDPF='${PF}'" > "${ED}${OPENLDAP_DEFAULTDIR_VERSIONTAG}/${OPENLDAP_VERSIONTAG}" + echo "# do NOT delete this. it is used" >> "${ED}${OPENLDAP_DEFAULTDIR_VERSIONTAG}/${OPENLDAP_VERSIONTAG}" + echo "# to track versions for upgrading." >> "${ED}${OPENLDAP_DEFAULTDIR_VERSIONTAG}/${OPENLDAP_VERSIONTAG}" + + # use our config + rm "${ED}"/etc/openldap/slapd.conf + insinto /etc/openldap + newins "${FILESDIR}"/${PN}-2.6.3-slapd-conf slapd.conf + configfile="${ED}"/etc/openldap/slapd.conf + + # populate with built backends + einfo "populate config with built backends" + for x in "${ED}"/usr/$(get_libdir)/openldap/openldap/back_*.so; do + einfo "Adding $(basename ${x})" + sed -e "/###INSERTDYNAMICMODULESHERE###$/a# moduleload\t$(basename ${x})" -i "${configfile}" || die + done + sed -e "s:###INSERTDYNAMICMODULESHERE###$:# modulepath\t${EPREFIX}/usr/$(get_libdir)/openldap/openldap:" -i "${configfile}" + use prefix || fowners root:ldap /etc/openldap/slapd.conf + fperms 0640 /etc/openldap/slapd.conf + cp "${configfile}" "${configfile}".default || die + + # install our own init scripts and systemd unit files + einfo "Install init scripts" + sed -e "s,/usr/lib/,/usr/$(get_libdir)/," "${FILESDIR}"/slapd-initd-2.4.40-r2 > "${T}"/slapd || die + doinitd "${T}"/slapd + newconfd "${FILESDIR}"/slapd-confd-2.6.1 slapd + + if use systemd; then + # The systemd unit uses Type=notify, so it is useless without USE=systemd + einfo "Install systemd service" + rm -rf "${ED}"/{,usr/}lib/systemd + sed -e "s,/usr/lib/,/usr/$(get_libdir)/," "${FILESDIR}"/slapd-2.6.1.service > "${T}"/slapd.service || die + systemd_dounit "${T}"/slapd.service + systemd_install_serviced "${FILESDIR}"/slapd.service.conf + newtmpfiles "${FILESDIR}"/slapd.tmpfilesd slapd.conf + fi + + # if built without SLP, we don't need to be before avahi + sed -i \ + -e '/before/{s/avahi-daemon//g}' \ + "${ED}"/etc/init.d/slapd \ + || die + + if use cxx ; then + einfo "Install the ldapc++ library" + cd "${BUILD_DIR}/contrib/ldapc++" || die + emake DESTDIR="${D}" libexecdir="${EPREFIX}/usr/$(get_libdir)/openldap" install + cd "${S}"/contrib/ldapc++ || die + newdoc README ldapc++-README + fi + + if use smbkrb5passwd ; then + einfo "Install the smbk5pwd module" + cd "${S}/contrib/slapd-modules/smbk5pwd" || die + emake DESTDIR="${D}" \ + LDAP_BUILD="${BUILD_DIR}" \ + libexecdir="${EPREFIX}/usr/$(get_libdir)/openldap" install + newdoc README smbk5pwd-README + fi + + if use overlays ; then + einfo "Install the samba4 module" + cd "${S}/contrib/slapd-modules/samba4" || die + emake DESTDIR="${D}" \ + LDAP_BUILD="${BUILD_DIR}" \ + libexecdir="${EPREFIX}/usr/$(get_libdir)/openldap" install + newdoc README samba4-README + fi + + einfo "Installing contrib modules" + cd "${S}/contrib/slapd-modules" || die + for l in */*.la */*/*.la; do + [[ -e ${l} ]] || continue + libtool --mode=install cp ${l} \ + "${ED}"/usr/$(get_libdir)/openldap/openldap || \ + die "installing ${l} failed" + done + + dodoc "${FILESDIR}"/DB_CONFIG.fast.example + docinto contrib + doman */*.5 + #newdoc acl/README* + newdoc addpartial/README addpartial-README + newdoc allop/README allop-README + newdoc allowed/README allowed-README + newdoc autogroup/README autogroup-README + newdoc dsaschema/README dsaschema-README + newdoc passwd/README passwd-README + cd "${S}/contrib/slapi-plugins" || die + insinto /usr/$(get_libdir)/openldap/openldap + doins */*.so + docinto contrib + newdoc addrdnvalues/README addrdnvalues-README + + insinto /etc/openldap/schema + newins "${DISTDIR}"/${BIS_P} ${BIS_PN} + + docinto back-sock ; dodoc "${S}"/servers/slapd/back-sock/searchexample* + docinto back-perl ; dodoc "${S}"/servers/slapd/back-perl/SampleLDAP.pm + + dosbin "${S}"/contrib/slapd-tools/statslog + newdoc "${S}"/contrib/slapd-tools/README README.statslog + fi + + if ! use static-libs ; then + find "${ED}" \( -name '*.a' -o -name '*.la' \) -delete || die + fi +} + +multilib_src_install_all() { + dodoc ANNOUNCEMENT CHANGES COPYRIGHT README + docinto rfc ; dodoc doc/rfc/*.txt +} + +pkg_preinst() { + # keep old libs if any + preserve_old_lib /usr/$(get_libdir)/{liblber,libldap,libldap_r}-2.4$(get_libname 0) + # bug 440470, only display the getting started help there was no openldap before, + # or we are going to a non-minimal build + ! has_version net-nds/openldap || has_version 'net-nds/openldap[minimal]' + OPENLDAP_PRINT_MESSAGES=$((! $?)) +} + +pkg_postinst() { + if ! use minimal ; then + if use systemd; then + tmpfiles_process slapd.conf + fi + + # You cannot build SSL certificates during src_install that will make + # binary packages containing your SSL key, which is both a security risk + # and a misconfiguration if multiple machines use the same key and cert. + if use ssl; then + install_cert /etc/openldap/ssl/ldap + use prefix || chown ldap:ldap "${EROOT}"/etc/openldap/ssl/ldap.* + ewarn "Self-signed SSL certificates are treated harshly by OpenLDAP 2.[12]" + ewarn "Self-signed SSL certificates are treated harshly by OpenLDAP 2.[12]" + ewarn "add 'TLS_REQCERT allow' if you want to use them." + fi + + if use prefix; then + # Warn about prefix issues with slapd + eerror "slapd might NOT be usable on Prefix systems as it requires root privileges" + eerror "to start up, and requires that certain files directories be owned by" + eerror "ldap:ldap. As Prefix does not support changing ownership of files and" + eerror "directories, you will have to manually fix this yourself." + fi + + # These lines force the permissions of various content to be correct + if [[ -d "${EROOT}"/var/run/openldap ]]; then + use prefix || { chown ldap:ldap "${EROOT}"/var/run/openldap || die; } + chmod 0755 "${EROOT}"/var/run/openldap || die + fi + use prefix || chown root:ldap "${EROOT}"/etc/openldap/slapd.conf{,.default} + chmod 0640 "${EROOT}"/etc/openldap/slapd.conf{,.default} || die + use prefix || chown ldap:ldap "${EROOT}"/var/lib/openldap-data + fi + + if has_version 'net-nds/openldap[-minimal]' && ((${OPENLDAP_PRINT_MESSAGES})); then + elog "Getting started using OpenLDAP? There is some documentation available:" + elog "Gentoo Guide to OpenLDAP Authentication" + elog "(https://wiki.gentoo.org/wiki/Centralized_authentication_using_OpenLDAP)" + fi + + preserve_old_lib_notify /usr/$(get_libdir)/{liblber,libldap,libldap_r}-2.4$(get_libname 0) +} diff --git a/net-vpn/openvpn/Manifest b/net-vpn/openvpn/Manifest new file mode 100644 index 0000000..00d1421 --- /dev/null +++ b/net-vpn/openvpn/Manifest @@ -0,0 +1,4 @@ +DIST openvpn-2.5.2.tar.xz 1134644 BLAKE2B 59aa0c540894de4cfb37ad4c3139eb69a35d317e3de490f71b185a979989c1253221091a30bfb2ee5243fcfae190605e9787051de079eee79e57bd63392c42d5 SHA512 ae2cac00ae4b9e06e7e70b268ed47d36bbb45409650175e507d5bfa12b0a4f24bccc64f2494d1563f9269c8076d0f753a492f01ea33ce376ba00b7cdcb5c7bd0 +DIST openvpn-2.5.6.tar.xz 1150352 BLAKE2B 509821eca9d40c5579700e05e560b906ddee5abb0c51a9a210e2e998cdd9606f734d43d3bec8c473cc4f0aaa1e265e7f05202aa606247ebde8844c0243165fac SHA512 f0f0600df013431af804ace70ea86ac064917acdeaad3759b5d5eaa4a8dc3738d6da6df4c16bbb23443e3493487541cb8b10b89f9f0b40a17caa6e6fc46e0adb +DIST openvpn-2.5.7.tar.xz 1150476 BLAKE2B e8d24a8be8ff97072ef3b76dbec15cd6e7097ebe99f680d759f213cb5643d7b4a29664d2a96e6efe1d6ee858a6d6b3f23c6d12cf74f202fbe8cc48642f18dba6 SHA512 9a3234b479f5bab12b8c3af7691f175f8cd32f2929dd27efc16e96e14dbb8e07421e623869ad5ffc2d7e65f2266817d1583723033f3646b9913b10ec6d014b44 +DIST openvpn-2.6.4.tar.gz 1861178 BLAKE2B 584fc3950732d6a1db417811f6e330a154537207f6c9543ab03b1c1a886a98a0aee7d1649055a9f7944555ae8865602be15fd8e23b67258917f1adebde050099 SHA512 903ac41691c26e8e4ad65c9b6fb5e75db2caf2e4079d3c4cb61a44e51be9991508f53a1dd8b4b863b4ac86088ad1a705d22131df1e25612560c9f4276d8190ec diff --git a/net-vpn/openvpn/files/down.sh b/net-vpn/openvpn/files/down.sh new file mode 100644 index 0000000..1c70db0 --- /dev/null +++ b/net-vpn/openvpn/files/down.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# Copyright (c) 2006-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# Contributed by Roy Marples (uberlord@gentoo.org) + +# If we have a service specific script, run this now +if [ -x /etc/openvpn/"${SVCNAME}"-down.sh ] ; then + /etc/openvpn/"${SVCNAME}"-down.sh "$@" +fi + +# Restore resolv.conf to how it was +if [ "${PEER_DNS}" != "no" ]; then + if [ -x /sbin/resolvconf ] ; then + /sbin/resolvconf -d "${dev}" + elif [ -e /etc/resolv.conf-"${dev}".sv ] ; then + # Important that we copy instead of move incase resolv.conf is + # a symlink and not an actual file + cp /etc/resolv.conf-"${dev}".sv /etc/resolv.conf + rm -f /etc/resolv.conf-"${dev}".sv + fi +fi + +if [ -n "${SVCNAME}" ]; then + # Re-enter the init script to start any dependant services + if /etc/init.d/"${SVCNAME}" --quiet status ; then + export IN_BACKGROUND=true + /etc/init.d/"${SVCNAME}" --quiet stop + fi +fi + +exit 0 + +# vim: ts=4 : diff --git a/net-vpn/openvpn/files/openvpn-2.1.conf b/net-vpn/openvpn/files/openvpn-2.1.conf new file mode 100644 index 0000000..72510c3 --- /dev/null +++ b/net-vpn/openvpn/files/openvpn-2.1.conf @@ -0,0 +1,18 @@ +# OpenVPN automatically creates an /etc/resolv.conf (or sends it to +# resolvconf) if given DNS information by the OpenVPN server. +# Set PEER_DNS="no" to stop this. +PEER_DNS="yes" + +# OpenVPN can run in many modes. Most people will want the init script +# to automatically detect the mode and try and apply a good default +# configuration and setup scripts. However, there are cases where the +# OpenVPN configuration looks like a client, but it's really a peer or +# something else. DETECT_CLIENT controls this behaviour. +DETECT_CLIENT="yes" + +# If DETECT_CLIENT is no and you have your own scripts to re-enter the openvpn +# init script (ie, it first becomes "inactive" and the script then starts the +# script again to make it "started") then you can state this below. +# In other words, unless you understand service dependencies and are a +# competent shell scripter, don't set this. +RE_ENTER="no" diff --git a/net-vpn/openvpn/files/openvpn-2.1.init b/net-vpn/openvpn/files/openvpn-2.1.init new file mode 100644 index 0000000..3af33f5 --- /dev/null +++ b/net-vpn/openvpn/files/openvpn-2.1.init @@ -0,0 +1,134 @@ +#!/sbin/openrc-run +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +VPNDIR=${VPNDIR:-/etc/openvpn} +VPN=${SVCNAME#*.} +if [ -n "${VPN}" ] && [ ${SVCNAME} != "openvpn" ]; then + VPNPID="/run/openvpn.${VPN}.pid" +else + VPNPID="/run/openvpn.pid" +fi +VPNCONF="${VPNDIR}/${VPN}.conf" + +depend() { + need localmount net + use dns + after bootmisc +} + +checkconfig() { + # Linux has good dynamic tun/tap creation + if [ $(uname -s) = "Linux" ] ; then + if [ ! -e /dev/net/tun ]; then + if ! modprobe tun ; then + eerror "TUN/TAP support is not available" \ + "in this kernel" + return 1 + fi + fi + if [ -h /dev/net/tun ] && [ -c /dev/misc/net/tun ]; then + ebegin "Detected broken /dev/net/tun symlink, fixing..." + rm -f /dev/net/tun + ln -s /dev/misc/net/tun /dev/net/tun + eend $? + fi + return 0 + fi + + # Other OS's don't, so we rely on a pre-configured interface + # per vpn instance + local ifname=$(sed -n -e 's/[[:space:]]*dev[[:space:]][[:space:]]*\([^[:space:]]*\).*/\1/p' "${VPNCONF}") + if [ -z ${ifname} ] ; then + eerror "You need to specify the interface that this openvpn" \ + "instance should use" \ + "by using the dev option in ${VPNCONF}" + return 1 + fi + + if ! ifconfig "${ifname}" >/dev/null 2>/dev/null ; then + # Try and create it + echo > /dev/"${ifname}" >/dev/null + fi + if ! ifconfig "${ifname}" >/dev/null 2>/dev/null ; then + eerror "${VPNCONF} requires interface ${ifname}" \ + "but that does not exist" + return 1 + fi +} + +start() { + # If we are re-called by the openvpn gentoo-up.sh script + # then we don't actually want to start openvpn + [ "${IN_BACKGROUND}" = "true" ] && return 0 + + ebegin "Starting ${SVCNAME}" + + checkconfig || return 1 + + local args="" reenter=${RE_ENTER:-no} + # If the config file does not specify the cd option, we do + # But if we specify it, we override the config option which we do not want + if ! grep -q "^[ ]*cd[ ].*" "${VPNCONF}" ; then + args="${args} --cd ${VPNDIR}" + fi + + # We mark the service as inactive and then start it. + # When we get an authenticated packet from the peer then we run our script + # which configures our DNS if any and marks us as up. + if [ "${DETECT_CLIENT:-yes}" = "yes" ] && \ + grep -q "^[ ]*remote[ ].*" "${VPNCONF}" ; then + reenter="yes" + args="${args} --up-delay --up-restart" + args="${args} --script-security 2" + args="${args} --up /etc/openvpn/up.sh" + args="${args} --down-pre --down /etc/openvpn/down.sh" + + # Warn about setting scripts as we override them + if grep -Eq "^[ ]*(up|down)[ ].*" "${VPNCONF}" ; then + ewarn "WARNING: You have defined your own up/down scripts" + ewarn "As you're running as a client, we now force Gentoo specific" + ewarn "scripts to be run for up and down events." + ewarn "These scripts will call /etc/openvpn/${SVCNAME}-{up,down}.sh" + ewarn "where you can put your own code." + fi + + # Warn about the inability to change ip/route/dns information when + # dropping privs + if grep -q "^[ ]*user[ ].*" "${VPNCONF}" ; then + ewarn "WARNING: You are dropping root privileges!" + ewarn "As such openvpn may not be able to change ip, routing" + ewarn "or DNS configuration." + fi + else + # So we're a server. Run as openvpn unless otherwise specified + grep -q "^[ ]*user[ ].*" "${VPNCONF}" || args="${args} --user openvpn" + grep -q "^[ ]*group[ ].*" "${VPNCONF}" || args="${args} --group openvpn" + fi + + # Ensure that our scripts get the PEER_DNS variable + [ -n "${PEER_DNS}" ] && args="${args} --setenv PEER_DNS ${PEER_DNS}" + + [ "${reenter}" = "yes" ] && mark_service_inactive "${SVCNAME}" + start-stop-daemon --start --exec /usr/sbin/openvpn --pidfile "${VPNPID}" \ + -- --config "${VPNCONF}" --writepid "${VPNPID}" --daemon \ + --setenv SVCNAME "${SVCNAME}" ${args} + eend $? "Check your logs to see why startup failed" +} + +stop() { + # If we are re-called by the openvpn gentoo-down.sh script + # then we don't actually want to stop openvpn + if [ "${IN_BACKGROUND}" = "true" ] ; then + mark_service_inactive "${SVCNAME}" + return 0 + fi + + ebegin "Stopping ${SVCNAME}" + start-stop-daemon --stop --quiet \ + --exec /usr/sbin/openvpn --pidfile "${VPNPID}" \ + -- --config "${VPNCONF}" + eend $? +} + +# vim: set ts=4 : diff --git a/net-vpn/openvpn/files/openvpn-2.5.0-auth-pam-missing-header.patch b/net-vpn/openvpn/files/openvpn-2.5.0-auth-pam-missing-header.patch new file mode 100644 index 0000000..2e48bd6 --- /dev/null +++ b/net-vpn/openvpn/files/openvpn-2.5.0-auth-pam-missing-header.patch @@ -0,0 +1,12 @@ +diff --git a/src/plugins/auth-pam/auth-pam.c b/src/plugins/auth-pam/auth-pam.c +index f537652e..29306310 100644 +--- a/src/plugins/auth-pam/auth-pam.c ++++ b/src/plugins/auth-pam/auth-pam.c +@@ -47,6 +47,7 @@ + #include <fcntl.h> + #include <signal.h> + #include <syslog.h> ++#include <limits.h> + #include "utils.h" + + #include <openvpn-plugin.h> diff --git a/net-vpn/openvpn/files/openvpn-2.5.2-detect-python-rst2man.patch b/net-vpn/openvpn/files/openvpn-2.5.2-detect-python-rst2man.patch new file mode 100644 index 0000000..d2060bb --- /dev/null +++ b/net-vpn/openvpn/files/openvpn-2.5.2-detect-python-rst2man.patch @@ -0,0 +1,14 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -376,8 +376,8 @@ AC_DEFINE_UNQUOTED([SYSTEMD_ASK_PASSWORD_PATH], ["$SYSTEMD_ASK_PASSWORD"], [Path + # + AC_ARG_VAR([RST2MAN], [path to rst2man utility]) + AC_ARG_VAR([RST2HTML], [path to rst2html utility]) +-AC_CHECK_PROGS([RST2MAN], [rst2man]) +-AC_CHECK_PROGS([RST2HTML], [rst2html]) ++AC_CHECK_PROGS([RST2MAN], [rst2man rst2man.py]) ++AC_CHECK_PROGS([RST2HTML], [rst2html rst2html.py]) + AM_CONDITIONAL([HAVE_PYDOCUTILS], [test "${RST2MAN}" -a "${RST2HTML}"]) + + # Set -std=c99 unless user already specified a -std= + diff --git a/net-vpn/openvpn/files/openvpn-2.5.2-libressl.patch b/net-vpn/openvpn/files/openvpn-2.5.2-libressl.patch new file mode 100644 index 0000000..6ac7382 --- /dev/null +++ b/net-vpn/openvpn/files/openvpn-2.5.2-libressl.patch @@ -0,0 +1,147 @@ +commit 0df2261da192eac74d1c53e99db0ed3f49278986 +Author: Arne Schwabe <arne@rfc2549.org> +Date: Tue Oct 19 20:31:08 2021 +0200 + + Add --with-openssl-engine autoconf option (auto|yes|no) + + This allows to select engine support at configure time. For OpenSSL 1.1 the + default is not changed and we detect if engine support is available. + + Engine support is deprecated in OpenSSL 3.0 and for OpenSSL 3.0 the default + is to disable engine support as engine support is deprecated and generates + compiler warnings which in turn also break -Werror. + + By using --with-openssl-engine=no or --with-openssl-engine=yes engine + support can be forced on or off. If it is enabled but not detected an + error will be thown. + + This commit cleans up the configure logic a bit and removes the + ENGINE_cleanup checks as we can just assume that it will be also + available as macro or function if the other engine functions are + available. Before the cleanup we would only check for the existance + of engine.h if ENGINE_cleanup was not found. + + Signed-off-by: Arne Schwabe <arne@rfc2549.org> + Acked-by: Max Fillinger <maximilian.fillinger@foxcrypto.com> + Message-Id: <20211019183127.614175-3-arne@rfc2549.org> + URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg23000.html + Signed-off-by: Gert Doering <gert@greenie.muc.de> + +diff --git a/configure.ac b/configure.ac +index a37dc762..e0f9c332 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -267,6 +267,18 @@ AC_ARG_ENABLE( + [enable_wolfssl_options_h="yes"] + ) + ++AC_ARG_WITH( ++ [openssl-engine], ++ [AS_HELP_STRING([--with-openssl-engine], [enable engine support with OpenSSL. Default enabled for OpenSSL < 3.0, auto,yes,no @<:@default=auto@:>@])], ++ [ ++ case "${withval}" in ++ auto|yes|no) ;; ++ *) AC_MSG_ERROR([bad value ${withval} for --with-engine]) ;; ++ esac ++ ], ++ [with_openssl_engine="auto"] ++) ++ + AC_ARG_VAR([PLUGINDIR], [Path of plug-in directory @<:@default=LIBDIR/openvpn/plugins@:>@]) + if test -n "${PLUGINDIR}"; then + plugindir="${PLUGINDIR}" +@@ -800,22 +812,44 @@ if test "${with_crypto_library}" = "openssl"; then + [AC_MSG_ERROR([openssl check failed])] + ) + +- have_openssl_engine="yes" +- AC_CHECK_FUNCS( +- [ \ ++ if test "${with_openssl_engine}" = "auto"; then ++ AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[ ++ #include <openssl/opensslv.h> ++ ]], ++ [[ ++ /* Version encoding: MNNFFPPS - see opensslv.h for details */ ++ #if OPENSSL_VERSION_NUMBER >= 0x30000000L ++ #error Engine supported disabled by default in OpenSSL 3.0+ ++ #endif ++ ]] ++ )], ++ [have_openssl_engine="yes"], ++ [have_openssl_engine="no"] ++ ) ++ if test "${have_openssl_engine}" = "yes"; then ++ AC_CHECK_FUNCS( ++ [ \ + ENGINE_load_builtin_engines \ + ENGINE_register_all_complete \ +- ENGINE_cleanup \ +- ], +- , +- [have_openssl_engine="no"; break] +- ) +- if test "${have_openssl_engine}" = "no"; then +- AC_CHECK_DECL( [ENGINE_cleanup], [have_openssl_engine="yes"],, +- [[ +- #include <openssl/engine.h> +- ]] ++ ], ++ , ++ [have_openssl_engine="no"; break] ++ ) ++ fi ++ else ++ have_openssl_engine="${with_openssl_engine}" ++ if test "${have_openssl_engine}" = "yes"; then ++ AC_CHECK_FUNCS( ++ [ \ ++ ENGINE_load_builtin_engines \ ++ ENGINE_register_all_complete \ ++ ], ++ , ++ [AC_MSG_ERROR([OpenSSL engine support not found])] + ) ++ fi + fi + if test "${have_openssl_engine}" = "yes"; then + AC_DEFINE([HAVE_OPENSSL_ENGINE], [1], [OpenSSL engine support available]) +https://sourceforge.net/p/openvpn/mailman/openvpn-devel/thread/20230903095545.0f6d9d03%40Akita/#msg37891128 + +From d6700ec0f5af2522bb4eb136d3760f5b1445c9d1 Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Sat, 2 Sep 2023 23:06:22 -0700 +Subject: [PATCH] configure: disable engines if OPENSSL_NO_ENGINE is defined + +Starting with LibreSSL 3.8.1 the engines have been removed which causes +the OpenVPN build to fail. This can be solved during configure by +checking if OPENSSL_NO_ENGINE is defined in opensslconf.h. +--- + configure.ac | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 2f65cbd5..1adfb9d4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -927,11 +927,17 @@ if test "${with_crypto_library}" = "openssl"; then + [AC_LANG_PROGRAM( + [[ + #include <openssl/opensslv.h> ++ #include <openssl/opensslconf.h> + ]], + [[ + /* Version encoding: MNNFFPPS - see opensslv.h for details */ + #if OPENSSL_VERSION_NUMBER >= 0x30000000L +- #error Engine supported disabled by default in OpenSSL 3.0+ ++ #error Engine support disabled by default in OpenSSL 3.0+ ++ #endif ++ ++ /* BoringSSL and LibreSSL >= 3.8.1 removed engine support */ ++ #ifdef OPENSSL_NO_ENGINE ++ #error Engine support disabled by default in openssl/opensslconf.h + #endif + ]] + )], diff --git a/net-vpn/openvpn/files/openvpn-2.5.7-libressl.patch b/net-vpn/openvpn/files/openvpn-2.5.7-libressl.patch new file mode 100644 index 0000000..5abe955 --- /dev/null +++ b/net-vpn/openvpn/files/openvpn-2.5.7-libressl.patch @@ -0,0 +1,37 @@ +https://sourceforge.net/p/openvpn/mailman/openvpn-devel/thread/20230903095545.0f6d9d03%40Akita/#msg37891128 + +From d6700ec0f5af2522bb4eb136d3760f5b1445c9d1 Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Sat, 2 Sep 2023 23:06:22 -0700 +Subject: [PATCH] configure: disable engines if OPENSSL_NO_ENGINE is defined + +Starting with LibreSSL 3.8.1 the engines have been removed which causes +the OpenVPN build to fail. This can be solved during configure by +checking if OPENSSL_NO_ENGINE is defined in opensslconf.h. +--- + configure.ac | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 2f65cbd5..1adfb9d4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -927,11 +927,17 @@ if test "${with_crypto_library}" = "openssl"; then + [AC_LANG_PROGRAM( + [[ + #include <openssl/opensslv.h> ++ #include <openssl/opensslconf.h> + ]], + [[ + /* Version encoding: MNNFFPPS - see opensslv.h for details */ + #if OPENSSL_VERSION_NUMBER >= 0x30000000L +- #error Engine supported disabled by default in OpenSSL 3.0+ ++ #error Engine support disabled by default in OpenSSL 3.0+ ++ #endif ++ ++ /* BoringSSL and LibreSSL >= 3.8.1 removed engine support */ ++ #ifdef OPENSSL_NO_ENGINE ++ #error Engine support disabled by default in openssl/opensslconf.h + #endif + ]] + )], diff --git a/net-vpn/openvpn/files/up.sh b/net-vpn/openvpn/files/up.sh new file mode 100644 index 0000000..6ce82d6 --- /dev/null +++ b/net-vpn/openvpn/files/up.sh @@ -0,0 +1,100 @@ +#!/bin/sh +# Copyright (c) 2006-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# Contributed by Roy Marples (uberlord@gentoo.org) + +# Setup our resolv.conf +# Vitally important that we use the domain entry in resolv.conf so we +# can setup the nameservers are for the domain ONLY in resolvconf if +# we're using a decent dns cache/forwarder like dnsmasq and NOT nscd/libc. +# nscd/libc users will get the VPN nameservers before their other ones +# and will use the first one that responds - maybe the LAN ones? +# non resolvconf users just the the VPN resolv.conf + +# FIXME:- if we have >1 domain, then we have to use search :/ +# We need to add a flag to resolvconf to say +# "these nameservers should only be used for the listed search domains +# if other global nameservers are present on other interfaces" +# This however, will break compatibility with Debians resolvconf +# A possible workaround would be to just list multiple domain lines +# and try and let resolvconf handle it + +min_route() { + local n=1 + local m + local r + + eval m="\$route_metric_$n" + while [ -n "${m}" ]; do + if [ -z "$r" ] || [ "$r" -gt "$m" ]; then + r="$m" + fi + n="$(($n+1))" + eval m="\$route_metric_$n" + done + + echo "$r" +} + +if [ "${PEER_DNS}" != "no" ]; then + NS= + DOMAIN= + SEARCH= + i=1 + while true ; do + eval opt=\$foreign_option_${i} + [ -z "${opt}" ] && break + if [ "${opt}" != "${opt#dhcp-option DOMAIN *}" ] ; then + if [ -z "${DOMAIN}" ] ; then + DOMAIN="${opt#dhcp-option DOMAIN *}" + else + SEARCH="${SEARCH}${SEARCH:+ }${opt#dhcp-option DOMAIN *}" + fi + elif [ "${opt}" != "${opt#dhcp-option DNS *}" ] ; then + NS="${NS}nameserver ${opt#dhcp-option DNS *}\n" + fi + i=$((${i} + 1)) + done + + if [ -n "${NS}" ] ; then + DNS="# Generated by openvpn for interface ${dev}\n" + if [ -n "${SEARCH}" ] ; then + DNS="${DNS}search ${DOMAIN} ${SEARCH}\n" + elif [ -n "${DOMAIN}" ]; then + DNS="${DNS}domain ${DOMAIN}\n" + fi + DNS="${DNS}${NS}" + if [ -x /sbin/resolvconf ] ; then + metric="$(min_route)" + printf "${DNS}" | /sbin/resolvconf -a "${dev}" ${metric:+-m ${metric}} + else + # Preserve the existing resolv.conf + if [ -e /etc/resolv.conf ] ; then + cp /etc/resolv.conf /etc/resolv.conf-"${dev}".sv + fi + printf "${DNS}" > /etc/resolv.conf + chmod 644 /etc/resolv.conf + fi + fi +fi + +# Below section is Gentoo specific +# Quick summary - our init scripts are re-entrant and set the SVCNAME env var +# as we could have >1 openvpn service + +if [ -n "${SVCNAME}" ]; then + # If we have a service specific script, run this now + if [ -x /etc/openvpn/"${SVCNAME}"-up.sh ] ; then + /etc/openvpn/"${SVCNAME}"-up.sh "$@" + fi + + # Re-enter the init script to start any dependant services + if ! /etc/init.d/"${SVCNAME}" --quiet status ; then + export IN_BACKGROUND=true + /etc/init.d/${SVCNAME} --quiet start + fi +fi + +exit 0 + +# vim: ts=4 : diff --git a/net-vpn/openvpn/metadata.xml b/net-vpn/openvpn/metadata.xml new file mode 100644 index 0000000..f3e8394 --- /dev/null +++ b/net-vpn/openvpn/metadata.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>chutzpah@gentoo.org</email> + <name>Patrick McLean</name> + </maintainer> + <maintainer type="person"> + <email>williamh@gentoo.org</email> + <name>William Hubbs</name> + </maintainer> + <longdescription>OpenVPN is an easy-to-use, robust and highly +configurable VPN daemon which can be used to securely link two or more +networks using an encrypted tunnel.</longdescription> + <use> + <flag name="dco">Enable support for kernel data channel offload</flag> + <flag name="down-root">Enable the down-root plugin</flag> + <flag name="iproute2">Enabled iproute2 support instead of net-tools</flag> + <flag name="mbedtls">Use mbed TLS as the backend crypto library</flag> + <flag name="openssl">Use OpenSSL as the backend crypto library</flag> + <flag name="pkcs11">Enable PKCS#11 smartcard support</flag> + <flag name="plugins">Enable the OpenVPN plugin system</flag> + </use> + <upstream> + <remote-id type="cpe">cpe:/a:openvpn:openvpn</remote-id> + <remote-id type="github">OpenVPN/openvpn</remote-id> + </upstream> +</pkgmetadata> diff --git a/net-vpn/openvpn/openvpn-2.5.2-r3.ebuild b/net-vpn/openvpn/openvpn-2.5.2-r3.ebuild new file mode 100644 index 0000000..02be010 --- /dev/null +++ b/net-vpn/openvpn/openvpn-2.5.2-r3.ebuild @@ -0,0 +1,199 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools flag-o-matic systemd linux-info tmpfiles + +DESCRIPTION="Robust and highly flexible tunneling application compatible with many OSes" +HOMEPAGE="https://openvpn.net/" + +if [[ ${PV} == "9999" ]]; then + EGIT_REPO_URI="https://github.com/OpenVPN/${PN}.git" + EGIT_SUBMODULES=(-cmocka) + + inherit git-r3 +else + SRC_URI="https://build.openvpn.net/downloads/releases/${P}.tar.xz" + KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~sparc x86" +fi + +LICENSE="GPL-2" +SLOT="0" + +IUSE="down-root examples inotify iproute2 +lz4 +lzo mbedtls +openssl" +IUSE+=" pam pkcs11 +plugins selinux systemd test" + +RESTRICT="!test? ( test )" +REQUIRED_USE=" + ^^ ( openssl mbedtls ) + pkcs11? ( !mbedtls ) + !plugins? ( !pam !down-root ) + inotify? ( plugins ) +" + +CDEPEND=" + kernel_linux? ( + iproute2? ( sys-apps/iproute2[-minimal] ) + ) + lz4? ( app-arch/lz4 ) + lzo? ( >=dev-libs/lzo-1.07 ) + mbedtls? ( net-libs/mbedtls:= ) + openssl? ( >=dev-libs/openssl-0.9.8:0= ) + pam? ( sys-libs/pam ) + pkcs11? ( >=dev-libs/pkcs11-helper-1.11 ) + systemd? ( sys-apps/systemd ) +" + +BDEPEND="virtual/pkgconfig" + +DEPEND="${CDEPEND} + test? ( dev-util/cmocka ) +" +RDEPEND="${CDEPEND} + acct-group/openvpn + acct-user/openvpn + selinux? ( sec-policy/selinux-openvpn ) +" + +if [[ ${PV} = "9999" ]]; then + BDEPEND+=" dev-python/docutils" +fi + +PATCHES=( + "${FILESDIR}"/openvpn-2.5.0-auth-pam-missing-header.patch + "${FILESDIR}"/openvpn-2.5.2-detect-python-rst2man.patch + "${FILESDIR}"/openvpn-2.5.2-libressl.patch +) + +pkg_setup() { + local CONFIG_CHECK="~TUN" + linux-info_pkg_setup +} + +src_prepare() { + default + + eautoreconf +} + +src_configure() { + local -a myeconfargs + + if ! use mbedtls; then + myeconfargs+=( + $(use_enable pkcs11) + ) + fi + + myeconfargs+=( + $(use_enable inotify async-push) + --with-crypto-library=$(usex mbedtls mbedtls openssl) + $(use_enable lz4) + $(use_enable lzo) + $(use_enable plugins) + $(use_enable iproute2) + $(use_enable pam plugin-auth-pam) + $(use_enable down-root plugin-down-root) + $(use_enable systemd) + ) + + SYSTEMD_UNIT_DIR=$(systemd_get_systemunitdir) \ + TMPFILES_DIR="/usr/lib/tmpfiles.d" \ + IPROUTE=$(usex iproute2 '/bin/ip' '') \ + econf "${myeconfargs[@]}" +} + +src_test() { + local -x RUN_SUDO=false + + elog "Running top-level tests" + emake check + + pushd tests/unit_tests &>/dev/null || die + elog "Running unit tests" + emake check + popd &>/dev/null || die +} + +src_install() { + default + + find "${ED}/usr" -name '*.la' -delete || die + + # install documentation + dodoc AUTHORS ChangeLog PORTS README README.IPv6 + + # Install some helper scripts + keepdir /etc/openvpn + exeinto /etc/openvpn + doexe "${FILESDIR}/up.sh" + doexe "${FILESDIR}/down.sh" + + # Install the init script and config file + newinitd "${FILESDIR}/${PN}-2.1.init" openvpn + newconfd "${FILESDIR}/${PN}-2.1.conf" openvpn + + # install examples, controlled by the respective useflag + if use examples ; then + # (is the below comment relevant anymore?) + ## dodoc does not supportly support directory traversal, #15193 + docinto examples + dodoc -r sample contrib + fi + + # https://bugs.gentoo.org/755680#c3 + doman doc/openvpn.8 +} + +pkg_postinst() { + tmpfiles_process openvpn.conf + + if use x64-macos ; then + elog "You might want to install tuntaposx for TAP interface support:" + elog "http://tuntaposx.sourceforge.net" + fi + + if systemd_is_booted || has_version sys-apps/systemd ; then + elog "In order to use OpenVPN with systemd please use the correct systemd service file." + elog "" + elog "server:" + elog "" + elog "- Place your server configuration file in /etc/openvpn/server" + elog "- Use the openvpn-server@.service like so" + elog "systemctl start openvpn-server@{Server-config}" + elog "" + elog "client:" + elog "" + elog "- Place your client configuration file in /etc/openvpn/client" + elog "- Use the openvpn-client@.service like so:" + elog "systemctl start openvpn-client@{Client-config}" + else + elog "The openvpn init script expects to find the configuration file" + elog "openvpn.conf in /etc/openvpn along with any extra files it may need." + elog "" + elog "To create more VPNs, simply create a new .conf file for it and" + elog "then create a symlink to the openvpn init script from a link called" + elog "openvpn.newconfname - like so" + elog " cd /etc/openvpn" + elog " ${EDITOR##*/} foo.conf" + elog " cd /etc/init.d" + elog " ln -s openvpn openvpn.foo" + elog "" + elog "You can then treat openvpn.foo as any other service, so you can" + elog "stop one vpn and start another if you need to." + fi + + if grep -Eq "^[ \t]*(up|down)[ \t].*" "${ROOT}/etc/openvpn"/*.conf 2>/dev/null ; then + ewarn "" + ewarn "WARNING: If you use the remote keyword then you are deemed to be" + ewarn "a client by our init script and as such we force up,down scripts." + ewarn "These scripts call /etc/openvpn/\$SVCNAME-{up,down}.sh where you" + ewarn "can move your scripts to." + fi + + if use plugins ; then + einfo "" + einfo "plugins have been installed into /usr/$(get_libdir)/${PN}/plugins" + fi +} diff --git a/net-vpn/openvpn/openvpn-2.5.6-r1.ebuild b/net-vpn/openvpn/openvpn-2.5.6-r1.ebuild new file mode 100644 index 0000000..9bd9396 --- /dev/null +++ b/net-vpn/openvpn/openvpn-2.5.6-r1.ebuild @@ -0,0 +1,198 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools flag-o-matic systemd linux-info tmpfiles + +DESCRIPTION="Robust and highly flexible tunneling application compatible with many OSes" +HOMEPAGE="https://openvpn.net/" + +if [[ ${PV} == "9999" ]]; then + EGIT_REPO_URI="https://github.com/OpenVPN/${PN}.git" + EGIT_SUBMODULES=(-cmocka) + + inherit git-r3 +else + SRC_URI="https://build.openvpn.net/downloads/releases/${P}.tar.xz" + KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~sparc x86" +fi + +LICENSE="GPL-2" +SLOT="0" + +IUSE="down-root examples inotify iproute2 +lz4 +lzo mbedtls +openssl" +IUSE+=" pam pkcs11 +plugins selinux systemd test" + +RESTRICT="!test? ( test )" +REQUIRED_USE=" + ^^ ( openssl mbedtls ) + pkcs11? ( !mbedtls ) + !plugins? ( !pam !down-root ) + inotify? ( plugins ) +" + +CDEPEND=" + kernel_linux? ( + iproute2? ( sys-apps/iproute2[-minimal] ) + ) + lz4? ( app-arch/lz4 ) + lzo? ( >=dev-libs/lzo-1.07 ) + mbedtls? ( net-libs/mbedtls:= ) + openssl? ( >=dev-libs/openssl-0.9.8:0= ) + pam? ( sys-libs/pam ) + pkcs11? ( >=dev-libs/pkcs11-helper-1.11 ) + systemd? ( sys-apps/systemd ) +" + +BDEPEND="virtual/pkgconfig" + +DEPEND="${CDEPEND} + test? ( dev-util/cmocka ) +" +RDEPEND="${CDEPEND} + acct-group/openvpn + acct-user/openvpn + selinux? ( sec-policy/selinux-openvpn ) +" + +if [[ ${PV} = "9999" ]]; then + BDEPEND+=" dev-python/docutils" +fi + +PATCHES=( + "${FILESDIR}"/openvpn-2.5.0-auth-pam-missing-header.patch + "${FILESDIR}"/openvpn-2.5.2-libressl.patch +) + +pkg_setup() { + local CONFIG_CHECK="~TUN" + linux-info_pkg_setup +} + +src_prepare() { + default + + eautoreconf +} + +src_configure() { + local -a myeconfargs + + if ! use mbedtls; then + myeconfargs+=( + $(use_enable pkcs11) + ) + fi + + myeconfargs+=( + $(use_enable inotify async-push) + --with-crypto-library=$(usex mbedtls mbedtls openssl) + $(use_enable lz4) + $(use_enable lzo) + $(use_enable plugins) + $(use_enable iproute2) + $(use_enable pam plugin-auth-pam) + $(use_enable down-root plugin-down-root) + $(use_enable systemd) + ) + + SYSTEMD_UNIT_DIR=$(systemd_get_systemunitdir) \ + TMPFILES_DIR="/usr/lib/tmpfiles.d" \ + IPROUTE=$(usex iproute2 '/bin/ip' '') \ + econf "${myeconfargs[@]}" +} + +src_test() { + local -x RUN_SUDO=false + + elog "Running top-level tests" + emake check + + pushd tests/unit_tests &>/dev/null || die + elog "Running unit tests" + emake check + popd &>/dev/null || die +} + +src_install() { + default + + find "${ED}/usr" -name '*.la' -delete || die + + # install documentation + dodoc AUTHORS ChangeLog PORTS README README.IPv6 + + # Install some helper scripts + keepdir /etc/openvpn + exeinto /etc/openvpn + doexe "${FILESDIR}/up.sh" + doexe "${FILESDIR}/down.sh" + + # Install the init script and config file + newinitd "${FILESDIR}/${PN}-2.1.init" openvpn + newconfd "${FILESDIR}/${PN}-2.1.conf" openvpn + + # install examples, controlled by the respective useflag + if use examples ; then + # (is the below comment relevant anymore?) + ## dodoc does not supportly support directory traversal, #15193 + docinto examples + dodoc -r sample contrib + fi + + # https://bugs.gentoo.org/755680#c3 + doman doc/openvpn.8 +} + +pkg_postinst() { + tmpfiles_process openvpn.conf + + if use x64-macos ; then + elog "You might want to install tuntaposx for TAP interface support:" + elog "http://tuntaposx.sourceforge.net" + fi + + if systemd_is_booted || has_version sys-apps/systemd ; then + elog "In order to use OpenVPN with systemd please use the correct systemd service file." + elog "" + elog "server:" + elog "" + elog "- Place your server configuration file in /etc/openvpn/server" + elog "- Use the openvpn-server@.service like so" + elog "systemctl start openvpn-server@{Server-config}" + elog "" + elog "client:" + elog "" + elog "- Place your client configuration file in /etc/openvpn/client" + elog "- Use the openvpn-client@.service like so:" + elog "systemctl start openvpn-client@{Client-config}" + else + elog "The openvpn init script expects to find the configuration file" + elog "openvpn.conf in /etc/openvpn along with any extra files it may need." + elog "" + elog "To create more VPNs, simply create a new .conf file for it and" + elog "then create a symlink to the openvpn init script from a link called" + elog "openvpn.newconfname - like so" + elog " cd /etc/openvpn" + elog " ${EDITOR##*/} foo.conf" + elog " cd /etc/init.d" + elog " ln -s openvpn openvpn.foo" + elog "" + elog "You can then treat openvpn.foo as any other service, so you can" + elog "stop one vpn and start another if you need to." + fi + + if grep -Eq "^[ \t]*(up|down)[ \t].*" "${ROOT}/etc/openvpn"/*.conf 2>/dev/null ; then + ewarn "" + ewarn "WARNING: If you use the remote keyword then you are deemed to be" + ewarn "a client by our init script and as such we force up,down scripts." + ewarn "These scripts call /etc/openvpn/\$SVCNAME-{up,down}.sh where you" + ewarn "can move your scripts to." + fi + + if use plugins ; then + einfo "" + einfo "plugins have been installed into /usr/$(get_libdir)/${PN}/plugins" + fi +} diff --git a/net-vpn/openvpn/openvpn-2.5.7-r1.ebuild b/net-vpn/openvpn/openvpn-2.5.7-r1.ebuild new file mode 100644 index 0000000..205f6ce --- /dev/null +++ b/net-vpn/openvpn/openvpn-2.5.7-r1.ebuild @@ -0,0 +1,195 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools flag-o-matic systemd linux-info tmpfiles + +DESCRIPTION="Robust and highly flexible tunneling application compatible with many OSes" +HOMEPAGE="https://openvpn.net/" + +if [[ ${PV} == "9999" ]]; then + EGIT_REPO_URI="https://github.com/OpenVPN/${PN}.git" + EGIT_SUBMODULES=(-cmocka) + + inherit git-r3 +else + SRC_URI="https://build.openvpn.net/downloads/releases/${P}.tar.xz" + KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86" +fi + +LICENSE="GPL-2" +SLOT="0" + +IUSE="down-root examples inotify iproute2 +lz4 +lzo mbedtls +openssl" +IUSE+=" pam pkcs11 +plugins selinux systemd test" + +RESTRICT="!test? ( test )" +REQUIRED_USE=" + ^^ ( openssl mbedtls ) + pkcs11? ( !mbedtls ) + !plugins? ( !pam !down-root ) + inotify? ( plugins ) +" + +CDEPEND=" + kernel_linux? ( + iproute2? ( sys-apps/iproute2[-minimal] ) + ) + lz4? ( app-arch/lz4 ) + lzo? ( >=dev-libs/lzo-1.07 ) + mbedtls? ( net-libs/mbedtls:= ) + openssl? ( >=dev-libs/openssl-0.9.8:0= ) + pam? ( sys-libs/pam ) + pkcs11? ( >=dev-libs/pkcs11-helper-1.11 ) + systemd? ( sys-apps/systemd ) +" + +BDEPEND="virtual/pkgconfig" + +DEPEND="${CDEPEND} + test? ( dev-util/cmocka ) +" +RDEPEND="${CDEPEND} + acct-group/openvpn + acct-user/openvpn + selinux? ( sec-policy/selinux-openvpn ) +" + +PATCHES=( "${FILESDIR}"/openvpn-2.5.7-libressl.patch ) + +if [[ ${PV} = "9999" ]]; then + BDEPEND+=" dev-python/docutils" +fi + +pkg_setup() { + local CONFIG_CHECK="~TUN" + linux-info_pkg_setup +} + +src_prepare() { + default + + eautoreconf +} + +src_configure() { + local -a myeconfargs + + if ! use mbedtls; then + myeconfargs+=( + $(use_enable pkcs11) + ) + fi + + myeconfargs+=( + $(use_enable inotify async-push) + --with-crypto-library=$(usex mbedtls mbedtls openssl) + $(use_enable lz4) + $(use_enable lzo) + $(use_enable plugins) + $(use_enable iproute2) + $(use_enable pam plugin-auth-pam) + $(use_enable down-root plugin-down-root) + $(use_enable systemd) + ) + + SYSTEMD_UNIT_DIR=$(systemd_get_systemunitdir) \ + TMPFILES_DIR="/usr/lib/tmpfiles.d" \ + IPROUTE=$(usex iproute2 '/bin/ip' '') \ + econf "${myeconfargs[@]}" +} + +src_test() { + local -x RUN_SUDO=false + + elog "Running top-level tests" + emake check + + pushd tests/unit_tests &>/dev/null || die + elog "Running unit tests" + emake check + popd &>/dev/null || die +} + +src_install() { + default + + find "${ED}/usr" -name '*.la' -delete || die + + # install documentation + dodoc AUTHORS ChangeLog PORTS README README.IPv6 + + # Install some helper scripts + keepdir /etc/openvpn + exeinto /etc/openvpn + doexe "${FILESDIR}/up.sh" + doexe "${FILESDIR}/down.sh" + + # Install the init script and config file + newinitd "${FILESDIR}/${PN}-2.1.init" openvpn + newconfd "${FILESDIR}/${PN}-2.1.conf" openvpn + + # install examples, controlled by the respective useflag + if use examples ; then + # (is the below comment relevant anymore?) + ## dodoc does not supportly support directory traversal, #15193 + docinto examples + dodoc -r sample contrib + fi + + # https://bugs.gentoo.org/755680#c3 + doman doc/openvpn.8 +} + +pkg_postinst() { + tmpfiles_process openvpn.conf + + if use x64-macos ; then + elog "You might want to install tuntaposx for TAP interface support:" + elog "http://tuntaposx.sourceforge.net" + fi + + if systemd_is_booted || has_version sys-apps/systemd ; then + elog "In order to use OpenVPN with systemd please use the correct systemd service file." + elog "" + elog "server:" + elog "" + elog "- Place your server configuration file in /etc/openvpn/server" + elog "- Use the openvpn-server@.service like so" + elog "systemctl start openvpn-server@{Server-config}" + elog "" + elog "client:" + elog "" + elog "- Place your client configuration file in /etc/openvpn/client" + elog "- Use the openvpn-client@.service like so:" + elog "systemctl start openvpn-client@{Client-config}" + else + elog "The openvpn init script expects to find the configuration file" + elog "openvpn.conf in /etc/openvpn along with any extra files it may need." + elog "" + elog "To create more VPNs, simply create a new .conf file for it and" + elog "then create a symlink to the openvpn init script from a link called" + elog "openvpn.newconfname - like so" + elog " cd /etc/openvpn" + elog " ${EDITOR##*/} foo.conf" + elog " cd /etc/init.d" + elog " ln -s openvpn openvpn.foo" + elog "" + elog "You can then treat openvpn.foo as any other service, so you can" + elog "stop one vpn and start another if you need to." + fi + + if grep -Eq "^[ \t]*(up|down)[ \t].*" "${ROOT}/etc/openvpn"/*.conf 2>/dev/null ; then + ewarn "" + ewarn "WARNING: If you use the remote keyword then you are deemed to be" + ewarn "a client by our init script and as such we force up,down scripts." + ewarn "These scripts call /etc/openvpn/\$SVCNAME-{up,down}.sh where you" + ewarn "can move your scripts to." + fi + + if use plugins ; then + einfo "" + einfo "plugins have been installed into /usr/$(get_libdir)/${PN}/plugins" + fi +} diff --git a/net-vpn/openvpn/openvpn-2.6.4.ebuild b/net-vpn/openvpn/openvpn-2.6.4.ebuild new file mode 100644 index 0000000..8d454f2 --- /dev/null +++ b/net-vpn/openvpn/openvpn-2.6.4.ebuild @@ -0,0 +1,197 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools systemd linux-info tmpfiles + +DESCRIPTION="Robust and highly flexible tunneling application compatible with many OSes" +HOMEPAGE="https://openvpn.net/" + +if [[ ${PV} == "9999" ]]; then + EGIT_REPO_URI="https://github.com/OpenVPN/${PN}.git" + inherit git-r3 +else + SRC_URI="https://build.openvpn.net/downloads/releases/${P}.tar.gz" + KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv x86" +fi + +LICENSE="GPL-2" +SLOT="0" + +IUSE="dco down-root examples inotify iproute2 +lz4 +lzo mbedtls +openssl" +IUSE+=" pam pkcs11 +plugins selinux systemd test" + +RESTRICT="!test? ( test )" +REQUIRED_USE=" + ^^ ( openssl mbedtls ) + pkcs11? ( !mbedtls ) + !plugins? ( !pam !down-root ) + inotify? ( plugins ) + dco? ( !iproute2 ) +" + +CDEPEND=" + kernel_linux? ( + iproute2? ( sys-apps/iproute2[-minimal] ) + ) + lz4? ( app-arch/lz4 ) + lzo? ( >=dev-libs/lzo-1.07 ) + mbedtls? ( net-libs/mbedtls:= ) + openssl? ( >=dev-libs/openssl-1.0.2:0= ) + pam? ( sys-libs/pam ) + pkcs11? ( >=dev-libs/pkcs11-helper-1.11 ) + systemd? ( sys-apps/systemd ) + dco? ( >=net-vpn/ovpn-dco-0.2 >=dev-libs/libnl-3.2.29:= ) + sys-libs/libcap-ng:= +" + +BDEPEND="virtual/pkgconfig" + +DEPEND="${CDEPEND} + test? ( dev-util/cmocka ) +" +RDEPEND="${CDEPEND} + acct-group/openvpn + acct-user/openvpn + selinux? ( sec-policy/selinux-openvpn ) +" + +if [[ ${PV} = "9999" ]]; then + BDEPEND+=" dev-python/docutils" +fi + +PATCHES=( "${FILESDIR}"/openvpn-2.5.7-libressl.patch ) + +pkg_setup() { + local CONFIG_CHECK="~TUN" + linux-info_pkg_setup +} + +src_prepare() { + default + + eautoreconf +} + +src_configure() { + local -a myeconfargs + + if ! use mbedtls; then + myeconfargs+=( + $(use_enable pkcs11) + ) + fi + + myeconfargs+=( + $(use_enable inotify async-push) + --with-crypto-library=$(usex mbedtls mbedtls openssl) + $(use_enable lz4) + $(use_enable lzo) + $(use_enable plugins) + $(use_enable iproute2) + $(use_enable pam plugin-auth-pam) + $(use_enable down-root plugin-down-root) + $(use_enable systemd) + $(use_enable dco) + ) + + SYSTEMD_UNIT_DIR=$(systemd_get_systemunitdir) \ + TMPFILES_DIR="/usr/lib/tmpfiles.d" \ + IPROUTE=$(usex iproute2 '/bin/ip' '') \ + econf "${myeconfargs[@]}" +} + +src_test() { + local -x RUN_SUDO=false + + elog "Running top-level tests" + emake check + + pushd tests/unit_tests &>/dev/null || die + elog "Running unit tests" + emake check + popd &>/dev/null || die +} + +src_install() { + default + + find "${ED}/usr" -name '*.la' -delete || die + + # install documentation + dodoc AUTHORS ChangeLog PORTS README + + # Install some helper scripts + keepdir /etc/openvpn + exeinto /etc/openvpn + doexe "${FILESDIR}/up.sh" + doexe "${FILESDIR}/down.sh" + + # Install the init script and config file + newinitd "${FILESDIR}/${PN}-2.1.init" openvpn + newconfd "${FILESDIR}/${PN}-2.1.conf" openvpn + + # install examples, controlled by the respective useflag + if use examples ; then + # (is the below comment relevant anymore?) + ## dodoc does not supportly support directory traversal, #15193 + docinto examples + dodoc -r sample contrib + fi + + # https://bugs.gentoo.org/755680#c3 + doman doc/openvpn.8 +} + +pkg_postinst() { + tmpfiles_process openvpn.conf + + if use x64-macos ; then + elog "You might want to install tuntaposx for TAP interface support:" + elog "http://tuntaposx.sourceforge.net" + fi + + if systemd_is_booted || has_version sys-apps/systemd ; then + elog "In order to use OpenVPN with systemd please use the correct systemd service file." + elog "" + elog "server:" + elog "" + elog "- Place your server configuration file in /etc/openvpn/server" + elog "- Use the openvpn-server@.service like so" + elog "systemctl start openvpn-server@{Server-config}" + elog "" + elog "client:" + elog "" + elog "- Place your client configuration file in /etc/openvpn/client" + elog "- Use the openvpn-client@.service like so:" + elog "systemctl start openvpn-client@{Client-config}" + else + elog "The openvpn init script expects to find the configuration file" + elog "openvpn.conf in /etc/openvpn along with any extra files it may need." + elog "" + elog "To create more VPNs, simply create a new .conf file for it and" + elog "then create a symlink to the openvpn init script from a link called" + elog "openvpn.newconfname - like so" + elog " cd /etc/openvpn" + elog " ${EDITOR##*/} foo.conf" + elog " cd /etc/init.d" + elog " ln -s openvpn openvpn.foo" + elog "" + elog "You can then treat openvpn.foo as any other service, so you can" + elog "stop one vpn and start another if you need to." + fi + + if grep -Eq "^[ \t]*(up|down)[ \t].*" "${ROOT}/etc/openvpn"/*.conf 2>/dev/null ; then + ewarn "" + ewarn "WARNING: If you use the remote keyword then you are deemed to be" + ewarn "a client by our init script and as such we force up,down scripts." + ewarn "These scripts call /etc/openvpn/\$SVCNAME-{up,down}.sh where you" + ewarn "can move your scripts to." + fi + + if use plugins ; then + einfo "" + einfo "plugins have been installed into /usr/$(get_libdir)/${PN}/plugins" + fi +} diff --git a/net-vpn/tor/Manifest b/net-vpn/tor/Manifest new file mode 100644 index 0000000..06f3b10 --- /dev/null +++ b/net-vpn/tor/Manifest @@ -0,0 +1,12 @@ +DIST tor-0.4.7.13.tar.gz 8031948 BLAKE2B 338a0a541423f27f594a091307b5edeafc9826bb651c2bd050f3282c9355d9d43d1ef4791f3c98a37dc4c0f64bc40925ea1c1e32cbdff78b1a7308df501f279a SHA512 0900416887afbb24f7b72e6ef181b7b01308d1bb35c37736f3b13e06810a07febf9f47fadd9ff6c0e73204d93b49545e4e2516906eb3ba74398ad2b299f530be +DIST tor-0.4.7.13.tar.gz.sha256sum 86 BLAKE2B 339db9869bfe485cbd328fe942cc23e60c08ad67fc2d9e7927ed3c9f3b606192e5efac34013c5bf0b0e8b26e957dcf8b586e1cc0a0c27756b8b3d823af37fdee SHA512 ec1d19fa662255df5dd575ba943f4ccb30d9dfa49ff656cdfa73df2d24248b52a3bfd715f4d3efe11d8129968b0e06e3c75e8d82416e1807020ebf65f65401a0 +DIST tor-0.4.7.13.tar.gz.sha256sum.asc 716 BLAKE2B 968a3852293ab9bcadac626862c9dc360b17de5afd00af7c46358fa2adfc03b55c02dfe029e9427efba999f553489a04388b395e8fb8fe16325e0895663c2deb SHA512 eb78e8369941d8de833e3616a9a1c1e59b0d3dde918353e2f4fa5eb5da09f038238c46f5e180844bd3cba1211a9daa6d60e9ddb5690998e27a6b7d1616aa20cc +DIST tor-0.4.7.16.tar.gz 8120424 BLAKE2B 59b7cf6b69cf552caac09ab000732bf6fa6cd5a171f00e86bea5a89ba9ce548e404fa7adb25d3aebed9f500b15ae2ca5272b07f61921f19bc5bc71b3f42a88e6 SHA512 4b1e08f158369dfd51f72a45b67fccb42095980c674e94c7a917f44996783296544b15ec1cbb7506f78d2a1473679326a128501d4341bb0251966770cf6a3d1b +DIST tor-0.4.7.16.tar.gz.sha256sum 86 BLAKE2B 8468b7728bb47ee1e27b2895f264f1fbbb4e21a20532da76bf7b5de139b7d1c5307a9016159ee834b4f696f156acfb6f252c95d094e62480ce36a7414815cc71 SHA512 858bb461c4d7a10b32aa4088c5e75eaa6527211314bfa02197578dfb8837cc263abe06ea565a352e6255eb0b1c7c1b80807713b1906f52c2bf883b6c945345d2 +DIST tor-0.4.7.16.tar.gz.sha256sum.asc 716 BLAKE2B 108bf2ba3c5678da0be72e6816b3ebe981d56733ddae00bcc79ecae050753580df3da2c2aef179310efc426e7caa5e6df991ac9e4b87d4a7aaa53556e00fb8ce SHA512 9595dbedef35fabdd0b19bf055329580326447cefd269c21c8e73c9f65f2f02ec70fdf3431255b4b3356d3d82175c8a5c99d0368bf733c63d87d81ca9f7ce4a3 +DIST tor-0.4.8.10.tar.gz 8272740 BLAKE2B ef470664d85e019f6cac2366e934d5dc31b8ae92f121a2b4c8c95f8267abce5ce4413d30a24affa40a069d587212364ae5a7c3cd114488e50a535f01c54c6e77 SHA512 3827902541a0289ed1bfcae9bb0ac8bf8dee7bedacbfdf9c703bb38c3c586d1cfe5eeb20a477664e10a2b81b90a7fd5d623e556f3ee32aad4f8a9f828bc4dd83 +DIST tor-0.4.8.10.tar.gz.sha256sum 86 BLAKE2B 1410a5e7e486c7c33b6b217a53d250bc3e1d76c87e74ad29f6c6a67cbdacb3627521cc8936f7e8e8d72c3333078cede222d13c825b8d66df7c1d50721043f89e SHA512 853a88b75ecd195e6b155361c8321b575c5fd526f5d73da8b5de99ac875b2f22f2b8668f7c9a68a8e599170290041533345fd324dd56a0102d5cd5ddf8020461 +DIST tor-0.4.8.10.tar.gz.sha256sum.asc 716 BLAKE2B 0154ef1defa1a8227813ef3589f1fd4215f5bd305447fec1404f7950c0b89e6d9fcb6686900e4819d0f1a635d3b08e60cdc9c96a4f74e603185afb6eb1e29279 SHA512 aaeee664c9342a6cddaacfeea6e6974ce374d746153a28943dee1db3db48a8e08f36a076856358819cae8ea2f8b7d912d0e6dc2dc772465dba3283b553f43b91 +DIST tor-0.4.8.11.tar.gz 9690074 BLAKE2B b7f5bb855a6f8fe7dfd0e0efe7b48798e9d4642e401641c83554ed0f98fe238a5f303e9466e9e24a7ade63488a745b3c957ed6cc53a2f5e21f5f9c3f78f7fa78 SHA512 186fb690a751b4c0dda87afc741627a4c8c9b1a781b295dcf25b767c40c3b62664c08c63fc98f80095af76dfa1060b42e19936941528d091db50fafdce88be6e +DIST tor-0.4.8.11.tar.gz.sha256sum 86 BLAKE2B 062077991dc4ca70c457a7c1a70c815d288b5afcd54246a51dd86685454fb0cf52aa8e12974e7909ef2c0b8e764c369278113c5b7d84e866fad0a66bdff93ebc SHA512 061411e2e5695fec84fcade7cf8ed36e14d5ea3ccfab7b0d7abdb53a57ca1d3647f73f416e5cc55c0d11f8d5405bba1a972d0b8ed05e6e20d088de57eac027bf +DIST tor-0.4.8.11.tar.gz.sha256sum.asc 1321 BLAKE2B fbb12fbef8ef2c33a0a1c40eefb7b180e63f1d0c97ef15352e209a55decdcbfee3ed82be0ce28e95e47dc22f85602ff53008d585b15c82e2b669f39d987c106a SHA512 9f35e5a17293f4e5175fb617de913ad2622a695461d0f5fb78ad8b942c6af1e8d1de782e6bb06796ce7e8acb70c0c9c75ff6d6ac605defb73526c26dbe313546 diff --git a/net-vpn/tor/files/README.gentoo b/net-vpn/tor/files/README.gentoo new file mode 100644 index 0000000..35214ac --- /dev/null +++ b/net-vpn/tor/files/README.gentoo @@ -0,0 +1,8 @@ +We created a configuration file for tor, /etc/tor/torrc, but you can +change it according to your needs. Use the torrc.sample that is in +that directory as a guide. Also, to have privoxy work with tor +just add the following line + +forward-socks4a / localhost:9050 . + +to /etc/privoxy/config. Notice the . at the end! diff --git a/net-vpn/tor/files/tor-0.2.7.4-torrc.sample.patch b/net-vpn/tor/files/tor-0.2.7.4-torrc.sample.patch new file mode 100644 index 0000000..5f9e258 --- /dev/null +++ b/net-vpn/tor/files/tor-0.2.7.4-torrc.sample.patch @@ -0,0 +1,31 @@ +diff -Nuar tor-0.2.7.4-rc.orig/src/config/torrc.sample.in tor-0.2.7.4-rc/src/config/torrc.sample.in +--- tor-0.2.7.4-rc.orig/src/config/torrc.sample.in 2015-10-19 11:12:53.000000000 -0400 ++++ tor-0.2.7.4-rc/src/config/torrc.sample.in 2015-10-21 21:18:49.151973113 -0400 +@@ -12,6 +12,11 @@ + ## Tor will look for this file in various places based on your platform: + ## https://www.torproject.org/docs/faq#torrc + ++## Default username and group the server will run as ++User tor ++ ++PIDFile /run/tor/tor.pid ++ + ## Tor opens a SOCKS proxy on port 9050 by default -- even if you don't + ## configure one below. Set "SOCKSPort 0" if you plan to run Tor only + ## as a relay, and not make any local application connections yourself. +@@ -42,6 +47,7 @@ + #Log notice syslog + ## To send all messages to stderr: + #Log debug stderr ++Log warn syslog + + ## Uncomment this to start the process in the background... or use + ## --runasdaemon 1 on the command line. This is ignored on Windows; +@@ -51,6 +57,7 @@ + ## The directory for keeping all the keys/etc. By default, we store + ## things in $HOME/.tor on Unix, and in Application Data\tor on Windows. + #DataDirectory @LOCALSTATEDIR@/lib/tor ++DataDirectory /var/lib/tor/data + + ## The port on which Tor will listen for local connections from Tor + ## controller applications, as documented in control-spec.txt. diff --git a/net-vpn/tor/files/tor-0.4.7.13-libressl.patch b/net-vpn/tor/files/tor-0.4.7.13-libressl.patch new file mode 100644 index 0000000..bba0c45 --- /dev/null +++ b/net-vpn/tor/files/tor-0.4.7.13-libressl.patch @@ -0,0 +1,202 @@ +Upstream-MR: https://gitlab.torproject.org/tpo/core/tor/-/merge_requests/598 +Upstream-Commit: https://gitlab.torproject.org/tpo/core/tor/-/commit/da52d7206a4a8e4fa8b5e80b5ed73de50fbe8692 +Upstream-MR: https://gitlab.torproject.org/tpo/core/tor/-/merge_requests/713 +Upstream-Commit: https://gitlab.torproject.org/tpo/core/tor/-/commit/9850dc59c0db5cbcadc314be8d324a992880fce1 + +From f3dabd705f26c56076934323f24b5b05ecdfd39c Mon Sep 17 00:00:00 2001 +From: "Alex Xu (Hello71)" <alex_y_xu@yahoo.ca> +Date: Tue, 5 Jul 2022 11:37:30 -0400 +Subject: [PATCH 1/2] LibreSSL 3.5 compatibility + +LibreSSL is now closer to OpenSSL 1.1 than OpenSSL 1.0. According to +https://undeadly.org/cgi?action=article;sid=20220116121253, this is the +intention of OpenBSD developers. + +According to #40630, many special cases are needed to compile Tor against +LibreSSL 3.5 when using Tor's OpenSSL 1.0 compatibility mode, whereas only a +small number of #defines are required when using OpenSSL 1.1 compatibility +mode. One additional workaround is required for LibreSSL 3.4 compatibility. + +Compiles and passes unit tests with LibreSSL 3.4.3 and 3.5.1. +--- + configure.ac | 2 +- + src/lib/crypt_ops/compat_openssl.h | 22 +++++++++++++--------- + src/lib/crypt_ops/crypto_openssl_mgt.h | 3 +-- + src/lib/crypt_ops/crypto_rsa_openssl.c | 8 +++++--- + 4 files changed, 20 insertions(+), 15 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 8baae007cf..6ab7903010 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1022,7 +1022,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + AC_MSG_CHECKING([for OpenSSL < 1.0.1]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <openssl/opensslv.h> +-#if !defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x1000100fL ++#if OPENSSL_VERSION_NUMBER < 0x1000100fL + #error "too old" + #endif + ]], [[]])], +diff --git a/src/lib/crypt_ops/compat_openssl.h b/src/lib/crypt_ops/compat_openssl.h +index 0f56f338b5..c5eccdb015 100644 +--- a/src/lib/crypt_ops/compat_openssl.h ++++ b/src/lib/crypt_ops/compat_openssl.h +@@ -20,32 +20,36 @@ + * \brief compatibility definitions for working with different openssl forks + **/ + +-#if !defined(LIBRESSL_VERSION_NUMBER) && \ +- OPENSSL_VERSION_NUMBER < OPENSSL_V_SERIES(1,0,1) ++#if OPENSSL_VERSION_NUMBER < OPENSSL_V_SERIES(1,0,1) + #error "We require OpenSSL >= 1.0.1" + #endif + +-#if OPENSSL_VERSION_NUMBER >= OPENSSL_V_SERIES(1,1,0) && \ +- ! defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER >= OPENSSL_V_SERIES(1,1,0) + /* We define this macro if we're trying to build with the majorly refactored + * API in OpenSSL 1.1 */ + #define OPENSSL_1_1_API + #endif /* OPENSSL_VERSION_NUMBER >= OPENSSL_V_SERIES(1,1,0) && ... */ + +-#ifndef OPENSSL_1_1_API +-#define OpenSSL_version(v) SSLeay_version(v) +-#define tor_OpenSSL_version_num() SSLeay() ++/* LibreSSL claims to be OpenSSL 2.0 but lacks these OpenSSL 1.1 APIs */ ++#if !defined(OPENSSL_1_1_API) || defined(LIBRESSL_VERSION_NUMBER) + #define RAND_OpenSSL() RAND_SSLeay() + #define STATE_IS_SW_SERVER_HELLO(st) \ + (((st) == SSL3_ST_SW_SRVR_HELLO_A) || \ + ((st) == SSL3_ST_SW_SRVR_HELLO_B)) + #define OSSL_HANDSHAKE_STATE int + #define CONST_IF_OPENSSL_1_1_API +-#else /* defined(OPENSSL_1_1_API) */ +-#define tor_OpenSSL_version_num() OpenSSL_version_num() ++#else + #define STATE_IS_SW_SERVER_HELLO(st) \ + ((st) == TLS_ST_SW_SRVR_HELLO) + #define CONST_IF_OPENSSL_1_1_API const ++#endif ++ ++/* OpenSSL 1.1 and LibreSSL both have these APIs */ ++#ifndef OPENSSL_1_1_API ++#define OpenSSL_version(v) SSLeay_version(v) ++#define tor_OpenSSL_version_num() SSLeay() ++#else /* defined(OPENSSL_1_1_API) */ ++#define tor_OpenSSL_version_num() OpenSSL_version_num() + #endif /* !defined(OPENSSL_1_1_API) */ + + #endif /* defined(ENABLE_OPENSSL) */ +diff --git a/src/lib/crypt_ops/crypto_openssl_mgt.h b/src/lib/crypt_ops/crypto_openssl_mgt.h +index c6f63ffa08..96a37721dd 100644 +--- a/src/lib/crypt_ops/crypto_openssl_mgt.h ++++ b/src/lib/crypt_ops/crypto_openssl_mgt.h +@@ -54,8 +54,7 @@ + #define DISABLE_ENGINES + #endif + +-#if OPENSSL_VERSION_NUMBER >= OPENSSL_VER(1,1,0,0,5) && \ +- !defined(LIBRESSL_VERSION_NUMBER) ++#if OPENSSL_VERSION_NUMBER >= OPENSSL_VER(1,1,0,0,5) + /* OpenSSL as of 1.1.0pre4 has an "new" thread API, which doesn't require + * setting up various callbacks. + * +diff --git a/src/lib/crypt_ops/crypto_rsa_openssl.c b/src/lib/crypt_ops/crypto_rsa_openssl.c +index a21c4a65cf..544d72e6ca 100644 +--- a/src/lib/crypt_ops/crypto_rsa_openssl.c ++++ b/src/lib/crypt_ops/crypto_rsa_openssl.c +@@ -572,7 +572,9 @@ static bool + rsa_private_key_too_long(RSA *rsa, int max_bits) + { + const BIGNUM *n, *e, *p, *q, *d, *dmp1, *dmq1, *iqmp; +-#ifdef OPENSSL_1_1_API ++#if defined(OPENSSL_1_1_API) && \ ++ (!defined(LIBRESSL_VERSION_NUMBER) || \ ++ LIBRESSL_VERSION_NUMBER >= OPENSSL_V_SERIES(3,5,0)) + + #if OPENSSL_VERSION_NUMBER >= OPENSSL_V_SERIES(1,1,1) + n = RSA_get0_n(rsa); +@@ -591,7 +593,7 @@ rsa_private_key_too_long(RSA *rsa, int max_bits) + + if (RSA_bits(rsa) > max_bits) + return true; +-#else /* !defined(OPENSSL_1_1_API) */ ++#else /* !defined(OPENSSL_1_1_API) && ... */ + n = rsa->n; + e = rsa->e; + p = rsa->p; +@@ -600,7 +602,7 @@ rsa_private_key_too_long(RSA *rsa, int max_bits) + dmp1 = rsa->dmp1; + dmq1 = rsa->dmq1; + iqmp = rsa->iqmp; +-#endif /* defined(OPENSSL_1_1_API) */ ++#endif /* defined(OPENSSL_1_1_API) && ... */ + + if (n && BN_num_bits(n) > max_bits) + return true; +-- +GitLab + + +From b1545b6d18fbef6c790e2731a814fa54230d8857 Mon Sep 17 00:00:00 2001 +From: "Alex Xu (Hello71)" <alex_y_xu@yahoo.ca> +Date: Tue, 19 Jul 2022 16:18:29 -0400 +Subject: [PATCH 2/2] Changes file for #40630 (LibreSSL 3.5 compatibility) + +--- + changes/issue40630 | 3 +++ + 1 file changed, 3 insertions(+) + create mode 100644 changes/issue40630 + +diff --git a/changes/issue40630 b/changes/issue40630 +new file mode 100644 +index 0000000000..faf04941b6 +--- /dev/null ++++ b/changes/issue40630 +@@ -0,0 +1,3 @@ ++ o Minor features (portability, compilation): ++ - Use OpenSSL 1.1 APIs for LibreSSL, fixing LibreSSL 3.5 compatibility. ++ Fixes issue 40630; patch by Alex Xu (Hello71). +-- +GitLab + +From 9850dc59c0db5cbcadc314be8d324a992880fce1 Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Mon, 29 May 2023 12:56:37 -0700 +Subject: [PATCH] tls: Disable a warning with LibreSSL >= 3.8.0 + +Skip a warning using EC_GFp_nist_method() which was removed in LibreSSL +3.8. + +Based on a patch from OpenBSD. + +https://github.com/openbsd/ports/commit/33fe251a08cb11f30ce6094a2e0759c3bb63ed16 + +These functions are deprecated since OpenSSL 3.0. + +https://www.openssl.org/docs/man3.1/man3/EC_GFp_nist_method.html +--- + src/lib/tls/tortls_openssl.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/lib/tls/tortls_openssl.c b/src/lib/tls/tortls_openssl.c +index 12260c09d3..c0a89ac272 100644 +--- a/src/lib/tls/tortls_openssl.c ++++ b/src/lib/tls/tortls_openssl.c +@@ -340,8 +340,10 @@ tor_tls_init(void) + SSL_load_error_strings(); + #endif /* defined(OPENSSL_1_1_API) */ + +-#if (SIZEOF_VOID_P >= 8 && \ +- OPENSSL_VERSION_NUMBER >= OPENSSL_V_SERIES(1,0,1)) ++#if (SIZEOF_VOID_P >= 8 && \ ++ OPENSSL_VERSION_NUMBER >= OPENSSL_V_SERIES(1,0,1) && \ ++ (!defined(LIBRESSL_VERSION_NUMBER) || \ ++ LIBRESSL_VERSION_NUMBER < 0x3080000fL)) + long version = tor_OpenSSL_version_num(); + + /* LCOV_EXCL_START : we can't test these lines on the same machine */ +-- +GitLab + diff --git a/net-vpn/tor/files/tor-0.4.7.13-opensslconf.patch b/net-vpn/tor/files/tor-0.4.7.13-opensslconf.patch new file mode 100644 index 0000000..a92c9a3 --- /dev/null +++ b/net-vpn/tor/files/tor-0.4.7.13-opensslconf.patch @@ -0,0 +1,55 @@ +https://gitlab.torproject.org/tpo/core/tor/-/merge_requests/754 + +From 48f8d6918977673125d53a85d19d709136106739 Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Thu, 31 Aug 2023 14:35:52 -0700 +Subject: [PATCH] crypt_openssl_mgt: define DISABLE_ENGINES after + OPENSSL_NO_ENGINE + +With LibreSSL-3.8.1 these engines are no long available causing a build +failure, but LibreSSL correctly defines OPENSSL_NO_ENGINE as part of its +opensslfeatures.h. However Tor includes crypto_openssl_mgt.h before any +of the openssl includes which would define OPENSSL_NO_ENGINE and then +fails to define DISABLE_ENGINES. + +As the define is used in only a single .c file it is best to move it +there. + +Signed-off-by: orbea <orbea@riseup.net> +--- + src/lib/crypt_ops/crypto_openssl_mgt.c | 5 +++++ + src/lib/crypt_ops/crypto_openssl_mgt.h | 5 ----- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/lib/crypt_ops/crypto_openssl_mgt.c b/src/lib/crypt_ops/crypto_openssl_mgt.c +index 6c01cb6aa8..ca12a82518 100644 +--- a/src/lib/crypt_ops/crypto_openssl_mgt.c ++++ b/src/lib/crypt_ops/crypto_openssl_mgt.c +@@ -40,6 +40,11 @@ ENABLE_GCC_WARNING("-Wredundant-decls") + + #include <string.h> + ++#ifdef OPENSSL_NO_ENGINE ++/* Android's OpenSSL seems to have removed all of its Engine support. */ ++#define DISABLE_ENGINES ++#endif ++ + #ifndef NEW_THREAD_API + /** A number of preallocated mutexes for use by OpenSSL. */ + static tor_mutex_t **openssl_mutexes_ = NULL; +diff --git a/src/lib/crypt_ops/crypto_openssl_mgt.h b/src/lib/crypt_ops/crypto_openssl_mgt.h +index 96a37721dd..eac0ec1977 100644 +--- a/src/lib/crypt_ops/crypto_openssl_mgt.h ++++ b/src/lib/crypt_ops/crypto_openssl_mgt.h +@@ -49,11 +49,6 @@ + #define OPENSSL_V_SERIES(a,b,c) \ + OPENSSL_VER((a),(b),(c),0,0) + +-#ifdef OPENSSL_NO_ENGINE +-/* Android's OpenSSL seems to have removed all of its Engine support. */ +-#define DISABLE_ENGINES +-#endif +- + #if OPENSSL_VERSION_NUMBER >= OPENSSL_VER(1,1,0,0,5) + /* OpenSSL as of 1.1.0pre4 has an "new" thread API, which doesn't require + * setting up various callbacks. diff --git a/net-vpn/tor/files/tor-0.4.7.16-arm64-sandbox.patch b/net-vpn/tor/files/tor-0.4.7.16-arm64-sandbox.patch new file mode 100644 index 0000000..2b473bf --- /dev/null +++ b/net-vpn/tor/files/tor-0.4.7.16-arm64-sandbox.patch @@ -0,0 +1,337 @@ +From https://gitlab.torproject.org/tpo/core/tor/-/merge_requests/574 +Gentoo Bug: https://bugs.gentoo.org/920063 +From: Pierre Bourdon <delroth@gmail.com> +Date: Sat, 30 Apr 2022 11:52:59 +0200 +Subject: [PATCH 1/4] sandbox: fix openat filtering on AArch64 + +New glibc versions not sign-extending 32 bit negative constants seems to +not be a thing on AArch64. I suspect that this might not be the only +architecture where the sign-extensions is happening, and the correct fix +might be instead to use a proper 32 bit comparison for the first openat +parameter. For now, band-aid fix this so the sandbox can work again on +AArch64. +--- a/src/lib/sandbox/sandbox.c ++++ b/src/lib/sandbox/sandbox.c +@@ -518,7 +518,12 @@ libc_uses_openat_for_opendir(void) + static int + libc_negative_constant_needs_cast(void) + { ++#if defined(__aarch64__) && defined(__LP64__) ++ /* Existing glibc versions always sign-extend to 64 bits on AArch64. */ ++ return 0; ++#else + return is_libc_at_least(2, 27); ++#endif + } + + /** Allow a single file to be opened. If <b>use_openat</b> is true, +-- +GitLab + + +From 8fd13f7a7bfd4efc02d888ce9d10bcb6a80a03c8 Mon Sep 17 00:00:00 2001 +From: Pierre Bourdon <delroth@gmail.com> +Date: Sat, 30 Apr 2022 13:02:16 +0200 +Subject: [PATCH 2/4] sandbox: filter {chown,chmod,rename} via their *at + variant on Aarch64 + +The chown/chmod/rename syscalls have never existed on AArch64, and libc +implements the POSIX functions via the fchownat/fchmodat/renameat +syscalls instead. + +Add new filter functions for fchownat/fchmodat/renameat, not made +architecture specific since the syscalls exists everywhere else too. +However, in order to limit seccomp filter space usage, we only insert +rules for one of {chown, chown32, fchownat} depending on the +architecture (resp. {chmod, fchmodat}, {rename, renameat}). +--- a/src/lib/sandbox/sandbox.c ++++ b/src/lib/sandbox/sandbox.c +@@ -614,6 +614,32 @@ sb_chmod(scmp_filter_ctx ctx, sandbox_cfg_t *filter) + return 0; + } + ++static int ++sb_fchmodat(scmp_filter_ctx ctx, sandbox_cfg_t *filter) ++{ ++ int rc; ++ sandbox_cfg_t *elem = NULL; ++ ++ // for each dynamic parameter filters ++ for (elem = filter; elem != NULL; elem = elem->next) { ++ smp_param_t *param = elem->param; ++ ++ if (param != NULL && param->prot == 1 && param->syscall ++ == SCMP_SYS(fchmodat)) { ++ rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(fchmodat), ++ SCMP_CMP_NEG(0, SCMP_CMP_EQ, AT_FDCWD), ++ SCMP_CMP_STR(1, SCMP_CMP_EQ, param->value)); ++ if (rc != 0) { ++ log_err(LD_BUG,"(Sandbox) failed to add fchmodat syscall, received " ++ "libseccomp error %d", rc); ++ return rc; ++ } ++ } ++ } ++ ++ return 0; ++} ++ + #ifdef __i386__ + static int + sb_chown32(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +@@ -666,6 +692,32 @@ sb_chown(scmp_filter_ctx ctx, sandbox_cfg_t *filter) + } + #endif /* defined(__i386__) */ + ++static int ++sb_fchownat(scmp_filter_ctx ctx, sandbox_cfg_t *filter) ++{ ++ int rc; ++ sandbox_cfg_t *elem = NULL; ++ ++ // for each dynamic parameter filters ++ for (elem = filter; elem != NULL; elem = elem->next) { ++ smp_param_t *param = elem->param; ++ ++ if (param != NULL && param->prot == 1 && param->syscall ++ == SCMP_SYS(fchownat)) { ++ rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(fchownat), ++ SCMP_CMP_NEG(0, SCMP_CMP_EQ, AT_FDCWD), ++ SCMP_CMP_STR(1, SCMP_CMP_EQ, param->value)); ++ if (rc != 0) { ++ log_err(LD_BUG,"(Sandbox) failed to add fchownat syscall, received " ++ "libseccomp error %d", rc); ++ return rc; ++ } ++ } ++ } ++ ++ return 0; ++} ++ + /** + * Function responsible for setting up the rename syscall for + * the seccomp filter sandbox. +@@ -697,6 +749,39 @@ sb_rename(scmp_filter_ctx ctx, sandbox_cfg_t *filter) + return 0; + } + ++/** ++ * Function responsible for setting up the renameat syscall for ++ * the seccomp filter sandbox. ++ */ ++static int ++sb_renameat(scmp_filter_ctx ctx, sandbox_cfg_t *filter) ++{ ++ int rc; ++ sandbox_cfg_t *elem = NULL; ++ ++ // for each dynamic parameter filters ++ for (elem = filter; elem != NULL; elem = elem->next) { ++ smp_param_t *param = elem->param; ++ ++ if (param != NULL && param->prot == 1 && ++ param->syscall == SCMP_SYS(renameat)) { ++ ++ rc = seccomp_rule_add_4(ctx, SCMP_ACT_ALLOW, SCMP_SYS(renameat), ++ SCMP_CMP_NEG(0, SCMP_CMP_EQ, AT_FDCWD), ++ SCMP_CMP_STR(1, SCMP_CMP_EQ, param->value), ++ SCMP_CMP_NEG(2, SCMP_CMP_EQ, AT_FDCWD), ++ SCMP_CMP_STR(3, SCMP_CMP_EQ, param->value2)); ++ if (rc != 0) { ++ log_err(LD_BUG,"(Sandbox) failed to add renameat syscall, received " ++ "libseccomp error %d", rc); ++ return rc; ++ } ++ } ++ } ++ ++ return 0; ++} ++ + /** + * Function responsible for setting up the openat syscall for + * the seccomp filter sandbox. +@@ -1317,7 +1402,9 @@ static sandbox_filter_func_t filter_func[] = { + #else + sb_chown, + #endif ++ sb_fchownat, + sb_chmod, ++ sb_fchmodat, + sb_open, + sb_openat, + sb_opendir, +@@ -1325,6 +1412,7 @@ static sandbox_filter_func_t filter_func[] = { + sb_ptrace, + #endif + sb_rename, ++ sb_renameat, + #ifdef __NR_fcntl64 + sb_fcntl64, + #endif +@@ -1592,10 +1680,24 @@ new_element(int syscall, char *value) + + #ifdef __i386__ + #define SCMP_chown SCMP_SYS(chown32) ++#elif defined(__aarch64__) && defined(__LP64__) ++#define SCMP_chown SCMP_SYS(fchownat) + #else + #define SCMP_chown SCMP_SYS(chown) + #endif + ++#if defined(__aarch64__) && defined(__LP64__) ++#define SCMP_chmod SCMP_SYS(fchmodat) ++#else ++#define SCMP_chmod SCMP_SYS(chmod) ++#endif ++ ++#if defined(__aarch64__) && defined(__LP64__) ++#define SCMP_rename SCMP_SYS(renameat) ++#else ++#define SCMP_rename SCMP_SYS(rename) ++#endif ++ + #ifdef __NR_stat64 + #define SCMP_stat SCMP_SYS(stat64) + #else +@@ -1633,7 +1735,7 @@ sandbox_cfg_allow_chmod_filename(sandbox_cfg_t **cfg, char *file) + { + sandbox_cfg_t *elem = NULL; + +- elem = new_element(SCMP_SYS(chmod), file); ++ elem = new_element(SCMP_chmod, file); + + elem->next = *cfg; + *cfg = elem; +@@ -1659,7 +1761,7 @@ sandbox_cfg_allow_rename(sandbox_cfg_t **cfg, char *file1, char *file2) + { + sandbox_cfg_t *elem = NULL; + +- elem = new_element2(SCMP_SYS(rename), file1, file2); ++ elem = new_element2(SCMP_rename, file1, file2); + + elem->next = *cfg; + *cfg = elem; +-- +GitLab + + +From eb0749d64917fee6ff74c3810dbec8cd063f546c Mon Sep 17 00:00:00 2001 +From: Pierre Bourdon <delroth@gmail.com> +Date: Wed, 4 May 2022 07:19:40 +0200 +Subject: [PATCH 3/4] sandbox: replace SCMP_CMP_NEG with masked equality checks + +For some syscalls the kernel ABI uses 32 bit signed integers. Whether +these 32 bit integer values are sign extended or zero extended to the +native 64 bit register sizes is undefined and dependent on the {arch, +compiler, libc} being used. Instead of trying to detect which cases +zero-extend and which cases sign-extend, this commit uses a masked +equality check on the lower 32 bits of the value. +--- a/src/lib/sandbox/sandbox.c ++++ b/src/lib/sandbox/sandbox.c +@@ -141,10 +141,12 @@ static sandbox_cfg_t *filter_dynamic = NULL; + * the high bits of the value might get masked out improperly. */ + #define SCMP_CMP_MASKED(a,b,c) \ + SCMP_CMP4((a), SCMP_CMP_MASKED_EQ, ~(scmp_datum_t)(b), (c)) +-/* For negative constants, the rule to add depends on the glibc version. */ +-#define SCMP_CMP_NEG(a,op,b) (libc_negative_constant_needs_cast() ? \ +- (SCMP_CMP((a), (op), (unsigned int)(b))) : \ +- (SCMP_CMP_STR((a), (op), (b)))) ++/* Negative constants aren't consistently sign extended or zero extended. ++ * Different compilers, libc, and architectures behave differently. For cases ++ * where the kernel ABI uses a 32 bit integer, this macro can be used to ++ * mask-compare only the lower 32 bits of the value. */ ++#define SCMP_CMP_LOWER32_EQ(a,b) \ ++ SCMP_CMP4((a), SCMP_CMP_MASKED_EQ, 0xFFFFFFFF, (unsigned int)(b)) + + /** Variable used for storing all syscall numbers that will be allowed with the + * stage 1 general Tor sandbox. +@@ -513,19 +515,6 @@ libc_uses_openat_for_opendir(void) + (is_libc_at_least(2, 15) && !is_libc_at_least(2, 22)); + } + +-/* Return true if we think we're running with a libc that needs to cast +- * negative arguments like AT_FDCWD for seccomp rules. */ +-static int +-libc_negative_constant_needs_cast(void) +-{ +-#if defined(__aarch64__) && defined(__LP64__) +- /* Existing glibc versions always sign-extend to 64 bits on AArch64. */ +- return 0; +-#else +- return is_libc_at_least(2, 27); +-#endif +-} +- + /** Allow a single file to be opened. If <b>use_openat</b> is true, + * we're using a libc that remaps all the opens into openats. */ + static int +@@ -533,7 +522,7 @@ allow_file_open(scmp_filter_ctx ctx, int use_openat, const char *file) + { + if (use_openat) { + return seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(openat), +- SCMP_CMP_NEG(0, SCMP_CMP_EQ, AT_FDCWD), ++ SCMP_CMP_LOWER32_EQ(0, AT_FDCWD), + SCMP_CMP_STR(1, SCMP_CMP_EQ, file)); + } else { + return seccomp_rule_add_1(ctx, SCMP_ACT_ALLOW, SCMP_SYS(open), +@@ -627,7 +616,7 @@ sb_fchmodat(scmp_filter_ctx ctx, sandbox_cfg_t *filter) + if (param != NULL && param->prot == 1 && param->syscall + == SCMP_SYS(fchmodat)) { + rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(fchmodat), +- SCMP_CMP_NEG(0, SCMP_CMP_EQ, AT_FDCWD), ++ SCMP_CMP_LOWER32_EQ(0, AT_FDCWD), + SCMP_CMP_STR(1, SCMP_CMP_EQ, param->value)); + if (rc != 0) { + log_err(LD_BUG,"(Sandbox) failed to add fchmodat syscall, received " +@@ -705,7 +694,7 @@ sb_fchownat(scmp_filter_ctx ctx, sandbox_cfg_t *filter) + if (param != NULL && param->prot == 1 && param->syscall + == SCMP_SYS(fchownat)) { + rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(fchownat), +- SCMP_CMP_NEG(0, SCMP_CMP_EQ, AT_FDCWD), ++ SCMP_CMP_LOWER32_EQ(0, AT_FDCWD), + SCMP_CMP_STR(1, SCMP_CMP_EQ, param->value)); + if (rc != 0) { + log_err(LD_BUG,"(Sandbox) failed to add fchownat syscall, received " +@@ -767,9 +756,9 @@ sb_renameat(scmp_filter_ctx ctx, sandbox_cfg_t *filter) + param->syscall == SCMP_SYS(renameat)) { + + rc = seccomp_rule_add_4(ctx, SCMP_ACT_ALLOW, SCMP_SYS(renameat), +- SCMP_CMP_NEG(0, SCMP_CMP_EQ, AT_FDCWD), ++ SCMP_CMP_LOWER32_EQ(0, AT_FDCWD), + SCMP_CMP_STR(1, SCMP_CMP_EQ, param->value), +- SCMP_CMP_NEG(2, SCMP_CMP_EQ, AT_FDCWD), ++ SCMP_CMP_LOWER32_EQ(2, AT_FDCWD), + SCMP_CMP_STR(3, SCMP_CMP_EQ, param->value2)); + if (rc != 0) { + log_err(LD_BUG,"(Sandbox) failed to add renameat syscall, received " +@@ -799,7 +788,7 @@ sb_openat(scmp_filter_ctx ctx, sandbox_cfg_t *filter) + if (param != NULL && param->prot == 1 && param->syscall + == SCMP_SYS(openat)) { + rc = seccomp_rule_add_3(ctx, SCMP_ACT_ALLOW, SCMP_SYS(openat), +- SCMP_CMP_NEG(0, SCMP_CMP_EQ, AT_FDCWD), ++ SCMP_CMP_LOWER32_EQ(0, AT_FDCWD), + SCMP_CMP_STR(1, SCMP_CMP_EQ, param->value), + SCMP_CMP(2, SCMP_CMP_EQ, O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY| + O_CLOEXEC)); +-- +GitLab + + +From 42034ae9da2866c67ce8cb8522d6a619d8b21170 Mon Sep 17 00:00:00 2001 +From: Pierre Bourdon <delroth@gmail.com> +Date: Wed, 4 May 2022 07:31:06 +0200 +Subject: [PATCH 4/4] changes: add entry for MR !574 + +--- /dev/null ++++ b/changes/aarch64_sandbox +@@ -0,0 +1,5 @@ ++ o Minor bugfixes (sandbox): ++ - Fix sandbox support on AArch64 systems. More "*at" variants of syscalls ++ are now supported. Signed 32 bit syscall parameters are checked more ++ precisely, which should lead to lower likelihood of breakages with future ++ compiler and libc releases. Fixes bug 40599; bugfix on 0.4.4.3-alpha. +-- +GitLab + diff --git a/net-vpn/tor/files/tor.confd b/net-vpn/tor/files/tor.confd new file mode 100644 index 0000000..4195bf3 --- /dev/null +++ b/net-vpn/tor/files/tor.confd @@ -0,0 +1,3 @@ +# +# Set the file limit +rc_ulimit="-n 30000" diff --git a/net-vpn/tor/files/tor.initd-r9 b/net-vpn/tor/files/tor.initd-r9 new file mode 100644 index 0000000..c1639c2 --- /dev/null +++ b/net-vpn/tor/files/tor.initd-r9 @@ -0,0 +1,37 @@ +#!/sbin/openrc-run +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +command=/usr/bin/tor +pidfile=/run/tor/tor.pid +command_args="--hush --runasdaemon 1 --pidfile \"${pidfile}\"" +retry=${GRACEFUL_TIMEOUT:-60} +stopsig=INT +command_progress=yes + +extra_commands="checkconfig" +extra_started_commands="reload" +description="Anonymizing overlay network for TCP" +description_checkconfig="Check for valid config file" +description_reload="Reload the configuration" + +checkconfig() { + ${command} --verify-config --hush > /dev/null 2>&1 + if [ $? -ne 0 ] ; then + eerror "Tor configuration (/etc/tor/torrc) is not valid." + eerror "Example is in /etc/tor/torrc.sample" + return 1 + fi +} + +start_pre() { + checkconfig || return 1 + checkpath -d -m 0755 -o tor:tor /run/tor +} + +reload() { + checkconfig || return 1 + ebegin "Reloading Tor configuration" + start-stop-daemon -s HUP --pidfile ${pidfile} + eend $? +} diff --git a/net-vpn/tor/files/tor.service b/net-vpn/tor/files/tor.service new file mode 100644 index 0000000..1663824 --- /dev/null +++ b/net-vpn/tor/files/tor.service @@ -0,0 +1,38 @@ +# tor.service -- this systemd configuration file for Tor sets up a +# relatively conservative, hardened Tor service. You may need to +# edit it if you are making changes to your Tor configuration that it +# does not allow. Package maintainers: this should be a starting point +# for your tor.service; it is not the last point. + +[Unit] +Description=Anonymizing overlay network for TCP +After=syslog.target network.target nss-lookup.target + +[Service] +Type=notify +NotifyAccess=all +ExecStartPre=/usr/bin/tor -f /etc/tor/torrc --verify-config +ExecStart=/usr/bin/tor -f /etc/tor/torrc +ExecReload=/bin/kill -HUP ${MAINPID} +KillSignal=SIGINT +TimeoutSec=60 +Restart=on-failure +WatchdogSec=1m +LimitNOFILE=32768 + +# Hardening +Group=tor +RuntimeDirectory=tor +RuntimeDirectoryMode=0770 +PrivateTmp=yes +PrivateDevices=yes +ProtectHome=yes +ProtectSystem=full +ReadOnlyDirectories=/ +ReadWriteDirectories=-/var/lib/tor +ReadWriteDirectories=-/var/log/tor +NoNewPrivileges=yes +CapabilityBoundingSet=CAP_SETUID CAP_SETGID CAP_NET_BIND_SERVICE + +[Install] +WantedBy=multi-user.target diff --git a/net-vpn/tor/files/torrc-r2 b/net-vpn/tor/files/torrc-r2 new file mode 100644 index 0000000..b308104 --- /dev/null +++ b/net-vpn/tor/files/torrc-r2 @@ -0,0 +1,7 @@ +# +# Minimal torrc so tor will work out of the box +# +User tor +PIDFile /run/tor/tor.pid +Log notice syslog +DataDirectory /var/lib/tor/data diff --git a/net-vpn/tor/metadata.xml b/net-vpn/tor/metadata.xml new file mode 100644 index 0000000..fcc4644 --- /dev/null +++ b/net-vpn/tor/metadata.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>ajak@gentoo.org</email> + <name>John Helmert III</name> + </maintainer> + <maintainer type="person"> + <email>sam@gentoo.org</email> + <name>Sam James</name> + </maintainer> + <use> + <flag name="scrypt">Use <pkg>app-crypt/libscrypt</pkg> for the scrypt algorithm</flag> + <flag name="server">Enable tor's relay module so it can operate as a relay/bridge/authority</flag> + <flag name="tor-hardening">Compile tor with hardening on vanilla compilers/linkers</flag> + </use> +</pkgmetadata> diff --git a/net-vpn/tor/tor-0.4.7.13-r1.ebuild b/net-vpn/tor/tor-0.4.7.13-r1.ebuild new file mode 100644 index 0000000..8ffff91 --- /dev/null +++ b/net-vpn/tor/tor-0.4.7.13-r1.ebuild @@ -0,0 +1,150 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/torproject.org.asc +inherit autotools python-any-r1 readme.gentoo-r1 systemd verify-sig + +MY_PV="$(ver_rs 4 -)" +MY_PF="${PN}-${MY_PV}" +DESCRIPTION="Anonymizing overlay network for TCP" +HOMEPAGE="https://www.torproject.org/ https://gitlab.torproject.org/tpo/core/tor/" +SRC_URI=" + https://www.torproject.org/dist/${MY_PF}.tar.gz + https://archive.torproject.org/tor-package-archive/${MY_PF}.tar.gz + verify-sig? ( + https://dist.torproject.org/${MY_PF}.tar.gz.sha256sum + https://dist.torproject.org/${MY_PF}.tar.gz.sha256sum.asc + ) +" +S="${WORKDIR}/${MY_PF}" + +LICENSE="BSD GPL-2" +SLOT="0" +if [[ ${PV} != *_alpha* && ${PV} != *_beta* && ${PV} != *_rc* ]]; then + KEYWORDS="amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~sparc x86 ~ppc-macos" +fi +IUSE="caps doc lzma +man scrypt seccomp selinux +server systemd tor-hardening test zstd" +RESTRICT="!test? ( test )" + +DEPEND=" + >=dev-libs/libevent-2.1.12-r1:=[ssl] + sys-libs/zlib + caps? ( sys-libs/libcap ) + man? ( app-text/asciidoc ) + dev-libs/openssl:=[-bindist(-)] + lzma? ( app-arch/xz-utils ) + scrypt? ( app-crypt/libscrypt ) + seccomp? ( >=sys-libs/libseccomp-2.4.1 ) + systemd? ( sys-apps/systemd ) + zstd? ( app-arch/zstd ) +" +RDEPEND=" + acct-user/tor + acct-group/tor + ${DEPEND} + selinux? ( sec-policy/selinux-tor ) +" +DEPEND+=" + test? ( + ${DEPEND} + ${PYTHON_DEPS} + ) +" +BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-tor-20221213 )" + +DOCS=() + +PATCHES=( + "${FILESDIR}"/${PN}-0.2.7.4-torrc.sample.patch + "${FILESDIR}"/${PN}-0.4.7.13-libressl.patch + "${FILESDIR}"/${PN}-0.4.7.13-opensslconf.patch +) + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +src_unpack() { + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_detached ${MY_PF}.tar.gz.sha256sum{,.asc} + verify-sig_verify_unsigned_checksums \ + ${MY_PF}.tar.gz.sha256sum sha256 ${MY_PF}.tar.gz + cd "${WORKDIR}" || die + fi + + default +} + +src_prepare() { + default + + # Running shellcheck automagically isn't useful for ebuild testing. + echo "exit 0" > scripts/maint/checkShellScripts.sh || die + + # Only needed for libressl patch + eautoreconf +} + +src_configure() { + use doc && DOCS+=( README.md ChangeLog ReleaseNotes doc/HACKING ) + + export ac_cv_lib_cap_cap_init=$(usex caps) + export tor_cv_PYTHON="${EPYTHON}" + + local myeconfargs=( + --localstatedir="${EPREFIX}/var" + --disable-all-bugs-are-fatal + --enable-system-torrc + --disable-android + --disable-coverage + --disable-html-manual + --disable-libfuzzer + --enable-missing-doc-warnings + --disable-module-dirauth + --enable-pic + --disable-restart-debugging + + # This option is enabled by default upstream w/ zstd, surprisingly. + # zstd upstream says this shouldn't be relied upon and it may + # break API & ABI at any point, so Tor tries to fake static-linking + # to make it work, but then requires a rebuild on any new zstd version + # even when its standard ABI hasn't changed. + # See bug #727406 and bug #905708. + --disable-zstd-advanced-apis + + $(use_enable man asciidoc) + $(use_enable man manpage) + $(use_enable lzma) + $(use_enable scrypt libscrypt) + $(use_enable seccomp) + $(use_enable server module-relay) + $(use_enable systemd) + $(use_enable tor-hardening gcc-hardening) + $(use_enable tor-hardening linker-hardening) + $(use_enable test unittests) + $(use_enable zstd) + ) + + econf "${myeconfargs[@]}" +} + +src_install() { + default + readme.gentoo_create_doc + + newconfd "${FILESDIR}"/tor.confd tor + newinitd "${FILESDIR}"/tor.initd-r9 tor + systemd_dounit "${FILESDIR}"/tor.service + + keepdir /var/lib/tor + + fperms 750 /var/lib/tor + fowners tor:tor /var/lib/tor + + insinto /etc/tor/ + newins "${FILESDIR}"/torrc-r2 torrc +} diff --git a/net-vpn/tor/tor-0.4.7.16-r1.ebuild b/net-vpn/tor/tor-0.4.7.16-r1.ebuild new file mode 100644 index 0000000..d0ca8a1 --- /dev/null +++ b/net-vpn/tor/tor-0.4.7.16-r1.ebuild @@ -0,0 +1,182 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/torproject.org.asc +inherit edo python-any-r1 readme.gentoo-r1 systemd verify-sig + +MY_PV="$(ver_rs 4 -)" +MY_PF="${PN}-${MY_PV}" +DESCRIPTION="Anonymizing overlay network for TCP" +HOMEPAGE="https://www.torproject.org/ https://gitlab.torproject.org/tpo/core/tor/" + +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://gitlab.torproject.org/tpo/core/tor" + inherit autotools git-r3 +else + SRC_URI=" + https://www.torproject.org/dist/${MY_PF}.tar.gz + https://archive.torproject.org/tor-package-archive/${MY_PF}.tar.gz + verify-sig? ( + https://dist.torproject.org/${MY_PF}.tar.gz.sha256sum + https://dist.torproject.org/${MY_PF}.tar.gz.sha256sum.asc + ) + " + + S="${WORKDIR}/${MY_PF}" + + if [[ ${PV} != *_alpha* && ${PV} != *_beta* && ${PV} != *_rc* ]]; then + KEYWORDS="~amd64 arm arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~sparc x86 ~ppc-macos" + fi + + BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-tor-20230727 )" +fi + +LICENSE="BSD GPL-2" +SLOT="0" +IUSE="caps doc lzma +man scrypt seccomp selinux +server systemd tor-hardening test zstd" +RESTRICT="!test? ( test )" + +DEPEND=" + >=dev-libs/libevent-2.1.12-r1:=[ssl] + dev-libs/openssl:=[-bindist(-)] + sys-libs/zlib + caps? ( sys-libs/libcap ) + man? ( app-text/asciidoc ) + lzma? ( app-arch/xz-utils ) + scrypt? ( app-crypt/libscrypt ) + seccomp? ( >=sys-libs/libseccomp-2.4.1 ) + systemd? ( sys-apps/systemd:= ) + zstd? ( app-arch/zstd:= ) +" +RDEPEND=" + acct-user/tor + acct-group/tor + ${DEPEND} + selinux? ( sec-policy/selinux-tor ) +" +DEPEND+=" + test? ( + ${DEPEND} + ${PYTHON_DEPS} + ) +" + +DOCS=() + +PATCHES=( + "${FILESDIR}"/${PN}-0.2.7.4-torrc.sample.patch + "${FILESDIR}"/${PN}-0.4.7.13-libressl.patch + "${FILESDIR}"/${PN}-0.4.7.13-opensslconf.patch + "${FILESDIR}"/${P}-arm64-sandbox.patch +) + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} == 9999 ]] ; then + git-r3_src_unpack + else + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_detached ${MY_PF}.tar.gz.sha256sum{,.asc} + verify-sig_verify_unsigned_checksums \ + ${MY_PF}.tar.gz.sha256sum sha256 ${MY_PF}.tar.gz + cd "${WORKDIR}" || die + fi + + default + fi +} + +src_prepare() { + default + + # Running shellcheck automagically isn't useful for ebuild testing. + echo "exit 0" > scripts/maint/checkShellScripts.sh || die + + if [[ ${PV} == 9999 ]] ; then + eautoreconf + fi +} + +src_configure() { + use doc && DOCS+=( README.md ChangeLog ReleaseNotes doc/HACKING ) + + export ac_cv_lib_cap_cap_init=$(usex caps) + export tor_cv_PYTHON="${EPYTHON}" + + local myeconfargs=( + --localstatedir="${EPREFIX}/var" + --disable-all-bugs-are-fatal + --enable-system-torrc + --disable-android + --disable-coverage + --disable-html-manual + --disable-libfuzzer + --enable-missing-doc-warnings + --disable-module-dirauth + --enable-pic + --disable-restart-debugging + + $(use_enable man asciidoc) + $(use_enable man manpage) + $(use_enable lzma) + $(use_enable scrypt libscrypt) + $(use_enable seccomp) + $(use_enable server module-relay) + $(use_enable systemd) + $(use_enable tor-hardening gcc-hardening) + $(use_enable tor-hardening linker-hardening) + $(use_enable test unittests) + $(use_enable zstd) + ) + + econf "${myeconfargs[@]}" +} + +src_test() { + local skip_tests=( + # Fails in sandbox + :sandbox/open_filename + :sandbox/openat_filename + ) + + if use arm ; then + skip_tests+=( + # bug #920905 + # https://gitlab.torproject.org/tpo/core/tor/-/issues/40912 + :sandbox/opendir_dirname + :sandbox/openat_filename + :sandbox/chmod_filename + :sandbox/chown_filename + :sandbox/rename_filename + ) + fi + + # The makefile runs these by parallel by chunking them with a script + # but that means we lose verbosity and can't skip individual tests easily + # either. + edo ./src/test/test --verbose "${skip_tests[@]}" +} + +src_install() { + default + readme.gentoo_create_doc + + newconfd "${FILESDIR}"/tor.confd tor + newinitd "${FILESDIR}"/tor.initd-r9 tor + systemd_dounit "${FILESDIR}"/tor.service + + keepdir /var/lib/tor + + fperms 750 /var/lib/tor + fowners tor:tor /var/lib/tor + + insinto /etc/tor/ + newins "${FILESDIR}"/torrc-r2 torrc +} diff --git a/net-vpn/tor/tor-0.4.7.16.ebuild b/net-vpn/tor/tor-0.4.7.16.ebuild new file mode 100644 index 0000000..4ac7036 --- /dev/null +++ b/net-vpn/tor/tor-0.4.7.16.ebuild @@ -0,0 +1,169 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/torproject.org.asc +inherit edo python-any-r1 readme.gentoo-r1 systemd verify-sig + +MY_PV="$(ver_rs 4 -)" +MY_PF="${PN}-${MY_PV}" +DESCRIPTION="Anonymizing overlay network for TCP" +HOMEPAGE="https://www.torproject.org/ https://gitlab.torproject.org/tpo/core/tor/" + +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://gitlab.torproject.org/tpo/core/tor" + inherit autotools git-r3 +else + SRC_URI=" + https://www.torproject.org/dist/${MY_PF}.tar.gz + https://archive.torproject.org/tor-package-archive/${MY_PF}.tar.gz + verify-sig? ( + https://dist.torproject.org/${MY_PF}.tar.gz.sha256sum + https://dist.torproject.org/${MY_PF}.tar.gz.sha256sum.asc + ) + " + + S="${WORKDIR}/${MY_PF}" + + if [[ ${PV} != *_alpha* && ${PV} != *_beta* && ${PV} != *_rc* ]]; then + KEYWORDS="amd64 ~arm ~arm64 ~hppa ~mips ppc ppc64 ~riscv ~sparc ~x86 ~ppc-macos" + fi + + BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-tor-20230727 )" +fi + +LICENSE="BSD GPL-2" +SLOT="0" +IUSE="caps doc lzma +man scrypt seccomp selinux +server systemd tor-hardening test zstd" +RESTRICT="!test? ( test )" + +DEPEND=" + >=dev-libs/libevent-2.1.12-r1:=[ssl] + dev-libs/openssl:=[-bindist(-)] + sys-libs/zlib + caps? ( sys-libs/libcap ) + man? ( app-text/asciidoc ) + lzma? ( app-arch/xz-utils ) + scrypt? ( app-crypt/libscrypt ) + seccomp? ( >=sys-libs/libseccomp-2.4.1 ) + systemd? ( sys-apps/systemd:= ) + zstd? ( app-arch/zstd:= ) +" +RDEPEND=" + acct-user/tor + acct-group/tor + ${DEPEND} + selinux? ( sec-policy/selinux-tor ) +" +DEPEND+=" + test? ( + ${DEPEND} + ${PYTHON_DEPS} + ) +" + +DOCS=() + +PATCHES=( + "${FILESDIR}"/${PN}-0.2.7.4-torrc.sample.patch + "${FILESDIR}"/${PN}-0.4.7.13-libressl.patch + "${FILESDIR}"/${PN}-0.4.7.13-opensslconf.patch +) + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} == 9999 ]] ; then + git-r3_src_unpack + else + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_detached ${MY_PF}.tar.gz.sha256sum{,.asc} + verify-sig_verify_unsigned_checksums \ + ${MY_PF}.tar.gz.sha256sum sha256 ${MY_PF}.tar.gz + cd "${WORKDIR}" || die + fi + + default + fi +} + +src_prepare() { + default + + # Running shellcheck automagically isn't useful for ebuild testing. + echo "exit 0" > scripts/maint/checkShellScripts.sh || die + + if [[ ${PV} == 9999 ]] ; then + eautoreconf + fi +} + +src_configure() { + use doc && DOCS+=( README.md ChangeLog ReleaseNotes doc/HACKING ) + + export ac_cv_lib_cap_cap_init=$(usex caps) + export tor_cv_PYTHON="${EPYTHON}" + + local myeconfargs=( + --localstatedir="${EPREFIX}/var" + --disable-all-bugs-are-fatal + --enable-system-torrc + --disable-android + --disable-coverage + --disable-html-manual + --disable-libfuzzer + --enable-missing-doc-warnings + --disable-module-dirauth + --enable-pic + --disable-restart-debugging + + $(use_enable man asciidoc) + $(use_enable man manpage) + $(use_enable lzma) + $(use_enable scrypt libscrypt) + $(use_enable seccomp) + $(use_enable server module-relay) + $(use_enable systemd) + $(use_enable tor-hardening gcc-hardening) + $(use_enable tor-hardening linker-hardening) + $(use_enable test unittests) + $(use_enable zstd) + ) + + econf "${myeconfargs[@]}" +} + +src_test() { + local skip_tests=( + # Fails in sandbox + :sandbox/open_filename + :sandbox/openat_filename + ) + + # The makefile runs these by parallel by chunking them with a script + # but that means we lose verbosity and can't skip individual tests easily + # either. + edo ./src/test/test --verbose "${skip_tests[@]}" +} + +src_install() { + default + readme.gentoo_create_doc + + newconfd "${FILESDIR}"/tor.confd tor + newinitd "${FILESDIR}"/tor.initd-r9 tor + systemd_dounit "${FILESDIR}"/tor.service + + keepdir /var/lib/tor + + fperms 750 /var/lib/tor + fowners tor:tor /var/lib/tor + + insinto /etc/tor/ + newins "${FILESDIR}"/torrc-r2 torrc +} diff --git a/net-vpn/tor/tor-0.4.8.10.ebuild b/net-vpn/tor/tor-0.4.8.10.ebuild new file mode 100644 index 0000000..47b432d --- /dev/null +++ b/net-vpn/tor/tor-0.4.8.10.ebuild @@ -0,0 +1,190 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/torproject.org.asc +inherit edo python-any-r1 readme.gentoo-r1 systemd verify-sig + +MY_PV="$(ver_rs 4 -)" +MY_PF="${PN}-${MY_PV}" +DESCRIPTION="Anonymizing overlay network for TCP" +HOMEPAGE="https://www.torproject.org/ https://gitlab.torproject.org/tpo/core/tor/" + +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://gitlab.torproject.org/tpo/core/tor" + inherit autotools git-r3 +else + SRC_URI=" + https://www.torproject.org/dist/${MY_PF}.tar.gz + https://archive.torproject.org/tor-package-archive/${MY_PF}.tar.gz + verify-sig? ( + https://dist.torproject.org/${MY_PF}.tar.gz.sha256sum + https://dist.torproject.org/${MY_PF}.tar.gz.sha256sum.asc + ) + " + + S="${WORKDIR}/${MY_PF}" + + if [[ ${PV} != *_alpha* && ${PV} != *_beta* && ${PV} != *_rc* ]]; then + KEYWORDS="amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~sparc x86 ~ppc-macos" + fi + + BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-tor-20230727 )" +fi + +# BSD in general, but for PoW, needs --enable-gpl (GPL-3 per --version) +# We also already had GPL-2 listed here for the init script, but obviously +# that's different from the actual binary. +LICENSE="BSD GPL-2 GPL-3" +SLOT="0" +IUSE="caps doc lzma +man scrypt seccomp selinux +server systemd tor-hardening test zstd" +RESTRICT="!test? ( test )" + +DEPEND=" + >=dev-libs/libevent-2.1.12-r1:=[ssl] + dev-libs/openssl:=[-bindist(-)] + sys-libs/zlib + caps? ( sys-libs/libcap ) + man? ( app-text/asciidoc ) + lzma? ( app-arch/xz-utils ) + scrypt? ( app-crypt/libscrypt ) + seccomp? ( >=sys-libs/libseccomp-2.4.1 ) + systemd? ( sys-apps/systemd:= ) + zstd? ( app-arch/zstd:= ) +" +RDEPEND=" + acct-user/tor + acct-group/tor + ${DEPEND} + selinux? ( sec-policy/selinux-tor ) +" +DEPEND+=" + test? ( + ${DEPEND} + ${PYTHON_DEPS} + ) +" + +DOCS=() + +PATCHES=( + "${FILESDIR}"/${PN}-0.2.7.4-torrc.sample.patch + "${FILESDIR}"/${PN}-0.4.7.13-opensslconf.patch +) + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} == 9999 ]] ; then + git-r3_src_unpack + else + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_detached ${MY_PF}.tar.gz.sha256sum{,.asc} + verify-sig_verify_unsigned_checksums \ + ${MY_PF}.tar.gz.sha256sum sha256 ${MY_PF}.tar.gz + cd "${WORKDIR}" || die + fi + + default + fi +} + +src_prepare() { + default + + # Running shellcheck automagically isn't useful for ebuild testing. + echo "exit 0" > scripts/maint/checkShellScripts.sh || die + + if [[ ${PV} == 9999 ]] ; then + eautoreconf + fi +} + +src_configure() { + use doc && DOCS+=( README.md ChangeLog ReleaseNotes doc/HACKING ) + + export ac_cv_lib_cap_cap_init=$(usex caps) + export tor_cv_PYTHON="${EPYTHON}" + + local myeconfargs=( + --localstatedir="${EPREFIX}/var" + --disable-all-bugs-are-fatal + --enable-system-torrc + --disable-android + --disable-coverage + --disable-html-manual + --disable-libfuzzer + --enable-missing-doc-warnings + --disable-module-dirauth + --enable-pic + --disable-restart-debugging + + # Unless someone asks & has a compelling reason, just always + # build in GPL mode for pow, given we don't want yet another USE + # flag combination to have to test just for the sake of it. + # (PoW requires GPL.) + --enable-gpl + --enable-module-pow + + $(use_enable man asciidoc) + $(use_enable man manpage) + $(use_enable lzma) + $(use_enable scrypt libscrypt) + $(use_enable seccomp) + $(use_enable server module-relay) + $(use_enable systemd) + $(use_enable tor-hardening gcc-hardening) + $(use_enable tor-hardening linker-hardening) + $(use_enable test unittests) + $(use_enable zstd) + ) + + econf "${myeconfargs[@]}" +} + +src_test() { + local skip_tests=( + # Fails in sandbox + :sandbox/open_filename + :sandbox/openat_filename + ) + + if use arm ; then + skip_tests+=( + # bug #920905 + # https://gitlab.torproject.org/tpo/core/tor/-/issues/40912 + :sandbox/opendir_dirname + :sandbox/openat_filename + :sandbox/chmod_filename + :sandbox/chown_filename + :sandbox/rename_filename + ) + fi + + # The makefile runs these by parallel by chunking them with a script + # but that means we lose verbosity and can't skip individual tests easily + # either. + edo ./src/test/test --verbose "${skip_tests[@]}" +} + +src_install() { + default + readme.gentoo_create_doc + + newconfd "${FILESDIR}"/tor.confd tor + newinitd "${FILESDIR}"/tor.initd-r9 tor + systemd_dounit "${FILESDIR}"/tor.service + + keepdir /var/lib/tor + + fperms 750 /var/lib/tor + fowners tor:tor /var/lib/tor + + insinto /etc/tor/ + newins "${FILESDIR}"/torrc-r2 torrc +} diff --git a/net-vpn/tor/tor-0.4.8.11.ebuild b/net-vpn/tor/tor-0.4.8.11.ebuild new file mode 100644 index 0000000..34f9975 --- /dev/null +++ b/net-vpn/tor/tor-0.4.8.11.ebuild @@ -0,0 +1,190 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/torproject.org.asc +inherit edo python-any-r1 readme.gentoo-r1 systemd verify-sig + +MY_PV="$(ver_rs 4 -)" +MY_PF="${PN}-${MY_PV}" +DESCRIPTION="Anonymizing overlay network for TCP" +HOMEPAGE="https://www.torproject.org/ https://gitlab.torproject.org/tpo/core/tor/" + +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://gitlab.torproject.org/tpo/core/tor" + inherit autotools git-r3 +else + SRC_URI=" + https://www.torproject.org/dist/${MY_PF}.tar.gz + https://archive.torproject.org/tor-package-archive/${MY_PF}.tar.gz + verify-sig? ( + https://dist.torproject.org/${MY_PF}.tar.gz.sha256sum + https://dist.torproject.org/${MY_PF}.tar.gz.sha256sum.asc + ) + " + + S="${WORKDIR}/${MY_PF}" + + if [[ ${PV} != *_alpha* && ${PV} != *_beta* && ${PV} != *_rc* ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~ppc-macos" + fi + + BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-tor-20230727 )" +fi + +# BSD in general, but for PoW, needs --enable-gpl (GPL-3 per --version) +# We also already had GPL-2 listed here for the init script, but obviously +# that's different from the actual binary. +LICENSE="BSD GPL-2 GPL-3" +SLOT="0" +IUSE="caps doc lzma +man scrypt seccomp selinux +server systemd tor-hardening test zstd" +RESTRICT="!test? ( test )" + +DEPEND=" + >=dev-libs/libevent-2.1.12-r1:=[ssl] + dev-libs/openssl:=[-bindist(-)] + sys-libs/zlib + caps? ( sys-libs/libcap ) + man? ( app-text/asciidoc ) + lzma? ( app-arch/xz-utils ) + scrypt? ( app-crypt/libscrypt ) + seccomp? ( >=sys-libs/libseccomp-2.4.1 ) + systemd? ( sys-apps/systemd:= ) + zstd? ( app-arch/zstd:= ) +" +RDEPEND=" + acct-user/tor + acct-group/tor + ${DEPEND} + selinux? ( sec-policy/selinux-tor ) +" +DEPEND+=" + test? ( + ${DEPEND} + ${PYTHON_DEPS} + ) +" + +DOCS=() + +PATCHES=( + "${FILESDIR}"/${PN}-0.2.7.4-torrc.sample.patch + "${FILESDIR}"/${PN}-0.4.7.13-opensslconf.patch +) + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} == 9999 ]] ; then + git-r3_src_unpack + else + if use verify-sig; then + cd "${DISTDIR}" || die + verify-sig_verify_detached ${MY_PF}.tar.gz.sha256sum{,.asc} + verify-sig_verify_unsigned_checksums \ + ${MY_PF}.tar.gz.sha256sum sha256 ${MY_PF}.tar.gz + cd "${WORKDIR}" || die + fi + + default + fi +} + +src_prepare() { + default + + # Running shellcheck automagically isn't useful for ebuild testing. + echo "exit 0" > scripts/maint/checkShellScripts.sh || die + + if [[ ${PV} == 9999 ]] ; then + eautoreconf + fi +} + +src_configure() { + use doc && DOCS+=( README.md ChangeLog ReleaseNotes doc/HACKING ) + + export ac_cv_lib_cap_cap_init=$(usex caps) + export tor_cv_PYTHON="${EPYTHON}" + + local myeconfargs=( + --localstatedir="${EPREFIX}/var" + --disable-all-bugs-are-fatal + --enable-system-torrc + --disable-android + --disable-coverage + --disable-html-manual + --disable-libfuzzer + --enable-missing-doc-warnings + --disable-module-dirauth + --enable-pic + --disable-restart-debugging + + # Unless someone asks & has a compelling reason, just always + # build in GPL mode for pow, given we don't want yet another USE + # flag combination to have to test just for the sake of it. + # (PoW requires GPL.) + --enable-gpl + --enable-module-pow + + $(use_enable man asciidoc) + $(use_enable man manpage) + $(use_enable lzma) + $(use_enable scrypt libscrypt) + $(use_enable seccomp) + $(use_enable server module-relay) + $(use_enable systemd) + $(use_enable tor-hardening gcc-hardening) + $(use_enable tor-hardening linker-hardening) + $(use_enable test unittests) + $(use_enable zstd) + ) + + econf "${myeconfargs[@]}" +} + +src_test() { + local skip_tests=( + # Fails in sandbox + :sandbox/open_filename + :sandbox/openat_filename + ) + + if use arm ; then + skip_tests+=( + # bug #920905 + # https://gitlab.torproject.org/tpo/core/tor/-/issues/40912 + :sandbox/opendir_dirname + :sandbox/openat_filename + :sandbox/chmod_filename + :sandbox/chown_filename + :sandbox/rename_filename + ) + fi + + # The makefile runs these by parallel by chunking them with a script + # but that means we lose verbosity and can't skip individual tests easily + # either. + edo ./src/test/test --verbose "${skip_tests[@]}" +} + +src_install() { + default + readme.gentoo_create_doc + + newconfd "${FILESDIR}"/tor.confd tor + newinitd "${FILESDIR}"/tor.initd-r9 tor + systemd_dounit "${FILESDIR}"/tor.service + + keepdir /var/lib/tor + + fperms 750 /var/lib/tor + fowners tor:tor /var/lib/tor + + insinto /etc/tor/ + newins "${FILESDIR}"/torrc-r2 torrc +} diff --git a/net-wireless/aircrack-ng/Manifest b/net-wireless/aircrack-ng/Manifest deleted file mode 100644 index 694a11c..0000000 --- a/net-wireless/aircrack-ng/Manifest +++ /dev/null @@ -1,2 +0,0 @@ -DIST aircrack-ng-1.2-rc1.tar.gz 2046476 SHA256 cf3134521e1c3d7aed4e384e3e5e7b6959e2d485bd1554474608a3a9328e35fd SHA512 897427c535846c0ede58b2f99ed469bc01f50f9b38fc70d5711261fca7342339192cc0c71a724fc04c99114db7534d825a44f09e7bc5754286ec44933a33e40d WHIRLPOOL 2f8df161c61b8dfa6f4bd5f4af677273f255f01ae84853a80fcde4c07f03e51dcad9dcf007afa5a1120521c641d35c23d07b1edfc51c90d7b8b216b179d27ea9 -DIST aircrack-ng-1.2-rc4.tar.gz 4379880 SHA256 d93ac16aade5b4d37ab8cdf6ce4b855835096ccf83deb65ffdeff6d666eaff36 SHA512 f1e1d465813a5f00fd8f8b287353033ea30b657a4c3a9fe81281ab2546d3238690f0659076bff53703fbc796ba40efb16115804d21f8516adca2c774fefea20c WHIRLPOOL f06d87911492e83c48ea062c8451c2380a8d721795aa875133076e8b81d6a88d68aba354a4150890db3bf1b41d56f9715b595c2eb71f2b7232061be4a9ffd815 diff --git a/net-wireless/aircrack-ng/aircrack-ng-1.2_rc1-r1.ebuild b/net-wireless/aircrack-ng/aircrack-ng-1.2_rc1-r1.ebuild deleted file mode 100644 index 1caf883..0000000 --- a/net-wireless/aircrack-ng/aircrack-ng-1.2_rc1-r1.ebuild +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright 1999-2015 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI="5" - -PYTHON_COMPAT=( python2_7 ) -DISTUTILS_OPTIONAL=1 - -inherit toolchain-funcs distutils-r1 flag-o-matic - -DESCRIPTION="WLAN tools for breaking 802.11 WEP/WPA keys" -HOMEPAGE="http://www.aircrack-ng.org" - -if [[ ${PV} == "9999" ]] ; then - inherit subversion - ESVN_REPO_URI="http://svn.aircrack-ng.org/trunk" - KEYWORDS="" - S="${WORKDIR}/${PN}" -else - MY_PV=${PV/_/-} - SRC_URI="http://download.${PN}.org/${PN}-${MY_PV}.tar.gz" - KEYWORDS="amd64 arm ppc x86 ~amd64-linux ~x86-linux" - S="${WORKDIR}/${PN}-${MY_PV}" -fi - -LICENSE="GPL-2" -SLOT="0" - -IUSE="+airdrop-ng +airgraph-ng kernel_linux kernel_FreeBSD libressl +netlink +pcre +sqlite +unstable" - -DEPEND="net-libs/libpcap - !libressl? ( dev-libs/openssl:0= ) - libressl? ( dev-libs/libressl:0= ) - netlink? ( dev-libs/libnl:3 ) - pcre? ( dev-libs/libpcre ) - airdrop-ng? ( ${PYTHON_DEPS} ) - airgraph-ng? ( ${PYTHON_DEPS} ) - sqlite? ( >=dev-db/sqlite-3.4 ) - unstable? ( sys-libs/zlib )" -RDEPEND="${DEPEND} - kernel_linux? ( - net-wireless/iw - net-wireless/wireless-tools - sys-apps/ethtool - sys-apps/usbutils - sys-apps/pciutils ) - sys-apps/hwids - airdrop-ng? ( net-wireless/lorcon[python,${PYTHON_USEDEP}] )" - -REQUIRED_USE="airdrop-ng? ( ${PYTHON_REQUIRED_USE} ) - airgraph-ng? ( ${PYTHON_REQUIRED_USE} )" - -src_compile() { - if [[ $($(tc-getCC) --version) == clang* ]] ; then - die "Please use gcc, upstream bug http://trac.aircrack-ng.org/ticket/1144" - fi - - if [[ ${PV} == "9999" ]] ; then - liveflags=REVFLAGS=-D_REVISION="${ESVN_WC_REVISION}" - fi - - emake \ - CC="$(tc-getCC)" \ - AR="$(tc-getAR)" \ - LD="$(tc-getLD)" \ - RANLIB="$(tc-getRANLIB)" \ - libnl=$(usex netlink true false) \ - pcre=$(usex pcre true false) \ - sqlite=$(usex sqlite true false) \ - unstable=$(usex unstable true false) \ - ${liveflags} - - if use airgraph-ng; then - cd "${S}/scripts/airgraph-ng" - distutils-r1_src_compile - fi - if use airdrop-ng; then - cd "${S}/scripts/airdrop-ng" - distutils-r1_src_compile - fi -} - -src_test() { - if [[ ${PV} == "9999" ]] ; then - liveflags=REVFLAGS=-D_REVISION="${ESVN_WC_REVISION}" - fi - - emake check \ - libnl=$(usex netlink true false) \ - pcre=$(usex pcre true false) \ - sqlite=$(usex sqlite true false) \ - unstable=$(usex unstable true false) \ - ${liveflags} -} - -src_install() { - if [[ ${PV} == "9999" ]] ; then - liveflags=REVFLAGS=-D_REVISION="${ESVN_WC_REVISION}" - fi - - emake \ - prefix="${ED}/usr" \ - libnl=$(usex netlink true false) \ - pcre=$(usex pcre true false) \ - sqlite=$(usex sqlite true false) \ - unstable=$(usex unstable true false) \ - ${liveflags} \ - install - - dodoc AUTHORS ChangeLog INSTALLING README - - if use airgraph-ng; then - cd "${S}/scripts/airgraph-ng" - distutils-r1_src_install - fi - if use airdrop-ng; then - cd "${S}/scripts/airdrop-ng" - distutils-r1_src_install - fi - - #we don't need aircrack-ng's oui updater, we have our own - rm "${ED}"/usr/sbin/airodump-ng-oui-update -} - -pkg_postinst() { - # Message is (c) FreeBSD - # http://www.freebsd.org/cgi/cvsweb.cgi/ports/net-mgmt/aircrack-ng/files/pkg-message.in?rev=1.5 - if use kernel_FreeBSD ; then - einfo "Contrary to Linux, it is not necessary to use airmon-ng to enable the monitor" - einfo "mode of your wireless card. So do not care about what the manpages say about" - einfo "airmon-ng, airodump-ng sets monitor mode automatically." - echo - einfo "To return from monitor mode, issue the following command:" - einfo " ifconfig \${INTERFACE} -mediaopt monitor" - einfo - einfo "For aireplay-ng you need FreeBSD >= 7.0." - fi -} diff --git a/net-wireless/aircrack-ng/aircrack-ng-1.2_rc4-r1.ebuild b/net-wireless/aircrack-ng/aircrack-ng-1.2_rc4-r1.ebuild deleted file mode 100644 index 9bfac5c..0000000 --- a/net-wireless/aircrack-ng/aircrack-ng-1.2_rc4-r1.ebuild +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright 1999-2017 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI="6" - -PYTHON_COMPAT=( python2_7 ) -DISTUTILS_OPTIONAL=1 - -inherit toolchain-funcs distutils-r1 flag-o-matic - -DESCRIPTION="WLAN tools for breaking 802.11 WEP/WPA keys" -HOMEPAGE="http://www.aircrack-ng.org" - -MY_PV=${PV/_/-} -SRC_URI="http://download.${PN}.org/${PN}-${MY_PV}.tar.gz" -KEYWORDS="~amd64 ~arm ~ppc ~x86 ~amd64-linux ~x86-linux" - -LICENSE="GPL-2" -SLOT="0" - -IUSE="+airdrop-ng +airgraph-ng kernel_linux kernel_FreeBSD libressl +netlink +pcre +sqlite +experimental" - -DEPEND="net-libs/libpcap - !libressl? ( dev-libs/openssl:0= ) - libressl? ( dev-libs/libressl:0= ) - netlink? ( dev-libs/libnl:3 ) - pcre? ( dev-libs/libpcre ) - airdrop-ng? ( ${PYTHON_DEPS} ) - airgraph-ng? ( ${PYTHON_DEPS} ) - experimental? ( sys-libs/zlib ) - sqlite? ( >=dev-db/sqlite-3.4 )" -RDEPEND="${DEPEND} - kernel_linux? ( - net-wireless/iw - net-wireless/wireless-tools - sys-apps/ethtool - sys-apps/usbutils - sys-apps/pciutils ) - sys-apps/hwids - airdrop-ng? ( net-wireless/lorcon[python,${PYTHON_USEDEP}] )" - -REQUIRED_USE="airdrop-ng? ( ${PYTHON_REQUIRED_USE} ) - airgraph-ng? ( ${PYTHON_REQUIRED_USE} )" - -PATCHES=( - "${FILESDIR}/${P}-openssl.patch" -) - -S="${WORKDIR}/${PN}-${MY_PV}" - -pkg_setup() { - MAKE_COMMON=( - CC="$(tc-getCC)" \ - CXX="$(tc-getCXX)" \ - AR="$(tc-getAR)" \ - LD="$(tc-getLD)" \ - RANLIB="$(tc-getRANLIB)" \ - libnl=$(usex netlink true false) \ - pcre=$(usex pcre true false) \ - sqlite=$(usex sqlite true false) \ - experimental=$(usex experimental true false) - prefix="${ED}/usr" \ - ) -} - -src_compile() { - if [[ $($(tc-getCC) --version) == clang* ]] ; then - #https://bugs.gentoo.org/show_bug.cgi?id=472890 - filter-flags -frecord-gcc-switches - fi - - emake "${MAKE_COMMON[@]}" - - if use airgraph-ng; then - cd "${S}/scripts/airgraph-ng" - distutils-r1_src_compile - fi - if use airdrop-ng; then - cd "${S}/scripts/airdrop-ng" - distutils-r1_src_compile - fi -} - -src_test() { - emake "${MAKE_COMMON[@]}" check -} - -src_install() { - einstalldocs - emake "${MAKE_COMMON[@]}" install - - if use airgraph-ng; then - cd "${S}/scripts/airgraph-ng" - distutils-r1_src_install - fi - if use airdrop-ng; then - cd "${S}/scripts/airdrop-ng" - distutils-r1_src_install - fi - - #we don't need aircrack-ng's oui updater, we have our own - rm "${ED}"/usr/sbin/airodump-ng-oui-update -} - -pkg_postinst() { - # Message is (c) FreeBSD - # http://www.freebsd.org/cgi/cvsweb.cgi/ports/net-mgmt/aircrack-ng/files/pkg-message.in?rev=1.5 - if use kernel_FreeBSD ; then - einfo "Contrary to Linux, it is not necessary to use airmon-ng to enable the monitor" - einfo "mode of your wireless card. So do not care about what the manpages say about" - einfo "airmon-ng, airodump-ng sets monitor mode automatically." - echo - einfo "To return from monitor mode, issue the following command:" - einfo " ifconfig \${INTERFACE} -mediaopt monitor" - einfo - einfo "For aireplay-ng you need FreeBSD >= 7.0." - fi -} diff --git a/net-wireless/aircrack-ng/aircrack-ng-9999.ebuild b/net-wireless/aircrack-ng/aircrack-ng-9999.ebuild deleted file mode 100644 index 3fceab7..0000000 --- a/net-wireless/aircrack-ng/aircrack-ng-9999.ebuild +++ /dev/null @@ -1,123 +0,0 @@ -# Copyright 1999-2017 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI="6" - -PYTHON_COMPAT=( python2_7 ) -DISTUTILS_OPTIONAL=1 - -inherit toolchain-funcs distutils-r1 flag-o-matic - -DESCRIPTION="WLAN tools for breaking 802.11 WEP/WPA keys" -HOMEPAGE="http://www.aircrack-ng.org" - -if [[ ${PV} == "9999" ]] ; then - inherit subversion - ESVN_REPO_URI="http://svn.aircrack-ng.org/trunk" - KEYWORDS="" - S="${WORKDIR}/${PN}" -else - MY_PV=${PV/_/-} - SRC_URI="http://download.${PN}.org/${PN}-${MY_PV}.tar.gz" - KEYWORDS="~amd64 ~arm ~ppc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux" - S="${WORKDIR}/${PN}-${MY_PV}" -fi - -LICENSE="GPL-2" -SLOT="0" - -IUSE="+airdrop-ng +airgraph-ng kernel_linux kernel_FreeBSD libressl +netlink +pcre +sqlite +experimental" - -DEPEND="net-libs/libpcap - !libressl? ( dev-libs/openssl:0= ) - libressl? ( dev-libs/libressl:0= ) - netlink? ( dev-libs/libnl:3 ) - pcre? ( dev-libs/libpcre ) - airdrop-ng? ( ${PYTHON_DEPS} ) - airgraph-ng? ( ${PYTHON_DEPS} ) - experimental? ( sys-libs/zlib ) - sqlite? ( >=dev-db/sqlite-3.4 )" -RDEPEND="${DEPEND} - kernel_linux? ( - net-wireless/iw - net-wireless/wireless-tools - sys-apps/ethtool - sys-apps/usbutils - sys-apps/pciutils ) - sys-apps/hwids - airdrop-ng? ( net-wireless/lorcon[python,${PYTHON_USEDEP}] )" - -REQUIRED_USE="airdrop-ng? ( ${PYTHON_REQUIRED_USE} ) - airgraph-ng? ( ${PYTHON_REQUIRED_USE} )" - -pkg_setup() { - MAKE_COMMON=( - CC="$(tc-getCC)" \ - CXX="$(tc-getCXX)" \ - AR="$(tc-getAR)" \ - LD="$(tc-getLD)" \ - RANLIB="$(tc-getRANLIB)" \ - libnl=$(usex netlink true false) \ - pcre=$(usex pcre true false) \ - sqlite=$(usex sqlite true false) \ - experimental=$(usex experimental true false) - prefix="${ED}/usr" \ - ) - [[ ${PV} == "9999" ]] && MAKE_COMMON+=( - liveflags=REVFLAGS=-D_REVISION="${ESVN_WC_REVISION}" - ) -} - -src_compile() { - if [[ $($(tc-getCC) --version) == clang* ]] ; then - #https://bugs.gentoo.org/show_bug.cgi?id=472890 - filter-flags -frecord-gcc-switches - fi - - emake "${MAKE_COMMON[@]}" - - if use airgraph-ng; then - cd "${S}/scripts/airgraph-ng" - distutils-r1_src_compile - fi - if use airdrop-ng; then - cd "${S}/scripts/airdrop-ng" - distutils-r1_src_compile - fi -} - -src_test() { - emake "${MAKE_COMMON[@]}" check -} - -src_install() { - einstalldocs - emake "${MAKE_COMMON[@]}" install - - if use airgraph-ng; then - cd "${S}/scripts/airgraph-ng" - distutils-r1_src_install - fi - if use airdrop-ng; then - cd "${S}/scripts/airdrop-ng" - distutils-r1_src_install - fi - - #we don't need aircrack-ng's oui updater, we have our own - rm "${ED}"/usr/sbin/airodump-ng-oui-update -} - -pkg_postinst() { - # Message is (c) FreeBSD - # http://www.freebsd.org/cgi/cvsweb.cgi/ports/net-mgmt/aircrack-ng/files/pkg-message.in?rev=1.5 - if use kernel_FreeBSD ; then - einfo "Contrary to Linux, it is not necessary to use airmon-ng to enable the monitor" - einfo "mode of your wireless card. So do not care about what the manpages say about" - einfo "airmon-ng, airodump-ng sets monitor mode automatically." - echo - einfo "To return from monitor mode, issue the following command:" - einfo " ifconfig \${INTERFACE} -mediaopt monitor" - einfo - einfo "For aireplay-ng you need FreeBSD >= 7.0." - fi -} diff --git a/net-wireless/aircrack-ng/files/aircrack-ng-1.2_rc4-openssl.patch b/net-wireless/aircrack-ng/files/aircrack-ng-1.2_rc4-openssl.patch deleted file mode 100644 index a83f622..0000000 --- a/net-wireless/aircrack-ng/files/aircrack-ng-1.2_rc4-openssl.patch +++ /dev/null @@ -1,49 +0,0 @@ -Index: a/src/crypto.c -=================================================================== ---- a/src/crypto.c (revision 2881) -+++ b/src/crypto.c (revision 2882) -@@ -288,7 +288,15 @@ - void calc_mic (struct AP_info *ap, unsigned char pmk[32], unsigned char ptk[80], unsigned char mic[20]) { - int i; - unsigned char pke[100]; -+ #if defined(USE_GCRYPT) || OPENSSL_VERSION_NUMBER < 0x10100000L -+ #define HMAC_USE_NO_PTR -+ #endif -+ -+ #ifdef HMAC_USE_NO_PTR - HMAC_CTX ctx; -+ #else -+ HMAC_CTX * ctx; -+ #endif - - memcpy( pke, "Pairwise key expansion", 23 ); - -@@ -314,6 +322,7 @@ - memcpy( pke + 67, ap->wpa.snonce, 32 ); - } - -+ #ifdef HMAC_USE_NO_PTR - HMAC_CTX_init(&ctx); - HMAC_Init_ex(&ctx, pmk, 32, EVP_sha1(), NULL); - for(i = 0; i < 4; i++ ) -@@ -325,6 +334,20 @@ - HMAC_Final(&ctx, ptk + i*20, NULL); - } - HMAC_CTX_cleanup(&ctx); -+ #else -+ ctx = HMAC_CTX_new(); -+ HMAC_Init_ex(ctx, pmk, 32, EVP_sha1(), NULL); -+ for(i = 0; i < 4; i++ ) -+ { -+ pke[99] = i; -+ //HMAC(EVP_sha1(), values[0], 32, pke, 100, ptk + i * 20, NULL); -+ HMAC_Init_ex(ctx, 0, 0, 0, 0); -+ HMAC_Update(ctx, pke, 100); -+ HMAC_Final(ctx, ptk + i*20, NULL); -+ } -+ HMAC_CTX_free(ctx); -+ #endif -+ #undef HMAC_USE_NO_PTR - - if( ap->wpa.keyver == 1 ) - { diff --git a/net-wireless/aircrack-ng/metadata.xml b/net-wireless/aircrack-ng/metadata.xml deleted file mode 100644 index 7e8481f..0000000 --- a/net-wireless/aircrack-ng/metadata.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> -<pkgmetadata> -<maintainer type="person"> - <email>zerochaos@gentoo.org</email> - <name>Rick Farina</name> - <description>Also on the upstream team</description> -</maintainer> -<maintainer type="project"> - <email>netmon@gentoo.org</email> - <name>Gentoo network monitoring and analysis project</name> -</maintainer> -<maintainer type="project"> - <email>crypto@gentoo.org</email> - <name>Crypto</name> -</maintainer> -<longdescription> - aircrack is a set of tools for auditing wireless networks. - aircrack-ng is the next generation of aircrack with lots of new features. - (from http://www.aircrack-ng.org) -</longdescription> -<use> - <flag name="airdrop-ng">Build airdrop-ng</flag> - <flag name="airgraph-ng">Build airgraph-ng</flag> - <flag name="experimental">Build the "experimental" tools which may randomly fail to run properly</flag> - <flag name="netlink">Use netlink for channel control instead of WEXT</flag> - <flag name="unstable">Build the "unstable" tools which may randomly fail to run properly</flag> -</use> -</pkgmetadata> diff --git a/net-wireless/hostapd/Manifest b/net-wireless/hostapd/Manifest index d3f91f3..c70e377 100644 --- a/net-wireless/hostapd/Manifest +++ b/net-wireless/hostapd/Manifest @@ -1 +1 @@ -DIST hostapd-2.6.tar.gz 1822341 SHA256 01526b90c1d23bec4b0f052039cc4456c2fd19347b4d830d1d58a0a6aea7117d SHA512 e60baaa092786250b8de9935f5417c7626f5d749210cce9f83d776b65c19fc92a8141f41923389f05c16295d482a15ae8d8b744f4667425040c99e3c2f5b1bda WHIRLPOOL fa093c371a66f3aa834d44060330259dc20e3a1937ffacc4450c5c645291c2bd4b31bbe1827f7d27bfca724c5e26f53ea59f2e3aa69a4c87177212bb491b119a +DIST hostapd-2.10.tar.gz 2440435 BLAKE2B dbeeae2f62a8ab52df3e2d05ff0467b643cd68349ef3b28814a11dfb67d4b23d14cf2461a3040694706ec614fcd7c2e0fe58f3597e877cf47296cd75e11c792f SHA512 243baa82d621f859d2507d8d5beb0ebda15a75548a62451dc9bca42717dcc8607adac49b354919a41d8257d16d07ac7268203a79750db0cfb34b51f80ff1ce8f diff --git a/net-wireless/hostapd/files/hostapd-2.10-libressl.patch b/net-wireless/hostapd/files/hostapd-2.10-libressl.patch new file mode 100644 index 0000000..268cc27 --- /dev/null +++ b/net-wireless/hostapd/files/hostapd-2.10-libressl.patch @@ -0,0 +1,23 @@ +From 87deed487d8f27feb7c6f8180535e67d9e1847ca Mon Sep 17 00:00:00 2001 +From: orbea <orbea@riseup.net> +Date: Wed, 6 Jul 2022 17:24:11 -0700 +Subject: [PATCH] Fix build with libressl-3.5.x + +Fails with a undefined reference to SSL_set_cert_cb. +--- + src/crypto/tls_openssl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/crypto/tls_openssl.c b/src/crypto/tls_openssl.c +index c9e00b3..5f44a73 100644 +--- a/src/crypto/tls_openssl.c ++++ b/src/crypto/tls_openssl.c +@@ -3048,7 +3048,7 @@ static int tls_set_conn_flags(struct tls_connection *conn, unsigned int flags, + /* Start with defaults from BoringSSL */ + SSL_CTX_set_verify_algorithm_prefs(conn->ssl_ctx, NULL, 0); + #endif /* OPENSSL_IS_BORINGSSL */ +-#if OPENSSL_VERSION_NUMBER >= 0x10002000L ++#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) + if (flags & TLS_CONN_SUITEB_NO_ECDH) { + const char *ciphers = "DHE-RSA-AES256-GCM-SHA384"; + diff --git a/net-wireless/hostapd/files/hostapd-2.6-libressl.patch b/net-wireless/hostapd/files/hostapd-2.6-libressl.patch deleted file mode 100644 index 2010ca8..0000000 --- a/net-wireless/hostapd/files/hostapd-2.6-libressl.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -Naur hostapd-2.6.orig/src/crypto/crypto_openssl.c hostapd-2.6/src/crypto/crypto_openssl.c ---- hostapd-2.6.orig/src/crypto/crypto_openssl.c 2017-02-28 12:49:32.286902599 -0800 -+++ hostapd-2.6/src/crypto/crypto_openssl.c 2017-02-28 12:53:03.119653570 -0800 -@@ -611,7 +611,7 @@ - - void * dh5_init(struct wpabuf **priv, struct wpabuf **publ) - { --#if OPENSSL_VERSION_NUMBER < 0x10100000L -+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) - DH *dh; - struct wpabuf *pubkey = NULL, *privkey = NULL; - size_t publen, privlen; -@@ -712,7 +712,7 @@ - - void * dh5_init_fixed(const struct wpabuf *priv, const struct wpabuf *publ) - { --#if OPENSSL_VERSION_NUMBER < 0x10100000L -+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) - DH *dh; - - dh = DH_new(); diff --git a/net-wireless/hostapd/files/hostapd-init.d b/net-wireless/hostapd/files/hostapd-init.d index fc423e7..3c0fdc9 100644 --- a/net-wireless/hostapd/files/hostapd-init.d +++ b/net-wireless/hostapd/files/hostapd-init.d @@ -1,7 +1,6 @@ #!/sbin/openrc-run # Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Id$ pidfile="/run/${SVCNAME}.pid" command="/usr/sbin/hostapd" diff --git a/net-wireless/hostapd/hostapd-2.10-r3.ebuild b/net-wireless/hostapd/hostapd-2.10-r3.ebuild new file mode 100644 index 0000000..2c60eed --- /dev/null +++ b/net-wireless/hostapd/hostapd-2.10-r3.ebuild @@ -0,0 +1,266 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic systemd savedconfig toolchain-funcs + +DESCRIPTION="IEEE 802.11 wireless LAN Host AP daemon" +HOMEPAGE="https://w1.fi/ https://w1.fi/cgit/hostap/" +S="${S}/${PN}" + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://w1.fi/hostap.git" +else + if [[ ${PV} =~ ^.*_p[0-9]{8}$ ]]; then + SRC_URI+=" https://dev.gentoo.org/~andrey_utkin/distfiles/${P}.tar.xz" + else + SRC_URI+=" https://w1.fi/releases/${P}.tar.gz" + fi + + # Never stabilize snapshot ebuilds please + KEYWORDS="amd64 arm arm64 ~mips ppc x86" +fi + +LICENSE="BSD" +SLOT="0" +IUSE="internal-tls ipv6 netlink selinux sqlite +suiteb +wps" + +DEPEND=" + internal-tls? ( dev-libs/libtommath ) + !internal-tls? ( dev-libs/openssl:0=[-bindist(-)] ) + kernel_linux? ( + net-wireless/wireless-regdb + >=dev-libs/libnl-3.2:3 + ) + netlink? ( net-libs/libnfnetlink ) + sqlite? ( dev-db/sqlite:3 ) +" +RDEPEND=" + ${DEPEND} + selinux? ( sec-policy/selinux-hostapd ) +" +BDEPEND="virtual/pkgconfig" + +PATCHES=( "${FILESDIR}"/${P}-libressl.patch ) + +pkg_pretend() { + if use internal-tls; then + ewarn "internal-tls implementation is experimental and provides fewer features" + fi +} + +src_unpack() { + # Override default one because we need the SRC_URI ones even in case of 9999 ebuilds + default + + if [[ ${PV} == 9999 ]] ; then + git-r3_src_unpack + fi +} + +src_prepare() { + # Allow users to apply patches to src/drivers for example, + # i.e. anything outside ${S}/${PN} + pushd ../ >/dev/null || die + default + popd >/dev/null || die + + sed -i -e "s:/etc/hostapd:/etc/hostapd/hostapd:g" \ + "${S}/hostapd.conf" || die +} + +src_configure() { + local CONFIG="${S}"/.config + + restore_config "${CONFIG}" + if [[ -f "${CONFIG}" ]]; then + default + return 0 + fi + + # toolchain setup + echo "CC = $(tc-getCC)" > "${CONFIG}" || die + + # EAP authentication methods + echo "CONFIG_EAP=y" >> "${CONFIG}" || die + echo "CONFIG_ERP=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_MD5=y" >> "${CONFIG}" || die + + if use suiteb; then + echo "CONFIG_SUITEB=y" >> "${CONFIG}" || die + echo "CONFIG_SUITEB192=y" >> "${CONFIG}" || die + fi + + if use internal-tls ; then + echo "CONFIG_TLS=internal" >> "${CONFIG}" || die + else + # SSL authentication methods + echo "CONFIG_DPP=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_FAST=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_MSCHAPV2=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_PEAP=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_PWD=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_TLS=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_TTLS=y" >> "${CONFIG}" || die + echo "CONFIG_OWE=y" >> "${CONFIG}" || die + echo "CONFIG_SAE=y" >> "${CONFIG}" || die + echo "CONFIG_TLSV11=y" >> "${CONFIG}" || die + echo "CONFIG_TLSV12=y" >> "${CONFIG}" || die + fi + + if use wps; then + # Enable Wi-Fi Protected Setup + echo "CONFIG_WPS=y" >> "${CONFIG}" || die + echo "CONFIG_WPS2=y" >> "${CONFIG}" || die + echo "CONFIG_WPS_UPNP=y" >> "${CONFIG}" || die + echo "CONFIG_WPS_NFC=y" >> "${CONFIG}" || die + einfo "Enabling Wi-Fi Protected Setup support" + fi + + echo "CONFIG_EAP_IKEV2=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_TNC=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_GTC=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_SIM=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_AKA=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_AKA_PRIME=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_EKE=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_PAX=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_PSK=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_SAKE=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_GPSK=y" >> "${CONFIG}" || die + echo "CONFIG_EAP_GPSK_SHA256=y" >> "${CONFIG}" || die + + einfo "Enabling drivers: " + + # drivers + echo "CONFIG_DRIVER_HOSTAP=y" >> "${CONFIG}" || die + einfo " HostAP driver enabled" + echo "CONFIG_DRIVER_WIRED=y" >> "${CONFIG}" || die + einfo " Wired driver enabled" + echo "CONFIG_DRIVER_NONE=y" >> "${CONFIG}" || die + einfo " None driver enabled" + + einfo " nl80211 driver enabled" + echo "CONFIG_DRIVER_NL80211=y" >> "${CONFIG}" || die + + # epoll + echo "CONFIG_ELOOP_EPOLL=y" >> "${CONFIG}" || die + + # misc + echo "CONFIG_DEBUG_FILE=y" >> "${CONFIG}" || die + echo "CONFIG_PKCS12=y" >> "${CONFIG}" || die + echo "CONFIG_RADIUS_SERVER=y" >> "${CONFIG}" || die + echo "CONFIG_IAPP=y" >> "${CONFIG}" || die + echo "CONFIG_IEEE80211R=y" >> "${CONFIG}" || die + echo "CONFIG_IEEE80211W=y" >> "${CONFIG}" || die + echo "CONFIG_IEEE80211N=y" >> "${CONFIG}" || die + echo "CONFIG_IEEE80211AC=y" >> "${CONFIG}" || die + echo "CONFIG_IEEE80211AX=y" >> "${CONFIG}" || die + echo "CONFIG_OCV=y" >> "${CONFIG}" || die + echo "CONFIG_PEERKEY=y" >> "${CONFIG}" || die + echo "CONFIG_RSN_PREAUTH=y" >> "${CONFIG}" || die + echo "CONFIG_INTERWORKING=y" >> "${CONFIG}" || die + echo "CONFIG_FULL_DYNAMIC_VLAN=y" >> "${CONFIG}" || die + echo "CONFIG_HS20=y" >> "${CONFIG}" || die + echo "CONFIG_WNM=y" >> "${CONFIG}" || die + echo "CONFIG_FST=y" >> "${CONFIG}" || die + echo "CONFIG_FST_TEST=y" >> "${CONFIG}" || die + echo "CONFIG_ACS=y" >> "${CONFIG}" || die + + if use netlink; then + # Netlink support + echo "CONFIG_VLAN_NETLINK=y" >> "${CONFIG}" || die + fi + + if use ipv6; then + # IPv6 support + echo "CONFIG_IPV6=y" >> "${CONFIG}" || die + fi + + if use sqlite; then + # Sqlite support + echo "CONFIG_SQLITE=y" >> "${CONFIG}" || die + fi + + if use kernel_linux; then + echo "CONFIG_LIBNL32=y" >> "${CONFIG}" || die + append-cflags "$($(tc-getPKG_CONFIG) --cflags libnl-3.0)" + fi + + # TODO: Add support for BSD drivers + + default +} + +src_compile() { + emake V=1 + + if ! use internal-tls; then + emake V=1 nt_password_hash + emake V=1 hlr_auc_gw + fi +} + +src_install() { + insinto /etc/${PN} + doins ${PN}.{conf,accept,deny,eap_user,radius_clients,sim_db,wpa_psk} + + fperms -R 600 /etc/${PN} + + dosbin ${PN} + dobin ${PN}_cli + + if ! use internal-tls; then + dobin nt_password_hash hlr_auc_gw + fi + + newinitd "${FILESDIR}/${PN}-init.d" ${PN} + newconfd "${FILESDIR}/${PN}-conf.d" ${PN} + systemd_dounit "${FILESDIR}/${PN}.service" + + doman ${PN}{.8,_cli.1} + + dodoc ChangeLog README + use wps && dodoc README-WPS + + docinto examples + dodoc wired.conf + + insinto /etc/log.d/conf/services/ + doins logwatch/${PN}.conf + + exeinto /etc/log.d/scripts/services/ + doexe logwatch/${PN} + + save_config .config +} + +pkg_postinst() { + einfo + einfo "If you are running OpenRC you need to follow this instructions:" + einfo "In order to use ${PN} you need to set up your wireless card" + einfo "for master mode in /etc/conf.d/net and then start" + einfo "/etc/init.d/${PN}." + einfo + einfo "Example configuration:" + einfo + einfo "config_wlan0=( \"192.168.1.1/24\" )" + einfo "channel_wlan0=\"6\"" + einfo "essid_wlan0=\"test\"" + einfo "mode_wlan0=\"master\"" + einfo + + #if [[ -e "${KV_DIR}"/net/mac80211 ]]; then + # einfo "This package now compiles against the headers installed by" + # einfo "the kernel source for the mac80211 driver. You should " + # einfo "re-emerge ${PN} after upgrading your kernel source." + #fi + + if use wps; then + einfo "You have enabled Wi-Fi Protected Setup support, please" + einfo "read the README-WPS file in /usr/share/doc/${PF}" + einfo "for info on how to use WPS" + fi +} diff --git a/net-wireless/hostapd/hostapd-2.6.ebuild b/net-wireless/hostapd/hostapd-2.6.ebuild deleted file mode 100644 index 68f116a..0000000 --- a/net-wireless/hostapd/hostapd-2.6.ebuild +++ /dev/null @@ -1,222 +0,0 @@ -# Copyright 1999-2017 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI="6" - -inherit toolchain-funcs eutils systemd - -# bogus commit to force manifest regeneration #596462 - -DESCRIPTION="IEEE 802.11 wireless LAN Host AP daemon" -HOMEPAGE="http://hostap.epitest.fi" -SRC_URI="http://hostap.epitest.fi/releases/${P}.tar.gz" - -LICENSE="|| ( GPL-2 BSD )" -SLOT="0" -KEYWORDS="amd64 ~arm ~mips ppc x86" -IUSE="ipv6 libressl logwatch netlink sqlite +ssl +wps +crda" - -DEPEND="ssl? ( - !libressl? ( dev-libs/openssl:*[-bindist] ) - libressl? ( dev-libs/libressl:= ) - ) - kernel_linux? ( - dev-libs/libnl:3 - crda? ( net-wireless/crda ) - ) - netlink? ( net-libs/libnfnetlink ) - sqlite? ( >=dev-db/sqlite-3 )" - -RDEPEND="${DEPEND}" - -PATCHES=( "${FILESDIR}"/${P}-libressl.patch ) - -S="${S}/${PN}" - -src_prepare() { - # Allow users to apply patches to src/drivers for example, - # i.e. anything outside ${S}/${PN} - pushd ../ >/dev/null || die - default - popd >/dev/null || die - - sed -i -e "s:/etc/hostapd:/etc/hostapd/hostapd:g" \ - "${S}/hostapd.conf" || die -} - -src_configure() { - local CONFIG="${S}/.config" - - # toolchain setup - echo "CC = $(tc-getCC)" > ${CONFIG} - - # EAP authentication methods - echo "CONFIG_EAP=y" >> ${CONFIG} - echo "CONFIG_ERP=y" >> ${CONFIG} - echo "CONFIG_EAP_MD5=y" >> ${CONFIG} - - if use ssl; then - # SSL authentication methods - echo "CONFIG_EAP_FAST=y" >> ${CONFIG} - echo "CONFIG_EAP_TLS=y" >> ${CONFIG} - echo "CONFIG_EAP_TTLS=y" >> ${CONFIG} - echo "CONFIG_EAP_MSCHAPV2=y" >> ${CONFIG} - echo "CONFIG_EAP_PEAP=y" >> ${CONFIG} - echo "CONFIG_TLSV11=y" >> ${CONFIG} - echo "CONFIG_TLSV12=y" >> ${CONFIG} - fi - - if use wps; then - # Enable Wi-Fi Protected Setup - echo "CONFIG_WPS=y" >> ${CONFIG} - echo "CONFIG_WPS2=y" >> ${CONFIG} - echo "CONFIG_WPS_UPNP=y" >> ${CONFIG} - echo "CONFIG_WPS_NFC=y" >> ${CONFIG} - einfo "Enabling Wi-Fi Protected Setup support" - fi - - echo "CONFIG_EAP_IKEV2=y" >> ${CONFIG} - echo "CONFIG_EAP_TNC=y" >> ${CONFIG} - echo "CONFIG_EAP_GTC=y" >> ${CONFIG} - echo "CONFIG_EAP_SIM=y" >> ${CONFIG} - echo "CONFIG_EAP_AKA=y" >> ${CONFIG} - echo "CONFIG_EAP_AKA_PRIME=y" >> ${CONFIG} - echo "CONFIG_EAP_EKE=y" >> ${CONFIG} - echo "CONFIG_EAP_PAX=y" >> ${CONFIG} - echo "CONFIG_EAP_PSK=y" >> ${CONFIG} - echo "CONFIG_EAP_SAKE=y" >> ${CONFIG} - echo "CONFIG_EAP_GPSK=y" >> ${CONFIG} - echo "CONFIG_EAP_GPSK_SHA256=y" >> ${CONFIG} - echo "CONFIG_EAP_PWD=y" >> ${CONFIG} - - einfo "Enabling drivers: " - - # drivers - echo "CONFIG_DRIVER_HOSTAP=y" >> ${CONFIG} - einfo " HostAP driver enabled" - echo "CONFIG_DRIVER_WIRED=y" >> ${CONFIG} - einfo " Wired driver enabled" - echo "CONFIG_DRIVER_PRISM54=y" >> ${CONFIG} - einfo " Prism54 driver enabled" - echo "CONFIG_DRIVER_NONE=y" >> ${CONFIG} - einfo " None driver enabled" - - einfo " nl80211 driver enabled" - echo "CONFIG_DRIVER_NL80211=y" >> ${CONFIG} - - # epoll - echo "CONFIG_ELOOP_EPOLL=y" >> ${CONFIG} - - # misc - echo "CONFIG_DEBUG_FILE=y" >> ${CONFIG} - echo "CONFIG_PKCS12=y" >> ${CONFIG} - echo "CONFIG_RADIUS_SERVER=y" >> ${CONFIG} - echo "CONFIG_IAPP=y" >> ${CONFIG} - echo "CONFIG_IEEE80211R=y" >> ${CONFIG} - echo "CONFIG_IEEE80211W=y" >> ${CONFIG} - echo "CONFIG_IEEE80211N=y" >> ${CONFIG} - echo "CONFIG_IEEE80211AC=y" >> ${CONFIG} - echo "CONFIG_PEERKEY=y" >> ${CONFIG} - echo "CONFIG_RSN_PREAUTH=y" >> ${CONFIG} - echo "CONFIG_INTERWORKING=y" >> ${CONFIG} - echo "CONFIG_FULL_DYNAMIC_VLAN=y" >> ${CONFIG} - echo "CONFIG_HS20=y" >> ${CONFIG} - echo "CONFIG_WNM=y" >> ${CONFIG} - echo "CONFIG_FST=y" >> ${CONFIG} - echo "CONFIG_FST_TEST=y" >> ${CONFIG} - echo "CONFIG_ACS=y" >> ${CONFIG} - - if use netlink; then - # Netlink support - echo "CONFIG_VLAN_NETLINK=y" >> ${CONFIG} - fi - - if use ipv6; then - # IPv6 support - echo "CONFIG_IPV6=y" >> ${CONFIG} - fi - - if use sqlite; then - # Sqlite support - echo "CONFIG_SQLITE=y" >> ${CONFIG} - fi - - # If we are using libnl 2.0 and above, enable support for it - # Removed for now, since the 3.2 version is broken, and we don't - # support it. - if has_version ">=dev-libs/libnl-3.2"; then - echo "CONFIG_LIBNL32=y" >> .config - fi - - # TODO: Add support for BSD drivers - - default_src_configure -} - -src_compile() { - emake V=1 - - if use ssl; then - emake V=1 nt_password_hash - emake V=1 hlr_auc_gw - fi -} - -src_install() { - insinto /etc/${PN} - doins ${PN}.{conf,accept,deny,eap_user,radius_clients,sim_db,wpa_psk} - - fperms -R 600 /etc/${PN} - - dosbin ${PN} - dobin ${PN}_cli - - use ssl && dobin nt_password_hash hlr_auc_gw - - newinitd "${FILESDIR}"/${PN}-init.d ${PN} - newconfd "${FILESDIR}"/${PN}-conf.d ${PN} - systemd_dounit "${FILESDIR}"/${PN}.service - - doman ${PN}{.8,_cli.1} - - dodoc ChangeLog README - use wps && dodoc README-WPS - - docinto examples - dodoc wired.conf - - if use logwatch; then - insinto /etc/log.d/conf/services/ - doins logwatch/${PN}.conf - - exeinto /etc/log.d/scripts/services/ - doexe logwatch/${PN} - fi -} - -pkg_postinst() { - einfo - einfo "If you are running openRC you need to follow this instructions:" - einfo "In order to use ${PN} you need to set up your wireless card" - einfo "for master mode in /etc/conf.d/net and then start" - einfo "/etc/init.d/${PN}." - einfo - einfo "Example configuration:" - einfo - einfo "config_wlan0=( \"192.168.1.1/24\" )" - einfo "channel_wlan0=\"6\"" - einfo "essid_wlan0=\"test\"" - einfo "mode_wlan0=\"master\"" - einfo - #if [ -e "${KV_DIR}"/net/mac80211 ]; then - # einfo "This package now compiles against the headers installed by" - # einfo "the kernel source for the mac80211 driver. You should " - # einfo "re-emerge ${PN} after upgrading your kernel source." - #fi - - if use wps; then - einfo "You have enabled Wi-Fi Protected Setup support, please" - einfo "read the README-WPS file in /usr/share/doc/${P}" - einfo "for info on how to use WPS" - fi -} diff --git a/net-wireless/hostapd/metadata.xml b/net-wireless/hostapd/metadata.xml index 780abed..35e021e 100644 --- a/net-wireless/hostapd/metadata.xml +++ b/net-wireless/hostapd/metadata.xml @@ -1,21 +1,26 @@ <?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> - <maintainer type="person"> - <email>gurligebis@gentoo.org</email> - <name>Bjarke Istrup Pedersen</name> - </maintainer> <longdescription> User space daemon for the hostap-driver. Extended IEEE 802.11 management, IEEE 802.1X Authenticator, RADIUS Authentication client, RADIUS Accounting client </longdescription> <use> - <flag name="crda">Add CRDA support</flag> - <flag name="logwatch">Install support files for - <pkg>sys-apps/logwatch</pkg></flag> + <flag name="internal-tls">Use internal TLSv1 implementation instead of depending on OpenSSL or GnuTLS</flag> <flag name="netlink">Adding support for using netlink to create VLANs</flag> - <flag name="sqlite">Adding sqlite support</flag> + <flag name="suiteb">Adding support for NSA Suite B Cryptography</flag> <flag name="wps">Add support for Wi-Fi Protected Setup</flag> </use> + <maintainer type="person"> + <email>zerochaos@gentoo.org</email> + <name>Rick Farina</name> + </maintainer> + <maintainer type="person"> + <email>sam@gentoo.org</email> + <name>Sam James</name> + </maintainer> + <upstream> + <remote-id type="cpe">cpe:/a:w1.fi:hostapd</remote-id> + </upstream> </pkgmetadata> diff --git a/net-wireless/wpa_supplicant/Manifest b/net-wireless/wpa_supplicant/Manifest new file mode 100644 index 0000000..0e445ba --- /dev/null +++ b/net-wireless/wpa_supplicant/Manifest @@ -0,0 +1 @@ +DIST wpa_supplicant-2.10.tar.gz 3511622 BLAKE2B 7f6045e5dcf24f7ccf1ea75c99541f9d68fadaea858a6ca11a95c997de14e33b3aa89138e748664579b5a4ea493d247cf6613da3c5fae49a4dbb5cd58dace752 SHA512 021c2a48f45d39c1dc6557730be5debaee071bc0ff82a271638beee6e32314e353e49d39e2f0dc8dff6e094dcc7008cfe1c32d0c7a34a1a345a12a3f1c1e11a1 diff --git a/net-wireless/wpa_supplicant/files/wpa_cli.sh b/net-wireless/wpa_supplicant/files/wpa_cli.sh new file mode 100644 index 0000000..c581bc1 --- /dev/null +++ b/net-wireless/wpa_supplicant/files/wpa_cli.sh @@ -0,0 +1,46 @@ +#!/bin/sh +# Copyright 1999-2011 Gentoo Foundation +# Written by Roy Marples <uberlord@gentoo.org> +# Distributed under the terms of the GNU General Public License v2 +# Alternatively, this file may be distributed under the terms of the BSD License + +if [ -z "$1" -o -z "$2" ]; then + logger -t wpa_cli "Insufficient parameters" + exit 1 +fi + +INTERFACE="$1" +ACTION="$2" + +# Note, the below action must NOT mark the interface down via ifconfig, ip or +# similar. Addresses can be removed, changed and daemons can be stopped, but +# the interface must remain up for wpa_supplicant to work. + +if [ -f /etc/gentoo-release ]; then + EXEC="/etc/init.d/net.${INTERFACE} --quiet" +else + logger -t wpa_cli "I don't know what to do with this distro!" + exit 1 +fi + +case ${ACTION} in + CONNECTED) + EXEC="${EXEC} start" + ;; + DISCONNECTED) + # Deactivated, since stopping /etc/init.d/net.wlanX + # stops the network completly. + EXEC="false ${EXEC} stop" + ;; + *) + logger -t wpa_cli "Unknown action ${ACTION}" + exit 1 + ;; +esac + +# ${EXEC} can use ${IN_BACKGROUND} so that it knows that the user isn't +# stopping the interface and a background process - like wpa_cli - is. +export IN_BACKGROUND=true + +logger -t wpa_cli "interface ${INTERFACE} ${ACTION}" +${EXEC} || logger -t wpa_cli "executing '${EXEC}' failed" diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-2.10-Drop-security-level-to-0-with-OpenSSL-3.0-wh.patch b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.10-Drop-security-level-to-0-with-OpenSSL-3.0-wh.patch new file mode 100644 index 0000000..18f879c --- /dev/null +++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.10-Drop-security-level-to-0-with-OpenSSL-3.0-wh.patch @@ -0,0 +1,57 @@ +From: Jouni Malinen <j@w1.fi> +Date: Sun, 22 May 2022 17:01:35 +0300 +Subject: OpenSSL: Drop security level to 0 with OpenSSL 3.0 when using TLS 1.0/1.1 + +Commit 9afb68b03976 ("OpenSSL: Allow systemwide secpolicy overrides for +TLS version") with commit 58bbcfa31b18 ("OpenSSL: Update security level +drop for TLS 1.0/1.1 with OpenSSL 3.0") allow this workaround to be +enabled with an explicit network configuration parameter. However, the +default settings are still allowing TLS 1.0 and 1.1 to be negotiated +just to see them fail immediately when using OpenSSL 3.0. This is not +exactly helpful especially when the OpenSSL error message for this +particular case is "internal error" which does not really say anything +about the reason for the error. + +It is is a bit inconvenient to update the security policy for this +particular issue based on the negotiated TLS version since that happens +in the middle of processing for the first message from the server. +However, this can be done by using the debug callback for printing out +the received TLS messages during processing. + +Drop the OpenSSL security level to 0 if that is the only option to +continue the TLS negotiation, i.e., when TLS 1.0/1.1 are still allowed +in wpa_supplicant default configuration and OpenSSL 3.0 with the +constraint on MD5-SHA1 use. + +Signed-off-by: Jouni Malinen <j@w1.fi> + +Bug-Debian: https://bugs.debian.org/1011121 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1958267 +Origin: upstream, commit:bc99366f9b960150aa2e369048bbc2218c1d414e +--- + src/crypto/tls_openssl.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/crypto/tls_openssl.c b/src/crypto/tls_openssl.c +index 6602ac64f591..78621d926dab 100644 +--- a/src/crypto/tls_openssl.c ++++ b/src/crypto/tls_openssl.c +@@ -1557,6 +1557,15 @@ static void tls_msg_cb(int write_p, int version, int content_type, + struct tls_connection *conn = arg; + const u8 *pos = buf; + ++#if OPENSSL_VERSION_NUMBER >= 0x30000000L ++ if ((SSL_version(ssl) == TLS1_VERSION || ++ SSL_version(ssl) == TLS1_1_VERSION) && ++ SSL_get_security_level(ssl) > 0) { ++ wpa_printf(MSG_DEBUG, ++ "OpenSSL: Drop security level to 0 to allow TLS 1.0/1.1 use of MD5-SHA1 signature algorithm"); ++ SSL_set_security_level(ssl, 0); ++ } ++#endif /* OpenSSL version >= 3.0 */ + if (write_p == 2) { + wpa_printf(MSG_DEBUG, + "OpenSSL: session ver=0x%x content_type=%d", +-- +2.39.0 + diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-2.10-allow-legacy-renegotiation.patch b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.10-allow-legacy-renegotiation.patch new file mode 100644 index 0000000..574973f --- /dev/null +++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.10-allow-legacy-renegotiation.patch @@ -0,0 +1,30 @@ +From: James Ralston <ralston@pobox.com> +Date: Sun, 1 May 2022 16:15:23 -0700 +Subject: Allow legacy renegotiation to fix PEAP issues with some servers + +Upstream: http://lists.infradead.org/pipermail/hostap/2022-May/040511.html +--- + src/crypto/tls_openssl.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/crypto/tls_openssl.c b/src/crypto/tls_openssl.c +index 273e5cb..ad3aa1a 100644 +--- a/src/crypto/tls_openssl.c ++++ b/src/crypto/tls_openssl.c +@@ -1056,6 +1056,16 @@ void * tls_init(const struct tls_config *conf) + SSL_CTX_set_options(ssl, SSL_OP_NO_SSLv2); + SSL_CTX_set_options(ssl, SSL_OP_NO_SSLv3); + ++ /* Many enterprise PEAP server implementations (e.g. used in large ++ corporations and universities) do not support RFC5746 secure ++ renegotiation, and starting with OpenSSL 3.0, ++ SSL_OP_LEGACY_SERVER_CONNECT is no longer set as part of SSL_OP_ALL. ++ So until we implement a way to request SSL_OP_LEGACY_SERVER_CONNECT ++ only in EAP peer mode, just set SSL_OP_LEGACY_SERVER_CONNECT ++ globally. */ ++ ++ SSL_CTX_set_options(ssl, SSL_OP_LEGACY_SERVER_CONNECT); ++ + SSL_CTX_set_mode(ssl, SSL_MODE_AUTO_RETRY); + + #ifdef SSL_MODE_NO_AUTO_CHAIN diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-2.6-do-not-call-dbus-functions-with-NULL-path.patch b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.6-do-not-call-dbus-functions-with-NULL-path.patch new file mode 100644 index 0000000..0f340c9 --- /dev/null +++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.6-do-not-call-dbus-functions-with-NULL-path.patch @@ -0,0 +1,13 @@ +diff --git a/wpa_supplicant/dbus/dbus_new_helpers.c b/wpa_supplicant/dbus/dbus_new_helpers.c +index 45623f3..0fc3d08 100644 +--- a/wpa_supplicant/dbus/dbus_new_helpers.c ++++ b/wpa_supplicant/dbus/dbus_new_helpers.c +@@ -847,7 +847,7 @@ void wpa_dbus_mark_property_changed(struct wpas_dbus_priv *iface, + const struct wpa_dbus_property_desc *dsc; + int i = 0; + +- if (iface == NULL) ++ if (iface == NULL || path == NULL) + return; + + dbus_connection_get_object_path_data(iface->con, path, diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-2.9-libressl.patch b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.9-libressl.patch new file mode 100644 index 0000000..7a3fe0d --- /dev/null +++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.9-libressl.patch @@ -0,0 +1,12 @@ +diff --git a/src/crypto/tls_openssl.c b/src/crypto/tls_openssl.c +index 345a35ee1..fc6a606d0 100644 +--- a/src/crypto/tls_openssl.c ++++ b/src/crypto/tls_openssl.c +@@ -3034,7 +3034,7 @@ static int tls_set_conn_flags(struct tls_connection *conn, unsigned int flags, + /* Start with defaults from BoringSSL */ + SSL_CTX_set_verify_algorithm_prefs(conn->ssl_ctx, NULL, 0); + #endif /* OPENSSL_IS_BORINGSSL */ +-#if OPENSSL_VERSION_NUMBER >= 0x10002000L ++#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER) + if (flags & TLS_CONN_SUITEB_NO_ECDH) { + const char *ciphers = "DHE-RSA-AES256-GCM-SHA384"; diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-conf.d b/net-wireless/wpa_supplicant/files/wpa_supplicant-conf.d new file mode 100644 index 0000000..5381c8c --- /dev/null +++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-conf.d @@ -0,0 +1,10 @@ +# conf.d file for wpa_supplicant + +# uncomment this if wpa_supplicant starts up before your network interface +# is ready and it causes issues +# rc_want="dev-settle" + +# Please check man 8 wpa_supplicant for more information about the options +# wpa_supplicant accepts. +# +wpa_supplicant_args="" diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-init.d b/net-wireless/wpa_supplicant/files/wpa_supplicant-init.d new file mode 100644 index 0000000..380387a --- /dev/null +++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-init.d @@ -0,0 +1,70 @@ +#!/sbin/openrc-run +# Copyright (c) 2009 Roy Marples <roy@marples.name> +# All rights reserved. Released under the 2-clause BSD license. + +command=/usr/sbin/wpa_supplicant +: ${wpa_supplicant_conf:=/etc/wpa_supplicant/wpa_supplicant.conf} +wpa_supplicant_if=${wpa_supplicant_if:+-i}$wpa_supplicant_if +command_args="$wpa_supplicant_args -B -c$wpa_supplicant_conf $wpa_supplicant_if" +name="WPA Supplicant Daemon" + +depend() +{ + need localmount + use logger + after bootmisc modules + before dns dhcpcd net + keyword -shutdown +} + +find_wireless() +{ + local iface= + + case "$RC_UNAME" in + Linux) + for iface in /sys/class/net/*; do + if [ -e "$iface"/wireless -o \ + -e "$iface"/phy80211 ] + then + echo "${iface##*/}" + return 0 + fi + done + ;; + *) + for iface in /dev/net/* $(ifconfig -l 2>/dev/null); do + if ifconfig "${iface##*/}" 2>/dev/null | \ + grep -q "[ ]*ssid " + then + echo "${iface##*/}" + return 0 + fi + done + ;; + esac + + return 1 +} + +append_wireless() +{ + local iface= i= + + iface=$(find_wireless) + if [ -n "$iface" ]; then + for i in $iface; do + command_args="$command_args -i$i" + done + else + eerror "Could not find a wireless interface" + fi +} + +start_pre() +{ + case " $command_args" in + *" -i"*) ;; + *) append_wireless;; + esac +} diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant.conf b/net-wireless/wpa_supplicant/files/wpa_supplicant.conf new file mode 100644 index 0000000..c3a29e5 --- /dev/null +++ b/net-wireless/wpa_supplicant/files/wpa_supplicant.conf @@ -0,0 +1,7 @@ +# This is a network block that connects to any unsecured access point. +# We give it a low priority so any defined blocks are preferred. +network={ + key_mgmt=NONE + priority=-9999999 +} + diff --git a/net-wireless/wpa_supplicant/metadata.xml b/net-wireless/wpa_supplicant/metadata.xml new file mode 100644 index 0000000..489b2ea --- /dev/null +++ b/net-wireless/wpa_supplicant/metadata.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>zerochaos@gentoo.org</email> + <name>Rick Farina</name> + </maintainer> + <use> + <flag name="ap">Add support for access point mode</flag> + <flag name="broadcom-sta">Flag to help users disable features not supported by broadcom-sta driver</flag> + <flag name="eap-sim">Add support for EAP-SIM authentication algorithm</flag> + <flag name="eapol-test">Build and install eapol_test binary</flag> + <flag name="fasteap">Add support for FAST-EAP authentication algorithm</flag> + <flag name="fils">Add support for Fast Initial Link Setup (802.11ai)</flag> + <flag name="hs2-0">Add support for 802.11u and Passpoint for HotSpot 2.0</flag> + <flag name="macsec">Add support for wired macsec</flag> + <flag name="mbo">Add support Multiband Operation</flag> + <flag name="mesh">Add support for mesh mode</flag> + <flag name="p2p">Add support for Wi-Fi Direct mode</flag> + <flag name="ps3">Add support for ps3 hypervisor driven gelic wifi</flag> + <flag name="privsep">Enable wpa_priv privledge separation binary</flag> + <flag name="tdls">Add support for Tunneled Direct Link Setup (802.11z)</flag> + <flag name="tkip">Add support for WPA TKIP (deprecated due to security flaws in 2009)</flag> + <flag name="uncommon-eap-types">Add support for GPSK, SAKE, GPSK_SHA256, IKEV2 and EKE</flag> + <flag name="wep">Add support for Wired Equivalent Privacy (deprecated due to security flaws in 2004)</flag> + <flag name="wps">Add support for Wi-Fi Protected Setup</flag> + <flag name="wimax">Add support for Wimax EAP-PEER authentication algorithm</flag> + <flag name="smartcard">Add support for smartcards</flag> + </use> + <upstream> + <remote-id type="cpe">cpe:/a:wpa_supplicant:wpa_supplicant</remote-id> + </upstream> +</pkgmetadata> diff --git a/net-wireless/wpa_supplicant/wpa_supplicant-2.10-r4.ebuild b/net-wireless/wpa_supplicant/wpa_supplicant-2.10-r4.ebuild new file mode 100644 index 0000000..03b32ce --- /dev/null +++ b/net-wireless/wpa_supplicant/wpa_supplicant-2.10-r4.ebuild @@ -0,0 +1,480 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop linux-info qmake-utils readme.gentoo-r1 systemd toolchain-funcs + +DESCRIPTION="IEEE 802.1X/WPA supplicant for secure wireless transfers" +HOMEPAGE="https://w1.fi/wpa_supplicant/" +LICENSE="|| ( GPL-2 BSD )" + +if [ "${PV}" = "9999" ]; then + inherit git-r3 + EGIT_REPO_URI="https://w1.fi/hostap.git" +else + KEYWORDS="~alpha amd64 arm arm64 ~ia64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86" + SRC_URI="https://w1.fi/releases/${P}.tar.gz" +fi + +SLOT="0" +IUSE="ap broadcom-sta dbus eap-sim eapol-test fasteap +fils +hs2-0 macsec +mbo +mesh p2p privsep ps3 qt5 readline selinux smartcard tdls tkip uncommon-eap-types wep wimax wps" + +# CONFIG_PRIVSEP=y does not have sufficient support for the new driver +# interface functions used for MACsec, so this combination cannot be used +# at least for now. bug #684442 +REQUIRED_USE=" + macsec? ( !privsep ) + privsep? ( !macsec ) + broadcom-sta? ( !fils !mesh !mbo ) +" + +DEPEND=" + >=dev-libs/openssl-1.0.2k:= + dbus? ( sys-apps/dbus ) + kernel_linux? ( + >=dev-libs/libnl-3.2:3 + eap-sim? ( sys-apps/pcsc-lite ) + ) + !kernel_linux? ( net-libs/libpcap ) + qt5? ( + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtsvg:5 + dev-qt/qtwidgets:5 + ) + readline? ( + sys-libs/ncurses:0= + sys-libs/readline:0= + ) +" +RDEPEND="${DEPEND} + selinux? ( sec-policy/selinux-networkmanager ) + kernel_linux? ( + net-wireless/wireless-regdb + ) +" +BDEPEND="virtual/pkgconfig" + +DOC_CONTENTS=" + If this is a clean installation of wpa_supplicant, you + have to create a configuration file named + ${EROOT}/etc/wpa_supplicant/wpa_supplicant.conf + An example configuration file is available for reference in + ${EROOT}/usr/share/doc/${PF}/ +" + +S="${WORKDIR}/${P}/${PN}" + +Kconfig_style_config() { + #param 1 is CONFIG_* item + #param 2 is what to set it = to, defaulting in y + CONFIG_PARAM="${CONFIG_HEADER:-CONFIG_}$1" + setting="${2:-y}" + + if [ ! $setting = n ]; then + #first remove any leading "# " if $2 is not n + sed -i "/^# *$CONFIG_PARAM=/s/^# *//" .config || echo "Kconfig_style_config error uncommenting $CONFIG_PARAM" + #set item = $setting (defaulting to y) + if ! sed -i "/^$CONFIG_PARAM\>/s/=.*/=$setting/" .config; then + echo "Kconfig_style_config error setting $CONFIG_PARAM=$setting" + fi + if [ -z "$( grep ^$CONFIG_PARAM= .config )" ] ; then + echo "$CONFIG_PARAM=$setting" >>.config + fi + else + #ensure item commented out + if ! sed -i "/^$CONFIG_PARAM\>/s/$CONFIG_PARAM/# $CONFIG_PARAM/" .config; then + echo "Kconfig_style_config error commenting $CONFIG_PARAM" + fi + fi +} + +src_prepare() { + default + + # net/bpf.h needed for net-libs/libpcap on Gentoo/FreeBSD + sed -i \ + -e "s:\(#include <pcap\.h>\):#include <net/bpf.h>\n\1:" \ + ../src/l2_packet/l2_packet_freebsd.c || die + + # Change configuration to match Gentoo locations (bug #143750) + sed -i \ + -e "s:/usr/lib/opensc:/usr/$(get_libdir):" \ + -e "s:/usr/lib/pkcs11:/usr/$(get_libdir):" \ + wpa_supplicant.conf || die + + # systemd entries to D-Bus service files (bug #372877) + echo 'SystemdService=wpa_supplicant.service' \ + | tee -a dbus/*.service >/dev/null || die + + cd "${WORKDIR}/${P}" || die + + if use wimax; then + # generate-libeap-peer.patch comes before + # fix-undefined-reference-to-random_get_bytes.patch + eapply "${FILESDIR}/${P}-generate-libeap-peer.patch" + + # multilib-strict fix (bug #373685) + sed -e "s/\/usr\/lib/\/usr\/$(get_libdir)/" -i src/eap_peer/Makefile || die + fi + + # bug (320097) + eapply "${FILESDIR}/${PN}-2.6-do-not-call-dbus-functions-with-NULL-path.patch" + + # bug (912315) + eapply "${FILESDIR}/${PN}-2.10-allow-legacy-renegotiation.patch" + eapply "${FILESDIR}/${P}-Drop-security-level-to-0-with-OpenSSL-3.0-wh.patch" + + # bug (640492) + sed -i 's#-Werror ##' wpa_supplicant/Makefile || die + + # LibreSSL patch (https://github.com/gentoo/libressl/issues/336) + eapply "${FILESDIR}/${PN}-2.9-libressl.patch" +} + +src_configure() { + # Toolchain setup + tc-export CC PKG_CONFIG + + cp defconfig .config || die + + # Basic setup + Kconfig_style_config CTRL_IFACE + Kconfig_style_config MATCH_IFACE + Kconfig_style_config BACKEND file + Kconfig_style_config IBSS_RSN + Kconfig_style_config IEEE80211W + Kconfig_style_config IEEE80211R + Kconfig_style_config HT_OVERRIDES + Kconfig_style_config VHT_OVERRIDES + Kconfig_style_config OCV + Kconfig_style_config TLSV11 + Kconfig_style_config TLSV12 + Kconfig_style_config GETRANDOM + + # Basic authentication methods + # NOTE: we don't set GPSK or SAKE as they conflict + # with the below options + Kconfig_style_config EAP_GTC + Kconfig_style_config EAP_MD5 + Kconfig_style_config EAP_OTP + Kconfig_style_config EAP_PAX + Kconfig_style_config EAP_PSK + Kconfig_style_config EAP_TLV + Kconfig_style_config EAP_EXE + Kconfig_style_config IEEE8021X_EAPOL + Kconfig_style_config PKCS12 + Kconfig_style_config PEERKEY + Kconfig_style_config EAP_LEAP + Kconfig_style_config EAP_MSCHAPV2 + Kconfig_style_config EAP_PEAP + Kconfig_style_config EAP_TEAP + Kconfig_style_config EAP_TLS + Kconfig_style_config EAP_TTLS + + # Enabling background scanning. + Kconfig_style_config BGSCAN_SIMPLE + Kconfig_style_config BGSCAN_LEARN + + if use dbus ; then + Kconfig_style_config CTRL_IFACE_DBUS + Kconfig_style_config CTRL_IFACE_DBUS_NEW + Kconfig_style_config CTRL_IFACE_DBUS_INTRO + else + Kconfig_style_config CTRL_IFACE_DBUS n + Kconfig_style_config CTRL_IFACE_DBUS_NEW n + Kconfig_style_config CTRL_IFACE_DBUS_INTRO n + fi + + if use eapol-test ; then + Kconfig_style_config EAPOL_TEST + fi + + # Enable support for writing debug info to a log file and syslog. + Kconfig_style_config DEBUG_FILE + Kconfig_style_config DEBUG_SYSLOG + + if use hs2-0 ; then + Kconfig_style_config INTERWORKING + Kconfig_style_config HS20 + fi + + if use mbo ; then + Kconfig_style_config MBO + else + Kconfig_style_config MBO n + fi + + if use uncommon-eap-types; then + Kconfig_style_config EAP_GPSK + Kconfig_style_config EAP_SAKE + Kconfig_style_config EAP_GPSK_SHA256 + Kconfig_style_config EAP_IKEV2 + Kconfig_style_config EAP_EKE + fi + + if use eap-sim ; then + # Smart card authentication + Kconfig_style_config EAP_SIM + Kconfig_style_config EAP_AKA + Kconfig_style_config EAP_AKA_PRIME + Kconfig_style_config PCSC + fi + + if use fasteap ; then + Kconfig_style_config EAP_FAST + fi + + if use readline ; then + # readline/history support for wpa_cli + Kconfig_style_config READLINE + else + #internal line edit mode for wpa_cli + Kconfig_style_config WPA_CLI_EDIT + fi + + Kconfig_style_config TLS openssl + Kconfig_style_config FST + + Kconfig_style_config EAP_PWD + if use fils; then + Kconfig_style_config FILS + Kconfig_style_config FILS_SK_PFS + fi + if use mesh; then + Kconfig_style_config MESH + else + Kconfig_style_config MESH n + fi + # WPA3 + Kconfig_style_config OWE + Kconfig_style_config SAE + Kconfig_style_config DPP + Kconfig_style_config DPP2 + Kconfig_style_config SUITEB192 + Kconfig_style_config SUITEB + + if use wep ; then + Kconfig_style_config WEP + else + Kconfig_style_config WEP n + fi + + # Watch out, reversed logic + if use tkip ; then + Kconfig_style_config NO_TKIP n + else + Kconfig_style_config NO_TKIP + fi + + if use smartcard ; then + Kconfig_style_config SMARTCARD + else + Kconfig_style_config SMARTCARD n + fi + + if use tdls ; then + Kconfig_style_config TDLS + fi + + if use kernel_linux ; then + # Linux specific drivers + Kconfig_style_config DRIVER_ATMEL + Kconfig_style_config DRIVER_HOSTAP + Kconfig_style_config DRIVER_IPW + Kconfig_style_config DRIVER_NL80211 + Kconfig_style_config DRIVER_RALINK + Kconfig_style_config DRIVER_WEXT + Kconfig_style_config DRIVER_WIRED + + if use macsec ; then + #requires something, no idea what + #Kconfig_style_config DRIVER_MACSEC_QCA + Kconfig_style_config DRIVER_MACSEC_LINUX + Kconfig_style_config MACSEC + else + # bug #831369 and bug #684442 + Kconfig_style_config DRIVER_MACSEC_LINUX n + Kconfig_style_config MACSEC n + fi + + if use ps3 ; then + Kconfig_style_config DRIVER_PS3 + fi + fi + + # Wi-Fi Protected Setup (WPS) + if use wps ; then + Kconfig_style_config WPS + Kconfig_style_config WPS2 + # USB Flash Drive + Kconfig_style_config WPS_UFD + # External Registrar + Kconfig_style_config WPS_ER + # Universal Plug'n'Play + Kconfig_style_config WPS_UPNP + # Near Field Communication + Kconfig_style_config WPS_NFC + else + Kconfig_style_config WPS n + Kconfig_style_config WPS2 n + Kconfig_style_config WPS_UFD n + Kconfig_style_config WPS_ER n + Kconfig_style_config WPS_UPNP n + Kconfig_style_config WPS_NFC n + fi + + # Wi-Fi Direct (WiDi) + if use p2p ; then + Kconfig_style_config P2P + Kconfig_style_config WIFI_DISPLAY + else + Kconfig_style_config P2P n + Kconfig_style_config WIFI_DISPLAY n + fi + + # Access Point Mode + if use ap ; then + Kconfig_style_config AP + else + Kconfig_style_config AP n + fi + + # Enable essentials for AP/P2P + if use ap || use p2p ; then + # Enabling HT support (802.11n) + Kconfig_style_config IEEE80211N + + # Enabling VHT support (802.11ac) + Kconfig_style_config IEEE80211AC + fi + + # Enable mitigation against certain attacks against TKIP + Kconfig_style_config DELAYED_MIC_ERROR_REPORT + + if use privsep ; then + Kconfig_style_config PRIVSEP + fi + + if use kernel_linux ; then + Kconfig_style_config LIBNL32 + fi + + if use qt5 ; then + pushd "${S}"/wpa_gui-qt4 > /dev/null || die + eqmake5 wpa_gui.pro + popd > /dev/null || die + fi +} + +src_compile() { + einfo "Building wpa_supplicant" + emake V=1 BINDIR=/usr/sbin + + if use wimax; then + emake -C ../src/eap_peer clean + emake -C ../src/eap_peer + fi + + if use qt5; then + einfo "Building wpa_gui" + emake -C "${S}"/wpa_gui-qt4 + fi + + if use eapol-test ; then + emake eapol_test + fi +} + +src_install() { + dosbin wpa_supplicant + use privsep && dosbin wpa_priv + dobin wpa_cli wpa_passphrase + + newinitd "${FILESDIR}/${PN}-init.d" wpa_supplicant + newconfd "${FILESDIR}/${PN}-conf.d" wpa_supplicant + + exeinto /etc/wpa_supplicant/ + newexe "${FILESDIR}/wpa_cli.sh" wpa_cli.sh + + readme.gentoo_create_doc + dodoc ChangeLog {eap_testing,todo}.txt README{,-WPS} \ + wpa_supplicant.conf + + newdoc .config build-config + + if [ "${PV}" != "9999" ]; then + doman doc/docbook/*.{5,8} + fi + + if use qt5 ; then + into /usr + dobin wpa_gui-qt4/wpa_gui + doicon wpa_gui-qt4/icons/wpa_gui.svg + domenu wpa_gui-qt4/wpa_gui.desktop + else + rm "${ED}"/usr/share/man/man8/wpa_gui.8 + fi + + use wimax && emake DESTDIR="${D}" -C ../src/eap_peer install + + if use dbus ; then + pushd "${S}"/dbus > /dev/null || die + insinto /etc/dbus-1/system.d + newins dbus-wpa_supplicant.conf wpa_supplicant.conf + insinto /usr/share/dbus-1/system-services + doins fi.w1.wpa_supplicant1.service + popd > /dev/null || die + + # This unit relies on dbus support, bug 538600. + systemd_dounit systemd/wpa_supplicant.service + fi + + if use eapol-test ; then + dobin eapol_test + fi + + systemd_dounit "systemd/wpa_supplicant@.service" + systemd_dounit "systemd/wpa_supplicant-nl80211@.service" + systemd_dounit "systemd/wpa_supplicant-wired@.service" +} + +pkg_postinst() { + readme.gentoo_print_elog + + if [[ -e "${EROOT}"/etc/wpa_supplicant.conf ]] ; then + echo + ewarn "WARNING: your old configuration file ${EROOT}/etc/wpa_supplicant.conf" + ewarn "needs to be moved to ${EROOT}/etc/wpa_supplicant/wpa_supplicant.conf" + fi + if ! use wep; then + einfo "WARNING: You are building with WEP support disabled, which is recommended since" + einfo "this protocol is deprecated and insecure. If you still need to connect to" + einfo "WEP-enabled networks, you may turn this flag back on. With this flag off," + einfo "WEP-enabled networks will not even show up as available." + einfo "If your network is missing you may wish to USE=wep" + fi + if ! use tkip; then + ewarn "WARNING: You are building with TKIP support disabled, which is recommended since" + ewarn "this protocol is deprecated and insecure. If you still need to connect to" + ewarn "TKIP-enabled networks, you may turn this flag back on. With this flag off," + ewarn "TKIP-enabled networks, including mixed mode TKIP/AES-CCMP will not even show up" + ewarn "as available. If your network is missing you may wish to USE=tkip" + fi + + # Mea culpa, feel free to remove that after some time --mgorny. + local fn + for fn in wpa_supplicant{,@wlan0}.service; do + if [[ -e "${EROOT}"/etc/systemd/system/network.target.wants/${fn} ]] + then + ebegin "Moving ${fn} to multi-user.target" + mv "${EROOT}"/etc/systemd/system/network.target.wants/${fn} \ + "${EROOT}"/etc/systemd/system/multi-user.target.wants/ || die + eend ${?} \ + "Please try to re-enable ${fn}" + fi + done + + systemd_reenable wpa_supplicant.service +} diff --git a/sec-keys/openpgp-keys-libressl/Manifest b/sec-keys/openpgp-keys-libressl/Manifest new file mode 100644 index 0000000..69dc746 --- /dev/null +++ b/sec-keys/openpgp-keys-libressl/Manifest @@ -0,0 +1 @@ +DIST openpgp-keys-libressl-20240309.asc 18068 BLAKE2B 6204cfa9afb3fe644d86f9a9a10add1a9a598773a92b79187f8e9da42172f24854ac022fb40cc298120e7c91e181097ad661b5697757f520e9c72c5662f8148e SHA512 eb1a839904f30de678cc06327a60fe87bf94bb4698351598d7ae68b3a28ffef98b46171b86983004a2671495dd70ee96a8e6a1a5167e25f7b3857d4f72b4f39e diff --git a/sec-keys/openpgp-keys-libressl/metadata.xml b/sec-keys/openpgp-keys-libressl/metadata.xml new file mode 100644 index 0000000..b690a67 --- /dev/null +++ b/sec-keys/openpgp-keys-libressl/metadata.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>orbea@riseup.net</email> + </maintainer> + <stabilize-allarches/> +</pkgmetadata> diff --git a/sec-keys/openpgp-keys-libressl/openpgp-keys-libressl-20240309.ebuild b/sec-keys/openpgp-keys-libressl/openpgp-keys-libressl-20240309.ebuild new file mode 100644 index 0000000..89c8ce5 --- /dev/null +++ b/sec-keys/openpgp-keys-libressl/openpgp-keys-libressl-20240309.ebuild @@ -0,0 +1,19 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="OpenPGP keys used by the libressl project" +HOMEPAGE="https://www.libressl.org/" +SRC_URI="https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl.asc -> ${P}.asc" +S=${WORKDIR} + +LICENSE="public-domain" +SLOT="0" +KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86" + +src_install() { + local files=( ${A} ) + insinto /usr/share/openpgp-keys + newins - libressl.asc < <(cat "${files[@]/#/${DISTDIR}/}" || die) +} diff --git a/sys-cluster/keepalived/Manifest b/sys-cluster/keepalived/Manifest deleted file mode 100644 index 6d62878..0000000 --- a/sys-cluster/keepalived/Manifest +++ /dev/null @@ -1 +0,0 @@ -DIST keepalived-1.4.0.tar.gz 731936 BLAKE2B b6adf7925cc81a4c6e6f69afaa28bd72f6c13076be03f2971775a63c823dac5c6fec46e0b6724af1a7ac9036a749b285429ba3ffad2d9ecc39ccc213cbe2cb28 SHA512 485eda5912d68663f011b8e79263ce1e38ed785919055b113536f63aab52c0d5f581a9ab1951c7f62362ac0a68ee921efc41934a4e535d6df7e59249ef32d6d3 diff --git a/sys-cluster/keepalived/files/keepalived-1.4.0-fix-no-sorry-segfault.patch b/sys-cluster/keepalived/files/keepalived-1.4.0-fix-no-sorry-segfault.patch deleted file mode 100644 index cbababb..0000000 --- a/sys-cluster/keepalived/files/keepalived-1.4.0-fix-no-sorry-segfault.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 49559856e19a1a9fad590cc640da7df57c6b9a66 Mon Sep 17 00:00:00 2001 -From: Quentin Armitage <quentin@armitage.org.uk> -Date: Wed, 17 Jan 2018 12:08:07 +0000 -Subject: [PATCH] Fix segfault if no sorry server configured for a virtual - server - -Issue #751 identified a segfault in vs_end_handler(), and it -transpires that the forwarding method of the sorry server was being -checked without first testing that a sorry server had been configured. - -Signed-off-by: Quentin Armitage <quentin@armitage.org.uk> ---- - keepalived/check/check_parser.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/keepalived/check/check_parser.c b/keepalived/check/check_parser.c -index b2518da7..170e47d4 100644 ---- a/keepalived/check/check_parser.c -+++ b/keepalived/check/check_parser.c -@@ -120,7 +120,7 @@ vs_end_handler(void) - - /* If the real (sorry) server uses tunnel forwarding, the address family - * does not have to match the address family of the virtaul server */ -- if (vs->s_svr->forwarding_method != IP_VS_CONN_F_TUNNEL) { -+ if (vs->s_svr && vs->s_svr->forwarding_method != IP_VS_CONN_F_TUNNEL) { - if (vs->af == AF_UNSPEC) - vs->af = vs->s_svr->addr.ss_family; - else if (vs->af != vs->s_svr->addr.ss_family) { diff --git a/sys-cluster/keepalived/files/keepalived.confd b/sys-cluster/keepalived/files/keepalived.confd deleted file mode 100644 index 5f56cb2..0000000 --- a/sys-cluster/keepalived/files/keepalived.confd +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright 1999-2012 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -# Keepalived options -# Increase logging: -#KEEPALIVED_OPTS="-D" diff --git a/sys-cluster/keepalived/files/keepalived.init b/sys-cluster/keepalived/files/keepalived.init deleted file mode 100644 index c290c9d..0000000 --- a/sys-cluster/keepalived/files/keepalived.init +++ /dev/null @@ -1,33 +0,0 @@ -#!/sbin/openrc-run -# Copyright 1999-2013 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -depend() { - use logger - # The interfaces do not actually need to exist to start, it handles them gracefully. - use net -} - -command="/usr/sbin/keepalived" -command_args="${KEEPALIVED_OPTS}" -pidfile="/var/run/keepalived.pid" - -extra_commands="checkconfig reload" - -checkconfig() { - # keepalived has a config check command, but it does not work while the daemon is running! - if [ ! -e /etc/keepalived/keepalived.conf ] ; then - eerror "You need an /etc/keepalived/keepalived.conf file to run keepalived" - return 1 - fi -} - -start_pre() { - checkconfig || return 1 -} - -reload() { - ebegin "Reloading keepalived.conf" - start-stop-daemon --pidfile $pidfile --signal HUP - eend $? -} diff --git a/sys-cluster/keepalived/keepalived-1.4.0-r1.ebuild b/sys-cluster/keepalived/keepalived-1.4.0-r1.ebuild deleted file mode 100644 index cb328d9..0000000 --- a/sys-cluster/keepalived/keepalived-1.4.0-r1.ebuild +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 1999-2018 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -inherit autotools - -DESCRIPTION="A strong & robust keepalive facility to the Linux Virtual Server project" -HOMEPAGE="http://www.keepalived.org/" -SRC_URI="http://www.keepalived.org/software/${P}.tar.gz" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sparc ~x86" -IUSE="dbus debug ipv6 -json libressl snmp" - -RDEPEND="dev-libs/libnl:= - !libressl? ( dev-libs/openssl:0= ) - libressl? ( dev-libs/libressl:0= ) - dev-libs/popt - net-libs/libnfnetlink - sys-apps/iproute2 - dbus? ( sys-apps/dbus ) - json? ( dev-libs/json-c:= ) - snmp? ( net-analyzer/net-snmp )" -DEPEND="${RDEPEND} - >=sys-kernel/linux-headers-4.4" - -DOCS=( - README CONTRIBUTORS INSTALL ChangeLog AUTHOR TODO - doc/keepalived.conf.SYNOPSIS doc/NOTE_vrrp_vmac.txt -) - -PATCHES=( - "${FILESDIR}/${P}-fix-no-sorry-segfault.patch" -) - -src_prepare() { - default - - eautoreconf -} - -src_configure() { - STRIP=/bin/true \ - econf \ - --with-kernel-dir=/usr \ - --enable-sha1 \ - --enable-vrrp \ - $(use_enable dbus) \ - $(use_enable dbus dbus-create-instance) \ - $(use_enable debug) \ - $(use_enable json) \ - $(use_enable snmp) -} - -src_install() { - default - - newinitd "${FILESDIR}"/keepalived.init keepalived - newconfd "${FILESDIR}"/keepalived.confd keepalived - - use snmp && dodoc doc/KEEPALIVED-MIB.txt - - docinto genhash - dodoc genhash/README genhash/AUTHOR genhash/ChangeLog - # This was badly named by upstream, it's more HOWTO than anything else. - newdoc INSTALL INSTALL+HOWTO - - # Security risk to bundle SSL certs - rm -v "${ED}"/etc/keepalived/samples/*.pem || die - # Clean up sysvinit files - rm -rv "${ED}"/etc/sysconfig || die -} diff --git a/sys-cluster/keepalived/metadata.xml b/sys-cluster/keepalived/metadata.xml deleted file mode 100644 index 4de8679..0000000 --- a/sys-cluster/keepalived/metadata.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> -<pkgmetadata> - <maintainer type="project"> - <email>cluster@gentoo.org</email> - <name>Gentoo Cluster Project</name> - </maintainer> - <longdescription> - VRRP2 implementation. Used for setting up high availability clusters. - </longdescription> - <use> - <flag name="json">compile with signal to dump configuration and stats as JSON.</flag> - </use> -</pkgmetadata> diff --git a/www-client/netsurf/Manifest b/www-client/netsurf/Manifest new file mode 100644 index 0000000..13e202c --- /dev/null +++ b/www-client/netsurf/Manifest @@ -0,0 +1 @@ +DIST netsurf-3.11-src.tar.gz 4311767 BLAKE2B aa361b44ddb90fe513e0c34ae7d5f320037c439abb2455f50c224db118cf51da8bbeeac1276f0afdb5763287a6ffaba9d8fad460718ab0659871c1fda143513a SHA512 852ed7afe891828e7e594f1906ed5a7af9c62511b61dbe37ff1ca0700e3b08151db952ad47a18f9c8cfd3f6d78fd93485aa8e39de08eca904f5dbfa747af90c3 diff --git a/www-client/netsurf/files/netsurf-3.10-disable-failing-tests.patch b/www-client/netsurf/files/netsurf-3.10-disable-failing-tests.patch new file mode 100644 index 0000000..6ffcec0 --- /dev/null +++ b/www-client/netsurf/files/netsurf-3.10-disable-failing-tests.patch @@ -0,0 +1,42 @@ +From 4c3d6b10802b6747ba36b6e7c988f6b584352358 Mon Sep 17 00:00:00 2001 +From: Michael Orlitzky <michael@orlitzky.com> +Date: Wed, 17 Jun 2020 17:42:34 -0400 +Subject: [PATCH 1/1] test: disable failing tests. + +Just cut them right out of the Makefile if they ain't gonna work. + +Bug: https://bugs.gentoo.org/687378 +Upstream-bug: https://bugs.netsurf-browser.org/mantis/view.php?id=2779 +--- + test/Makefile | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/test/Makefile b/test/Makefile +index 82ffee6..952d238 100644 +--- a/test/Makefile ++++ b/test/Makefile +@@ -5,8 +5,6 @@ TESTS := \ + nsurl \ + urldbtest \ + nsoption \ +- bloom \ +- hashtable \ + hashmap \ + urlescape \ + utils \ +@@ -47,12 +45,6 @@ messages_SRCS := utils/messages.c utils/hashtable.c test/log.c test/messages.c + # nsoption test sources + nsoption_SRCS := utils/nsoption.c test/log.c test/nsoption.c + +-# Bloom filter test sources +-bloom_SRCS := utils/bloom.c test/bloom.c +- +-# hash table test sources +-hashtable_SRCS := utils/hashtable.c test/log.c test/hashtable.c +- + # hashmap test sources + hashmap_SRCS := $(NSURL_SOURCES) utils/hashmap.c utils/corestrings.c test/log.c test/hashmap.c + hashmap_LD := -lmalloc_fig +-- +2.26.2 + diff --git a/www-client/netsurf/files/netsurf-3.10-julia-libutf8proc-header-location.patch b/www-client/netsurf/files/netsurf-3.10-julia-libutf8proc-header-location.patch new file mode 100644 index 0000000..3a6ccc2 --- /dev/null +++ b/www-client/netsurf/files/netsurf-3.10-julia-libutf8proc-header-location.patch @@ -0,0 +1,34 @@ +From d585a1573819306bb3660db3f13a85b2fd254c63 Mon Sep 17 00:00:00 2001 +From: Michael Orlitzky <michael@orlitzky.com> +Date: Wed, 17 Jun 2020 17:23:10 -0400 +Subject: [PATCH 1/1] utils/idna.c: adjust utf8proc.h header location. + +There are two upstreams for libutf8proc, and they each put utf8proc.h +in a different location -- ostensibly as a performance art piece +intended to remind the programmer that we as human beings are all +slowly dying, and that our limited time here on earth should not be +wasted. This commit switches the header location from the netsurf- +upstream one that used to work, to the julia-upstream location that +works now (that the Gentoo package follows the julia upstream). + +Bug: https://bugs.gentoo.org/721318 +--- + utils/idna.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/utils/idna.c b/utils/idna.c +index 628ef1f..f6e498a 100644 +--- a/utils/idna.c ++++ b/utils/idna.c +@@ -167,7 +167,7 @@ idna__ace_to_ucs4(const char *ace_label, + + #ifdef WITH_UTF8PROC + +-#include <libutf8proc/utf8proc.h> ++#include <utf8proc.h> + + int32_t idna_contexto[] = { + /* CONTEXTO codepoints which have a rule defined */ +-- +2.26.2 + diff --git a/www-client/netsurf/files/netsurf-3.11-libressl-3.5.patch b/www-client/netsurf/files/netsurf-3.11-libressl-3.5.patch new file mode 100644 index 0000000..5efb701 --- /dev/null +++ b/www-client/netsurf/files/netsurf-3.11-libressl-3.5.patch @@ -0,0 +1,27 @@ +X509_get_signature_nid(), ASN1_STRING_get0_data(), RSA_bits() and DH_bits() +have been available since LibreSSL 2.7. +DSA_bits(), RSA_get0_n(), RSA_get0_e() will be available in LibreSSL 3.5. + +--- a/content/fetchers/about/certificate.c ++++ b/content/fetchers/about/certificate.c +@@ -137,7 +137,8 @@ static nserror free_ns_cert_info(struct ns_cert_info *cinfo) + /* OpenSSL 1.0.x, 1.0.2, 1.1.0 and 1.1.1 API all changed + * LibreSSL declares its OpenSSL version as 2.1 but only supports 1.0.x API + */ +-#if (defined(LIBRESSL_VERSION_NUMBER) || (OPENSSL_VERSION_NUMBER < 0x1010000fL)) ++#if (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x3050000fL) || \ ++ (OPENSSL_VERSION_NUMBER < 0x1010000fL) + /* 1.0.x */ + + #if (defined(LIBRESSL_VERSION_NUMBER) || (OPENSSL_VERSION_NUMBER < 0x1000200fL)) +--- a/content/fetchers/curl.c ++++ b/content/fetchers/curl.c +@@ -98,7 +98,7 @@ + /* OpenSSL 1.0.x to 1.1.0 certificate reference counting changed + * LibreSSL declares its OpenSSL version as 2.1 but only supports the old way + */ +-#if (defined(LIBRESSL_VERSION_NUMBER) || (OPENSSL_VERSION_NUMBER < 0x1010000fL)) ++#if (OPENSSL_VERSION_NUMBER < 0x1010000fL) + static int ns_X509_up_ref(X509 *cert) + { + cert->references++; diff --git a/www-client/netsurf/metadata.xml b/www-client/netsurf/metadata.xml new file mode 100644 index 0000000..d435571 --- /dev/null +++ b/www-client/netsurf/metadata.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>philipp.ammann@posteo.de</email> + <name>Philipp Ammann</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <upstream> + <changelog> + https://download.netsurf-browser.org/netsurf/releases/ChangeLog.txt + </changelog> + </upstream> + <use> + <flag name="bmp"> + Bitmap (BMP and ICO) image support via + <pkg>media-libs/libnsbmp</pkg> + </flag> + <flag name="gtk">Build GTK3 GUI</flag> + <flag name="psl"> + Use public suffix list from <pkg>media-libs/libnspsl</pkg> to + detect supercookies (recommended) + </flag> + <flag name="rosprite"> + RISC OS Sprite bitmap image support via + <pkg>media-libs/librosprite</pkg> + </flag> + <flag name="svgtiny"> + Use <pkg>media-libs/libsvgtiny</pkg> instead of + <pkg>gnome-base/librsvg</pkg> for SVG support + </flag> + <flag name="truetype"> + Use <pkg>media-libs/freetype</pkg> for text in the framebuffer + frontend + </flag> + </use> + <longdescription lang="en"> + NetSurf is a free, open source web browser. It is written in C, + has its own layout and rendering engine entirely written from + scratch. It is small and capable of handling many of the web + standards in use today. + + Whether you want to check your webmail, read the news or post to + discussion forums, NetSurf is your lightweight gateway to the + world wide web. Actively developed, NetSurf is continually + evolving and improving. + </longdescription> +</pkgmetadata> diff --git a/www-client/netsurf/netsurf-3.11.ebuild b/www-client/netsurf/netsurf-3.11.ebuild new file mode 100644 index 0000000..585c83d --- /dev/null +++ b/www-client/netsurf/netsurf-3.11.ebuild @@ -0,0 +1,145 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop netsurf toolchain-funcs + +DESCRIPTION="A free, open source web browser" +HOMEPAGE="https://www.netsurf-browser.org/" +SRC_URI="https://download.netsurf-browser.org/netsurf/releases/source/${P}-src.tar.gz" + +LICENSE="GPL-2 MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86" +IUSE="bmp fbcon truetype +gif +gtk +javascript +jpeg + +png +psl rosprite +svg +svgtiny +webp" + +REQUIRED_USE="|| ( fbcon gtk )" + +RDEPEND=" + dev-libs/libcss + dev-libs/libnsutils + dev-libs/openssl:= + dev-libs/libutf8proc + dev-libs/libxml2:2 + net-misc/curl + net-libs/libdom + >=net-libs/libhubbub-0.3.8 + bmp? ( media-libs/libnsbmp ) + fbcon? ( + dev-libs/libnsfb + truetype? ( + media-fonts/dejavu + media-libs/freetype + ) + ) + gif? ( >=media-libs/libnsgif-1.0.0 ) + gtk? ( + dev-libs/glib:2 + x11-libs/gtk+:3 + ) + javascript? ( + dev-libs/nsgenbind + dev-lang/duktape:= + ) + jpeg? ( media-libs/libjpeg-turbo:= ) + png? ( media-libs/libpng:0= ) + psl? ( media-libs/libnspsl ) + rosprite? ( media-libs/librosprite ) + svg? ( + svgtiny? ( media-libs/libsvgtiny ) + !svgtiny? ( gnome-base/librsvg:2 ) + ) + webp? ( media-libs/libwebp )" +DEPEND="${RDEPEND}" +BDEPEND=" + dev-libs/check + dev-perl/HTML-Parser + dev-build/netsurf-buildsystem + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}/${PN}-3.10-julia-libutf8proc-header-location.patch" + "${FILESDIR}/${PN}-3.10-disable-failing-tests.patch" + "${FILESDIR}/${PN}-3.11-libressl-3.5.patch" +) + +DOCS=( + README + docs/using-framebuffer.md + docs/ideas/{cache,css-engine,render-library}.txt +) + +src_prepare() { + default + rm -r frontends/{amiga,atari,beos,monkey,riscos,windows} || die +} + +_emake() { + netsurf_define_makeconf + local netsurf_makeconf=( + "${NETSURF_MAKECONF[@]}" + COMPONENT_TYPE=binary + NETSURF_FB_FONTLIB=$(usex truetype freetype internal) + NETSURF_FB_FONTPATH="${EPREFIX}/usr/share/fonts/dejavu" + NETSURF_USE_BMP=$(usex bmp YES NO) + NETSURF_USE_DUKTAPE=$(usex javascript YES NO) + NETSURF_USE_GIF=$(usex gif YES NO) + NETSURF_USE_JPEG=$(usex jpeg YES NO) + NETSURF_USE_PNG=$(usex png YES NO) + NETSURF_USE_NSPSL=$(usex psl YES NO) + NETSURF_USE_NSSVG=$(usex svg $(usex svgtiny YES NO) NO) + NETSURF_USE_OPENSSL=YES + NETSURF_USE_ROSPRITE=$(usex rosprite YES NO) + NETSURF_USE_RSVG=$(usex svg $(usex svgtiny NO YES) NO) + NETSURF_USE_WEBP=$(usex webp YES NO) + NETSURF_USE_VIDEO=NO + PKG_CONFIG=$(tc-getPKG_CONFIG) + ) + + emake "${netsurf_makeconf[@]}" $@ +} + +src_compile() { + # The build system only runs pkg-config to find librsvg's include + # dir for the gtk targets. So if you try to build the framebuffer + # target with NETSURF_USE_RSVG=YES, the build crashes on failing to + # find rsvg.h. To work around that, we set NETSURF_USE_RSVG=NO. It + # might be possible to fall back to svgtiny with USE="svg -svgtiny" + # if svgtiny works in a framebuffer, but then our (R)DEPEND would + # need some mangling to ensure that svgtiny is installed. + use fbcon && _emake NETSURF_USE_RSVG=NO TARGET=framebuffer + + use gtk && _emake TARGET=gtk3 +} + +src_test() { + _emake test +} + +src_install() { + if use fbcon ; then + # See earlier comments about rsvg.h. + _emake NETSURF_USE_RSVG=NO TARGET=framebuffer DESTDIR="${D}" install + elog "framebuffer binary has been installed as netsurf-fb" + make_desktop_entry "${EPREFIX}/usr/bin/netsurf-fb %u" \ + NetSurf-framebuffer \ + netsurf \ + "Network;WebBrowser" + fi + if use gtk ; then + _emake TARGET=gtk3 DESTDIR="${D}" install + elog "netsurf gtk3 version has been installed as netsurf-gtk3" + make_desktop_entry "${EPREFIX}/usr/bin/netsurf-gtk3 %u" \ + NetSurf-gtk3 \ + netsurf \ + "Network;WebBrowser" + fi + + insinto /usr/share/pixmaps + doins frontends/gtk/res/netsurf.xpm + doman docs/netsurf-fb.1 + doman docs/netsurf-gtk.1 +} diff --git a/www-servers/apache/Manifest b/www-servers/apache/Manifest new file mode 100644 index 0000000..5f16518 --- /dev/null +++ b/www-servers/apache/Manifest @@ -0,0 +1,2 @@ +DIST gentoo-apache-2.4.58-20231019.tar.bz2 26224 BLAKE2B 370f36dcbe9d10ed0dd415c2e28016c7897246b5c3f830e849e765c18a08be145c8a363f122dff2c4b8d5b1e53ff504a79d7512a58135899a539136b580524ed SHA512 60f68eb4168a86ee33525e7c90cf5af8da586ed31d12cc294ea6bf3bcb9f254ea7e1a4ca5db4846a0e92b97c1326f095aa3a9d5fdb9ed92c1c4726c5a825ab36 +DIST httpd-2.4.58.tar.bz2 7485817 BLAKE2B 2105b8fada99f1dda55201ed89ed5326f0edb078d352cbff44f02cde80d129b65b63e07366a9a744ba474be5687fa8d3d2d8ddc64ac914b47166607f3f4a9de2 SHA512 d6e73bf413a507ec16b621ff635e178206207a9e9810ce3944b3dc98d39cde8f225307110167fc9da5822175796c8cb66f98be5b9f0d8b76dcd83a401d39b2c1 diff --git a/www-servers/apache/apache-2.4.58-r2.ebuild b/www-servers/apache/apache-2.4.58-r2.ebuild new file mode 100644 index 0000000..a274143 --- /dev/null +++ b/www-servers/apache/apache-2.4.58-r2.ebuild @@ -0,0 +1,257 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +# latest gentoo apache files +GENTOO_PATCHSTAMP="20231019" +GENTOO_DEVELOPER="graaff" +GENTOO_PATCHNAME="gentoo-apache-2.4.58" + +# IUSE/USE_EXPAND magic +IUSE_MPMS_FORK="prefork" +IUSE_MPMS_THREAD="event worker" + +# << obsolete modules: +# authn_default authz_default mem_cache +# mem_cache is replaced by cache_disk +# ?? buggy modules +# proxy_scgi: startup error: undefined symbol "ap_proxy_release_connection", no fix found +# >> added modules for reason: +# compat: compatibility with 2.2 access control +# authz_host: new module for access control +# authn_core: functionality provided by authn_alias in previous versions +# authz_core: new module, provides core authorization capabilities +# cache_disk: replacement for mem_cache +# lbmethod_byrequests: Split off from mod_proxy_balancer in 2.3 +# lbmethod_bytraffic: Split off from mod_proxy_balancer in 2.3 +# lbmethod_bybusyness: Split off from mod_proxy_balancer in 2.3 +# lbmethod_heartbeat: Split off from mod_proxy_balancer in 2.3 +# slotmem_shm: Slot-based shared memory provider (for lbmethod_byrequests). +# socache_shmcb: shared object cache provider. Default config with ssl needs it +# unixd: fixes startup error: Invalid command 'User' +IUSE_MODULES="access_compat actions alias allowmethods asis auth_basic auth_digest auth_form +authn_anon authn_core authn_dbd authn_dbm authn_file authn_socache authz_core +authz_dbd authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex +brotli cache cache_disk cache_socache cern_meta charset_lite cgi cgid dav dav_fs dav_lock +dbd deflate dir dumpio env expires ext_filter file_cache filter headers http2 +ident imagemap include info lbmethod_byrequests lbmethod_bytraffic lbmethod_bybusyness +lbmethod_heartbeat log_config log_forensic logio lua macro md mime mime_magic negotiation +proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_hcheck proxy_html proxy_http proxy_scgi +proxy_http2 proxy_fcgi proxy_uwsgi proxy_wstunnel rewrite ratelimit remoteip reqtimeout +session session_cookie session_crypto session_dbd setenvif slotmem_shm socache_memcache +socache_shmcb speling status substitute systemd tls unique_id userdir usertrack +unixd version vhost_alias watchdog xml2enc" +# The following are also in the source as of this version, but are not available +# for user selection: +# bucketeer case_filter case_filter_in echo http isapi optional_fn_export +# optional_fn_import optional_hook_export optional_hook_import + +# inter-module dependencies +# TODO: this may still be incomplete +MODULE_DEPENDS=" + auth_form:session + brotli:filter + dav_fs:dav + dav_lock:dav + deflate:filter + cache_disk:cache + ext_filter:filter + file_cache:cache + lbmethod_byrequests:proxy_balancer + lbmethod_byrequests:slotmem_shm + lbmethod_bytraffic:proxy_balancer + lbmethod_bybusyness:proxy_balancer + lbmethod_heartbeat:proxy_balancer + log_forensic:log_config + logio:log_config + cache_disk:cache + cache_socache:cache + md:watchdog + mime_magic:mime + proxy_ajp:proxy + proxy_balancer:proxy + proxy_balancer:slotmem_shm + proxy_connect:proxy + proxy_ftp:proxy + proxy_hcheck:proxy + proxy_hcheck:watchdog + proxy_html:proxy + proxy_html:xml2enc + proxy_http:proxy + proxy_http2:proxy + proxy_scgi:proxy + proxy_uwsgi:proxy + proxy_fcgi:proxy + proxy_wstunnel:proxy + session_cookie:session + session_dbd:dbd + session_dbd:session + socache_memcache:cache + substitute:filter +" + +# module<->define mappings +MODULE_DEFINES=" + auth_digest:AUTH_DIGEST + authnz_ldap:AUTHNZ_LDAP + cache:CACHE + cache_disk:CACHE + cache_socache:CACHE + dav:DAV + dav_fs:DAV + dav_lock:DAV + file_cache:CACHE + http2:HTTP2 + info:INFO + ldap:LDAP + lua:LUA + md:SSL + proxy:PROXY + proxy_ajp:PROXY + proxy_balancer:PROXY + proxy_connect:PROXY + proxy_fcgi:PROXY + proxy_ftp:PROXY + proxy_hcheck:PROXY + proxy_html:PROXY + proxy_http:PROXY + proxy_http2:PROXY + proxy_scgi:PROXY + proxy_uwsgi:PROXY + proxy_wstunnel:PROXY + socache_shmcb:SSL + socache_memcache:CACHE + ssl:SSL + status:STATUS + suexec:SUEXEC + systemd:SYSTEMD + userdir:USERDIR +" + +# critical modules for the default config +MODULE_CRITICAL=" + authn_core + authz_core + authz_host + dir + mime + unixd +" +inherit apache-2 systemd tmpfiles toolchain-funcs + +DESCRIPTION="The Apache Web Server" +HOMEPAGE="https://httpd.apache.org/" + +# some helper scripts are Apache-1.1, thus both are here +LICENSE="Apache-2.0 Apache-1.1" +SLOT="2" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x64-macos ~x64-solaris" + +PATCHES=( + "${FILESDIR}"/${PN}-2.4.57-libressl.patch + "${FILESDIR}"/libxmlv212.patch +) + +pkg_setup() { + # dependent critical modules which are not allowed in global scope due + # to USE flag conditionals (bug #499260) + use ssl && MODULE_CRITICAL+=" socache_shmcb" + use doc && MODULE_CRITICAL+=" alias negotiation setenvif" + apache-2_pkg_setup +} + +src_configure() { + # Brain dead check. + tc-is-cross-compiler && export ap_cv_void_ptr_lt_long="no" + + apache-2_src_configure +} + +src_compile() { + if tc-is-cross-compiler ; then + # This header is the same across targets, so use the build compiler. + pushd server >/dev/null + emake gen_test_char + tc-export_build_env BUILD_CC + ${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS} \ + gen_test_char.c -o gen_test_char $(apr-1-config --includes) || die + popd >/dev/null + fi + + default +} + +src_install() { + apache-2_src_install + local i + local apache_tools_prune_list=( + /usr/bin/{htdigest,logresolve,htpasswd,htdbm,ab,httxt2dbm} + /usr/sbin/{checkgid,fcgistarter,htcacheclean,rotatelogs} + /usr/share/man/man1/{logresolve.1,htdbm.1,htdigest.1,htpasswd.1,dbmmanage.1,ab.1} + /usr/share/man/man8/{rotatelogs.8,htcacheclean.8} + ) + for i in ${apache_tools_prune_list[@]} ; do + rm "${ED}"/${i} || die "Failed to prune apache-tools bits" + done + + dobin support/apxs + + # Note: wait for mod_systemd to be included in some forthcoming release, + # Then apache2.4.service can be used and systemd support controlled + # through --enable-systemd + systemd_newunit "${FILESDIR}/apache2.4-hardened.service" "apache2.service" + dotmpfiles "${FILESDIR}/apache.conf" + #insinto /etc/apache2/modules.d + #doins "${FILESDIR}/00_systemd.conf" + + # Install http2 module config + insinto /etc/apache2/modules.d + doins "${FILESDIR}"/41_mod_http2.conf + + # Fix path to apache libdir + sed "s|@LIBDIR@|$(get_libdir)|" -i "${ED}"/usr/sbin/apache2ctl || die +} + +pkg_postinst() { + apache-2_pkg_postinst || die "apache-2_pkg_postinst failed" + + tmpfiles_process apache.conf #662544 + + # warnings that default config might not work out of the box + local mod cmod + for mod in ${MODULE_CRITICAL} ; do + if ! use "apache2_modules_${mod}"; then + echo + ewarn "Warning: Critical module not installed!" + ewarn "Modules 'authn_core', 'authz_core' and 'unixd'" + ewarn "are highly recomended but might not be in the base profile yet." + ewarn "Default config for ssl needs module 'socache_shmcb'." + ewarn "Enabling the following flags is highly recommended:" + for cmod in ${MODULE_CRITICAL} ; do + use "apache2_modules_${cmod}" || \ + ewarn "+ apache2_modules_${cmod}" + done + echo + break + fi + done + # warning for proxy_balancer and missing load balancing scheduler + if use apache2_modules_proxy_balancer; then + local lbset= + for mod in lbmethod_byrequests lbmethod_bytraffic lbmethod_bybusyness lbmethod_heartbeat; do + if use "apache2_modules_${mod}"; then + lbset=1 && break + fi + done + if [[ ! ${lbset} ]] ; then + echo + ewarn "Info: Missing load balancing scheduler algorithm module" + ewarn "(They were split off from proxy_balancer in 2.3)" + ewarn "In order to get the ability of load balancing, at least" + ewarn "one of these modules has to be present:" + ewarn "lbmethod_byrequests lbmethod_bytraffic lbmethod_bybusyness lbmethod_heartbeat" + echo + fi + fi +} diff --git a/www-servers/apache/apache-2.4.58.ebuild b/www-servers/apache/apache-2.4.58.ebuild new file mode 100644 index 0000000..7eddca0 --- /dev/null +++ b/www-servers/apache/apache-2.4.58.ebuild @@ -0,0 +1,264 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +# latest gentoo apache files +GENTOO_PATCHSTAMP="20231019" +GENTOO_DEVELOPER="graaff" +GENTOO_PATCHNAME="gentoo-apache-2.4.58" + +# ancient hack: bug #502384 +IUSE="split-usr" + +# IUSE/USE_EXPAND magic +IUSE_MPMS_FORK="prefork" +IUSE_MPMS_THREAD="event worker" + +# << obsolete modules: +# authn_default authz_default mem_cache +# mem_cache is replaced by cache_disk +# ?? buggy modules +# proxy_scgi: startup error: undefined symbol "ap_proxy_release_connection", no fix found +# >> added modules for reason: +# compat: compatibility with 2.2 access control +# authz_host: new module for access control +# authn_core: functionality provided by authn_alias in previous versions +# authz_core: new module, provides core authorization capabilities +# cache_disk: replacement for mem_cache +# lbmethod_byrequests: Split off from mod_proxy_balancer in 2.3 +# lbmethod_bytraffic: Split off from mod_proxy_balancer in 2.3 +# lbmethod_bybusyness: Split off from mod_proxy_balancer in 2.3 +# lbmethod_heartbeat: Split off from mod_proxy_balancer in 2.3 +# slotmem_shm: Slot-based shared memory provider (for lbmethod_byrequests). +# socache_shmcb: shared object cache provider. Default config with ssl needs it +# unixd: fixes startup error: Invalid command 'User' +IUSE_MODULES="access_compat actions alias allowmethods asis auth_basic auth_digest auth_form +authn_anon authn_core authn_dbd authn_dbm authn_file authn_socache authz_core +authz_dbd authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex +brotli cache cache_disk cache_socache cern_meta charset_lite cgi cgid dav dav_fs dav_lock +dbd deflate dir dumpio env expires ext_filter file_cache filter headers http2 +ident imagemap include info lbmethod_byrequests lbmethod_bytraffic lbmethod_bybusyness +lbmethod_heartbeat log_config log_forensic logio lua macro md mime mime_magic negotiation +proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_hcheck proxy_html proxy_http proxy_scgi +proxy_http2 proxy_fcgi proxy_uwsgi proxy_wstunnel rewrite ratelimit remoteip reqtimeout +session session_cookie session_crypto session_dbd setenvif slotmem_shm socache_memcache +socache_shmcb speling status substitute systemd tls unique_id userdir usertrack +unixd version vhost_alias watchdog xml2enc" +# The following are also in the source as of this version, but are not available +# for user selection: +# bucketeer case_filter case_filter_in echo http isapi optional_fn_export +# optional_fn_import optional_hook_export optional_hook_import + +# inter-module dependencies +# TODO: this may still be incomplete +MODULE_DEPENDS=" + auth_form:session + brotli:filter + dav_fs:dav + dav_lock:dav + deflate:filter + cache_disk:cache + ext_filter:filter + file_cache:cache + lbmethod_byrequests:proxy_balancer + lbmethod_byrequests:slotmem_shm + lbmethod_bytraffic:proxy_balancer + lbmethod_bybusyness:proxy_balancer + lbmethod_heartbeat:proxy_balancer + log_forensic:log_config + logio:log_config + cache_disk:cache + cache_socache:cache + md:watchdog + mime_magic:mime + proxy_ajp:proxy + proxy_balancer:proxy + proxy_balancer:slotmem_shm + proxy_connect:proxy + proxy_ftp:proxy + proxy_hcheck:proxy + proxy_hcheck:watchdog + proxy_html:proxy + proxy_html:xml2enc + proxy_http:proxy + proxy_http2:proxy + proxy_scgi:proxy + proxy_uwsgi:proxy + proxy_fcgi:proxy + proxy_wstunnel:proxy + session_cookie:session + session_dbd:dbd + session_dbd:session + socache_memcache:cache + substitute:filter +" + +# module<->define mappings +MODULE_DEFINES=" + auth_digest:AUTH_DIGEST + authnz_ldap:AUTHNZ_LDAP + cache:CACHE + cache_disk:CACHE + cache_socache:CACHE + dav:DAV + dav_fs:DAV + dav_lock:DAV + file_cache:CACHE + http2:HTTP2 + info:INFO + ldap:LDAP + lua:LUA + md:SSL + proxy:PROXY + proxy_ajp:PROXY + proxy_balancer:PROXY + proxy_connect:PROXY + proxy_fcgi:PROXY + proxy_ftp:PROXY + proxy_hcheck:PROXY + proxy_html:PROXY + proxy_http:PROXY + proxy_http2:PROXY + proxy_scgi:PROXY + proxy_uswgi:PROXY + proxy_wstunnel:PROXY + socache_shmcb:SSL + socache_memcache:CACHE + ssl:SSL + status:STATUS + suexec:SUEXEC + systemd:SYSTEMD + userdir:USERDIR +" + +# critical modules for the default config +MODULE_CRITICAL=" + authn_core + authz_core + authz_host + dir + mime + unixd +" +inherit apache-2 systemd tmpfiles toolchain-funcs + +DESCRIPTION="The Apache Web Server" +HOMEPAGE="https://httpd.apache.org/" + +# some helper scripts are Apache-1.1, thus both are here +LICENSE="Apache-2.0 Apache-1.1" +SLOT="2" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x64-macos ~x64-solaris" + +PATCHES=( + "${FILESDIR}"/${PN}-2.4.57-libressl.patch + "${FILESDIR}"/libxmlv212.patch +) + +pkg_setup() { + # dependent critical modules which are not allowed in global scope due + # to USE flag conditionals (bug #499260) + use ssl && MODULE_CRITICAL+=" socache_shmcb" + use doc && MODULE_CRITICAL+=" alias negotiation setenvif" + apache-2_pkg_setup +} + +src_configure() { + # Brain dead check. + tc-is-cross-compiler && export ap_cv_void_ptr_lt_long="no" + + apache-2_src_configure +} + +src_compile() { + if tc-is-cross-compiler ; then + # This header is the same across targets, so use the build compiler. + pushd server >/dev/null + emake gen_test_char + tc-export_build_env BUILD_CC + ${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS} \ + gen_test_char.c -o gen_test_char $(apr-1-config --includes) || die + popd >/dev/null + fi + + default +} + +src_install() { + apache-2_src_install + local i + local apache_tools_prune_list=( + /usr/bin/{htdigest,logresolve,htpasswd,htdbm,ab,httxt2dbm} + /usr/sbin/{checkgid,fcgistarter,htcacheclean,rotatelogs} + /usr/share/man/man1/{logresolve.1,htdbm.1,htdigest.1,htpasswd.1,dbmmanage.1,ab.1} + /usr/share/man/man8/{rotatelogs.8,htcacheclean.8} + ) + for i in ${apache_tools_prune_list[@]} ; do + rm "${ED}"/${i} || die "Failed to prune apache-tools bits" + done + + # install apxs in /usr/bin (bug #502384) and put a symlink into the + # old location until all ebuilds and eclasses have been modified to + # use the new location. + dobin support/apxs + use split-usr && dosym ../bin/apxs /usr/sbin/apxs + + # Note: wait for mod_systemd to be included in some forthcoming release, + # Then apache2.4.service can be used and systemd support controlled + # through --enable-systemd + systemd_newunit "${FILESDIR}/apache2.4-hardened.service" "apache2.service" + dotmpfiles "${FILESDIR}/apache.conf" + #insinto /etc/apache2/modules.d + #doins "${FILESDIR}/00_systemd.conf" + + # Install http2 module config + insinto /etc/apache2/modules.d + doins "${FILESDIR}"/41_mod_http2.conf + + # Fix path to apache libdir + sed "s|@LIBDIR@|$(get_libdir)|" -i "${ED}"/usr/sbin/apache2ctl || die +} + +pkg_postinst() { + apache-2_pkg_postinst || die "apache-2_pkg_postinst failed" + + tmpfiles_process apache.conf #662544 + + # warnings that default config might not work out of the box + local mod cmod + for mod in ${MODULE_CRITICAL} ; do + if ! use "apache2_modules_${mod}"; then + echo + ewarn "Warning: Critical module not installed!" + ewarn "Modules 'authn_core', 'authz_core' and 'unixd'" + ewarn "are highly recomended but might not be in the base profile yet." + ewarn "Default config for ssl needs module 'socache_shmcb'." + ewarn "Enabling the following flags is highly recommended:" + for cmod in ${MODULE_CRITICAL} ; do + use "apache2_modules_${cmod}" || \ + ewarn "+ apache2_modules_${cmod}" + done + echo + break + fi + done + # warning for proxy_balancer and missing load balancing scheduler + if use apache2_modules_proxy_balancer; then + local lbset= + for mod in lbmethod_byrequests lbmethod_bytraffic lbmethod_bybusyness lbmethod_heartbeat; do + if use "apache2_modules_${mod}"; then + lbset=1 && break + fi + done + if [[ ! ${lbset} ]] ; then + echo + ewarn "Info: Missing load balancing scheduler algorithm module" + ewarn "(They were split off from proxy_balancer in 2.3)" + ewarn "In order to get the ability of load balancing, at least" + ewarn "one of these modules has to be present:" + ewarn "lbmethod_byrequests lbmethod_bytraffic lbmethod_bybusyness lbmethod_heartbeat" + echo + fi + fi +} diff --git a/www-servers/apache/files/41_mod_http2.conf b/www-servers/apache/files/41_mod_http2.conf new file mode 100644 index 0000000..e4c9454 --- /dev/null +++ b/www-servers/apache/files/41_mod_http2.conf @@ -0,0 +1,9 @@ +<IfDefine SSL> + <IfModule http2_module> + # enable debugging for this module + #LogLevel http2:info + + #Enable HTTP/2 support + Protocols h2 h2c http/1.1 + </IfModule> +</IfDefine> diff --git a/www-servers/apache/files/apache-2.4.57-libressl.patch b/www-servers/apache/files/apache-2.4.57-libressl.patch new file mode 100644 index 0000000..8be5a55 --- /dev/null +++ b/www-servers/apache/files/apache-2.4.57-libressl.patch @@ -0,0 +1,40 @@ +https://github.com/apache/httpd/pull/384 + +From: orbea <orbea@riseup.net> +Date: Thu, 7 Sep 2023 12:52:13 -0700 +Subject: [PATCH] acinclude.m4: test for OPENSSL_NO_ENGINE + +With >= LibreSSL 3.8.1 the engine code has been removed and +OPENSSL_NO_ENGINE has been defined, testing for this define during +configure will prevent implicit function declarations when using an ssl +implementation with the engine code disabled or removed. +--- + acinclude.m4 | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -587,10 +587,22 @@ AC_DEFUN([APACHE_CHECK_OPENSSL],[ + + dnl Run library and function checks + liberrors="" ++ AC_TRY_COMPILE([#include <openssl/opensslconf.h>],[ ++#if defined(OPENSSL_NO_ENGINE) ++#error "Engine support disabled in <openssl/opensslconf.h>" ++#endif], ++ [AC_MSG_RESULT(OK) ++ ac_cv_openssl_engine=yes], ++ [AC_MSG_RESULT(FAILED)]) + AC_CHECK_HEADERS([openssl/engine.h]) + AC_CHECK_FUNCS([SSL_CTX_new], [], [liberrors="yes"]) + AC_CHECK_FUNCS([OPENSSL_init_ssl]) +- AC_CHECK_FUNCS([ENGINE_init ENGINE_load_builtin_engines RAND_egd]) ++ AC_CHECK_FUNCS([ENGINE_load_builtin_engines RAND_egd]) ++ if test "x$ac_cv_openssl_engine" = "xyes"; then ++ AC_CHECK_FUNCS([ENGINE_init]) ++ else ++ AC_MSG_WARN([OpenSSL engine support disabled]) ++ fi + if test "x$liberrors" != "x"; then + AC_MSG_WARN([OpenSSL libraries are unusable]) + fi diff --git a/www-servers/apache/files/apache.conf b/www-servers/apache/files/apache.conf new file mode 100644 index 0000000..74888d8 --- /dev/null +++ b/www-servers/apache/files/apache.conf @@ -0,0 +1,3 @@ +d /run/apache2 710 root apache +d /run/apache_ssl_mutex +d /var/cache/apache2 750 apache apache diff --git a/www-servers/apache/files/apache2.4-hardened.service b/www-servers/apache/files/apache2.4-hardened.service new file mode 100644 index 0000000..fe66567 --- /dev/null +++ b/www-servers/apache/files/apache2.4-hardened.service @@ -0,0 +1,25 @@ +[Unit] +Description=The Apache HTTP Server +After=network.target remote-fs.target nss-lookup.target + +[Service] +EnvironmentFile=/etc/conf.d/apache2 +ExecStart=/usr/sbin/apache2 $APACHE2_OPTS -DFOREGROUND +ExecReload=/usr/sbin/apache2 $APACHE2_OPTS -k graceful +ExecStop=/usr/sbin/apache2 $APACHE2_OPTS -k graceful-stop +# We want systemd to give httpd some time to finish gracefully, but still want +# it to kill httpd after TimeoutStopSec if something went wrong during the +# graceful stop. Normally, Systemd sends SIGTERM signal right after the +# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give +# httpd time to finish. +KillSignal=SIGCONT +PrivateTmp=true +#Hardening +CapabilityBoundingSet=CAP_CHOWN CAP_SETGID CAP_SETUID CAP_DAC_OVERRIDE CAP_KILL CAP_NET_BIND_SERVICE CAP_IPC_LOCK +SecureBits=noroot-locked +ProtectSystem=full +PrivateDevices=true +MemoryDenyWriteExecute=true + +[Install] +WantedBy=multi-user.target diff --git a/www-servers/apache/files/libxmlv212.patch b/www-servers/apache/files/libxmlv212.patch new file mode 100644 index 0000000..281633b --- /dev/null +++ b/www-servers/apache/files/libxmlv212.patch @@ -0,0 +1,24 @@ +https://github.com/apache/httpd/pull/393 + +From bd2c4e466e0949f6f770bbb2569ce5ae9b3965c0 Mon Sep 17 00:00:00 2001 +From: ttachi <tachihara@hotmail.com> +Date: Fri, 17 Nov 2023 22:24:45 +0900 +Subject: [PATCH] mod_xml2enc: remove dependency on xmlstring header + +--- + modules/filters/mod_xml2enc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/filters/mod_xml2enc.c b/modules/filters/mod_xml2enc.c +index 34f8e8ee090..0d3d13c1239 100644 +--- a/modules/filters/mod_xml2enc.c ++++ b/modules/filters/mod_xml2enc.c +@@ -209,7 +209,7 @@ static void sniff_encoding(request_rec* r, xml2ctx* ctx) + + /* to sniff, first we look for BOM */ + if (ctx->xml2enc == XML_CHAR_ENCODING_NONE) { +- ctx->xml2enc = xmlDetectCharEncoding((const xmlChar*)ctx->buf, ++ ctx->xml2enc = xmlDetectCharEncoding((const unsigned char*)ctx->buf, + ctx->bytes); + if (HAVE_ENCODING(ctx->xml2enc)) { + ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, APLOGNO(01432) diff --git a/www-servers/apache/metadata.xml b/www-servers/apache/metadata.xml new file mode 100644 index 0000000..2c46080 --- /dev/null +++ b/www-servers/apache/metadata.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>apache-bugs@gentoo.org</email> + <name>Apache project</name> + </maintainer> + <longdescription> + The Apache HTTP Server Project is an effort to develop and maintain an + open-source HTTP server for modern operating systems. The goal of this + project is to provide a secure, efficient and extensible server that + provides HTTP services in sync with the current HTTP standards. + </longdescription> + <use> + <flag name="suexec">Install suexec with apache</flag> + <flag name="suexec-caps">Install suexec with capabilities instead of SUID</flag> + <flag name="suexec-syslog">Log suexec to syslog instead of to a separate file</flag> + <flag name="static">Link in apache2 modules statically rather then plugins</flag> + </use> + <upstream> + <remote-id type="github">apache/httpd</remote-id> + </upstream> +</pkgmetadata> diff --git a/x11-apps/igt-gpu-tools/Manifest b/x11-apps/igt-gpu-tools/Manifest deleted file mode 100644 index f9704cb..0000000 --- a/x11-apps/igt-gpu-tools/Manifest +++ /dev/null @@ -1 +0,0 @@ -DIST igt-gpu-tools-1.23.tar.xz 1045716 BLAKE2B f5e55ce9b682f2a9f2c6ab73c1e8e933ebea09b343f3af02df50b5bdce3e2ac313b1f92709c6de0d9fc7ffe2e2c9dfa95d2918ae9bd561cc285cff30fe59c6fd SHA512 8697265a978359e28983f483bf95819844597fc2080923d15d0587f6d648081af27e8ea318873e20103bbf8446b9f1005c6bc90a6276d3169837abd181f96839 diff --git a/x11-apps/igt-gpu-tools/igt-gpu-tools-1.23-r1.ebuild b/x11-apps/igt-gpu-tools/igt-gpu-tools-1.23-r1.ebuild deleted file mode 100644 index dd0926b..0000000 --- a/x11-apps/igt-gpu-tools/igt-gpu-tools-1.23-r1.ebuild +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 -EGIT_REPO_URI="https://gitlab.freedesktop.org/drm/${PN}.git" -if [[ ${PV} = *9999* ]]; then - GIT_ECLASS="git-r3" -fi - -inherit ${GIT_ECLASS} meson - -DESCRIPTION="Intel GPU userland tools" - -HOMEPAGE="https://01.org/linuxgraphics https://gitlab.freedesktop.org/drm/igt-gpu-tools" -if [[ ${PV} = *9999* ]]; then - SRC_URI="" -else - KEYWORDS="~amd64 ~x86" - SRC_URI="https://www.x.org/releases/individual/app/${P}.tar.xz" -fi -LICENSE="MIT" -SLOT="0" -IUSE="chamelium doc libressl man overlay sound valgrind video_cards_amdgpu video_cards_intel video_cards_nouveau X xv" -REQUIRED_USE=" - || ( video_cards_amdgpu video_cards_intel video_cards_nouveau ) - overlay? ( - video_cards_intel - || ( X xv ) - ) -" -RESTRICT="test" - -RDEPEND=" - dev-libs/glib:2 - sys-apps/kmod:= - sys-libs/libunwind:= - sys-libs/zlib:= - sys-process/procps:= - virtual/libudev:= - >=x11-libs/cairo-1.12.0[X?] - >=x11-libs/libdrm-2.4.82[video_cards_amdgpu?,video_cards_intel?,video_cards_nouveau?] - >=x11-libs/libpciaccess-0.10 - chamelium? ( - dev-libs/xmlrpc-c - sci-libs/gsl - x11-libs/pixman - ) - !libressl? ( dev-libs/openssl:0= ) - libressl? ( dev-libs/libressl:0= ) - overlay? ( - >=x11-libs/libXrandr-1.3 - xv? ( - x11-libs/libX11 - x11-libs/libXext - x11-libs/libXv - ) - ) - sound? ( - sci-libs/gsl - media-libs/alsa-lib:= - ) - valgrind? ( dev-util/valgrind ) - " -DEPEND="${RDEPEND} - doc? ( >=dev-util/gtk-doc-1.25-r1 ) - man? ( dev-python/docutils ) - overlay? ( - >=dev-util/peg-0.1.18 - x11-base/xorg-proto - ) - video_cards_intel? ( - sys-devel/bison - sys-devel/flex - ) -" - -src_prepare() { - sed -e "s/rst2man/rst2man.py/" -i man/rst2man.sh - sed -e "s/find_program('rst2man'/find_program('rst2man.py'/" -i man/meson.build - default_src_prepare -} - -src_configure() { - local gpus="" - use video_cards_amdgpu && gpus+="amdgpu," - use video_cards_intel && gpus+="intel," - use video_cards_nouveau && gpus+="nouveau," - - local overlay_backends="" - use overlay && use xv && overlay_backends+="xv," - use overlay && use X && overlay_backends+="x," - - local emesonargs=( - -Dbuild_audio=$(usex sound true false) - -Dbuild_chamelium=$(usex chamelium true false) - -Dbuild_docs=$(usex doc true false) - -Dbuild_man=$(usex man true false) - -Dbuild_overlay=$(usex overlay true false) - -Dbuild_tests=$(usex doc true false) # Test build is required for docs - -Doverlay_backends=${overlay_backends%?} - -Dwith_libdrm=${gpus%?} - -Dwith_valgrind=$(usex valgrind true false) - ) - meson_src_configure -} diff --git a/x11-apps/igt-gpu-tools/metadata.xml b/x11-apps/igt-gpu-tools/metadata.xml deleted file mode 100644 index 8c66887..0000000 --- a/x11-apps/igt-gpu-tools/metadata.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> -<pkgmetadata> -<maintainer type="project"> - <email>x11@gentoo.org</email> - <name>X11</name> -</maintainer> -<use> - <flag name="chamelium">Enables support for building Chamelium tests</flag> - <flag name="man">Build and install man pages</flag> - <flag name="overlay">Build the intel-gpu-overlay utility</flag> - <flag name="valgrind">Support valgrind annotations</flag> - <flag name="xv">Enable intel-gpu-overlay xv backend</flag> - <flag name="X">Enable intel-gpu-overlay xlib/cairo backend</flag> -</use> -</pkgmetadata> |