Mercurial > hg > aboriginal
view sources/include.sh @ 1532:a2e491cd0800
Fix source/target confusion that bites Fedora host = target builds.
The gcc build exports an LD_LIBRARY_PATH full of target libraries and then
calls /bin/sh in the configure stage. If you configure before building, this
doesn't cause a problem because the libraries aren't there yet, but c++ has
dependencies that trigger a C build before running configuration even if you
reorder the steps. On ubuntu this doesn't cause a problem because /bin/sh
doesn't link against anything in this LD_LIBRARY PATH, and when building
a different architecture the foreign binaries are ignored by the dynamic linker.
But on Fedora when host == target /bin/sh links against libgcc_s.so.1 which is
in LD_LIBRARY_PATH linked against libc.so.0 which isn't installed on the
host, and the attempt to run the shell dies saying it can't find uClibc.
The fix is to override the make variable SHELL = sh so it calls ash out of
build/host.
author | Rob Landley <rob@landley.net> |
---|---|
date | Thu, 16 Aug 2012 21:59:27 -0500 |
parents | 8e98296410f3 |
children | e2f722cc97a6 |
line wrap: on
line source
#!/bin/echo "This file is sourced, not run" if ! already_included_this 2>/dev/null then alias already_included_this=true # Set up all the environment variables and functions for a build stage. # This file is sourced, not run. # Include config and source shell function files. [ -e config ] && source config source sources/utility_functions.sh source sources/functions.sh source sources/download_functions.sh # Avoid trouble from unexpected environment settings [ -z "$NO_SANITIZE_ENVIRONMENT" ] && sanitize_environment # List of fallback mirrors to download package source from MIRROR_LIST="http://landley.net/code/aboriginal/mirror http://127.0.0.1/code/aboriginal/mirror" # Where are our working directories? export_if_blank TOP=`pwd` export_if_blank SOURCES="$TOP/sources" export_if_blank SRCDIR="$TOP/packages" export_if_blank PATCHDIR="$SOURCES/patches" export_if_blank BUILD="$TOP/build" export_if_blank SRCTREE="$BUILD/packages" export_if_blank HOSTTOOLS="$BUILD/host" export_if_blank WRAPDIR="$BUILD/wrapdir" # Set a default non-arch export WORK="${BUILD}/host-temp" export ARCH_NAME=host # What host compiler should we use? export_if_blank CC=cc # How many processors should make -j use? MEMTOTAL="$(awk '/MemTotal:/{print $2}' /proc/meminfo)" if [ -z "$CPUS" ] then export CPUS=$(echo /sys/devices/system/cpu/cpu[0-9]* | wc -w) [ "$CPUS" -lt 1 ] && CPUS=1 # If we're not using hyper-threading, and there's plenty of memory, # use 50% more CPUS than we actually have to keep system busy [ -z "$(cat /proc/cpuinfo | grep '^flags' | head -n 1 | grep -w ht)" ] && [ $(($CPUS*512*1024)) -le $MEMTOTAL ] && CPUS=$((($CPUS*3)/2)) fi export_if_blank STAGE_NAME=`echo $0 | sed 's@.*/\(.*\)\.sh@\1@'` [ ! -z "$BUILD_VERBOSE" ] && VERBOSITY="V=1" export_if_blank BUILD_STATIC=busybox,binutils,gcc-core,gcc-g++,make # Adjust $PATH # If record-commands.sh set up a wrapper directory, adjust $PATH again. export PATH if [ -z "$OLDPATH" ] then export OLDPATH="$PATH" [ -f "$HOSTTOOLS/busybox" ] && PATH="$(hosttools_path)" || PATH="$(hosttools_path):$PATH" if [ -f "$WRAPDIR/wrappy" ] then OLDPATH="$PATH" mkdir -p "$BUILD/logs" [ $? -ne 0 ] && echo "Bad $WRAPDIR" >&2 && dienow export WRAPPY_LOGPATH="$BUILD/logs/cmdlines.$ARCH_NAME.early" PATH="$WRAPDIR" fi fi # Create files with known permissions umask 022 # Tell bash not to cache the $PATH because we modify it. (Without this, bash # won't find new executables added after startup.) set +h # Disable internationalization so sort and sed and such can cope with ASCII. export LC_ALL=C fi # already_included_this