diff options
Diffstat (limited to 'dev-lang/rust/files/rust-0.11.0-libdir.patch')
-rw-r--r-- | dev-lang/rust/files/rust-0.11.0-libdir.patch | 270 |
1 files changed, 0 insertions, 270 deletions
diff --git a/dev-lang/rust/files/rust-0.11.0-libdir.patch b/dev-lang/rust/files/rust-0.11.0-libdir.patch deleted file mode 100644 index f895e76903e9..000000000000 --- a/dev-lang/rust/files/rust-0.11.0-libdir.patch +++ /dev/null @@ -1,270 +0,0 @@ -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")] |