jauhien     14/08/29 14:12:27

  Modified:             rust-0.12.0-no-ldconfig.patch 50rust-mode-gentoo.el
  Added:                rust-9999-libdir.patch rust-0.11.0-libdir.patch
  Log:
  Add slotting to rust ebuilds
  
  Add these slots:
  (major.minor) rust release
  (nightly) nightly version
  (git) git master branch
  
  Remove old unslotted versions
  
  (Portage version: 2.2.12/cvs/Linux x86_64, signed Manifest commit with key 
0xB2EFA1D4)

Revision  Changes    Path
1.2                  dev-lang/rust/files/rust-0.12.0-no-ldconfig.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-lang/rust/files/rust-0.12.0-no-ldconfig.patch?rev=1.2&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-lang/rust/files/rust-0.12.0-no-ldconfig.patch?rev=1.2&content-type=text/plain
diff : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-lang/rust/files/rust-0.12.0-no-ldconfig.patch?r1=1.1&r2=1.2

Index: rust-0.12.0-no-ldconfig.patch
===================================================================
RCS file: 
/var/cvsroot/gentoo-x86/dev-lang/rust/files/rust-0.12.0-no-ldconfig.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- rust-0.12.0-no-ldconfig.patch       31 Jul 2014 14:29:09 -0000      1.1
+++ rust-0.12.0-no-ldconfig.patch       29 Aug 2014 14:12:27 -0000      1.2
@@ -1,8 +1,6 @@
 Remove ldconfig(1) execution to prevent the installation script from accessing
 outside of a sandbox.
 
-Author: Heather Cynede
-
 diff --git a/src/etc/install.sh b/src/etc/install.sh
 index c949743..7c3daa5 100644
 --- a/src/etc/install.sh



1.2                  dev-lang/rust/files/50rust-mode-gentoo.el

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-lang/rust/files/50rust-mode-gentoo.el?rev=1.2&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-lang/rust/files/50rust-mode-gentoo.el?rev=1.2&content-type=text/plain
diff : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-lang/rust/files/50rust-mode-gentoo.el?r1=1.1&r2=1.2

