about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2015-03-23 15:11:18 -0700
committerAlex Crichton <alex@alexcrichton.com>2015-03-23 15:11:18 -0700
commitd8b06284ea88bdebdd95317e1313bd05a2ef5388 (patch)
tree8263dfebaa991dba2dcd9cfcc9f79532d595cabe
parent7101ff4513c1756c69d6023a391fdebe0809ea37 (diff)
parent1aa75cea1de6b318d015b205f584ec5760f866e3 (diff)
downloadrust-d8b06284ea88bdebdd95317e1313bd05a2ef5388.tar.gz
rust-d8b06284ea88bdebdd95317e1313bd05a2ef5388.zip
rollup merge of #23650: brson/32-bit-userspace
The variable '$SHELL' is not actually defined by 'sh'.

This makes Rust build correctly in popular Docker images.
-rwxr-xr-xconfigure15
1 files changed, 12 insertions, 3 deletions
diff --git a/configure b/configure
index fdc28eee8c8..683c7fd0563 100755
--- a/configure
+++ b/configure
@@ -479,10 +479,19 @@ esac
 # Detect 64 bit linux systems with 32 bit userland and force 32 bit compilation
 if [ $CFG_OSTYPE = unknown-linux-gnu -a $CFG_CPUTYPE = x86_64 ]
 then
-    file -L "$SHELL" | grep -q "x86[_-]64"
-    if [ $? != 0 ]; then
-        CFG_CPUTYPE=i686
+    # $SHELL does not exist in standard 'sh', so probably only exists
+    # if configure is running in an interactive bash shell. /usr/bin/env
+    # exists *everywhere*.
+    BIN_TO_PROBE="$SHELL"
+    if [ -z "$BIN_TO_PROBE" -a -e "/usr/bin/env" ]; then
+       BIN_TO_PROBE="/usr/bin/env"
     fi
+    if [ -n "$BIN_TO_PROBE" ]; then
+       file -L "$BIN_TO_PROBE" | grep -q "x86[_-]64"
+       if [ $? != 0 ]; then
+            CFG_CPUTYPE=i686
+       fi
+     fi
 fi