annotate sources/variables.sh @ 1814:5ff5fea0ad7a draft

Add EXTERNAL_PATCH_DIR option for applying patches from outside aboriginal
author Geoff Salmon <gsalmon@se-instruments.com>
date Thu, 12 Nov 2015 21:08:02 -0500
parents 0f61292eab70
children fb05f99ffcce
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1623
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
1 #!/bin/echo "This file is sourced, not run"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
2
1624
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
3 # Avoid trouble from unexpected environment settings by unsetting all
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
4 # environment variables that we don't know about, in case some crazy
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
5 # person already exported $CROSS_COMPILE, $ARCH, $CDPATH, or who knows
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
6 # what else. It's hard to know what might drive some package crazy,
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
7 # so use a whitelist.
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
8
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
9 if [ -z "$NO_SANITIZE_ENVIRONMENT" ]
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
10 then
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
11 # Which variables are set in config?
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
12
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
13 TEMP=$(echo $(sed -n 's/.*export[ \t]*\([^=]*\)=.*/\1/p' config) | sed 's/ /,/g')
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
14
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
15 # What other variables should we keep?
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
16
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
17 TEMP="$TEMP,LANG,PATH,SHELL,TERM,USER,USERNAME,LOGNAME,PWD,EDITOR,HOME"
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
18 TEMP="$TEMP,DISPLAY,_,TOPSHELL,START_TIME,STAGE_NAME,TOOLCHAIN_PREFIX"
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
19 TEMP="$TEMP,HOST_ARCH,WRAPPY_LOGPATH,OLDPATH,http_proxy,ftp_proxy"
1673
0f61292eab70 Add MUSL=1 config option to force musl build.
Rob Landley <rob@landley.net>
parents: 1624
diff changeset
20 TEMP="$TEMP,https_proxy,no_proxy,TEMP,TMPDIR,FORK,MUSL"
1623
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
21
1624
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
22 # Unset any variable we don't recognize. It can screw up the build.
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
23
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
24 for i in $(env | sed -n 's/=.*//p')
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
25 do
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
26 is_in_list $i "$TEMP" && continue
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
27 [ "${i:0:7}" == "DISTCC_" ] && continue
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
28 [ "${i:0:7}" == "CCACHE_" ] && continue
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
29
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
30 unset $i 2>/dev/null
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
31 done
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
32 fi
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
33
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
34 # Assign (export) a variable only if current value is blank
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
35
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
36 export_if_blank()
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
37 {
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
38 [ -z "$(eval "echo \"\${${1/=*/}}\"")" ] && export "$1"
c654511d227c Move environment variable whitelisting functions to new variables.sh.
Rob Landley <rob@landley.net>
parents: 1623
diff changeset
39 }
1623
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
40
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
41 # List of fallback mirrors to download package source from
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
42
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
43 export_if_blank MIRROR_LIST="http://landley.net/code/aboriginal/mirror http://127.0.0.1/code/aboriginal/mirror"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
44
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
45 # Where are our working directories?
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
46
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
47 export_if_blank TOP=`pwd`
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
48 export_if_blank SOURCES="$TOP/sources"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
49 export_if_blank SRCDIR="$TOP/packages"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
50 export_if_blank PATCHDIR="$SOURCES/patches"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
51 export_if_blank BUILD="$TOP/build"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
52 export_if_blank SRCTREE="$BUILD/packages"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
53 export_if_blank HOSTTOOLS="$BUILD/host"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
54 export_if_blank WRAPDIR="$BUILD/record-commands"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
55
1814
5ff5fea0ad7a Add EXTERNAL_PATCH_DIR option for applying patches from outside aboriginal
Geoff Salmon <gsalmon@se-instruments.com>
parents: 1673
diff changeset
56 if [ ! -z "$EXTERNAL_PATCH_DIR" ]
5ff5fea0ad7a Add EXTERNAL_PATCH_DIR option for applying patches from outside aboriginal
Geoff Salmon <gsalmon@se-instruments.com>
parents: 1673
diff changeset
57 then
5ff5fea0ad7a Add EXTERNAL_PATCH_DIR option for applying patches from outside aboriginal
Geoff Salmon <gsalmon@se-instruments.com>
parents: 1673
diff changeset
58 export EXTERNAL_PATCH_DIR=$(readlink -e "$EXTERNAL_PATCH_DIR")
5ff5fea0ad7a Add EXTERNAL_PATCH_DIR option for applying patches from outside aboriginal
Geoff Salmon <gsalmon@se-instruments.com>
parents: 1673
diff changeset
59 fi
5ff5fea0ad7a Add EXTERNAL_PATCH_DIR option for applying patches from outside aboriginal
Geoff Salmon <gsalmon@se-instruments.com>
parents: 1673
diff changeset
60
1623
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
61 # Set a default non-arch
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
62
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
63 export WORK="${BUILD}/host-temp"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
64 export ARCH_NAME=host
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
65
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
66 # What host compiler should we use?
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
67
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
68 export_if_blank CC=cc
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
69
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
70 # How many processors should make -j use?
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
71
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
72 MEMTOTAL="$(awk '/MemTotal:/{print $2}' /proc/meminfo)"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
73 if [ -z "$CPUS" ]
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
74 then
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
75 export CPUS=$(echo /sys/devices/system/cpu/cpu[0-9]* | wc -w)
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
76 [ "$CPUS" -lt 1 ] && CPUS=1
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
77
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
78 # If we're not using hyper-threading, and there's plenty of memory,
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
79 # use 50% more CPUS than we actually have to keep system busy
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
80
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
81 [ -z "$(cat /proc/cpuinfo | grep '^flags' | head -n 1 | grep -w ht)" ] &&
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
82 [ $(($CPUS*512*1024)) -le $MEMTOTAL ] &&
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
83 CPUS=$((($CPUS*3)/2))
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
84 fi
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
85
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
86 export_if_blank STAGE_NAME=`echo $0 | sed 's@.*/\(.*\)\.sh@\1@'`
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
87 [ ! -z "$BUILD_VERBOSE" ] && VERBOSITY="V=1"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
88
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
89 export_if_blank BUILD_STATIC=busybox,toybox,binutils,gcc-core,gcc-g++,make
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
90
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
91 # If record-commands.sh set up a wrapper directory, adjust $PATH.
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
92
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
93 export PATH
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
94 if [ -z "$OLDPATH" ]
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
95 then
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
96 export OLDPATH="$PATH"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
97 [ -z "$BUSYBOX" ] || BUSYBOX=busybox
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
98 [ -f "$HOSTTOOLS/${BUSYBOX:-toybox}" ] &&
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
99 PATH="$(hosttools_path)" ||
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
100 PATH="$(hosttools_path):$PATH"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
101
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
102 if [ -f "$WRAPDIR/wrappy" ]
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
103 then
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
104 OLDPATH="$PATH"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
105 mkdir -p "$BUILD/logs"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
106 [ $? -ne 0 ] && echo "Bad $WRAPDIR" >&2 && dienow
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
107 PATH="$WRAPDIR"
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
108 fi
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
109 fi
6cef85eefede Break out variable setting into sources/variables.sh
Rob Landley <rob@landley.net>
parents:
diff changeset
110 export WRAPPY_LOGPATH="$BUILD/logs/cmdlines.$ARCH_NAME.early"