Index: 50rust-mode-gentoo.el
===================================================================
RCS file: /var/cvsroot/gentoo-x86/dev-lang/rust/files/50rust-mode-gentoo.el,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 50rust-mode-gentoo.el       18 May 2014 23:46:09 -0000      1.1
+++ 50rust-mode-gentoo.el       29 Aug 2014 14:12:27 -0000      1.2
@@ -1,2 +1,5 @@
+
+;;; rust-mode site-lisp configuration
+
 (add-to-list 'load-path "@SITELISP@")
 (require 'rust-mode)



1.1                  dev-lang/rust/files/rust-9999-libdir.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-lang/rust/files/rust-9999-libdir.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-lang/rust/files/rust-9999-libdir.patch?rev=1.1&content-type=text/plain

Index: rust-9999-libdir.patch
===================================================================
This patch adds proper support for --libdir configure option
See https://github.com/rust-lang/rust/issues/11671 and
https://github.com/rust-lang/rust/pull/16552

diff --git a/configure b/configure
index 636d502..fff67b6 100755
--- a/configure
+++ b/configure
@@ -459,6 +459,14 @@ fi
 
 valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries"
 
+case "$CFG_LIBDIR" in
+    "$CFG_PREFIX"/*) CAT_INC=2;;
+    "$CFG_PREFIX"*)  CAT_INC=1;;
+    *)
+        err "libdir must begin with the prefix. Use --prefix to set it 
accordingly.";;
+esac
+CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut 
-c$((${#CFG_PREFIX}+${CAT_INC}))-`
+
 if [ $HELP -eq 1 ]
 then
     echo
@@ -855,6 +863,15 @@ for h in $CFG_HOST
 do
     for t in $CFG_TARGET
     do
+        # host lib dir stage0
+        make_dir $h/stage0/lib
+
+        # target bin dir stage0
+        make_dir $h/stage0/lib/rustlib/$t/bin
+
+        # target lib dir stage0
+        make_dir $h/stage0/lib/rustlib/$t/lib
+
         for i in 0 1 2 3
         do
             # host bin dir
diff --git a/mk/main.mk b/mk/main.mk
index 2bdfc1b..bca5b3b 100644
--- a/mk/main.mk
+++ b/mk/main.mk
@@ -311,7 +311,11 @@ define SREQ
 # Destinations of artifacts for the host compiler
 HROOT$(1)_H_$(3) = $(3)/stage$(1)
 HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
+ifeq ($(1),0)
+HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/lib
+else
 HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
+endif
 
 # Destinations of artifacts for target architectures
 TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
diff --git a/src/etc/install.sh b/src/etc/install.sh
index c949743..1a472c6 100644
--- a/src/etc/install.sh
+++ b/src/etc/install.sh
@@ -301,9 +301,16 @@ fi
 flag uninstall "only uninstall from the installation prefix"
 opt verify 1 "verify that the installed binaries run correctly"
 valopt prefix "/usr/local" "set installation prefix"
-# NB This isn't quite the same definition as in `configure`.
-# just using 'lib' instead of CFG_LIBDIR_RELATIVE
+# NB This is exactly the same definition as in `configure`.
 valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries"
+case "$CFG_LIBDIR" in
+    "$CFG_PREFIX"/*) CAT_INC=2;;
+    "$CFG_PREFIX"*)  CAT_INC=1;;
+    *)
+        err "libdir must begin with the prefix. Use --prefix to set it 
accordingly.";;
+esac
+CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut 
-c$((${#CFG_PREFIX}+${CAT_INC}))-`
+
 valopt mandir "${CFG_PREFIX}/share/man" "install man pages in PATH"
 
 if [ $HELP -eq 1 ]
@@ -428,9 +435,9 @@ while read p; do
     # Decide the destination of the file
     FILE_INSTALL_PATH="${CFG_PREFIX}/$p"
 
-    if echo "$p" | grep "^lib/" > /dev/null
+    if echo "$p" | grep "^${CFG_LIBDIR_RELATIVE}/" > /dev/null
     then
-        pp=`echo $p | sed 's/^lib\///'`
+        pp=`echo $p | sed "s%^${CFG_LIBDIR_RELATIVE}/%%"`
         FILE_INSTALL_PATH="${CFG_LIBDIR}/$pp"
     fi
 
diff --git a/src/librustc/metadata/filesearch.rs 
b/src/librustc/metadata/filesearch.rs
index 99b98b6..f3e37ff 100644
--- a/src/librustc/metadata/filesearch.rs
+++ b/src/librustc/metadata/filesearch.rs
@@ -243,10 +243,14 @@ fn find_libdir(sysroot: &Path) -> String {
     // of the directory where librustc is located, rather than where the rustc
     // binary is.
 
-    if sysroot.join(primary_libdir_name()).join(rustlibdir()).exists() {
-        return primary_libdir_name();
-    } else {
-        return secondary_libdir_name();
+    match option_env!("CFG_LIBDIR_RELATIVE") {
+        None => if 
sysroot.join(primary_libdir_name()).join(rustlibdir()).exists() {
+            return primary_libdir_name();
+        } else {
+            return secondary_libdir_name();
+        },
+
+        Some(libdir) => return libdir.to_string()
     }
 
     #[cfg(target_word_size = "64")]



1.1                  dev-lang/rust/files/rust-0.11.0-libdir.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-lang/rust/files/rust-0.11.0-libdir.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-lang/rust/files/rust-0.11.0-libdir.patch?rev=1.1&content-type=text/plain

Index: rust-0.11.0-libdir.patch
===================================================================
This patch adds proper support for --libdir configure option
See https://github.com/rust-lang/rust/issues/11671 and
https://github.com/rust-lang/rust/pull/16552

diff -r -u rust-0.11.0.orig/configure rust-0.11.0/configure
--- rust-0.11.0.orig/configure
+++ rust-0.11.0/configure
@@ -453,6 +453,14 @@
 
 valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries"
 
+case "$CFG_LIBDIR" in
+    "$CFG_PREFIX"/*) CAT_INC=2;;
+    "$CFG_PREFIX"*)  CAT_INC=1;;
+    *)
+        err "libdir must begin with the prefix. Use --prefix to set it 
accordingly.";;
+esac
+CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut 
-c$((${#CFG_PREFIX}+${CAT_INC}))-`
+
 if [ $HELP -eq 1 ]
 then
     echo
@@ -838,6 +846,15 @@
 do
     for t in $CFG_TARGET
     do
+        # host lib dir stage0
+        make_dir $h/stage0/lib
+
+        # target bin dir stage0
+        make_dir $h/stage0/lib/rustlib/$t/bin
+
+        # target lib dir stage0
+        make_dir $h/stage0/lib/rustlib/$t/lib
+
         for i in 0 1 2 3
         do
             # host bin dir
diff -r -u rust-0.11.0.orig/mk/main.mk rust-0.11.0/mk/main.mk
--- rust-0.11.0.orig/mk/main.mk
+++ rust-0.11.0/mk/main.mk
@@ -304,7 +304,11 @@
 # Destinations of artifacts for the host compiler
 HROOT$(1)_H_$(3) = $(3)/stage$(1)
 HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
+ifeq ($(1),0)
+HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/lib
+else
 HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
+endif
 
 # Destinations of artifacts for target architectures
 TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
diff -r -u rust-0.11.0.orig/src/etc/install.sh rust-0.11.0/src/etc/install.sh
--- rust-0.11.0.orig/src/etc/install.sh
+++ rust-0.11.0/src/etc/install.sh
@@ -35,6 +35,13 @@
     fi
 }
 
+need_cmd() {
+    if command -v $1 >/dev/null 2>&1
+    then msg "found $1"
+    else err "need $1"
+    fi
+}
+
 putvar() {
     local T
     eval T=\$$1
@@ -198,7 +205,16 @@
     ABSOLUTIFIED="${FILE_PATH}"
 }
 
-CFG_SRC_DIR="$(cd $(dirname $0) && pwd)/"
+msg "looking for install programs"
+need_cmd mkdir
+need_cmd printf
+need_cmd cut
+need_cmd grep
+need_cmd uname
+need_cmd tr
+need_cmd sed
+
+CFG_SRC_DIR="$(cd $(dirname $0) && pwd)"
 CFG_SELF="$0"
 CFG_ARGS="$@"
 
@@ -216,16 +232,85 @@
     step_msg "processing $CFG_SELF args"
 fi
 
+# Check for mingw or cygwin in order to special case $CFG_LIBDIR_RELATIVE.
+# This logic is duplicated from configure in order to get the correct libdir
+# for Windows installs.
+CFG_OSTYPE=$(uname -s)
+
+case $CFG_OSTYPE in
+
+    MINGW32*)
+        CFG_OSTYPE=pc-mingw32
+        ;;
+
+    MINGW64*)
+        # msys2, MSYSTEM=MINGW64
+        CFG_OSTYPE=w64-mingw32
+        ;;
+
+# Thad's Cygwin identifers below
+
+#   Vista 32 bit
+    CYGWIN_NT-6.0)
+        CFG_OSTYPE=pc-mingw32
+        ;;
+
+#   Vista 64 bit
+    CYGWIN_NT-6.0-WOW64)
+        CFG_OSTYPE=w64-mingw32
+        ;;
+
+#   Win 7 32 bit
+    CYGWIN_NT-6.1)
+        CFG_OSTYPE=pc-mingw32
+        ;;
+
+#   Win 7 64 bit
+    CYGWIN_NT-6.1-WOW64)
+        CFG_OSTYPE=w64-mingw32
+        ;;
+esac
+
 OPTIONS=""
 BOOL_OPTIONS=""
 VAL_OPTIONS=""
 
+# On windows we just store the libraries in the bin directory because
+# there's no rpath. This is where the build system itself puts libraries;
+# --libdir is used to configure the installation directory.
+# FIXME: Thise needs to parameterized over target triples. Do it in platform.mk
+CFG_LIBDIR_RELATIVE=lib
+if [ "$CFG_OSTYPE" = "pc-mingw32" ] || [ "$CFG_OSTYPE" = "w64-mingw32" ]
+then
+    CFG_LIBDIR_RELATIVE=bin
+fi
+
+if [ "$CFG_OSTYPE" = "pc-mingw32" ] || [ "$CFG_OSTYPE" = "w64-mingw32" ]
+then
+    CFG_LD_PATH_VAR=PATH
+    CFG_OLD_LD_PATH_VAR=$PATH
+elif [ "$CFG_OSTYPE" = "Darwin" ]
+then
+    CFG_LD_PATH_VAR=DYLD_LIBRARY_PATH
+    CFG_OLD_LD_PATH_VAR=$DYLD_LIBRARY_PATH
+else
+    CFG_LD_PATH_VAR=LD_LIBRARY_PATH
+    CFG_OLD_LD_PATH_VAR=$LD_LIBRARY_PATH
+fi
+
 flag uninstall "only uninstall from the installation prefix"
 opt verify 1 "verify that the installed binaries run correctly"
 valopt prefix "/usr/local" "set installation prefix"
-# NB This isn't quite the same definition as in `configure`.
-# just using 'lib' instead of CFG_LIBDIR_RELATIVE
-valopt libdir "${CFG_PREFIX}/lib" "install libraries"
+# NB This is exactly the same definition as in `configure`.
+valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries"
+case "$CFG_LIBDIR" in
+    "$CFG_PREFIX"/*) CAT_INC=2;;
+    "$CFG_PREFIX"*)  CAT_INC=1;;
+    *)
+        err "libdir must begin with the prefix. Use --prefix to set it 
accordingly.";;
+esac
+CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut 
-c$((${#CFG_PREFIX}+${CAT_INC}))-`
+
 valopt mandir "${CFG_PREFIX}/share/man" "install man pages in PATH"
 
 if [ $HELP -eq 1 ]
@@ -247,11 +332,13 @@
     if [ -z "${CFG_UNINSTALL}" ]
     then
         msg "verifying platform can run binaries"
+        export $CFG_LD_PATH_VAR="${CFG_SRC_DIR}/lib":$CFG_OLD_LD_PATH_VAR
         "${CFG_SRC_DIR}/bin/rustc" --version > /dev/null
         if [ $? -ne 0 ]
         then
             err "can't execute rustc binary on this platform"
         fi
+        export $CFG_LD_PATH_VAR=$CFG_OLD_LD_PATH_VAR
     fi
 fi
 
@@ -348,9 +435,9 @@
     # Decide the destination of the file
     FILE_INSTALL_PATH="${CFG_PREFIX}/$p"
 
-    if echo "$p" | grep "^lib/" > /dev/null
+    if echo "$p" | grep "^${CFG_LIBDIR_RELATIVE}/" > /dev/null
     then
-        pp=`echo $p | sed 's/^lib\///'`
+        pp=`echo $p | sed "s%^${CFG_LIBDIR_RELATIVE}/%%"`
         FILE_INSTALL_PATH="${CFG_LIBDIR}/$pp"
     fi
 
@@ -384,24 +471,36 @@
     need_ok "failed to update manifest"
 
 # The manifest lists all files to install
-done < "${CFG_SRC_DIR}/lib/rustlib/manifest.in"
+done < "${CFG_SRC_DIR}/${CFG_LIBDIR_RELATIVE}/rustlib/manifest.in"
 
 # Sanity check: can we run the installed binaries?
+#
+# As with the verification above, make sure the right 
LD_LIBRARY_PATH-equivalent
+# is in place. Try first without this variable, and if that fails try again 
with
+# the variable. If the second time tries, print a hopefully helpful message to
+# add something to the appropriate environment variable.
 if [ -z "${CFG_DISABLE_VERIFY}" ]
 then
     msg "verifying installed binaries are executable"
-    "${CFG_PREFIX}/bin/rustc" --version > /dev/null
+    "${CFG_PREFIX}/bin/rustc" --version 2> /dev/null 1> /dev/null
     if [ $? -ne 0 ]
     then
-        ERR="can't execute installed rustc binary. "
-        ERR="${ERR}installation may be broken. "
-        ERR="${ERR}if this is expected then rerun install.sh with 
\`--disable-verify\` "
-        ERR="${ERR}or \`make install\` with \`--disable-verify-install\`"
-        err "${ERR}"
+        export $CFG_LD_PATH_VAR="${CFG_PREFIX}/lib":$CFG_OLD_LD_PATH_VAR
+        "${CFG_PREFIX}/bin/rustc" --version > /dev/null
+        if [ $? -ne 0 ]
+        then
+            ERR="can't execute installed rustc binary. "
+            ERR="${ERR}installation may be broken. "
+            ERR="${ERR}if this is expected then rerun install.sh with 
\`--disable-verify\` "
+            ERR="${ERR}or \`make install\` with \`--disable-verify-install\`"
+            err "${ERR}"
+        else
+            echo
+            echo "    Note: please ensure '${CFG_PREFIX}/lib' is added to 
${CFG_LD_PATH_VAR}"
+        fi
     fi
 fi
 
-
 echo
 echo "    Rust is ready to roll."
 echo
diff -r -u rust-0.11.0.orig/src/librustc/metadata/filesearch.rs 
rust-0.11.0/src/librustc/metadata/filesearch.rs
--- rust-0.11.0.orig/src/librustc/metadata/filesearch.rs
+++ rust-0.11.0/src/librustc/metadata/filesearch.rs
@@ -243,10 +243,14 @@
     // of the directory where librustc is located, rather than where the rustc
     // binary is.
 
-    if sysroot.join(primary_libdir_name()).join(rustlibdir()).exists() {
-        return primary_libdir_name();
-    } else {
-        return secondary_libdir_name();
+    match option_env!("CFG_LIBDIR_RELATIVE") {
+        None => if 
sysroot.join(primary_libdir_name()).join(rustlibdir()).exists() {
+            return primary_libdir_name();
+        } else {
+            return secondary_libdir_name();
+        },
+
+        Some(libdir) => return libdir.to_string()
     }
 
     #[cfg(target_word_size = "64")]




Reply via email to