commit:     144bf206556b77df750f5c79917d9dc8c4322242
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 12 19:37:22 2021 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Fri Nov 12 19:41:11 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=144bf206

dev-lang/rust-bin: add rust-src useflag

This is useful for many developer tools and for build-std too.
linux-next rust code also requires this to be installed.

Bug: https://bugs.gentoo.org/800785
Bug: https://bugs.gentoo.org/819786
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 dev-lang/rust-bin/Manifest               |  1 +
 dev-lang/rust-bin/metadata.xml           |  1 +
 dev-lang/rust-bin/rust-bin-1.56.1.ebuild | 30 ++++++++++++++++++++++++++----
 3 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/dev-lang/rust-bin/Manifest b/dev-lang/rust-bin/Manifest
index 60ce3455137..aac832bf80c 100644
--- a/dev-lang/rust-bin/Manifest
+++ b/dev-lang/rust-bin/Manifest
@@ -190,3 +190,4 @@ DIST rust-1.56.1-x86_64-unknown-linux-gnu.tar.xz 147853396 
BLAKE2B 1d1318c9f076f
 DIST rust-1.56.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 
ff984dfa092ff3c1c5a3d1a5849b8dc5807c5885dff5eca020d0b1c404484197adb8e1ea5802886b15e2b8846d0f3aa4bb161e49dc39adc151ca7d57a988ff24
 SHA512 
53b57ceaf621248fff020de75434c8fe60657335852c88d14ea399c7935206caaff61ce159cb2f487510336981aa1d839b91153b9764ea21ced1fb6455a16bdd
 DIST rust-1.56.1-x86_64-unknown-linux-musl.tar.xz 255304020 BLAKE2B 
c379fb419b6fa1c73b9c426a4f6e46328ce2ac1beddffb1ed25922b3387147eaf0217d3904ccc14ce2b97952f1035760264ae5fc7a575f92bea84d9581d8b315
 SHA512 
b26d4b9f6396be87aadfbb4777d91c80cfe656570e2bf1a0350788ca45caa7178d4b91966e77c8cc4873e017fd99649ae6a82abad64b32a4eb1f5dfb3a20d45e
 DIST rust-1.56.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 
aed2703ef8cdcdf076d6538fb968f465c0a884b4c11916470324116e56a5b93fd7118b8b167ab19007ac71201044789f58de3a7ee1b60dffc47c3d123db1b4a5
 SHA512 
32c042982da7bde6c36bcb33fd3d9ebcb469667c880214b703e7b2cf89467e7e2bf37282cbc128d0207b9e433b7f2bd028e0d2614b657b544a552aa401bc98c8
+DIST rust-src-1.56.1.tar.xz 2456408 BLAKE2B 
19cd9ac0c0c57d077e2a62e6ef202cf8f349582870d0acf28b105278da611e3e3884b1db59cb43c1a13c8f0ff546f83f8ac30783e46f99233a0a81df04dfd359
 SHA512 
6ebcb7e641031b269af244f0a14ef23c5a6c324d8c9f8f9ffe3b1802fb2aad522b10544f6c29789950dd2a9fe7cbbdb6587f793ec8f53881e707734bbaf3a3d6

diff --git a/dev-lang/rust-bin/metadata.xml b/dev-lang/rust-bin/metadata.xml
index c4bf8b775c4..ba87525c4c5 100644
--- a/dev-lang/rust-bin/metadata.xml
+++ b/dev-lang/rust-bin/metadata.xml
@@ -9,5 +9,6 @@
                <flag name="clippy">Install clippy, Rust code linter</flag>
                <flag name="rls">Install rls, Rust Language Server (used with 
IDEs supporting RLS protocol)</flag>
                <flag name="rustfmt">Install rustfmt, Rust code formatter</flag>
+               <flag name="rust-src">Install rust-src, needed by developer 
tools and for build-std (cross)</flag>
        </use>
 </pkgmetadata>

diff --git a/dev-lang/rust-bin/rust-bin-1.56.1.ebuild 
b/dev-lang/rust-bin/rust-bin-1.56.1.ebuild
index 4f2873f3536..80acd98e9c1 100644
--- a/dev-lang/rust-bin/rust-bin-1.56.1.ebuild
+++ b/dev-lang/rust-bin/rust-bin-1.56.1.ebuild
@@ -6,15 +6,19 @@ EAPI=7
 inherit bash-completion-r1 prefix rust-toolchain toolchain-funcs verify-sig 
multilib-minimal
 
 MY_P="rust-${PV}"
+# curl -L static.rust-lang.org/dist/channel-rust-${PV}.toml 2>/dev/null | grep 
"xz_url.*rust-src"
+MY_SRC_URI="${RUST_TOOLCHAIN_BASEURL}/2021-11-01/rust-src-${PV}.tar.xz"
 
 DESCRIPTION="Systems programming language from Mozilla"
 HOMEPAGE="https://www.rust-lang.org/";
-SRC_URI="$(rust_all_arch_uris ${MY_P})"
+SRC_URI="$(rust_all_arch_uris ${MY_P})
+       rust-src? ( ${MY_SRC_URI} )
+"
 
 LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
 SLOT="stable"
 KEYWORDS="~amd64 ~arm ~arm64 ~ppc ppc64 ~riscv ~x86"
-IUSE="clippy cpu_flags_x86_sse2 doc prefix rls rustfmt"
+IUSE="clippy cpu_flags_x86_sse2 doc prefix rls rust-src rustfmt"
 
 DEPEND=""
 RDEPEND=">=app-eselect/eselect-rust-20190311"
@@ -38,7 +42,7 @@ QA_PREBUILT="
 # so we can safely silence the warning for this QA check.
 QA_EXECSTACK="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta"
 
-VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
+VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}/usr/share/openpgp-keys/rust.asc"
 
 pkg_pretend() {
        if [[ "$(tc-is-softfloat)" != "no" ]] && [[ ${CHOST} == armv7* ]]; then
@@ -47,7 +51,18 @@ pkg_pretend() {
 }
 
 src_unpack() {
-       verify-sig_src_unpack
+       # sadly rust-src tarball does not have corresponding .asc file
+       # so do partial verification
+       if use verify-sig; then
+               for f in ${A}; do
+                       if [[ -f ${DISTDIR}/${f}.asc ]]; then
+                               verify-sig_verify_detached "${DISTDIR}/${f}" 
"${DISTDIR}/${f}.asc"
+                       fi
+               done
+       fi
+
+       default_src_unpack
+
        mv "${WORKDIR}/${MY_P}-$(rust_abi)" "${S}" || die
 }
 
@@ -74,6 +89,13 @@ multilib_src_install() {
        use clippy && components="${components},clippy-preview"
        use rls && components="${components},rls-preview,${analysis}"
        use rustfmt && components="${components},rustfmt-preview"
+       # Rust component 'rust-src' is extracted from separate archive
+       if use rust-src; then
+               einfo "Combining rust and rust-src installers"
+               mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die
+               echo rust-src >> ./components || die
+               components="${components},rust-src"
+       fi
        ./install.sh \
                --components="${components}" \
                --disable-verify \

Reply via email to