Mercurial > hg > aboriginal
annotate include.sh @ 374:ed4caa451355
Adjust busybox defconfig to remove options that don't build under knoppix
5.1.1 (inotifyd, 2.4 module support) and yank options we don't want anyway
because another package must provide them (patch, /bin/sh). (Pondered
moving to a miniconfig, but this is still "almost defconfig" and the patch
makes it easier to see what actually mattered to us.)
author | Rob Landley <rob@landley.net> |
---|---|
date | Sat, 02 Aug 2008 11:54:05 -0500 |
parents | 80f520811ed6 |
children | 739a56397f32 |
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 | 280 # Clean obsolete files out of the source directory |
281 | |
282 START_TIME=`date +%s` | |
283 | |
284 function cleanup_oldfiles() | |
285 { | |
286 for i in "${SRCDIR}"/* | |
287 do | |
288 if [ -f "$i" ] && [ "$(date +%s -r "$i")" -lt "${START_TIME}" ] | |
289 then | |
290 echo Removing old file "$i" | |
291 rm -rf "$i" | |
292 fi | |
293 done | |
294 } | |
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 | 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 | 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 | 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 | 347 |
348 # Do we have a separate working directory? | |
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 } |