From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 65EB31382C5 for ; Mon, 29 Jan 2018 19:34:16 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 86304E0A97; Mon, 29 Jan 2018 19:34:15 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 590F1E0A97 for ; Mon, 29 Jan 2018 19:34:15 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 2553E335C30 for ; Mon, 29 Jan 2018 19:34:14 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id AEB921D2 for ; Mon, 29 Jan 2018 19:34:12 +0000 (UTC) From: "Aric Belsito" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Aric Belsito" Message-ID: <1517254360.87eefea7ded24320154805089ad005cdc85ad376.lluixhi@gentoo> Subject: [gentoo-commits] proj/musl:master commit in: dev-lang/rust/files/, dev-lang/rust/ X-VCS-Repository: proj/musl X-VCS-Files: dev-lang/rust/files/1.23.0-separate-libdir.patch dev-lang/rust/rust-1.23.0-r1.ebuild X-VCS-Directories: dev-lang/rust/files/ dev-lang/rust/ X-VCS-Committer: lluixhi X-VCS-Committer-Name: Aric Belsito X-VCS-Revision: 87eefea7ded24320154805089ad005cdc85ad376 X-VCS-Branch: master Date: Mon, 29 Jan 2018 19:34:12 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 4592720b-c9fc-4432-805b-83128f5a4b23 X-Archives-Hash: b01a04dec363734a4aa389c2aa18cad3 commit: 87eefea7ded24320154805089ad005cdc85ad376 Author: Aric Belsito gmail com> AuthorDate: Mon Jan 29 19:32:40 2018 +0000 Commit: Aric Belsito gmail com> CommitDate: Mon Jan 29 19:32:40 2018 +0000 URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=87eefea7 dev-lang/rust: version bump to 1.23.0-r1 dev-lang/rust/files/1.23.0-separate-libdir.patch | 180 +++++++++++++++++ dev-lang/rust/rust-1.23.0-r1.ebuild | 246 +++++++++++++++++++++++ 2 files changed, 426 insertions(+) diff --git a/dev-lang/rust/files/1.23.0-separate-libdir.patch b/dev-lang/rust/files/1.23.0-separate-libdir.patch new file mode 100644 index 0000000..dcf1762 --- /dev/null +++ b/dev-lang/rust/files/1.23.0-separate-libdir.patch @@ -0,0 +1,180 @@ +From c520b2dd277f13dc09e8e72c486e5c58fb97017d Mon Sep 17 00:00:00 2001 +From: O01eg +Date: Wed, 29 Nov 2017 12:32:03 +0300 +Subject: [PATCH] Fix #45345. + +Re-implement + +```bash +CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut -c$((${#CFG_PREFIX}+${CAT_INC}))-` +``` + +from old `configure` script. + +Accept verbosity in rustdoc. + +Stage 1 and later use relative libdir. + +Build all stages with relative libdirs. + +Add library path for real rustdoc with `RUSTDOC_LIBDIR` environment variable. + +Remove unused argument `rustc_cargo`. + +Remove unused configuration parameter `libdir_relative`. +--- + src/bootstrap/bin/rustdoc.rs | 13 ++++++++++++- + src/bootstrap/builder.rs | 9 ++++++--- + src/bootstrap/check.rs | 2 +- + src/bootstrap/compile.rs | 13 ++++--------- + src/bootstrap/config.rs | 1 - + src/bootstrap/doc.rs | 2 +- + 6 files changed, 24 insertions(+), 16 deletions(-) + +diff --git a/src/bootstrap/bin/rustdoc.rs b/src/bootstrap/bin/rustdoc.rs +index 4e975adc97..24312b50ec 100644 +--- a/src/bootstrap/bin/rustdoc.rs ++++ b/src/bootstrap/bin/rustdoc.rs +@@ -23,10 +23,17 @@ use std::path::PathBuf; + fn main() { + let args = env::args_os().skip(1).collect::>(); + let rustdoc = env::var_os("RUSTDOC_REAL").expect("RUSTDOC_REAL was not set"); +- let libdir = env::var_os("RUSTC_LIBDIR").expect("RUSTC_LIBDIR was not set"); ++ let libdir = env::var_os("RUSTDOC_LIBDIR").expect("RUSTDOC_LIBDIR was not set"); + let stage = env::var("RUSTC_STAGE").expect("RUSTC_STAGE was not set"); + let sysroot = env::var_os("RUSTC_SYSROOT").expect("RUSTC_SYSROOT was not set"); + ++ use std::str::FromStr; ++ ++ let verbose = match env::var("RUSTC_VERBOSE") { ++ Ok(s) => usize::from_str(&s).expect("RUSTC_VERBOSE should be an integer"), ++ Err(_) => 0, ++ }; ++ + let mut dylib_path = bootstrap::util::dylib_path(); + dylib_path.insert(0, PathBuf::from(libdir)); + +@@ -59,6 +66,10 @@ fn main() { + .arg("--crate-version").arg(version); + } + ++ if verbose > 1 { ++ eprintln!("rustdoc command: {:?}", cmd); ++ } ++ + std::process::exit(match cmd.status() { + Ok(s) => s.code().unwrap_or(1), + Err(e) => panic!("\n\nfailed to run {:?}: {}\n\n", cmd, e), +diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs +index c76900882b..1927a604c5 100644 +--- a/src/bootstrap/builder.rs ++++ b/src/bootstrap/builder.rs +@@ -357,8 +357,8 @@ impl<'a> Builder<'a> { + + fn run(self, builder: &Builder) -> Interned { + let compiler = self.compiler; +- let lib = if compiler.stage >= 2 && builder.build.config.libdir_relative.is_some() { +- builder.build.config.libdir_relative.clone().unwrap() ++ let lib = if compiler.stage >= 1 && builder.build.config.libdir.is_some() { ++ builder.build.config.libdir.clone().unwrap() + } else { + PathBuf::from("lib") + }; +@@ -416,7 +416,7 @@ impl<'a> Builder<'a> { + let compiler = self.compiler(self.top_stage, host); + cmd.env("RUSTC_STAGE", compiler.stage.to_string()) + .env("RUSTC_SYSROOT", self.sysroot(compiler)) +- .env("RUSTC_LIBDIR", self.sysroot_libdir(compiler, self.build.build)) ++ .env("RUSTDOC_LIBDIR", self.sysroot_libdir(compiler, self.build.build)) + .env("CFG_RELEASE_CHANNEL", &self.build.config.channel) + .env("RUSTDOC_REAL", self.rustdoc(host)) + .env("RUSTDOC_CRATE_VERSION", self.build.rust_version()) +@@ -496,6 +496,9 @@ impl<'a> Builder<'a> { + if let Some(target_linker) = self.build.linker(target) { + cargo.env("RUSTC_TARGET_LINKER", target_linker); + } ++ if cmd != "build" { ++ cargo.env("RUSTDOC_LIBDIR", self.rustc_libdir(self.compiler(2, self.build.build))); ++ } + + if mode != Mode::Tool { + // Tools don't get debuginfo right now, e.g. cargo and rls don't +diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs +index 4d69b19c73..d926c2b901 100644 +--- a/src/bootstrap/check.rs ++++ b/src/bootstrap/check.rs +@@ -1171,7 +1171,7 @@ impl Step for Crate { + } + Mode::Librustc => { + builder.ensure(compile::Rustc { compiler, target }); +- compile::rustc_cargo(build, &compiler, target, &mut cargo); ++ compile::rustc_cargo(build, target, &mut cargo); + ("librustc", "rustc-main") + } + _ => panic!("can only test libraries"), +diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs +index db013691bb..d60feb1aff 100644 +--- a/src/bootstrap/compile.rs ++++ b/src/bootstrap/compile.rs +@@ -485,7 +485,7 @@ impl Step for Rustc { + build.clear_if_dirty(&stage_out, &libtest_stamp(build, compiler, target)); + + let mut cargo = builder.cargo(compiler, Mode::Librustc, target, "build"); +- rustc_cargo(build, &compiler, target, &mut cargo); ++ rustc_cargo(build, target, &mut cargo); + run_cargo(build, + &mut cargo, + &librustc_stamp(build, compiler, target)); +@@ -500,7 +500,6 @@ impl Step for Rustc { + + /// Same as `std_cargo`, but for libtest + pub fn rustc_cargo(build: &Build, +- compiler: &Compiler, + target: Interned, + cargo: &mut Command) { + cargo.arg("--features").arg(build.rustc_features()) +@@ -514,13 +513,9 @@ pub fn rustc_cargo(build: &Build, + .env("CFG_VERSION", build.rust_version()) + .env("CFG_PREFIX", build.config.prefix.clone().unwrap_or_default()); + +- if compiler.stage == 0 { +- cargo.env("CFG_LIBDIR_RELATIVE", "lib"); +- } else { +- let libdir_relative = +- build.config.libdir_relative.clone().unwrap_or(PathBuf::from("lib")); +- cargo.env("CFG_LIBDIR_RELATIVE", libdir_relative); +- } ++ let libdir_relative = ++ build.config.libdir.clone().unwrap_or(PathBuf::from("lib")); ++ cargo.env("CFG_LIBDIR_RELATIVE", libdir_relative); + + // If we're not building a compiler with debugging information then remove + // these two env vars which would be set otherwise. +diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs +index 35e62f17f2..1ca19187cf 100644 +--- a/src/bootstrap/config.rs ++++ b/src/bootstrap/config.rs +@@ -119,7 +119,6 @@ pub struct Config { + pub docdir: Option, + pub bindir: Option, + pub libdir: Option, +- pub libdir_relative: Option, + pub mandir: Option, + pub codegen_tests: bool, + pub nodejs: Option, +diff --git a/src/bootstrap/doc.rs b/src/bootstrap/doc.rs +index 3c12cfc4c7..1314d967d8 100644 +--- a/src/bootstrap/doc.rs ++++ b/src/bootstrap/doc.rs +@@ -616,7 +616,7 @@ impl Step for Rustc { + t!(symlink_dir_force(&my_out, &out_dir)); + + let mut cargo = builder.cargo(compiler, Mode::Librustc, target, "doc"); +- compile::rustc_cargo(build, &compiler, target, &mut cargo); ++ compile::rustc_cargo(build, target, &mut cargo); + + if build.config.compiler_docs { + // src/rustc/Cargo.toml contains a bin crate called rustc which +-- +2.13.6 + diff --git a/dev-lang/rust/rust-1.23.0-r1.ebuild b/dev-lang/rust/rust-1.23.0-r1.ebuild new file mode 100644 index 0000000..8cdf96b --- /dev/null +++ b/dev-lang/rust/rust-1.23.0-r1.ebuild @@ -0,0 +1,246 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +LLVM_MAX_SLOT=4 +PYTHON_COMPAT=( python2_7 ) + +inherit python-any-r1 versionator toolchain-funcs llvm + +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 ~arm ~x86" +fi + +case "${CHOST}" in + armv7a-hardfloat-*) + RUSTARCH=armv7 ;; + arm*) + RUSTARCH=arm ;; + *) + RUSTARCH=${CHOST%%-*} ;; +esac +case "${CHOST}" in + armv7a-hardfloat-*) + RUSTLIBC=${ELIBC/glibc/gnu}eabihf ;; + arm*) + RUSTLIBC=${ELIBC/glibc/gnu}eabi ;; + *) + RUSTLIBC=${ELIBC/glibc/gnu} ;; +esac +RUSTHOST=${RUSTARCH}-unknown-${KERNEL}-${RUSTLIBC} +STAGE0_VERSION="1.$(($(get_version_component_range 2) - 0)).0" +CARGO_DEPEND_VERSION="0.$(($(get_version_component_range 2) + 1)).0" + +DESCRIPTION="Systems programming language from Mozilla" +HOMEPAGE="http://www.rust-lang.org/" + +SRC_URI="https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.xz + amd64? ( + elibc_glibc? ( https://static.rust-lang.org/dist/rust-${STAGE0_VERSION}-x86_64-unknown-linux-gnu.tar.xz ) + elibc_musl? ( https://portage.smaeul.xyz/distfiles/rust-${STAGE0_VERSION}-x86_64-unknown-linux-musl.tar.xz ) + ) + arm? ( + elibc_glibc? ( + https://static.rust-lang.org/dist/rust-${STAGE0_VERSION}-arm-unknown-linux-gnueabi.tar.xz + https://static.rust-lang.org/dist/rust-${STAGE0_VERSION}-armv7-unknown-linux-gnueabihf.tar.xz + ) + elibc_musl? ( + https://portage.smaeul.xyz/distfiles/rust-${STAGE0_VERSION}-arm-unknown-linux-musleabi.tar.xz + https://portage.smaeul.xyz/distfiles/rust-${STAGE0_VERSION}-armv7-unknown-linux-musleabihf.tar.xz + ) + ) + x86? ( + elibc_glibc? ( https://static.rust-lang.org/dist/rust-${STAGE0_VERSION}-i686-unknown-linux-gnu.tar.xz ) + elibc_musl? ( https://portage.smaeul.xyz/distfiles/rust-${STAGE0_VERSION}-i686-unknown-linux-musl.tar.xz ) + ) +" + +LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA" + +IUSE="debug doc extended jemalloc system-llvm" + +RDEPEND=">=app-eselect/eselect-rust-0.3_pre20150425 + jemalloc? ( dev-libs/jemalloc ) + system-llvm? ( sys-devel/llvm:4 ) +" +DEPEND="${RDEPEND} + ${PYTHON_DEPS} + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + !system-llvm? ( + >=dev-util/cmake-3.4.3 + dev-util/ninja + ) +" +PDEPEND="!extended? ( >=dev-util/cargo-${CARGO_DEPEND_VERSION} )" + +PATCHES=( + "${FILESDIR}/1.23.0-separate-libdir.patch" + "${FILESDIR}/0001-Require-static-native-libraries-when-linking-static-.patch" + "${FILESDIR}/0002-Remove-nostdlib-and-musl_root-from-musl-targets.patch" + "${FILESDIR}/0003-Switch-musl-targets-to-link-dynamically-by-default.patch" + "${FILESDIR}/0004-Prefer-libgcc_eh-over-libunwind-for-musl.patch" + "${FILESDIR}/0005-Fix-LLVM-build.patch" + "${FILESDIR}/0006-Fix-rustdoc-for-cross-targets.patch" + "${FILESDIR}/0007-Add-openssl-configuration-for-musl-targets.patch" + "${FILESDIR}/0008-Don-t-pass-CFLAGS-to-the-C-compiler.patch" + "${FILESDIR}/0009-liblibc.patch" + "${FILESDIR}/llvm-musl-fixes.patch" +) + +S="${WORKDIR}/${MY_P}-src" + +toml_usex() { + usex "$1" true false +} + +pkg_setup() { + export RUST_BACKTRACE=1 + 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 + + python-any-r1_pkg_setup +} + +src_prepare() { + default + + "${WORKDIR}/rust-${STAGE0_VERSION}-${RUSTHOST}/install.sh" \ + --prefix="${WORKDIR}/stage0" \ + --components=rust-std-${RUSTHOST},rustc,cargo \ + --disable-ldconfig \ + || die +} + +src_configure() { + cat <<- EOF > "${S}"/config.toml + [llvm] + ninja = true + optimize = $(toml_usex !debug) + release-debuginfo = $(toml_usex debug) + assertions = $(toml_usex debug) + [build] + build = "${RUSTHOST}" + host = ["${RUSTHOST}"] + target = ["${RUSTHOST}"] + cargo = "${WORKDIR}/stage0/bin/cargo" + rustc = "${WORKDIR}/stage0/bin/rustc" + docs = $(toml_usex doc) + compiler-docs = $(toml_usex doc) + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + verbose = 2 + extended = $(toml_usex extended) + [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)" + channel = "${SLOT%%/*}" + rpath = false + optimize-tests = $(toml_usex !debug) + [dist] + src-tarball = false + [target.${RUSTHOST}] + cc = "$(tc-getBUILD_CC)" + cxx = "$(tc-getBUILD_CXX)" + linker = "$(tc-getCC)" + ar = "$(tc-getAR)" + EOF + use system-llvm && cat <<- EOF >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "$LLVM_MAX_SLOT")/bin/llvm-config" + EOF +} + +src_compile() { + ./x.py build || die +} + +src_install() { + env DESTDIR="${D}" ./x.py install || die + + rm "${D}/usr/$(get_libdir)/rustlib/components" || die + rm "${D}/usr/$(get_libdir)/rustlib/install.log" || die + rm "${D}/usr/$(get_libdir)/rustlib/manifest-rust-std-${RUSTHOST}" || die + rm "${D}/usr/$(get_libdir)/rustlib/manifest-rustc" || die + rm "${D}/usr/$(get_libdir)/rustlib/rust-installer-version" || die + rm "${D}/usr/$(get_libdir)/rustlib/uninstall.sh" || 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 doc; then + rm "${D}/usr/$(get_libdir)/rustlib/manifest-rust-docs" || die + fi + + rm "${D}/usr/share/doc/${P}/LICENSE-APACHE" || die + rm "${D}/usr/share/doc/${P}/LICENSE-MIT" || die + + docompress "/usr/share/${P}/man" + + cat <<-EOF > "${T}"/50${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 + 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 +}