Mercurial > hg > aboriginal
annotate include.sh @ 301:309b574a5059
Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
package build breaks its source isn't deleted), and comment host-tools.sh more.
author | Rob Landley <rob@landley.net> |
---|---|
date | Thu, 21 Feb 2008 04:47:54 -0600 |
parents | 06cf8f61bf93 |
children | 358ef8a27085 |
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 |
236
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
3 # 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
|
4 |
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
|
5 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
|
6 { |
309b574a5059
Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents:
290
diff
changeset
|
7 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
|
8 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
|
9 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
|
10 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
|
11 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
|
12 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
|
13 } |
309b574a5059
Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents:
290
diff
changeset
|
14 |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
15 function noversion() |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
16 { |
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
|
17 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
|
18 } |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
19 |
236
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
20 # 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
|
21 function sha1file() |
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
22 { |
237
735ee8a5ca35
Fix the path to calculate the tarball sha1sum, use the sha1file function more
Rob Landley <rob@landley.net>
parents:
236
diff
changeset
|
23 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
|
24 } |
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
25 |
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
26 # 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
|
27 # "$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
|
28 # 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
|
29 |
220
8d2d0feff1ef
The "caller" built-in isn't available in bash 2.x.
Rob Landley <rob@landley.net>
parents:
214
diff
changeset
|
30 function extract() |
8d2d0feff1ef
The "caller" built-in isn't available in bash 2.x.
Rob Landley <rob@landley.net>
parents:
214
diff
changeset
|
31 { |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
32 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
|
33 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
|
34 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
|
35 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
|
36 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
|
37 |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
38 # 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
|
39 |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
40 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
|
41 then |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
42 dienow |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
43 fi |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
44 |
236
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
45 # 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
|
46 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
|
47 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
|
48 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
|
49 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
|
50 do |
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
51 # 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
|
52 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
|
53 then |
f32b23bbf83a
Properly detect a short sha1list during tarball extraction (I.E. notice if
Rob Landley <rob@landley.net>
parents:
246
diff
changeset
|
54 SHALIST=missing |
f32b23bbf83a
Properly detect a short sha1list during tarball extraction (I.E. notice if
Rob Landley <rob@landley.net>
parents:
246
diff
changeset
|
55 break |
f32b23bbf83a
Properly detect a short sha1list during tarball extraction (I.E. notice if
Rob Landley <rob@landley.net>
parents:
246
diff
changeset
|
56 fi |
236
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
57 # Remove it |
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
58 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
|
59 done |
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
60 # 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
|
61 [ -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
|
62 fi |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
63 |
236
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
64 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
|
65 # 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
|
66 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
|
67 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
|
68 |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
69 # 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
|
70 DECOMPRESS="" |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
71 [ "$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
|
72 [ "$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
|
73 |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
74 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
|
75 { 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
|
76 } | dotprogress |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
77 |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
78 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
|
79 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
|
80 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
|
81 |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
82 [ $? -ne 0 ] && dienow |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
83 |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
84 # 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
|
85 |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
86 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
|
87 do |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
88 if [ -f "$i" ] |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
89 then |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
90 echo "Applying $i" |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
91 (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
|
92 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
|
93 fi |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
94 done |
220
8d2d0feff1ef
The "caller" built-in isn't available in bash 2.x.
Rob Landley <rob@landley.net>
parents:
214
diff
changeset
|
95 } |
8d2d0feff1ef
The "caller" built-in isn't available in bash 2.x.
Rob Landley <rob@landley.net>
parents:
214
diff
changeset
|
96 |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
97 function download() |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
98 { |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
99 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
|
100 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
|
101 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
102 # 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
|
103 |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
104 for i in "$URL" http://www.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
|
105 do |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
106 # Return success if we have a valid copy of the file |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
107 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
108 # Test first (so we don't re-download a file we've already got). |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
109 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
110 SUM=`cat "$SRCDIR/$FILENAME" | sha1sum | awk '{print $1}'` |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
111 if [ x"$SUM" == x"$SHA1" ] || [ -z "$SHA1" ] && [ -f "$SRCDIR/$FILENAME" ] |
41 | 112 then |
113 touch "$SRCDIR/$FILENAME" | |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
114 if [ -z "$SHA1" ] |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
115 then |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
116 echo "No SHA1 for $FILENAME ($SUM)" |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
117 else |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
118 echo "Confirmed $FILENAME" |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
119 fi |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
120 if [ ! -z "$EXTRACT_ALL" ] |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
121 then |
236
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
122 extract "$FILENAME" |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
123 fi |
244
aeb3788642e4
Notice when patch isn't installed and abort properly.
Rob Landley <rob@landley.net>
parents:
237
diff
changeset
|
124 return $? |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
125 fi |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
126 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
127 # If there's a corrupted file, delete it. In theory it would be nice |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
128 # to resume downloads, but wget creates "*.1" files instead. |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
129 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
130 rm "$SRCDIR/$FILENAME" 2> /dev/null |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
131 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
132 # If we have another source, try to download file. |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
133 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
134 if [ -n "$i" ] |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
135 then |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
136 wget -P "$SRCDIR" "$i" |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
137 fi |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
138 done |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
139 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
140 # Return failure. |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
141 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
142 echo "Could not download $FILENAME" |
81
6dd38c925bc4
Upgrade some packages, and other cleanups.
Rob Landley <rob@landley.net>
parents:
62
diff
changeset
|
143 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
|
144 return 1 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
145 } |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
146 |
41 | 147 # Clean obsolete files out of the source directory |
148 | |
149 START_TIME=`date +%s` | |
150 | |
151 function cleanup_oldfiles() | |
152 { | |
153 for i in "${SRCDIR}"/* | |
154 do | |
155 if [ -f "$i" ] && [ "$(date +%s -r "$i")" -lt "${START_TIME}" ] | |
156 then | |
157 echo Removing old file "$i" | |
158 rm -rf "$i" | |
159 fi | |
160 done | |
161 } | |
162 | |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
163 function dienow() |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
164 { |
220
8d2d0feff1ef
The "caller" built-in isn't available in bash 2.x.
Rob Landley <rob@landley.net>
parents:
214
diff
changeset
|
165 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
|
166 exit 1 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
167 } |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
168 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
169 function dotprogress() |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
170 { |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
171 x=0 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
172 while read i |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
173 do |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
174 x=$[$x + 1] |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
175 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
|
176 then |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
177 x=0 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
178 echo -n . |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
179 fi |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
180 done |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
181 echo |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
182 } |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
183 |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
184 # 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
|
185 # 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
|
186 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
187 function setupfor() |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
188 { |
236
9c48cf5b65f6
Teach extract to check patch files for changes, not just tarballs.
Rob Landley <rob@landley.net>
parents:
222
diff
changeset
|
189 # 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
|
190 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
|
191 extract "${1}-"*.tar* || exit 1 |
41 | 192 |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
193 # 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
|
194 |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
195 export CURSRC="$1" |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
196 [ ! -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
|
197 CURSRC="${WORK}/${CURSRC}" |
41 | 198 |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
199 # Announce package, with easy-to-grep-for "===" marker. |
41 | 200 |
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
|
201 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
|
202 echo "Snapshot '$1'..." |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
203 cd "${WORK}" && |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
204 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
|
205 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
|
206 |
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
207 [ $? -ne 0 ] && dienow |
41 | 208 |
209 # Do we have a separate working directory? | |
210 | |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
211 if [ -z "$2" ] |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
212 then |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
213 cd "$1"* || dienow |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
214 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
|
215 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
|
216 cd "$2" || dienow |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
217 fi |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
218 } |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
219 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
220 # Setup |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
221 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
222 umask 022 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
223 unset CFLAGS CXXFLAGS |
191
485dabec83c4
Comment one of the non-obvious (and optional) bits.
Rob Landley <rob@landley.net>
parents:
188
diff
changeset
|
224 # This tells gcc to aggressively garbage collect its internal data |
485dabec83c4
Comment one of the non-obvious (and optional) bits.
Rob Landley <rob@landley.net>
parents:
188
diff
changeset
|
225 # structures. Without this, gcc triggers the OOM killer trying to rebuild |
485dabec83c4
Comment one of the non-obvious (and optional) bits.
Rob Landley <rob@landley.net>
parents:
188
diff
changeset
|
226 # itself in 128 megs of ram, which is the QEMU default size. |
246
7c739084bfd1
The gcc-min-heapsize parameter slows x86-64 gcc down by an order of
Rob Landley <rob@landley.net>
parents:
244
diff
changeset
|
227 [ "$(uname -m)" != "x86_64" ] && |
124
d5e9d5cf0172
According to http://hostingfu.com/article/compiling-with-gcc-on-low-memory-vps
Rob Landley <rob@landley.net>
parents:
120
diff
changeset
|
228 export CFLAGS="--param ggc-min-expand=0 --param ggc-min-heapsize=8192" |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
229 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
230 # Find/create directories |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
231 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
232 TOP=`pwd` |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
233 export SOURCES="${TOP}/sources" |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
234 export SRCDIR="${SOURCES}/packages" |
98
b6b4386a6c83
Make host-tools.sh work when run standalone.
Rob Landley <rob@landley.net>
parents:
96
diff
changeset
|
235 export FROMSRC=../packages |
41 | 236 export BUILD="${TOP}/build" |
98
b6b4386a6c83
Make host-tools.sh work when run standalone.
Rob Landley <rob@landley.net>
parents:
96
diff
changeset
|
237 export HOSTTOOLS="${BUILD}/host" |
b6b4386a6c83
Make host-tools.sh work when run standalone.
Rob Landley <rob@landley.net>
parents:
96
diff
changeset
|
238 export PATH="${HOSTTOOLS}:$PATH" |
222
8b0d2080707c
Be smarter about extracting tarballs: extract one copy of each tarball
Rob Landley <rob@landley.net>
parents:
220
diff
changeset
|
239 mkdir -p "${SRCDIR}" |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
240 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
241 # For bash: check the $PATH for new executables added after startup. |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
242 set +h |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
243 |
47
edaa86240321
Turnerize the build script and teach cross-compile.sh to build qemu when
Rob Landley <rob@landley.net>
parents:
41
diff
changeset
|
244 # Are we doing a short build? |
edaa86240321
Turnerize the build script and teach cross-compile.sh to build qemu when
Rob Landley <rob@landley.net>
parents:
41
diff
changeset
|
245 |
edaa86240321
Turnerize the build script and teach cross-compile.sh to build qemu when
Rob Landley <rob@landley.net>
parents:
41
diff
changeset
|
246 if [ "$1" == "--short" ] |
edaa86240321
Turnerize the build script and teach cross-compile.sh to build qemu when
Rob Landley <rob@landley.net>
parents:
41
diff
changeset
|
247 then |
edaa86240321
Turnerize the build script and teach cross-compile.sh to build qemu when
Rob Landley <rob@landley.net>
parents:
41
diff
changeset
|
248 export BUILD_SHORT=1 |
edaa86240321
Turnerize the build script and teach cross-compile.sh to build qemu when
Rob Landley <rob@landley.net>
parents:
41
diff
changeset
|
249 shift |
edaa86240321
Turnerize the build script and teach cross-compile.sh to build qemu when
Rob Landley <rob@landley.net>
parents:
41
diff
changeset
|
250 fi |
edaa86240321
Turnerize the build script and teach cross-compile.sh to build qemu when
Rob Landley <rob@landley.net>
parents:
41
diff
changeset
|
251 |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
252 # Get target platform from first command line argument. |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
253 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
254 if [ -z "$NO_ARCH" ] |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
255 then |
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
|
256 ARCH_NAME="$1" |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
257 ARCH="$(echo "$1" | sed 's@.*/@@')" |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
258 if [ ! -f "${TOP}/sources/configs/${ARCH}" ] |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
259 then |
35
25bfa6ac9f84
Make the "supported architecutes" list have sane line breaks.
Rob Landley <rob@landley.net>
parents:
34
diff
changeset
|
260 echo "Supported architectures: " |
25bfa6ac9f84
Make the "supported architecutes" list have sane line breaks.
Rob Landley <rob@landley.net>
parents:
34
diff
changeset
|
261 (cd "${TOP}/sources/configs" && ls) |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
262 exit 1 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
263 fi |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
264 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
265 # Which platform are we building for? |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
266 |
62
4125b672b00c
Get i686 cross-compiling to work like armv4l cross-compiling by lying to
Rob Landley <rob@landley.net>
parents:
60
diff
changeset
|
267 export WORK="${BUILD}/temp-$ARCH" |
107
72f414b2939d
Have to make the include directory before we can put config files in it.
Rob Landley <rob@landley.net>
parents:
101
diff
changeset
|
268 rm -rf "${WORK}" |
72f414b2939d
Have to make the include directory before we can put config files in it.
Rob Landley <rob@landley.net>
parents:
101
diff
changeset
|
269 mkdir -p "${WORK}" |
62
4125b672b00c
Get i686 cross-compiling to work like armv4l cross-compiling by lying to
Rob Landley <rob@landley.net>
parents:
60
diff
changeset
|
270 # Say "unknown" in two different ways so it doesn't assume we're NOT |
4125b672b00c
Get i686 cross-compiling to work like armv4l cross-compiling by lying to
Rob Landley <rob@landley.net>
parents:
60
diff
changeset
|
271 # cross compiling when the host and target are the same processor. (If host |
4125b672b00c
Get i686 cross-compiling to work like armv4l cross-compiling by lying to
Rob Landley <rob@landley.net>
parents:
60
diff
changeset
|
272 # and target match, the binutils/gcc/make builds won't use the cross compiler |
4125b672b00c
Get i686 cross-compiling to work like armv4l cross-compiling by lying to
Rob Landley <rob@landley.net>
parents:
60
diff
changeset
|
273 # during mini-native.sh, and the host compiler links binaries against the |
4125b672b00c
Get i686 cross-compiling to work like armv4l cross-compiling by lying to
Rob Landley <rob@landley.net>
parents:
60
diff
changeset
|
274 # wrong libc.) |
213
1080306ae20e
Allow host to be overridden (to build on MacOS X).
Rob Landley <rob@landley.net>
parents:
210
diff
changeset
|
275 [ -z "$CROSS_HOST" ] && export CROSS_HOST=`uname -m`-walrus-linux |
1080306ae20e
Allow host to be overridden (to build on MacOS X).
Rob Landley <rob@landley.net>
parents:
210
diff
changeset
|
276 [ -z "$CROSS_TARGET" ] && export CROSS_TARGET=${ARCH}-unknown-linux |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
277 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
278 # Read the relevant config file. |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
279 |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
280 source "${TOP}/sources/configs/${ARCH}" |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
281 |
62
4125b672b00c
Get i686 cross-compiling to work like armv4l cross-compiling by lying to
Rob Landley <rob@landley.net>
parents:
60
diff
changeset
|
282 # Setup directories and add the cross compiler to the start of the path. |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
283 |
41 | 284 export CROSS="${BUILD}/cross-compiler-$ARCH" |
285 export NATIVE="${BUILD}/mini-native-$ARCH" | |
145
b174c242934b
Remove redundant $PATH element pointed out by George Boudreau.
Rob Landley <rob@landley.net>
parents:
138
diff
changeset
|
286 export PATH="${CROSS}/bin:$PATH" |
108
b66d638a3844
Build User Mode Linux and have that do the ext2 packaging (for now, anyway).
Rob Landley <rob@landley.net>
parents:
107
diff
changeset
|
287 export IMAGE="${BUILD}/image-${ARCH}.ext2" |
155
ce1ca3d0f95b
Put zImage-$ARCH in build directory, not mini-native-$ARCH, and eliminate
Rob Landley <rob@landley.net>
parents:
145
diff
changeset
|
288 |
288
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
289 # output run-$ARCH.sh script |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
290 |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
291 # Start with distcc setup |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
292 |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
293 cat > "$BUILD/run-$ARCH.sh" << 'EOF' |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
294 #!/bin/bash |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
295 |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
296 if [ "$1" == "--crosspath" ] |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
297 then |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
298 DCC="$(which distccd)" |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
299 [ -z "$DCC" ] && DCC="$2"/host/distcc |
289
7c5c4fced04c
Make --crosspath work with relative paths.
Rob Landley <rob@landley.net>
parents:
288
diff
changeset
|
300 PATH="$(readlink -f "$2/distcc")" "$DCC" --listen 127.0.0.1 --log-stderr \ |
288
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
301 --log-level error --daemon -a 127.0.0.1 --no-detach & # 2>/dev/null |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
302 DCC1=/tools/distcc: |
290
06cf8f61bf93
Tell distcc an SMP system has 1 more CPU than it actually has.
Rob Landley <rob@landley.net>
parents:
289
diff
changeset
|
303 CPUS=$[$(echo /sys/devices/system/cpu/cpu[0-9]* | wc -w)+1] |
288
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
304 DCC2="DISTCC_HOSTS=10.0.2.2 CPUS=$CPUS" |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
305 else |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
306 DCC1= |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
307 DCC2= |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
308 CPUS="CPUS=1" |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
309 fi |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
310 EOF |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
311 |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
312 # Call the appropriate emulator |
155
ce1ca3d0f95b
Put zImage-$ARCH in build directory, not mini-native-$ARCH, and eliminate
Rob Landley <rob@landley.net>
parents:
145
diff
changeset
|
313 |
ce1ca3d0f95b
Put zImage-$ARCH in build directory, not mini-native-$ARCH, and eliminate
Rob Landley <rob@landley.net>
parents:
145
diff
changeset
|
314 emulator_command image-$ARCH.ext2 zImage-$ARCH \ |
288
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
315 'rw init=/tools/bin/qemu-setup.sh panic=1 PATH=$DCC1/tools/bin $DCC2' \ |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
316 >> "$BUILD/run-$ARCH.sh" && |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
317 |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
318 # distcc cleanup |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
319 |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
320 echo -e '\nkill `jobs -p`' >> "$BUILD/run-$ARCH.sh" && |
155
ce1ca3d0f95b
Put zImage-$ARCH in build directory, not mini-native-$ARCH, and eliminate
Rob Landley <rob@landley.net>
parents:
145
diff
changeset
|
321 chmod +x "$BUILD/run-$ARCH.sh" |
288
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
322 |
261 | 323 else |
324 export WORK="${BUILD}/host-temp" | |
325 mkdir -p "${WORK}" | |
34
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
326 fi |
ad1cfcb043c7
Cleaup pass: Break out shell functions and variable definitions into include.sh.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
327 |
288
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
328 [ $? -ne 0 ] && dienow |
a64a358ad792
Teach run-$ARCH.sh to understand --crosspath to use cross compiler via distcc.
Rob Landley <rob@landley.net>
parents:
269
diff
changeset
|
329 |
110
62f6268ff61b
Build uClibc's readelf and ldd by hand to work around inadequate cross-compile
Rob Landley <rob@landley.net>
parents:
108
diff
changeset
|
330 [ -z "$CC" ] && CC=gcc |
182
fc827ab6166f
Autodetect number of processors and feed appropriate -j to make.
Rob Landley <rob@landley.net>
parents:
173
diff
changeset
|
331 if [ -z "$CPUS" ] |
fc827ab6166f
Autodetect number of processors and feed appropriate -j to make.
Rob Landley <rob@landley.net>
parents:
173
diff
changeset
|
332 then |
fc827ab6166f
Autodetect number of processors and feed appropriate -j to make.
Rob Landley <rob@landley.net>
parents:
173
diff
changeset
|
333 export CPUS=$[$(echo /sys/devices/system/cpu/cpu[0-9]* | wc -w)+0] |
fc827ab6166f
Autodetect number of processors and feed appropriate -j to make.
Rob Landley <rob@landley.net>
parents:
173
diff
changeset
|
334 [ "$CPUS" -lt 1 ] && CPUS=1 |
fc827ab6166f
Autodetect number of processors and feed appropriate -j to make.
Rob Landley <rob@landley.net>
parents:
173
diff
changeset
|
335 fi |