diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest index fb55990..9219af8 100644 --- a/dev-lang/rust/Manifest +++ b/dev-lang/rust/Manifest @@ -12,6 +12,7 @@ DIST rustc-1.39.0-src.tar.xz 96495140 BLAKE2B 6df6bf0c3b38c28753713acdc477ea6929 DIST rustc-1.40.0-src.tar.xz 92306352 BLAKE2B 762b9592414e5c816540f6fd37d07b3b0ffe97a151968cc8ae77be2fda03a6d66905192985edc65055cc7811dbd90faa2b2c056481f72161c6f7ccbcce13671a SHA512 b5ac3079acefb62d3c985b77f624d7fb68de23a59396fed9ccb292db61641c064f3146ee54d3cf59067b17ebfaadd14a6b2b466def60316bb5b13ba3aef01e1f DIST rustc-1.41.1-src.tar.xz 93754192 BLAKE2B 235ece650d0c75e1c8700ce73d3811997cd0d827b850a6dd435a269f3f86d85849d54755ea346c5ddcbe0d1224836fd78213f6abeab4a9a8c4c3e2d8a05ff7b4 SHA512 ef33565c9cf4e27ca279072bfed3301e0276c09407d49727640746ba78d289de285278d64b1cce8708461fd6c97c7ab2ea8d56e7a4c4a23b2e66e2d164c35fc9 DIST rustc-1.42.0-src.tar.xz 94186592 BLAKE2B 82298ef3da44188546bb945bcbfc1af630e6a4466b643667da08a04a33c6417afd68fc86302bdd22ab36c208fdb13cbc479e762d1217c05507bbfeb13bfbef7e SHA512 589bfdc92deedd33b8ea0df7f7c64c2a9a085fbea64936eff92f81e812309c060ed7a7adc96f6010d7adf62a68434a230da0f6c5b3540df4e0a5c6de05a31b16 +DIST rustc-1.43.1-src.tar.xz 94405276 BLAKE2B 8679fe937abc4f758f3e35c2542d57cc1ad0bb72111597881873b30779b6e7b6711baa52493cb5ff954bf9cd31367b36db4e4fc8676635026059197a33659048 SHA512 24bb01237b1f3f5412109290bb4406b9742cf8956162f4090a98ed3a59a6e2e8dda399452bec1c93c8afdcf5effd98e4825e7f218238e0e88735c1ff4a5b385f EBUILD rust-1.29.0.ebuild 2254 BLAKE2B b6d171e2c93bb9296b02f52e11eb26dc5b759a57a9333b15c2cdf195f3619b54140c9338f05895587c7a5f121d3e4fdffa3feedf81774da453f693264a165dec SHA512 74beda115c43d042e5d6020e65d680874ebf6c3c60b33beb23e3a4819b43ae22d363128429f0199b42714d2987514022613b933406f08436bc5be297c402c30b EBUILD rust-1.30.1.ebuild 7597 BLAKE2B e8caabdff29bc13354ea9ae750e44b47bd7d8b595439dbfac0f4e902b163525cbbea5613cd40d07a894906ceaeb84b1ba0cded08f502fe3865405fb88468f9b1 SHA512 78987f43bff1cc15f10df2ec6249d0fb475815717ed4e39c5efcee8d3b93a0c8443d6acd5add751361de5a49ae7dcb9b241e03db55a5919d46928f03304d6fa1 EBUILD rust-1.31.1.ebuild 7597 BLAKE2B e8caabdff29bc13354ea9ae750e44b47bd7d8b595439dbfac0f4e902b163525cbbea5613cd40d07a894906ceaeb84b1ba0cded08f502fe3865405fb88468f9b1 SHA512 78987f43bff1cc15f10df2ec6249d0fb475815717ed4e39c5efcee8d3b93a0c8443d6acd5add751361de5a49ae7dcb9b241e03db55a5919d46928f03304d6fa1 @@ -26,3 +27,4 @@ EBUILD rust-1.39.0.ebuild 7670 BLAKE2B 43bb55369449f2b2548fbc58d974299743fcec4aa EBUILD rust-1.40.0.ebuild 7670 BLAKE2B 43bb55369449f2b2548fbc58d974299743fcec4aa1efb3c8c449c6ea564963dc5079fccd81274285833d441627edaa5679c38beb3ae4dd5763286a358183747a SHA512 64289d3e04d1f4885e02a751ecee44d001887c34be2298649f6834d422c3d31096f60e1253fc183e7374aa10d2261ced31850ef9a0448a5ec51dbd66fbad7dc2 EBUILD rust-1.41.1.ebuild 7670 BLAKE2B 43bb55369449f2b2548fbc58d974299743fcec4aa1efb3c8c449c6ea564963dc5079fccd81274285833d441627edaa5679c38beb3ae4dd5763286a358183747a SHA512 64289d3e04d1f4885e02a751ecee44d001887c34be2298649f6834d422c3d31096f60e1253fc183e7374aa10d2261ced31850ef9a0448a5ec51dbd66fbad7dc2 EBUILD rust-1.42.0.ebuild 7670 BLAKE2B 43bb55369449f2b2548fbc58d974299743fcec4aa1efb3c8c449c6ea564963dc5079fccd81274285833d441627edaa5679c38beb3ae4dd5763286a358183747a SHA512 64289d3e04d1f4885e02a751ecee44d001887c34be2298649f6834d422c3d31096f60e1253fc183e7374aa10d2261ced31850ef9a0448a5ec51dbd66fbad7dc2 +EBUILD rust-1.43.1.ebuild 7670 BLAKE2B 43bb55369449f2b2548fbc58d974299743fcec4aa1efb3c8c449c6ea564963dc5079fccd81274285833d441627edaa5679c38beb3ae4dd5763286a358183747a SHA512 64289d3e04d1f4885e02a751ecee44d001887c34be2298649f6834d422c3d31096f60e1253fc183e7374aa10d2261ced31850ef9a0448a5ec51dbd66fbad7dc2 diff --git a/dev-lang/rust/rust-1.43.1.ebuild b/dev-lang/rust/rust-1.43.1.ebuild new file mode 100644 index 0000000..e4d353e --- /dev/null +++ b/dev-lang/rust/rust-1.43.1.ebuild @@ -0,0 +1,289 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python2_7 python3_{6,7} ) + +inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing multilib-build python-any-r1 rust-toolchain toolchain-funcs + +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" +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 ~ppc64 ~x86" +fi + +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" + +ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430 + NVPTX PowerPC RISCV Sparc SystemZ WebAssembly 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 cpu_flags_x86_sse2 debug doc libressl rls rustfmt ${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: +# 1. List all the working slots (with min versions) in ||, newest first. +# 2. Update the := to specify *max* version, e.g. < 10. +# 3. Specify LLVM_MAX_SLOT, e.g. 9. +LLVM_DEPEND=" + || ( + sys-devel/llvm:9[llvm_targets_WebAssembly?] + ) + "${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) + compiler-docs = $(toml_usex doc) + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = ${extended} + tools = [${tools}] + verbose = 2 + [install] + prefix = "${EPREFIX}/usr" + libdir = "lib" + docdir = "share/doc/${PF}" + mandir = "share/man" + [rust] + optimize = $(toml_usex !debug) + debug = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + default-linker = "$(tc-getCC)" + channel = "stable" + rpath = false + lld = false + [dist] + src-tarball = false + EOF + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(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 +} + +src_compile() { + env $(cat "${S}"/config.env)\ + "${EPYTHON}" ./x.py build -vv --config="${S}"/config.toml -j$(makeopts_jobs) \ + --exclude src/tools/miri || die # https://github.com/rust-lang/rust/issues/52305 +} + +src_install() { + env DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml \ + --exclude src/tools/miri || die + + # bug #689562, #689160 + rm "${D}/etc/bash_completion.d/cargo" || die + rmdir "${D}"/etc{/bash_completion.d,} || die + dobashcomp build/tmp/dist/cargo-image/etc/bash_completion.d/cargo + + mv "${ED}/usr/bin/rustc" "${ED}/usr/bin/rustc-${PV}" || die + mv "${ED}/usr/bin/rustdoc" "${ED}/usr/bin/rustdoc-${PV}" || die + mv "${ED}/usr/bin/rust-gdb" "${ED}/usr/bin/rust-gdb-${PV}" || die + mv "${ED}/usr/bin/rust-gdbgui" "${ED}/usr/bin/rust-gdbgui-${PV}" || die + mv "${ED}/usr/bin/rust-lldb" "${ED}/usr/bin/rust-lldb-${PV}" || die + mv "${ED}/usr/bin/cargo" "${ED}/usr/bin/cargo-${PV}" || die + if use clippy; then + mv "${ED}/usr/bin/clippy-driver" "${ED}/usr/bin/clippy-driver-${PV}" || die + mv "${ED}/usr/bin/cargo-clippy" "${ED}/usr/bin/cargo-clippy-${PV}" || die + fi + if use rls; then + mv "${ED}/usr/bin/rls" "${ED}/usr/bin/rls-${PV}" || die + fi + if use rustfmt; then + mv "${ED}/usr/bin/rustfmt" "${ED}/usr/bin/rustfmt-${PV}" || die + mv "${ED}/usr/bin/cargo-fmt" "${ED}/usr/bin/cargo-fmt-${PV}" || die + fi + + # Move public shared libs to abi specific libdir + # Private and target specific libs MUST stay in /usr/lib/rustlib/${rust_target}/lib + if [[ $(get_libdir) != lib ]]; then + dodir /usr/$(get_libdir) + mv "${ED}/usr/lib"/*.so "${ED}/usr/$(get_libdir)/" || die + fi + + dodoc COPYRIGHT + + # note: eselect-rust adds EROOT to all paths below + cat <<-EOF > "${T}/provider-${P}" + /usr/bin/rustdoc + /usr/bin/rust-gdb + /usr/bin/rust-gdbgui + /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; 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 +}