diff options
Diffstat (limited to 'dev-lang/rust')
-rw-r--r-- | dev-lang/rust/Manifest | 7 | ||||
-rw-r--r-- | dev-lang/rust/metadata.xml | 3 | ||||
-rw-r--r-- | dev-lang/rust/rust-1.27.1-r2.ebuild | 271 | ||||
-rw-r--r-- | dev-lang/rust/rust-1.27.1.ebuild (renamed from dev-lang/rust/rust-1.27.0.ebuild) | 0 |
4 files changed, 278 insertions, 3 deletions
diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest index fa09b9b24764..9dfc987dc422 100644 --- a/dev-lang/rust/Manifest +++ b/dev-lang/rust/Manifest @@ -9,8 +9,9 @@ DIST rust-1.26.2-i686-unknown-linux-gnu.tar.xz 143090096 BLAKE2B 7871fa4e4d0f320 DIST rust-1.26.2-x86_64-unknown-linux-gnu.tar.xz 138609432 BLAKE2B 54507a8ce3ab2676e6e66852b6d3f1a47ca07ad4b56383f6247149309a0f60f67fbf0a6ba27d968c24340c07d7d5074942c6eaccbc1207c5e75fd9a6f47b2481 SHA512 29e474b0eab4dd2ffa0b964d83f52ffce530e75c4193e307410ef6d20ef9ad2b300a4f467bdf06b3311157340e9295cb9b1efdcf08dafee66979b076c2afba7e DIST rustc-1.25.0-src.tar.gz 98639156 BLAKE2B 1408d5dd0611d4830de3b6b3d00e3fad4198a47599b639d0ac0bd05aaba401f743056a942e9df04a4d192c6b12e8cfe9a9cdf8cd26e48b72104ce9b423df049e SHA512 7d8886f4d5a621eb794e814deb60be681fa38cf086f87ffa14e5a3500c640b237c549a632de1331a0f1b71963de41f6d31a4df3866b7e597424002316fed81ce DIST rustc-1.26.2-src.tar.xz 54613640 BLAKE2B f361b7a0ed40ccb026750b4a70b99931f1abf52024e907b588e339902de2fbbd15501d237ac048d0537005834b0a2f49935f654a8c75d40ed95c65894f611481 SHA512 a598858ddce0e05d1d431be383400f44fc551eb2e368f37b01670c0b65ea5da6a7d5b2b68bb6ef806d2107cfa0d5007008442ad4d5ddb17d18d04e0ab31600b0 -DIST rustc-1.27.0-src.tar.xz 55455772 BLAKE2B 5c1b26a3e8c6e45aaa43b3ccb5819089cf03c32807ac1adc46ec4f9ff8cf803ec444587ccb737b5d701c4ef5fa634fc4c89de3d71e6202b64ec125f986e54ffd SHA512 b80af48c637741add1d2846e6e3153b0125fb22ed587036fb9d27ad3961419af64802aa91a79258277b1be20718281558989ea0283db0c482fe1512354ba79d8 +DIST rustc-1.27.1-src.tar.xz 55458892 BLAKE2B 9c5cec24760afdcee51fb0ba8d2289b92d34de57e97e57f2e5dc129674edab4a595ab5756c789b5de15bdd5107363f12a517169cedc7c3093fa0241d200ca3ab SHA512 4a8c03476ca1867a1130b825724ecb6bd629b889d704fdd6c3de4e188f73e2d1acdfae413f26e37505d76109d23d8e9ab409b31af3d67d244f8552730ada292d EBUILD rust-1.25.0.ebuild 4602 BLAKE2B ef12c22219b70843d6132e07dc0df131502ba441a750c86f1863bd55c708df992a8d359fd62da11ff473806998673fbe0db11ff8129d4af42295ad6d849be511 SHA512 737a3f8469cac36442f11260de811294ab38faa23c515c78159288f340e51bafbb64b7c6354e8409f5b7093e65907aaebcc787493779f70f56a5bb02535574c3 EBUILD rust-1.26.2.ebuild 6405 BLAKE2B 42ba958bf51ca06863a7daf33af65edf6ca9a8661403c3790beb0767275ef351c624bab40eec7d6b191f9ff366a00ffe9b9419edf6ad95093adc130e1c3c8c27 SHA512 5475113b82ae3d5406a41a2ad1d37dd0997be401dbe5f61a3f50234b208b23f6b3bb465baffc0e05b3c667416dcd870d61b918f36ef3e41ae30009b600eb7524 -EBUILD rust-1.27.0.ebuild 6502 BLAKE2B 7c00b39b5db8347085ec6060019ce20f0914aed7c1f62da31d7d3114451253a076f11b60c4615f7b5f1afb0cd7bd25e0e89f328b29fe4c041bad242f69e9cb36 SHA512 57c6ac383e47aec3d86b7d1ec198c843b89498c2f2fea17f1e1ce07ec4a9405ec48add0e3e683a378f74650582ded64a3d610c7d1014295ca9e141bd7d0961a6 -MISC metadata.xml 567 BLAKE2B ba37cc554e05535739292d3c69155bb53bf0c99260dd60b4e7cab0eae13edee8c7e66204e3aaf9d917153714651486370db64bcda5200d6302bd8bee8eff989c SHA512 57384c3ef2f103b20d64854e5c3e50237be7f1af57687abae6a067d452b10a16ead4534b8302beb782273a8bf353adb3da90c5c140bd5394eac2ce0d3dbcc1e3 +EBUILD rust-1.27.1-r2.ebuild 7460 BLAKE2B 24163e17a44a120b62230b95c4134b181463cfdf6bce19107251e91c1bb9d37a7850c06ba6b1928c1296844902e0dd0454dd07753130cb9f655f55ec95588bb0 SHA512 5a865e7013ca04f12be10031c08aec7f5008e488489bef9bcc7c62aaf06c0b2278aa514054bb309fb73f546796f054e2b801cadc8a2883e01a88980b8a8453c7 +EBUILD rust-1.27.1.ebuild 6502 BLAKE2B 7c00b39b5db8347085ec6060019ce20f0914aed7c1f62da31d7d3114451253a076f11b60c4615f7b5f1afb0cd7bd25e0e89f328b29fe4c041bad242f69e9cb36 SHA512 57c6ac383e47aec3d86b7d1ec198c843b89498c2f2fea17f1e1ce07ec4a9405ec48add0e3e683a378f74650582ded64a3d610c7d1014295ca9e141bd7d0961a6 +MISC metadata.xml 729 BLAKE2B fabcd84f8393ad53a0a5a44d9ec6320d1ff8defa7bca5af818b28571af017739348de98c5b60db6140929f576393e70ddaebc2d255011c22ba1c6e16672b375a SHA512 103448ae7c168a0dc30539f1e747200990ffec66d62a66876c1d186d03eabdded5238175584269472b7fca53bf596b26dc58dbb732751d7971dc0c75ccf37211 diff --git a/dev-lang/rust/metadata.xml b/dev-lang/rust/metadata.xml index c03ce153031e..88d117336094 100644 --- a/dev-lang/rust/metadata.xml +++ b/dev-lang/rust/metadata.xml @@ -8,8 +8,11 @@ <use> <flag name="extended">Build and install rls, rustfmt and cargo alongside the compiler and stdlib</flag> + <flag name="cargo">Install cargo component</flag> <flag name="jemalloc">Use <pkg>dev-libs/jemalloc</pkg> as the standard memory allocator</flag> + <flag name="rls">Install rls component</flag> + <flag name="rustfmt">Install rustfmt component</flag> <flag name="wasm">Build support for the wasm32-unknown-unknown target</flag> </use> diff --git a/dev-lang/rust/rust-1.27.1-r2.ebuild b/dev-lang/rust/rust-1.27.1-r2.ebuild new file mode 100644 index 000000000000..1dc2182f159c --- /dev/null +++ b/dev-lang/rust/rust-1.27.1-r2.ebuild @@ -0,0 +1,271 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +PYTHON_COMPAT=( python2_7 python3_{5,6} pypy ) + +inherit multiprocessing multilib-build python-any-r1 toolchain-funcs versionator + +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" + KEYWORDS="" +else + ABI_VER="$(get_version_component_range 1-2)" + SLOT="stable/${ABI_VER}" + MY_P="rustc-${PV}" + SRC="${MY_P}-src.tar.xz" + KEYWORDS="~amd64 ~arm64 ~x86" +fi + +CHOST_amd64=x86_64-unknown-linux-gnu +CHOST_x86=i686-unknown-linux-gnu +CHOST_arm64=aarch64-unknown-linux-gnu + +RUST_STAGE0_VERSION="1.$(($(get_version_component_range 2) - 1)).2" +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}" + +# there is no cargo 0.28 tag, so use 0.27 +#CARGO_DEPEND_VERSION="0.$(($(version_get_comp 2) + 1)).0" +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 ) +" + +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="cargo debug doc +jemalloc rls rustfmt wasm ${ALL_LLVM_TARGETS[*]}" + +RDEPEND=">=app-eselect/eselect-rust-0.3_pre20150425 + jemalloc? ( dev-libs/jemalloc )" +DEPEND="${RDEPEND} + ${PYTHON_DEPS} + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + cargo? ( !dev-util/cargo ) + rustfmt? ( !dev-util/rustfmt ) + dev-util/cmake +" +PDEPEND="!cargo? ( >=dev-util/cargo-${CARGO_DEPEND_VERSION} )" + +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 + rust_targets="${rust_targets#,}" + + local extended="false" tools="" + if use cargo; then + extended="true" + tools="\"cargo\"," + fi + if use rls; then + extended="true" + tools="\"rls\",$tools" + fi + if use rustfmt; then + extended="true" + 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// /;}" + [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}] + [install] + prefix = "${EPREFIX}/usr" + libdir = "$(get_libdir)" + docdir = "share/doc/${P}" + mandir = "share/${P}/man" + [rust] + optimize = $(toml_usex !debug) + debuginfo = $(toml_usex debug) + debug-assertions = $(toml_usex debug) + use-jemalloc = $(toml_usex jemalloc) + 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 +} + +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 + if use cargo; then + mv "${D}/usr/bin/cargo" "${D}/usr/bin/cargo-${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 + if use cargo; then + echo /usr/bin/cargo >> "${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}." + + 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.27.0.ebuild b/dev-lang/rust/rust-1.27.1.ebuild index 46186c32ca15..46186c32ca15 100644 --- a/dev-lang/rust/rust-1.27.0.ebuild +++ b/dev-lang/rust/rust-1.27.1.ebuild |