annotate include.sh @ 371:b59c2561166e

64 bit targets need more than 128 megs allocated for the emulator.
author Rob Landley <rob@landley.net>
date Sat, 19 Jul 2008 01:44:22 -0500
parents 80f520811ed6
children 739a56397f32
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
173
8b4c243a212e Add better debug info to a status report, and stop fighting ubuntu so much
Rob Landley <rob@landley.net>
parents: 170
diff changeset
1 #!/bin/bash
138
7dffe9648a56 Installing bash but not using it. Yeah, there's a political agenda at work
Rob Landley <rob@landley.net>
parents: 125
diff changeset
2
351
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
3 # Setup
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
4
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
5 # If this is set, mini-native won't include development tools, just uClibc
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
6 # and busybox. (Set it to "headers" to include kernel headers if you'd like
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
7 # to add your own toolchain, such as tinycc.)
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
8
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
9 # export BUILD_SHORT=1
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
10
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
11 # If this is set, the build records the command lines run by each build into
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
12 # log files in the build directory, ala "build/cmdlines.$PACKAGENAME"
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
13
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
14 # export RECORD_COMMANDS=1
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
15
363
80f520811ed6 Teach cross-compiler.sh how to produce static binaries when BUILD_STATIC=1
Rob Landley <rob@landley.net>
parents: 362
diff changeset
16 # If this is set, the cross-compiler stage is compiled with --static.
80f520811ed6 Teach cross-compiler.sh how to produce static binaries when BUILD_STATIC=1
Rob Landley <rob@landley.net>
parents: 362
diff changeset
17
80f520811ed6 Teach cross-compiler.sh how to produce static binaries when BUILD_STATIC=1
Rob Landley <rob@landley.net>
parents: 362
diff changeset
18 # export BUILD_STATIC=1
80f520811ed6 Teach cross-compiler.sh how to produce static binaries when BUILD_STATIC=1
Rob Landley <rob@landley.net>
parents: 362
diff changeset
19
351
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
20 # What host compiler should we use?
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
21
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
22 [ -z "$CC" ] && CC=gcc
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
23
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
24 # How many processors should make -j use?
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
25
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
26 if [ -z "$CPUS" ]
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
27 then
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
28 export CPUS=$[$(echo /sys/devices/system/cpu/cpu[0-9]* | wc -w)+0]
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
29 [ "$CPUS" -lt 1 ] && CPUS=1
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
30 fi
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
31
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
32 umask 022
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
33 unset CFLAGS CXXFLAGS
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
34
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
35 # This tells gcc to aggressively garbage collect its internal data
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
36 # structures. Without this, gcc triggers the OOM killer trying to rebuild
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
37 # itself in 128 megs of ram, which is the QEMU default size. Don't do
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
38 # this on a 64 bit host or gcc will slow to a crawl due to insufficient memory.
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
39 [ "$(uname -m)" != "x86_64" ] &&
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
40 export CFLAGS="--param ggc-min-expand=0 --param ggc-min-heapsize=8192"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
41
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
42 # Find/create directories
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
43
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
44 TOP=`pwd`
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
45 export SOURCES="${TOP}/sources"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
46 export SRCDIR="${SOURCES}/packages"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
47 export FROMSRC=../packages
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
48 export BUILD="${TOP}/build"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
49 export HOSTTOOLS="${BUILD}/host"
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
50
357
5c61d556fe0c Make forkbomb.sh --fork work with RECORD_COMMANDS.
Rob Landley <rob@landley.net>
parents: 352
diff changeset
51 [ -z "$WRAPPY_LOGDIR" ] && WRAPPY_LOGDIR="$BUILD"
5c61d556fe0c Make forkbomb.sh --fork work with RECORD_COMMANDS.
Rob Landley <rob@landley.net>
parents: 352
diff changeset
52
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
53 # Adjust $PATH
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
54
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
55 if [ "$PATH" != "$HOSTTOOLS" ]
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
56 then
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
57 if [ -f "$HOSTTOOLS/busybox" ]
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
58 then
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
59 PATH="$HOSTTOOLS"
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
60 else
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
61 PATH="${HOSTTOOLS}:$PATH"
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
62 fi
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
63 fi
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
64
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
65 STAGE_NAME=`echo $0 | sed 's@.*/\(.*\)\.sh@\1@'`
357
5c61d556fe0c Make forkbomb.sh --fork work with RECORD_COMMANDS.
Rob Landley <rob@landley.net>
parents: 352
diff changeset
66 export WRAPPY_LOGPATH="$WRAPPY_LOGDIR/cmdlines.${STAGE_NAME}.setupfor"
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
67 if [ -f "$BUILD/wrapdir/wrappy" ]
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
68 then
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
69 export WRAPPY_REALPATH="$PATH"
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
70 PATH="$BUILD/wrapdir"
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
71 fi
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
72
351
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
73 mkdir -p "${SRCDIR}"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
74
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
75 # Tell bash not to cache the $PATH because we modify it. Without this, bash
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
76 # won't find new executables added after startup.
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
77 set +h
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
78
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
79 # Get target platform from first command line argument.
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
80
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
81 if [ -z "$NO_ARCH" ]
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
82 then
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
83 ARCH_NAME="$1"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
84 ARCH="$(echo "$1" | sed 's@.*/@@')"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
85 if [ ! -f "${TOP}/sources/configs/${ARCH}" ]
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
86 then
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
87 echo "Supported architectures: "
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
88 (cd "${TOP}/sources/configs" && ls)
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
89 exit 1
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
90 fi
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
91
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
92 # Which platform are we building for?
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
93
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
94 export WORK="${BUILD}/temp-$ARCH"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
95 mkdir -p "${WORK}"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
96 # Say "unknown" in two different ways so it doesn't assume we're NOT
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
97 # cross compiling when the host and target are the same processor. (If host
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
98 # and target match, the binutils/gcc/make builds won't use the cross compiler
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
99 # during mini-native.sh, and the host compiler links binaries against the
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
100 # wrong libc.)
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
101 [ -z "$CROSS_HOST" ] && export CROSS_HOST=`uname -m`-walrus-linux
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
102 [ -z "$CROSS_TARGET" ] && export CROSS_TARGET=${ARCH}-unknown-linux
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
103
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
104 # Read the relevant config file.
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
105
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
106 source "${TOP}/sources/configs/${ARCH}"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
107
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
108 # Setup directories and add the cross compiler to the start of the path.
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
109
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
110 export CROSS="${BUILD}/cross-compiler-$ARCH"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
111 export NATIVE="${BUILD}/mini-native-$ARCH"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
112 export PATH="${CROSS}/bin:$PATH"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
113 else
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
114 export WORK="${BUILD}/host-temp"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
115 mkdir -p "${WORK}"
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
116 fi
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
117
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
118 [ $? -ne 0 ] && dienow
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
119
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
120 # Everything after here is utility functions used by the other scripts.
7f529baf0b57 Reorganize include.sh to put config options at the top, minor cleanups.
Rob Landley <rob@landley.net>
parents: 340
diff changeset
121
236
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
122 # Strip the version number off a tarball
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
123
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 290
diff changeset
124 function cleanup()
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 290
diff changeset
125 {
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 290
diff changeset
126 if [ $? -ne 0 ]
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 290
diff changeset
127 then
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 290
diff changeset
128 dienow
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 290
diff changeset
129 else
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 290
diff changeset
130 rm -rf "$@"
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 290
diff changeset
131 fi
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 290
diff changeset
132 }
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 290
diff changeset
133
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
134 function noversion()
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
135 {
256
e1d156c264bc Ok, the non-sed -r version is noticeably uglier than my first guess at it.
Rob Landley <rob@landley.net>
parents: 255
diff changeset
136 echo "$1" | sed -e 's/-*\(\([0-9\.]\)*\([_-]rc\)*\(-pre\)*\([0-9][a-zA-Z]\)*\)*\(\.tar\..z2*\)$/\6/'
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
137 }
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
138
236
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
139 # output the sha1sum of a file
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
140 function sha1file()
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
141 {
237
735ee8a5ca35 Fix the path to calculate the tarball sha1sum, use the sha1file function more
Rob Landley <rob@landley.net>
parents: 236
diff changeset
142 sha1sum "$@" | awk '{print $1}'
236
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
143 }
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
144
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
145 # Extract tarball named in $1 and apply all relevant patches into
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
146 # "$BUILD/sources/$1". Record sha1sum of tarball and patch files in
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
147 # sha1-for-source.txt. Re-extract if tarball or patches change.
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
148
220
8d2d0feff1ef The "caller" built-in isn't available in bash 2.x.
Rob Landley <rob@landley.net>
parents: 214
diff changeset
149 function extract()
8d2d0feff1ef The "caller" built-in isn't available in bash 2.x.
Rob Landley <rob@landley.net>
parents: 214
diff changeset
150 {
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
151 SRCTREE="${BUILD}/sources"
256
e1d156c264bc Ok, the non-sed -r version is noticeably uglier than my first guess at it.
Rob Landley <rob@landley.net>
parents: 255
diff changeset
152 BASENAME="$(noversion "$1")"
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
153 BASENAME="${BASENAME/%\.tar\.*/}"
236
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
154 SHA1FILE="$(echo "${SRCTREE}/${BASENAME}/sha1-for-source.txt")"
237
735ee8a5ca35 Fix the path to calculate the tarball sha1sum, use the sha1file function more
Rob Landley <rob@landley.net>
parents: 236
diff changeset
155 SHA1TAR="$(sha1file "${SRCDIR}/$1")"
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
156
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
157 # Sanity check: don't ever "rm -rf /". Just don't.
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
158
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
159 if [ -z "$BASENAME" ] || [ -z "$SRCTREE" ]
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
160 then
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
161 dienow
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
162 fi
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
163
236
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
164 # If it's already extracted and up to date (including patches), do nothing.
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
165 SHALIST=$(cat "$SHA1FILE" 2> /dev/null)
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
166 if [ ! -z "$SHALIST" ]
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
167 then
237
735ee8a5ca35 Fix the path to calculate the tarball sha1sum, use the sha1file function more
Rob Landley <rob@landley.net>
parents: 236
diff changeset
168 for i in "$SHA1TAR" $(sha1file "${SOURCES}/patches/$BASENAME"* 2>/dev/null)
236
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
169 do
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
170 # Is this sha1 in the file?
248
f32b23bbf83a Properly detect a short sha1list during tarball extraction (I.E. notice if
Rob Landley <rob@landley.net>
parents: 246
diff changeset
171 if [ -z "$(echo "$SHALIST" | sed -n "s/$i/$i/p" )" ]
f32b23bbf83a Properly detect a short sha1list during tarball extraction (I.E. notice if
Rob Landley <rob@landley.net>
parents: 246
diff changeset
172 then
f32b23bbf83a Properly detect a short sha1list during tarball extraction (I.E. notice if
Rob Landley <rob@landley.net>
parents: 246
diff changeset
173 SHALIST=missing
f32b23bbf83a Properly detect a short sha1list during tarball extraction (I.E. notice if
Rob Landley <rob@landley.net>
parents: 246
diff changeset
174 break
f32b23bbf83a Properly detect a short sha1list during tarball extraction (I.E. notice if
Rob Landley <rob@landley.net>
parents: 246
diff changeset
175 fi
236
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
176 # Remove it
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
177 SHALIST="$(echo "$SHALIST" | sed "s/$i//" )"
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
178 done
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
179 # If we matched all the sha1sums, nothing more to do.
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
180 [ -z "$SHALIST" ] && return 0
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
181 fi
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
182
236
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
183 echo -n "Extracting '${BASENAME}'"
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
184 # Delete the old tree (if any). Create new empty working directories.
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
185 rm -rf "${BUILD}/temp" "${SRCTREE}/${BASENAME}" 2>/dev/null
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
186 mkdir -p "${BUILD}"/{temp,sources} || dienow
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
187
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
188 # Is it a bzip2 or gzip tarball?
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
189 DECOMPRESS=""
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
190 [ "$1" != "${1/%\.tar\.bz2/}" ] && DECOMPRESS="j"
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
191 [ "$1" != "${1/%\.tar\.gz/}" ] && DECOMPRESS="z"
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
192
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
193 cd "${WORK}" &&
252
aa03feec947a Minor tweaks: one error check was missed, use hard links instead of
Rob Landley <rob@landley.net>
parents: 248
diff changeset
194 { tar -xv${DECOMPRESS} -f "${SRCDIR}/$1" -C "${BUILD}/temp" || dienow
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
195 } | dotprogress
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
196
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
197 mv "${BUILD}/temp/"* "${SRCTREE}/${BASENAME}" &&
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
198 rmdir "${BUILD}/temp" &&
236
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
199 echo "$SHA1TAR" > "$SHA1FILE"
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
200
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
201 [ $? -ne 0 ] && dienow
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
202
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
203 # Apply any patches to this package
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
204
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
205 ls "${SOURCES}/patches/$BASENAME"* 2> /dev/null | sort | while read i
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
206 do
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
207 if [ -f "$i" ]
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
208 then
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
209 echo "Applying $i"
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
210 (cd "${SRCTREE}/${BASENAME}" && patch -p1 -i "$i") || dienow
237
735ee8a5ca35 Fix the path to calculate the tarball sha1sum, use the sha1file function more
Rob Landley <rob@landley.net>
parents: 236
diff changeset
211 sha1file "$i" >> "$SHA1FILE"
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
212 fi
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
213 done
220
8d2d0feff1ef The "caller" built-in isn't available in bash 2.x.
Rob Landley <rob@landley.net>
parents: 214
diff changeset
214 }
8d2d0feff1ef The "caller" built-in isn't available in bash 2.x.
Rob Landley <rob@landley.net>
parents: 214
diff changeset
215
362
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
216 function try_download()
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
217 {
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
218 # Return success if we have a valid copy of the file
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
219
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
220 # Test first (so we don't re-download a file we've already got).
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
221
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
222 SUM=`cat "$SRCDIR/$FILENAME" | sha1sum | awk '{print $1}'`
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
223 if [ x"$SUM" == x"$SHA1" ] || [ -z "$SHA1" ] && [ -f "$SRCDIR/$FILENAME" ]
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
224 then
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
225 touch "$SRCDIR/$FILENAME"
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
226 if [ -z "$SHA1" ]
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
227 then
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
228 echo "No SHA1 for $FILENAME ($SUM)"
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
229 else
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
230 echo "Confirmed $FILENAME"
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
231 fi
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
232 if [ ! -z "$EXTRACT_ALL" ]
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
233 then
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
234 extract "$FILENAME"
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
235 fi
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
236 return $?
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
237 fi
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
238
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
239 # If there's a corrupted file, delete it. In theory it would be nice
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
240 # to resume downloads, but wget creates "*.1" files instead.
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
241
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
242 rm "$SRCDIR/$FILENAME" 2> /dev/null
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
243
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
244 # If we have another source, try to download file.
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
245
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
246 if [ -n "$1" ]
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
247 then
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
248 wget -t 2 -T 20 -P "$SRCDIR" "$1"
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
249 fi
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
250
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
251 return 1
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
252 }
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
253
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
254 # Confirm a file matches sha1sum, else try to download it from mirror list.
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
255
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
256 function download()
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
257 {
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
258 FILENAME=`echo "$URL" | sed 's .*/ '`
255
c3e8c6662b58 Fix include.sh to consistently use noversion, and rephrase the sed invocation
Rob Landley <rob@landley.net>
parents: 252
diff changeset
259 BASENAME=`noversion "$FILENAME"`
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
260
362
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
261 # If environment varialbe specifies a preferred mirror, try that first.
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
262
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
263 [ -z "$PREFERRED_MIRROR" ] || try_download "$PREFERRED_MIRROR/$FILENAME"
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
264
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
265 # The extra "" is so we test the sha1sum after the last download.
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
266
340
595332f94fea Add timeout to wget, and add another mirror (impactlinux.com) so there's a
Rob Landley <rob@landley.net>
parents: 329
diff changeset
267 for i in "$URL" http://impactlinux.com/firmware/mirror/"$FILENAME" \
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
268 http://landley.net/code/firmware/mirror/"$FILENAME" ""
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
269 do
362
06f29c81ac8e Teach download to fetch from $PREFERRED_MIRROR first, if set.
Rob Landley <rob@landley.net>
parents: 357
diff changeset
270 try_download "$i" && return 0
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
271 done
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
272
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
273 # Return failure.
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
274
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
275 echo "Could not download $FILENAME"
81
6dd38c925bc4 Upgrade some packages, and other cleanups.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
276 echo -en "\e[0m"
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
277 return 1
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
278 }
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
279
41
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
280 # Clean obsolete files out of the source directory
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
281
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
282 START_TIME=`date +%s`
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
283
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
284 function cleanup_oldfiles()
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
285 {
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
286 for i in "${SRCDIR}"/*
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
287 do
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
288 if [ -f "$i" ] && [ "$(date +%s -r "$i")" -lt "${START_TIME}" ]
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
289 then
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
290 echo Removing old file "$i"
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
291 rm -rf "$i"
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
292 fi
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
293 done
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
294 }
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
295
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
296 function dienow()
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
297 {
220
8d2d0feff1ef The "caller" built-in isn't available in bash 2.x.
Rob Landley <rob@landley.net>
parents: 214
diff changeset
298 echo -e "\e[31mExiting due to errors\e[0m"
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
299 exit 1
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
300 }
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
301
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
302 function dotprogress()
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
303 {
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
304 x=0
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
305 while read i
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
306 do
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
307 x=$[$x + 1]
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
308 if [[ "$x" -eq 25 ]]
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
309 then
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
310 x=0
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
311 echo -n .
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
312 fi
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
313 done
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
314 echo
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
315 }
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
316
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
317 # Extract package $1, use out-of-tree build directory $2 (or $1 if no $2)
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
318 # Use symlink directory $3 (or $1 if no $3)
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
319
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
320 function setupfor()
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
321 {
357
5c61d556fe0c Make forkbomb.sh --fork work with RECORD_COMMANDS.
Rob Landley <rob@landley.net>
parents: 352
diff changeset
322 export WRAPPY_LOGPATH="$WRAPPY_LOGDIR/cmdlines.${STAGE_NAME}.setupfor"
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 351
diff changeset
323
236
9c48cf5b65f6 Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents: 222
diff changeset
324 # Make sure the source is already extracted and up-to-date.
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
325 cd "${SRCDIR}" &&
252
aa03feec947a Minor tweaks: one error check was missed, use hard links instead of
Rob Landley <rob@landley.net>
parents: 248
diff changeset
326 extract "${1}-"*.tar* || exit 1
41
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
327
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
328 # Set CURSRC
173
8b4c243a212e Add better debug info to a status report, and stop fighting ubuntu so much
Rob Landley <rob@landley.net>
parents: 170
diff changeset
329
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
330 export CURSRC="$1"
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
331 [ ! -z "$3" ] && CURSRC="$3"
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
332 CURSRC="${WORK}/${CURSRC}"
41
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
333
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
334 # Announce package, with easy-to-grep-for "===" marker.
41
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
335
125
2dd9f480ff4e Set PATH for run-mini-native.sh and add more obvious arch display info when
Rob Landley <rob@landley.net>
parents: 124
diff changeset
336 echo "=== Building $1 ($ARCH_NAME)"
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
337 echo "Snapshot '$1'..."
306
358ef8a27085 Break up run-$ARCH.sh, move more temp files into temp dir, fix deletion logic.
Rob Landley <rob@landley.net>
parents: 301
diff changeset
338 cd "${WORK}" || dienow
358ef8a27085 Break up run-$ARCH.sh, move more temp files into temp dir, fix deletion logic.
Rob Landley <rob@landley.net>
parents: 301
diff changeset
339 if [ $# -lt 3 ]
358ef8a27085 Break up run-$ARCH.sh, move more temp files into temp dir, fix deletion logic.
Rob Landley <rob@landley.net>
parents: 301
diff changeset
340 then
358ef8a27085 Break up run-$ARCH.sh, move more temp files into temp dir, fix deletion logic.
Rob Landley <rob@landley.net>
parents: 301
diff changeset
341 rm -rf "${CURSRC}" || dienow
358ef8a27085 Break up run-$ARCH.sh, move more temp files into temp dir, fix deletion logic.
Rob Landley <rob@landley.net>
parents: 301
diff changeset
342 fi
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
343 mkdir -p "${CURSRC}" &&
252
aa03feec947a Minor tweaks: one error check was missed, use hard links instead of
Rob Landley <rob@landley.net>
parents: 248
diff changeset
344 cp -lfR "${SRCTREE}/$1/"* "${CURSRC}"
222
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
345
8b0d2080707c Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents: 220
diff changeset
346 [ $? -ne 0 ] && dienow
41
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
347
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
348 # Do we have a separate working directory?
3baa8ab7ee6d Largeish update.
Rob Landley <rob@landley.net>
parents: 36
diff changeset
349
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
350 if [ -z "$2" ]
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
351 then
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
352 cd "$1"* || dienow
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
353 else
47
edaa86240321 Turnerize the build script and teach cross-compile.sh to build qemu when
Rob Landley <rob@landley.net>
parents: 41
diff changeset
354 mkdir -p "$2" &&
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
355 cd "$2" || dienow
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
356 fi
357
5c61d556fe0c Make forkbomb.sh --fork work with RECORD_COMMANDS.
Rob Landley <rob@landley.net>
parents: 352
diff changeset
357 export WRAPPY_LOGPATH="$WRAPPY_LOGDIR/cmdlines.${STAGE_NAME}.$1"
34
ad1cfcb043c7 Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff changeset
358 }