From 5f1f98207d8246af6b6caf60c74655126d153326 Mon Sep 17 00:00:00 2001 From: Mikhail Pukhlikov Date: Fri, 5 Jun 2020 13:54:33 +0400 Subject: Update rust Signed-off-by: Mikhail Pukhlikov --- dev-lang/rust/Manifest | 10 +- dev-lang/rust/files/1.40.0-add-soname.patch | 36 ---- dev-lang/rust/rust-1.43.1-r666.ebuild | 293 ---------------------------- dev-lang/rust/rust-1.44.0-r666.ebuild | 289 +++++++++++++++++++++++++++ virtual/rust/rust-1.43.1-r666.ebuild | 17 -- virtual/rust/rust-1.44.0-r666.ebuild | 17 ++ 6 files changed, 311 insertions(+), 351 deletions(-) delete mode 100644 dev-lang/rust/files/1.40.0-add-soname.patch delete mode 100644 dev-lang/rust/rust-1.43.1-r666.ebuild create mode 100644 dev-lang/rust/rust-1.44.0-r666.ebuild delete mode 100644 virtual/rust/rust-1.43.1-r666.ebuild create mode 100644 virtual/rust/rust-1.44.0-r666.ebuild diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest index be7b641..3661c3b 100644 --- a/dev-lang/rust/Manifest +++ b/dev-lang/rust/Manifest @@ -1,5 +1,5 @@ -DIST rust-1.42.0-aarch64-unknown-linux-gnu.tar.xz 99903344 SHA256 b30833fd98b3d2a5886e93473e100c32a319d741a305eda67ea5fc24c85e5f9a SHA512 691a11e279efdcafa6bdafacb7fb48ccf653e180e0e85909b6031105a297d47538efb36d63216f6185427f818483a51aa827f351ca2123840d72caf60079fe13 WHIRLPOOL 71564bceace714171be84863ec9a39f74e997b230643cd18ffe88266745e971b21135e923a11d7674b48c7055b653f80d37b5b5a3cb49f59099d5599e9deb79b -DIST rust-1.42.0-armv7-unknown-linux-gnueabihf.tar.xz 105021972 SHA256 90e2deb1597940250b2c6e6fc8bd7f4d8a8893f7f2a7f709917885247ae1c084 SHA512 26768ec530506e20fed8f9ef2c1ca85eec155fc90949f2063836b6109b296a976c8430a698971a8b1c11e8f6ad043d854a36e9f0e849417178411dc5cbd30e59 WHIRLPOOL 4701daa0a15feb5146fa33f0cda0d0fb6d0a71cdc37e8e2d9443e07228ca1beb38f86389be49ebedf1060535da750c56c9ad02b3b0bd7e57d92fbf537cb99dea -DIST rust-1.42.0-i686-unknown-linux-gnu.tar.xz 124258356 SHA256 a162c97398e5d42e47cd8c49b86ae8092a4f5d3bbc063895edf895c1c80de080 SHA512 7376be5abed573bbf68f73ed5609fa8e22dfa3ead19a3f3d78d553347e3ae01604ab9906f5317f1687a8ab3f9ad9c38cde44ef6f56d7da65a788a74aee9df057 WHIRLPOOL d28565a0f3eae0e1d524e3052da55637d2a4952f6c182a3474287a6026c090d50793457cfee6809134e346bc2d59e7d806785eee71e294140c47f7adf73fb03c -DIST rust-1.42.0-x86_64-unknown-linux-gnu.tar.xz 110826392 SHA256 8c94fba97589f1548bbd0652ff337169a7e47b4cb08accd9973722fe830c27ff SHA512 87c06d4503e7ba12bd3dfc8dd279a3bdf33a24d2c22eec1378b79b2c17ccdad9b4c8dbd0d4704eae1f3476aec5639d3ba143e8c74a296d631b17b57da7447e70 WHIRLPOOL 28fe9ab632c60e08008fc33994425e0d4c95fc2fbfb0716da33220414330c2977953d600d5b1ad8c63ed3e0685ede90b6daf7aaeeb42c6a74f9b62c5e75f5ece -DIST rustc-1.43.1-src.tar.xz 94405276 SHA256 eb0a103c67c4565403d9e6f84a1c708982a5e9e5b3c0d831e4d6f6451795d106 SHA512 24bb01237b1f3f5412109290bb4406b9742cf8956162f4090a98ed3a59a6e2e8dda399452bec1c93c8afdcf5effd98e4825e7f218238e0e88735c1ff4a5b385f WHIRLPOOL b466844d282381b3ae9668ac39de3f84a44586bbc806010b686ba556a383f4758256d39c63e07fc8002b3a36f01737bdaf3ab2d3bbd9a839dc91392ce00093c6 +DIST rust-1.43.0-aarch64-unknown-linux-gnu.tar.xz 103995164 SHA256 5d1bcbf7575be72c4775c89098366158ee87905423342196a6ef0c1b3d3f1140 SHA512 99cc7913d49c58a6a5f5b065afaff58ecf6cb00f5a83b8047944d2bde94eed9a33a7edc88373c52a371bad4f1b5f8d8742ac22ac9c05911223e76f13ffece70a WHIRLPOOL f87deb5a05d9d15c4e732d7cb32e4ec88c39b6391ded1068e70cdd885374c15ff475a9d9da11aab8b8c3a78a0141051f8530efaea46fe30a5570d8df296abe14 +DIST rust-1.43.0-armv7-unknown-linux-gnueabihf.tar.xz 108910044 SHA256 6e045d3015949d7240af1ff990ccd59391958a6be5e8bc3baa5210914fa6ebde SHA512 728ed2d12079989f4547b1756e9e5b9fdf551f54626b02141346e8e42df1b2a4039b16131864021ab95b6011084e00e3edc2c072a4917a3a4fde965c0a0e2c15 WHIRLPOOL eb34865419bb1d81b8f2c0c350658232c426439a1ec90edd504399289efb7f32f9e88d44587d1e4ab81bdd4ff7ba370245e6dcb44423d4bbae5b5a0ccf6ab74c +DIST rust-1.43.0-i686-unknown-linux-gnu.tar.xz 126712424 SHA256 871b87937e7dc774a2d0f7788520a215efefb7369b4968fe3811d2cbe8f7244a SHA512 25fa8203874cac4f0c57da77c0ee9d2750b595f43590b666ad609ad1fe85fdc2604658be5fe7059aff6d0d567be0c6ae01e1e9d7fceb22bd602f1548201aa0eb WHIRLPOOL ce3abe85c9f384addff30456dacf219b206a6357d2e3754a446a4df38a8cc1eb97a5ce1ae332c53b952f71eb81f3e51f4ec00853a54502e34fc351eb08b1fa89 +DIST rust-1.43.0-x86_64-unknown-linux-gnu.tar.xz 112598556 SHA256 af633676caffaaecfb2600ec617d84e41811e7a6fe438760a97c5404afecdd6b SHA512 3fb0630e76f78565cafa9882d1c09a2bb31d0de145748ba4506d7b6a5ea508c4fb533ac3f60df8335d9c4944ba8f028752441d3c3443e3990fe3cc4e676c1670 WHIRLPOOL fa63625f80ef9e2a368e4f74dc6a82d655c7dd02ebfccc602a47d7787303a489093ee8514d7daf48e2f63cec6fefe432c4b9b06b3e5e0f2145e98682f7520a80 +DIST rustc-1.44.0-src.tar.xz 94754392 SHA256 b32fa7d6bd6ff9286aab2aa7ca696d1da921614cefc10f617aef68d9bce9118a SHA512 03d6a2ec4c80eb436b278677080f360912c60aacffb98b79c91d5a79967ef988b2e62ccff9ab26993f852cebd62cdad48e149c4498f6dcdeb3699cbed19790e4 WHIRLPOOL 72fec964cfb93f283b9d5601a32a4e14bf9ae0738495f890e1ae03657abf39adcdeec5ba20361ef44b89a23cc297893547ae42916ee14b0186bc2e64e0f36fbb diff --git a/dev-lang/rust/files/1.40.0-add-soname.patch b/dev-lang/rust/files/1.40.0-add-soname.patch deleted file mode 100644 index 7a5c018..0000000 --- a/dev-lang/rust/files/1.40.0-add-soname.patch +++ /dev/null @@ -1,36 +0,0 @@ -Description: Set DT_SONAME when building dylibs - In Rust, library filenames include a version-specific hash to help - the run-time linker find the correct version. Unlike in C/C++, the - compiler looks for all libraries matching a glob that ignores the - hash and reads embedded metadata to work out versions, etc. - . - The upshot is that there is no need for the usual "libfoo.so -> - libfoo-1.2.3.so" symlink common with C/C++ when building with Rust, - and no need to communicate an alternate filename to use at run-time - vs compile time. If linking to a Rust dylib from C/C++ however, a - "libfoo.so -> libfoo-$hash.so" symlink may well be useful and in - this case DT_SONAME=libfoo-$hash.so would be required. More - mundanely, various tools (eg: dpkg-shlibdeps) complain if they don't - find DT_SONAME on shared libraries in public directories. - . - This patch passes -Wl,-soname=$outfile when building dylibs (and - using a GNU linker). -Author: Angus Lees -Forwarded: no - ---- a/src/librustc_codegen_ssa/back/link.rs -+++ b/src/librustc_codegen_ssa/back/link.rs -@@ -1034,6 +1034,13 @@ - cmd.args(&rpath::get_rpath_flags(&mut rpath_config)); - } - -+ if (crate_type == config::CrateType::Dylib || crate_type == config::CrateType::Cdylib) -+ && t.options.linker_is_gnu { -+ let filename = String::from(out_filename.file_name().unwrap().to_str().unwrap()); -+ let soname = [String::from("-Wl,-soname=") + &filename]; -+ cmd.args(&soname); -+ } -+ - // Finally add all the linker arguments provided on the command line along - // with any #[link_args] attributes found inside the crate - if let Some(ref args) = sess.opts.cg.link_args { diff --git a/dev-lang/rust/rust-1.43.1-r666.ebuild b/dev-lang/rust/rust-1.43.1-r666.ebuild deleted file mode 100644 index 982582d..0000000 --- a/dev-lang/rust/rust-1.43.1-r666.ebuild +++ /dev/null @@ -1,293 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -PYTHON_COMPAT=( python2_7 python3_{5,6,7} pypy ) - -inherit multiprocessing multilib-build python-any-r1 toolchain-funcs versionator - -ABI_VER="$(get_version_component_range 1-2)" -SLOT="dev/${ABI_VER}" -MY_P="rustc-${PV}" -SRC="${MY_P}-src.tar.xz" -KEYWORDS="~amd64 ~arm64 ~x86" - -CHOST_amd64=x86_64-unknown-linux-gnu -CHOST_x86=i686-unknown-linux-gnu -CHOST_arm64=aarch64-unknown-linux-gnu -CHOST_arm=armv7-unknown-linux-gnueabihf - -RUST_STAGE0_VERSION="1.$(($(get_version_component_range 2) - 1)).0" -RUST_STAGE0_amd64="rust-${RUST_STAGE0_VERSION}-${CHOST_amd64}" -RUST_STAGE0_x86="rust-${RUST_STAGE0_VERSION}-${CHOST_x86}" -RUST_STAGE0_arm64="rust-${RUST_STAGE0_VERSION}-${CHOST_arm64}" -RUST_STAGE0_armv7="rust-${RUST_STAGE0_VERSION}-${CHOST_arm}" - -CARGO_DEPEND_VERSION="0.$(($(get_version_component_range 2))).0" - -DESCRIPTION="Systems programming language from Mozilla" -HOMEPAGE="https://www.rust-lang.org/" - -SRC_URI="https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.xz - amd64? ( https://static.rust-lang.org/dist/${RUST_STAGE0_amd64}.tar.xz ) - x86? ( https://static.rust-lang.org/dist/${RUST_STAGE0_x86}.tar.xz ) - arm64? ( https://static.rust-lang.org/dist/${RUST_STAGE0_arm64}.tar.xz ) - arm? ( https://static.rust-lang.org/dist/${RUST_STAGE0_armv7}.tar.xz ) -" - -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430 - NVPTX PowerPC Sparc SystemZ X86 XCore ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) -LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/?} - -LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA" - -IUSE="clippy debug doc libressl rls rustfmt thumbv7neon wasm ${ALL_LLVM_TARGETS[*]}" - -RDEPEND=">=app-eselect/eselect-rust-20190311 - sys-libs/zlib - !libressl? ( dev-libs/openssl:0= ) - libressl? ( dev-libs/libressl:0= ) - net-libs/libssh2 - net-libs/http-parser - net-misc/curl[ssl] - " -DEPEND="${RDEPEND} - ${PYTHON_DEPS} - || ( - >=sys-devel/gcc-4.7 - >=sys-devel/clang-3.5 - ) - !dev-util/cargo - rustfmt? ( !dev-util/rustfmt ) - dev-util/cmake -" -PDEPEND="" - -REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )" - -PATCHES=( - "${FILESDIR}"/1.40.0-add-soname.patch -) - -S="${WORKDIR}/${MY_P}-src" - -toml_usex() { - usex "$1" true false -} - -src_prepare() { - local rust_stage0_root="${WORKDIR}"/rust-stage0 - - local rust_stage0_name="RUST_STAGE0_${ARCH}" - local rust_stage0="${!rust_stage0_name}" - - "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig --destdir="${rust_stage0_root}" --prefix=/ || die - - default -} - -src_configure() { - local rust_target="" rust_targets="" rust_target_name arch_cflags - - # Collect rust target names to compile standard libs for all ABIs. - for v in $(multilib_get_enabled_abi_pairs); do - rust_target_name="CHOST_${v##*.}" - rust_targets="${rust_targets},\"${!rust_target_name}\"" - done - if use wasm; then - rust_targets="${rust_targets},\"wasm32-unknown-unknown\"" - fi - if use arm && use thumbv7neon; then - rust_targets="${rust_targets},\"thumbv7neon-unknown-linux-gnueabihf\"" - fi - - rust_targets="${rust_targets#,}" - - local extended="true" tools="\"cargo\"," - if use clippy; then - tools="\"clippy\",$tools" - fi - if use rls; then - tools="\"rls\",\"analysis\",\"src\",$tools" - fi - if use rustfmt; then - tools="\"rustfmt\",$tools" - fi - - local rust_stage0_root="${WORKDIR}"/rust-stage0 - - rust_target_name="CHOST_${ARCH}" - rust_target="${!rust_target_name}" - - cat <<- EOF > "${S}"/config.toml - [llvm] - optimize = $(toml_usex !debug) - release-debuginfo = $(toml_usex debug) - assertions = $(toml_usex debug) - targets = "${LLVM_TARGETS// /;}" - experimental-targets = "" - [build] - build = "${rust_target}" - host = ["${rust_target}"] - target = [${rust_targets}] - cargo = "${rust_stage0_root}/bin/cargo" - rustc = "${rust_stage0_root}/bin/rustc" - docs = $(toml_usex doc) - submodules = false - python = "${EPYTHON}" - locked-deps = true - vendor = true - extended = ${extended} - tools = [${tools}] - verbose = 2 - [install] - prefix = "${EPREFIX}/usr" - libdir = "$(get_libdir)" - docdir = "share/doc/${P}" - mandir = "share/${P}/man" - [rust] - optimize = $(toml_usex !debug) - debug = $(toml_usex debug) - debug-assertions = $(toml_usex debug) - default-linker = "$(tc-getCC)" - rpath = false - lld = $(toml_usex wasm) - EOF - - for v in $(multilib_get_enabled_abi_pairs); do - rust_target=$(get_abi_CHOST ${v##*.}) - arch_cflags="$(get_abi_CFLAGS ${v##*.})" - - cat <<- EOF >> "${S}"/config.env - CFLAGS_${rust_target}=${arch_cflags} - EOF - - cat <<- EOF >> "${S}"/config.toml - [target.${rust_target}] - cc = "$(tc-getBUILD_CC)" - cxx = "$(tc-getBUILD_CXX)" - linker = "$(tc-getCC)" - ar = "$(tc-getAR)" - EOF - done - - if use wasm; then - cat <<- EOF >> "${S}"/config.toml - [target.wasm32-unknown-unknown] - linker = "lld" - EOF - fi - - if use arm && use thumbv7neon; then - cat <<- EOF >> "${S}"/config.toml - [target.thumbv7neon-unknown-linux-gnueabihf] - cc = "$(tc-getBUILD_CC)" - cxx = "$(tc-getBUILD_CXX)" - linker = "$(tc-getCC)" - ar = "$(tc-getAR)" - EOF - fi -} - -src_compile() { - env $(cat "${S}"/config.env)\ - ./x.py build --config="${S}"/config.toml -j$(makeopts_jobs) \ - --exclude src/tools/miri || die # https://github.com/rust-lang/rust/issues/52305 -} - -src_install() { - local rust_target abi_libdir - - env DESTDIR="${D}" ./x.py install || die - - mv "${D}/usr/bin/rustc" "${D}/usr/bin/rustc-${PV}" || die - mv "${D}/usr/bin/rustdoc" "${D}/usr/bin/rustdoc-${PV}" || die - mv "${D}/usr/bin/rust-gdb" "${D}/usr/bin/rust-gdb-${PV}" || die - mv "${D}/usr/bin/rust-lldb" "${D}/usr/bin/rust-lldb-${PV}" || die - mv "${D}/usr/bin/cargo" "${D}/usr/bin/cargo-${PV}" || die - if use clippy; then - mv "${D}/usr/bin/clippy-driver" "${D}/usr/bin/clippy-driver-${PV}" || die - mv "${D}/usr/bin/cargo-clippy" "${D}/usr/bin/cargo-clippy-${PV}" || die - fi - if use rls; then - mv "${D}/usr/bin/rls" "${D}/usr/bin/rls-${PV}" || die - fi - if use rustfmt; then - mv "${D}/usr/bin/rustfmt" "${D}/usr/bin/rustfmt-${PV}" || die - mv "${D}/usr/bin/cargo-fmt" "${D}/usr/bin/cargo-fmt-${PV}" || die - fi - - # Copy shared library versions of standard libraries for all targets - # into the system's abi-dependent lib directories because the rust - # installer only does so for the native ABI. - for v in $(multilib_get_enabled_abi_pairs); do - if [ ${v##*.} = ${DEFAULT_ABI} ]; then - continue - fi - abi_libdir=$(get_abi_LIBDIR ${v##*.}) - rust_target=$(get_abi_CHOST ${v##*.}) - mkdir -p "${D}/usr/${abi_libdir}" - cp "${D}/usr/$(get_libdir)/rustlib/${rust_target}/lib"/*.so \ - "${D}/usr/${abi_libdir}" || die - done - - dodoc COPYRIGHT - - # FIXME: - # Really not sure if that env is needed, specailly LDPATH - cat <<-EOF > "${T}"/50${P} - LDPATH="/usr/$(get_libdir)/${P}" - MANPATH="/usr/share/${P}/man" - EOF - doenvd "${T}"/50${P} - - cat <<-EOF > "${T}/provider-${P}" - /usr/bin/rustdoc - /usr/bin/rust-gdb - /usr/bin/rust-lldb - EOF - echo /usr/bin/cargo >> "${T}/provider-${P}" - if use clippy; then - echo /usr/bin/clippy-driver >> "${T}/provider-${P}" - echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" - fi - if use rls; then - echo /usr/bin/rls >> "${T}/provider-${P}" - fi - if use rustfmt; then - echo /usr/bin/rustfmt >> "${T}/provider-${P}" - echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" - fi - dodir /etc/env.d/rust - insinto /etc/env.d/rust - doins "${T}/provider-${P}" -} - -pkg_postinst() { - eselect rust update --if-unset - - 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}." - - ewarn "cargo is now installed from dev-lang/rust{,-bin} instead of dev-util/cargo." - ewarn "This might have resulted in a dangling symlink for /usr/bin/cargo on some" - ewarn "systems. This can be resolved by calling 'sudo eselect rust set ${P}'." - - if has_version app-editors/emacs || has_version app-editors/emacs-vcs; 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 - - if has_version 'app-shells/zsh'; then - elog "install app-shells/rust-zshcomp to get zsh completion for rust." - fi -} - -pkg_postrm() { - eselect rust unset --if-invalid -} diff --git a/dev-lang/rust/rust-1.44.0-r666.ebuild b/dev-lang/rust/rust-1.44.0-r666.ebuild new file mode 100644 index 0000000..3cbdcf1 --- /dev/null +++ b/dev-lang/rust/rust-1.44.0-r666.ebuild @@ -0,0 +1,289 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +PYTHON_COMPAT=( python2_7 python3_{5,6,7} pypy ) + +inherit multiprocessing multilib-build python-any-r1 toolchain-funcs versionator + +ABI_VER="$(get_version_component_range 1-2)" +SLOT="dev/${ABI_VER}" +MY_P="rustc-${PV}" +SRC="${MY_P}-src.tar.xz" +KEYWORDS="~amd64 ~arm64 ~x86" + +CHOST_amd64=x86_64-unknown-linux-gnu +CHOST_x86=i686-unknown-linux-gnu +CHOST_arm64=aarch64-unknown-linux-gnu +CHOST_arm=armv7-unknown-linux-gnueabihf + +RUST_STAGE0_VERSION="1.$(($(get_version_component_range 2) - 1)).0" +RUST_STAGE0_amd64="rust-${RUST_STAGE0_VERSION}-${CHOST_amd64}" +RUST_STAGE0_x86="rust-${RUST_STAGE0_VERSION}-${CHOST_x86}" +RUST_STAGE0_arm64="rust-${RUST_STAGE0_VERSION}-${CHOST_arm64}" +RUST_STAGE0_armv7="rust-${RUST_STAGE0_VERSION}-${CHOST_arm}" + +CARGO_DEPEND_VERSION="0.$(($(get_version_component_range 2))).0" + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="https://www.rust-lang.org/" + +SRC_URI="https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.xz + amd64? ( https://static.rust-lang.org/dist/${RUST_STAGE0_amd64}.tar.xz ) + x86? ( https://static.rust-lang.org/dist/${RUST_STAGE0_x86}.tar.xz ) + arm64? ( https://static.rust-lang.org/dist/${RUST_STAGE0_arm64}.tar.xz ) + arm? ( https://static.rust-lang.org/dist/${RUST_STAGE0_armv7}.tar.xz ) +" + +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430 + NVPTX PowerPC Sparc SystemZ X86 XCore ) +ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) +LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/?} + +LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA" + +IUSE="clippy debug doc libressl rls rustfmt thumbv7neon wasm ${ALL_LLVM_TARGETS[*]}" + +RDEPEND=">=app-eselect/eselect-rust-20190311 + sys-libs/zlib + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + net-libs/libssh2 + net-libs/http-parser + net-misc/curl[ssl] + " +DEPEND="${RDEPEND} + ${PYTHON_DEPS} + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + !dev-util/cargo + rustfmt? ( !dev-util/rustfmt ) + dev-util/cmake +" +PDEPEND="" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )" + +S="${WORKDIR}/${MY_P}-src" + +toml_usex() { + usex "$1" true false +} + +src_prepare() { + local rust_stage0_root="${WORKDIR}"/rust-stage0 + + local rust_stage0_name="RUST_STAGE0_${ARCH}" + local rust_stage0="${!rust_stage0_name}" + + "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig --destdir="${rust_stage0_root}" --prefix=/ || die + + default +} + +src_configure() { + local rust_target="" rust_targets="" rust_target_name arch_cflags + + # Collect rust target names to compile standard libs for all ABIs. + for v in $(multilib_get_enabled_abi_pairs); do + rust_target_name="CHOST_${v##*.}" + rust_targets="${rust_targets},\"${!rust_target_name}\"" + done + if use wasm; then + rust_targets="${rust_targets},\"wasm32-unknown-unknown\"" + fi + if use arm && use thumbv7neon; then + rust_targets="${rust_targets},\"thumbv7neon-unknown-linux-gnueabihf\"" + fi + + rust_targets="${rust_targets#,}" + + local extended="true" tools="\"cargo\"," + if use clippy; then + tools="\"clippy\",$tools" + fi + if use rls; then + tools="\"rls\",\"analysis\",\"src\",$tools" + fi + if use rustfmt; then + tools="\"rustfmt\",$tools" + fi + + local rust_stage0_root="${WORKDIR}"/rust-stage0 + + rust_target_name="CHOST_${ARCH}" + rust_target="${!rust_target_name}" + + cat <<- EOF > "${S}"/config.toml + [llvm] + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + targets = "${LLVM_TARGETS// /;}" + experimental-targets = "" + [build] + build = "${rust_target}" + host = ["${rust_target}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + docs = $(toml_usex doc) + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = ${extended} + tools = [${tools}] + verbose = 2 + [install] + prefix = "${EPREFIX}/usr" + libdir = "$(get_libdir)" + docdir = "share/doc/${P}" + mandir = "share/${P}/man" + [rust] + optimize = $(toml_usex !debug) + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + default-linker = "$(tc-getCC)" + rpath = false + lld = $(toml_usex wasm) + EOF + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(get_abi_CHOST ${v##*.}) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + cat <<- EOF >> "${S}"/config.env + CFLAGS_${rust_target}=${arch_cflags} + EOF + + cat <<- EOF >> "${S}"/config.toml + [target.${rust_target}] + cc = "$(tc-getBUILD_CC)" + cxx = "$(tc-getBUILD_CXX)" + linker = "$(tc-getCC)" + ar = "$(tc-getAR)" + EOF + done + + if use wasm; then + cat <<- EOF >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "lld" + EOF + fi + + if use arm && use thumbv7neon; then + cat <<- EOF >> "${S}"/config.toml + [target.thumbv7neon-unknown-linux-gnueabihf] + cc = "$(tc-getBUILD_CC)" + cxx = "$(tc-getBUILD_CXX)" + linker = "$(tc-getCC)" + ar = "$(tc-getAR)" + EOF + fi +} + +src_compile() { + env $(cat "${S}"/config.env)\ + ./x.py build --config="${S}"/config.toml -j$(makeopts_jobs) \ + --exclude src/tools/miri || die # https://github.com/rust-lang/rust/issues/52305 +} + +src_install() { + local rust_target abi_libdir + + env DESTDIR="${D}" ./x.py install || die + + mv "${D}/usr/bin/rustc" "${D}/usr/bin/rustc-${PV}" || die + mv "${D}/usr/bin/rustdoc" "${D}/usr/bin/rustdoc-${PV}" || die + mv "${D}/usr/bin/rust-gdb" "${D}/usr/bin/rust-gdb-${PV}" || die + mv "${D}/usr/bin/rust-lldb" "${D}/usr/bin/rust-lldb-${PV}" || die + mv "${D}/usr/bin/cargo" "${D}/usr/bin/cargo-${PV}" || die + if use clippy; then + mv "${D}/usr/bin/clippy-driver" "${D}/usr/bin/clippy-driver-${PV}" || die + mv "${D}/usr/bin/cargo-clippy" "${D}/usr/bin/cargo-clippy-${PV}" || die + fi + if use rls; then + mv "${D}/usr/bin/rls" "${D}/usr/bin/rls-${PV}" || die + fi + if use rustfmt; then + mv "${D}/usr/bin/rustfmt" "${D}/usr/bin/rustfmt-${PV}" || die + mv "${D}/usr/bin/cargo-fmt" "${D}/usr/bin/cargo-fmt-${PV}" || die + fi + + # Copy shared library versions of standard libraries for all targets + # into the system's abi-dependent lib directories because the rust + # installer only does so for the native ABI. + for v in $(multilib_get_enabled_abi_pairs); do + if [ ${v##*.} = ${DEFAULT_ABI} ]; then + continue + fi + abi_libdir=$(get_abi_LIBDIR ${v##*.}) + rust_target=$(get_abi_CHOST ${v##*.}) + mkdir -p "${D}/usr/${abi_libdir}" + cp "${D}/usr/$(get_libdir)/rustlib/${rust_target}/lib"/*.so \ + "${D}/usr/${abi_libdir}" || die + done + + dodoc COPYRIGHT + + # FIXME: + # Really not sure if that env is needed, specailly LDPATH + cat <<-EOF > "${T}"/50${P} + LDPATH="/usr/$(get_libdir)/${P}" + MANPATH="/usr/share/${P}/man" + EOF + doenvd "${T}"/50${P} + + cat <<-EOF > "${T}/provider-${P}" + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-lldb + EOF + echo /usr/bin/cargo >> "${T}/provider-${P}" + if use clippy; then + echo /usr/bin/clippy-driver >> "${T}/provider-${P}" + echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" + fi + if use rls; then + echo /usr/bin/rls >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + dodir /etc/env.d/rust + insinto /etc/env.d/rust + doins "${T}/provider-${P}" +} + +pkg_postinst() { + eselect rust update --if-unset + + 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}." + + ewarn "cargo is now installed from dev-lang/rust{,-bin} instead of dev-util/cargo." + ewarn "This might have resulted in a dangling symlink for /usr/bin/cargo on some" + ewarn "systems. This can be resolved by calling 'sudo eselect rust set ${P}'." + + if has_version app-editors/emacs || has_version app-editors/emacs-vcs; 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 + + if has_version 'app-shells/zsh'; then + elog "install app-shells/rust-zshcomp to get zsh completion for rust." + fi +} + +pkg_postrm() { + eselect rust unset --if-invalid +} diff --git a/virtual/rust/rust-1.43.1-r666.ebuild b/virtual/rust/rust-1.43.1-r666.ebuild deleted file mode 100644 index 63b7dbb..0000000 --- a/virtual/rust/rust-1.43.1-r666.ebuild +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -inherit multilib-build - -DESCRIPTION="Virtual for Rust language compiler" -HOMEPAGE="" -SRC_URI="" - -LICENSE="" -SLOT="0" -KEYWORDS="~amd64 ~arm64 ~x86" - -BDEPEND="" -RDEPEND="|| ( =dev-lang/rust-${PVR}*[${MULTILIB_USEDEP}] =dev-lang/rust-bin-${PV}*[${MULTILIB_USEDEP}] )" diff --git a/virtual/rust/rust-1.44.0-r666.ebuild b/virtual/rust/rust-1.44.0-r666.ebuild new file mode 100644 index 0000000..63b7dbb --- /dev/null +++ b/virtual/rust/rust-1.44.0-r666.ebuild @@ -0,0 +1,17 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit multilib-build + +DESCRIPTION="Virtual for Rust language compiler" +HOMEPAGE="" +SRC_URI="" + +LICENSE="" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" + +BDEPEND="" +RDEPEND="|| ( =dev-lang/rust-${PVR}*[${MULTILIB_USEDEP}] =dev-lang/rust-bin-${PV}*[${MULTILIB_USEDEP}] )" -- cgit v1.2.3-65-gdbad