commit:     87eefea7ded24320154805089ad005cdc85ad376
Author:     Aric Belsito <lluixhi <AT> gmail <DOT> com>
AuthorDate: Mon Jan 29 19:32:40 2018 +0000
Commit:     Aric Belsito <lluixhi <AT> gmail <DOT> 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 <[email protected]>
+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::<Vec<_>>();
+     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<PathBuf> {
+                 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<String>,
+                    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<PathBuf>,
+     pub bindir: Option<PathBuf>,
+     pub libdir: Option<PathBuf>,
+-    pub libdir_relative: Option<PathBuf>,
+     pub mandir: Option<PathBuf>,
+     pub codegen_tests: bool,
+     pub nodejs: Option<PathBuf>,
+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
+}

Reply via email to