summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch270
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")]