annotate host-tools.sh @ 779:6caf372a8b12

Teach smoketest to skip creation of hdb for /home when not needed.
author Rob Landley <rob@landley.net>
date Fri, 03 Jul 2009 19:46:48 -0500
parents 759adf5a0fe9
children db06a8c1bfed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
177
6b4844b708b9 dash->bash.
Rob Landley <rob@landley.net>
parents: 134
diff changeset
1 #!/bin/bash
93
153ba1a0b427 Break out the qemu build (and squashfs) into something easy to comment out,
Rob Landley <rob@landley.net>
parents:
diff changeset
2
153ba1a0b427 Break out the qemu build (and squashfs) into something easy to comment out,
Rob Landley <rob@landley.net>
parents:
diff changeset
3 # Get lots of predefined environment variables and shell functions.
153ba1a0b427 Break out the qemu build (and squashfs) into something easy to comment out,
Rob Landley <rob@landley.net>
parents:
diff changeset
4
669
1cf41855bb85 More error checking.
Rob Landley <rob@landley.net>
parents: 660
diff changeset
5 source sources/include.sh || exit 1
93
153ba1a0b427 Break out the qemu build (and squashfs) into something easy to comment out,
Rob Landley <rob@landley.net>
parents:
diff changeset
6
485
b0438691e9e1 Move color selection into ./config. (The default colors don't look great on a white background.)
Rob Landley <rob@landley.net>
parents: 453
diff changeset
7 echo -e "$HOST_COLOR"
b0438691e9e1 Move color selection into ./config. (The default colors don't look great on a white background.)
Rob Landley <rob@landley.net>
parents: 453
diff changeset
8 echo "=== Building host tools"
b0438691e9e1 Move color selection into ./config. (The default colors don't look great on a white background.)
Rob Landley <rob@landley.net>
parents: 453
diff changeset
9
389
becb1084a427 Add USE_TOYBOX option (enabled by default), to use toybox commands where
Rob Landley <rob@landley.net>
parents: 368
diff changeset
10 export LC_ALL=C
becb1084a427 Add USE_TOYBOX option (enabled by default), to use toybox commands where
Rob Landley <rob@landley.net>
parents: 368
diff changeset
11
744
759adf5a0fe9 Refactor so include.sh mostly just sets environment variables. Move read_arch_dir to function and call it explicitly (no more need for $NO_ARCH). Make blank_tempdir a function, called explicitly by stages when needed, with some sanity checks. Insert prerequisite tests to later stages so they can detect failure early and provide an explicit erro rmessage, and have those tests happen before blanking $WORK dir, to preserve debugging info. Make buildall.sh depend on prerequisite tests rather than trying to avoid calling later stages (and thus do flow control from asynchronous context). Add FAIL_QUIET option so buildall.sh doesn't spam the log with the new prerequisite error messages.
Rob Landley <rob@landley.net>
parents: 711
diff changeset
12 blank_tempdir "${WORK}"
99
fd6d26721acf Minor tweak, move toybox build to the start.
Rob Landley <rob@landley.net>
parents: 96
diff changeset
13 mkdir -p "${HOSTTOOLS}" || dienow
96
137ba51ee993 Delete output directories on re-run, teach build to log and build multiple
Rob Landley <rob@landley.net>
parents: 95
diff changeset
14
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
15 # If we want to record the host command lines, so we know exactly what commands
744
759adf5a0fe9 Refactor so include.sh mostly just sets environment variables. Move read_arch_dir to function and call it explicitly (no more need for $NO_ARCH). Make blank_tempdir a function, called explicitly by stages when needed, with some sanity checks. Insert prerequisite tests to later stages so they can detect failure early and provide an explicit erro rmessage, and have those tests happen before blanking $WORK dir, to preserve debugging info. Make buildall.sh depend on prerequisite tests rather than trying to avoid calling later stages (and thus do flow control from asynchronous context). Add FAIL_QUIET option so buildall.sh doesn't spam the log with the new prerequisite error messages.
Rob Landley <rob@landley.net>
parents: 711
diff changeset
16 # the build uses, set up a wrapper that does that.
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
17
608
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
18 if [ ! -z "$RECORD_COMMANDS" ]
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
19 then
608
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
20 if [ ! -f "$BUILD/wrapdir/wrappy" ]
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
21 then
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
22 echo setup wrapdir
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
23
608
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
24 # Build the wrapper and install it into build/wrapdir/wrappy
744
759adf5a0fe9 Refactor so include.sh mostly just sets environment variables. Move read_arch_dir to function and call it explicitly (no more need for $NO_ARCH). Make blank_tempdir a function, called explicitly by stages when needed, with some sanity checks. Insert prerequisite tests to later stages so they can detect failure early and provide an explicit erro rmessage, and have those tests happen before blanking $WORK dir, to preserve debugging info. Make buildall.sh depend on prerequisite tests rather than trying to avoid calling later stages (and thus do flow control from asynchronous context). Add FAIL_QUIET option so buildall.sh doesn't spam the log with the new prerequisite error messages.
Rob Landley <rob@landley.net>
parents: 711
diff changeset
25 blank_tempdir "$BUILD/wrapdir"
608
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
26 $CC -Os "$SOURCES/toys/wrappy.c" -o "$BUILD/wrapdir/wrappy" || dienow
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
27
608
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
28 # Loop through each $PATH element and create a symlink to the wrapper with
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
29 # that name.
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
30
657
a56fa2df4d82 Add MANIFEST file to mini-native-$ARCH/usr/src.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
31 for i in $(echo "$PATH" | sed 's/:/ /g')
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
32 do
608
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
33 for j in $(ls $i)
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
34 do
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
35 [ -f "$BUILD/wrapdir/$j" ] || ln -s wrappy "$BUILD/wrapdir/$j"
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
36 done
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
37 done
608
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
38
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
39 # Adjust things to use wrapper directory
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
40
608
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
41 export WRAPPY_REALPATH="$PATH"
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
42 PATH="$BUILD/wrapdir"
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
43 fi
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
44
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
45 # If we're not recording the host command lines, then populate a directory
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
46 # with host versions of all the command line utilities we're going to install
711
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 682
diff changeset
47 # into root-filesystem. When we're done, PATH can be set to include just this
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
48 # directory and nothing else.
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
49
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
50 # This serves three purposes:
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
51 #
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
52 # 1) Enumerate exactly what we need to build the system, so we can make sure
711
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 682
diff changeset
53 # root-filesystem has everything it needs to rebuild us. If anything is
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 682
diff changeset
54 # missing from this list, the resulting root-filesystem probably won't have
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 682
diff changeset
55 # it either, so it's nice to know as early as possible that we actually
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 682
diff changeset
56 # needed it.
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
57 #
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
58 # 2) Quick smoke test that the versions of the tools we're using can compile
711
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 682
diff changeset
59 # everything from source correctly, and thus root-filesystem should be able
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 682
diff changeset
60 # to rebuild from source using those same tools.
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
61 #
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
62 # 3) Reduce variation from distro to distro. The build always uses the
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
63 # same command line utilities no matter where we're running, because we
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
64 # provide our own.
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
65
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
66 else
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 281
diff changeset
67
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
68 # Start by creating symlinks to the host toolchain, since we need to use
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
69 # that to build anything else. We build a cross compiler, and a native
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
70 # compiler for the target, but we don't build a host toolchain. We use the
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
71 # one that's already there.
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
72
744
759adf5a0fe9 Refactor so include.sh mostly just sets environment variables. Move read_arch_dir to function and call it explicitly (no more need for $NO_ARCH). Make blank_tempdir a function, called explicitly by stages when needed, with some sanity checks. Insert prerequisite tests to later stages so they can detect failure early and provide an explicit erro rmessage, and have those tests happen before blanking $WORK dir, to preserve debugging info. Make buildall.sh depend on prerequisite tests rather than trying to avoid calling later stages (and thus do flow control from asynchronous context). Add FAIL_QUIET option so buildall.sh doesn't spam the log with the new prerequisite error messages.
Rob Landley <rob@landley.net>
parents: 711
diff changeset
73 for i in ar as nm cc make ld gcc
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
74 do
615
7523d1f3b818 Some slight paranoia against multiple host-tools.sh runs that get interrupted in the middle. (Yeah, in general that's not guaranteed to work, but still...)
Rob Landley <rob@landley.net>
parents: 609
diff changeset
75 [ ! -f "${HOSTTOOLS}/$i" ] &&
7523d1f3b818 Some slight paranoia against multiple host-tools.sh runs that get interrupted in the middle. (Yeah, in general that's not guaranteed to work, but still...)
Rob Landley <rob@landley.net>
parents: 609
diff changeset
76 (ln -s `PATH="$OLDPATH" which $i` "${HOSTTOOLS}/$i" || dienow)
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
77 done
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
78
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
79 # Build toybox
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
80
514
8d2b9cd1a52e build-all-target.sh needs toybox netcat to pass data into/out of qemu, so host-tools.sh should install that too.
Rob Landley <rob@landley.net>
parents: 508
diff changeset
81 if [ ! -f "${HOSTTOOLS}/toybox" ]
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
82 then
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
83 setupfor toybox &&
514
8d2b9cd1a52e build-all-target.sh needs toybox netcat to pass data into/out of qemu, so host-tools.sh should install that too.
Rob Landley <rob@landley.net>
parents: 508
diff changeset
84 make defconfig &&
8d2b9cd1a52e build-all-target.sh needs toybox netcat to pass data into/out of qemu, so host-tools.sh should install that too.
Rob Landley <rob@landley.net>
parents: 508
diff changeset
85 make || dienow
389
becb1084a427 Add USE_TOYBOX option (enabled by default), to use toybox commands where
Rob Landley <rob@landley.net>
parents: 368
diff changeset
86 if [ -z "$USE_TOYBOX" ]
becb1084a427 Add USE_TOYBOX option (enabled by default), to use toybox commands where
Rob Landley <rob@landley.net>
parents: 368
diff changeset
87 then
514
8d2b9cd1a52e build-all-target.sh needs toybox netcat to pass data into/out of qemu, so host-tools.sh should install that too.
Rob Landley <rob@landley.net>
parents: 508
diff changeset
88 mv toybox "$HOSTTOOLS" &&
8d2b9cd1a52e build-all-target.sh needs toybox netcat to pass data into/out of qemu, so host-tools.sh should install that too.
Rob Landley <rob@landley.net>
parents: 508
diff changeset
89 ln -s toybox "$HOSTTOOLS"/patch &&
8d2b9cd1a52e build-all-target.sh needs toybox netcat to pass data into/out of qemu, so host-tools.sh should install that too.
Rob Landley <rob@landley.net>
parents: 508
diff changeset
90 ln -s toybox "$HOSTTOOLS"/netcat || dienow
389
becb1084a427 Add USE_TOYBOX option (enabled by default), to use toybox commands where
Rob Landley <rob@landley.net>
parents: 368
diff changeset
91 else
514
8d2b9cd1a52e build-all-target.sh needs toybox netcat to pass data into/out of qemu, so host-tools.sh should install that too.
Rob Landley <rob@landley.net>
parents: 508
diff changeset
92 make install_flat PREFIX="${HOSTTOOLS}" || dienow
389
becb1084a427 Add USE_TOYBOX option (enabled by default), to use toybox commands where
Rob Landley <rob@landley.net>
parents: 368
diff changeset
93 fi
514
8d2b9cd1a52e build-all-target.sh needs toybox netcat to pass data into/out of qemu, so host-tools.sh should install that too.
Rob Landley <rob@landley.net>
parents: 508
diff changeset
94 cd ..
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 281
diff changeset
95
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
96 cleanup toybox
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
97 fi
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
98
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
99 # Build busybox
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
100
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
101 if [ ! -f "${HOSTTOOLS}/busybox" ]
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
102 then
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
103 setupfor busybox &&
453
61a26b8092bf Busybox defconfig has become useless, so switch busybox to build via allyesconfig minus symbols to be disabled.
Rob Landley <rob@landley.net>
parents: 413
diff changeset
104 make allyesconfig KCONFIG_ALLCONFIG="${SOURCES}/trimconfig-busybox" &&
358
9829e6cc8637 Update busybox from 1.2.2 to 1.11.0. Toybox i still used for oneit and patch,
Rob Landley <rob@landley.net>
parents: 355
diff changeset
105 make -j $CPUS &&
9829e6cc8637 Update busybox from 1.2.2 to 1.11.0. Toybox i still used for oneit and patch,
Rob Landley <rob@landley.net>
parents: 355
diff changeset
106 make busybox.links &&
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
107 cp busybox "${HOSTTOOLS}"
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
108
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
109 [ $? -ne 0 ] && dienow
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
110
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
111 for i in $(sed 's@.*/@@' busybox.links)
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
112 do
609
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
113 [ ! -f "${HOSTTOOLS}/$i" ] &&
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
114 (ln -s busybox "${HOSTTOOLS}/$i" || dienow)
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
115 done
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
116 cd ..
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
117
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
118 cleanup busybox
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
119 fi
625
065e1a0f6697 The new distcc version notices the host has the python binary, and assumes
Rob Landley <rob@landley.net>
parents: 624
diff changeset
120
065e1a0f6697 The new distcc version notices the host has the python binary, and assumes
Rob Landley <rob@landley.net>
parents: 624
diff changeset
121 PATH="${HOSTTOOLS}"
311
a791ca629d9c Upgrade to toybox-0.0.5 and linux-2.6.25-rc7. Remove use of perl in the kernel
Rob Landley <rob@landley.net>
parents: 301
diff changeset
122 fi
a791ca629d9c Upgrade to toybox-0.0.5 and linux-2.6.25-rc7. Remove use of perl in the kernel
Rob Landley <rob@landley.net>
parents: 301
diff changeset
123
711
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 682
diff changeset
124 # This is optionally used by root-filesystem to accelerate native builds when
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 682
diff changeset
125 # running under qemu. It's not used to build root-filesystem, or to build
311
a791ca629d9c Upgrade to toybox-0.0.5 and linux-2.6.25-rc7. Remove use of perl in the kernel
Rob Landley <rob@landley.net>
parents: 301
diff changeset
126 # the cross compiler, but it needs to be on the host system in order to
a791ca629d9c Upgrade to toybox-0.0.5 and linux-2.6.25-rc7. Remove use of perl in the kernel
Rob Landley <rob@landley.net>
parents: 301
diff changeset
127 # use the distcc acceleration trick.
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 281
diff changeset
128
571
f07d714321fe Fix a couple brown paper bag bugs (oops) and general cleanups.
Rob Landley <rob@landley.net>
parents: 514
diff changeset
129 # Note that this one we can use off of the host, it's used on the host where
f07d714321fe Fix a couple brown paper bag bugs (oops) and general cleanups.
Rob Landley <rob@landley.net>
parents: 514
diff changeset
130 # the system image runs. The build doesn't actually use it, we only bother
f07d714321fe Fix a couple brown paper bag bugs (oops) and general cleanups.
Rob Landley <rob@landley.net>
parents: 514
diff changeset
131 # to build it at all here as a convenience for run-from-build.sh.
f07d714321fe Fix a couple brown paper bag bugs (oops) and general cleanups.
Rob Landley <rob@landley.net>
parents: 514
diff changeset
132
318
b3cf2e4b74f0 Patch from Andre Ruiz to fix host-tools rebuild check. (If busybox is already
Rob Landley <rob@landley.net>
parents: 311
diff changeset
133 # Build distcc (if it's not in $PATH)
609
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
134 if [ -z "$(which distccd)" ]
277
ffef8c1fe240 Build distcc on host if it's not already installed.
Rob Landley <rob@landley.net>
parents: 276
diff changeset
135 then
571
f07d714321fe Fix a couple brown paper bag bugs (oops) and general cleanups.
Rob Landley <rob@landley.net>
parents: 514
diff changeset
136 setupfor distcc &&
624
7641e1038cb6 The new distcc is dumb enough to use -Werror by default. Make it stop.
Rob Landley <rob@landley.net>
parents: 615
diff changeset
137 ./configure --with-included-popt --disable-Werror &&
571
f07d714321fe Fix a couple brown paper bag bugs (oops) and general cleanups.
Rob Landley <rob@landley.net>
parents: 514
diff changeset
138 make -j "$CPUS" &&
f07d714321fe Fix a couple brown paper bag bugs (oops) and general cleanups.
Rob Landley <rob@landley.net>
parents: 514
diff changeset
139 cp distcc distccd "${HOSTTOOLS}" &&
f07d714321fe Fix a couple brown paper bag bugs (oops) and general cleanups.
Rob Landley <rob@landley.net>
parents: 514
diff changeset
140 cd ..
277
ffef8c1fe240 Build distcc on host if it's not already installed.
Rob Landley <rob@landley.net>
parents: 276
diff changeset
141
571
f07d714321fe Fix a couple brown paper bag bugs (oops) and general cleanups.
Rob Landley <rob@landley.net>
parents: 514
diff changeset
142 cleanup distcc
277
ffef8c1fe240 Build distcc on host if it's not already installed.
Rob Landley <rob@landley.net>
parents: 276
diff changeset
143 fi
ffef8c1fe240 Build distcc on host if it's not already installed.
Rob Landley <rob@landley.net>
parents: 276
diff changeset
144
609
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
145 # Build genext2fs. We use it to build the ext2 image to boot qemu with
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
146 # in system-image.sh.
508
909a4921273d Move genext2fs build to host-tools, remove dead code, add comments.
Rob Landley <rob@landley.net>
parents: 505
diff changeset
147
571
f07d714321fe Fix a couple brown paper bag bugs (oops) and general cleanups.
Rob Landley <rob@landley.net>
parents: 514
diff changeset
148 if [ ! -f "${HOSTTOOLS}"/genext2fs ]
508
909a4921273d Move genext2fs build to host-tools, remove dead code, add comments.
Rob Landley <rob@landley.net>
parents: 505
diff changeset
149 then
609
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
150 setupfor genext2fs &&
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
151 ./configure &&
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
152 make -j $CPUS &&
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
153 cp genext2fs "${HOSTTOOLS}" &&
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
154 cd ..
508
909a4921273d Move genext2fs build to host-tools, remove dead code, add comments.
Rob Landley <rob@landley.net>
parents: 505
diff changeset
155
609
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
156 cleanup genext2fs
508
909a4921273d Move genext2fs build to host-tools, remove dead code, add comments.
Rob Landley <rob@landley.net>
parents: 505
diff changeset
157 fi
909a4921273d Move genext2fs build to host-tools, remove dead code, add comments.
Rob Landley <rob@landley.net>
parents: 505
diff changeset
158
642
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
159 # Build e2fsprogs.
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
160
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
161 # Busybox used to provide ext2 utilities (back around 1.2.2), but the
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
162 # implementation was horrible and got removed. Someday the new Lua
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
163 # toybox should provide these.
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
164
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
165 # This mostly isn't used creating a system image, which uses genext2fs instead.
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
166 # If SYSIMAGE_HDA_MEGS is > 64, it'll resize2fs because genext2fs is
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
167 # unreasonably slow at creating large files.
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
168
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
169 # The hdb.img of run-emulator.sh and run-from-build.sh uses e2fsprogs'
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
170 # fsck.ext2 and tune2fs. These are installed by default in most distros
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
171 # (which genext2fs isn't), and genext2fs doesn't have ext3 support anyway.
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
172
651
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
173 if [ ! -f "${HOSTTOOLS}"/mke2fs ]
642
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
174 then
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
175 setupfor e2fsprogs &&
653
0071f3c72d4c Vladimir Dronnikov pointed out that building e2fsprogs under uClibc would need --disable-tls.
Rob Landley <rob@landley.net>
parents: 651
diff changeset
176 ./configure --disable-tls --enable-htree &&
642
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
177 make -j "$CPUS" &&
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
178 cp misc/{mke2fs,tune2fs} resize/resize2fs "${HOSTTOOLS}" &&
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
179 cp e2fsck/e2fsck "$HOSTTOOLS"/fsck.ext2 &&
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
180 cd ..
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
181
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
182 cleanup e2fsprogs
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
183 fi
c92dc77da038 Since gene2fs can't produce large images in a reasonable amount of time, make a 64 meg image and resize it if necessary. (This means the minimum image size is 64 megs, because gene2fs won't run unless you specify a size, but it knows right away if the size you gave it wasn't big enough. I don't understand this either.)
Rob Landley <rob@landley.net>
parents: 625
diff changeset
184
609
3c30ce98c273 And genext2fs could suffer the same symlink loop problem with RECORD_COMMANDS, so don't symlink. (The point of host-tools.sh is to build what we can from source anyway, linking to anything but the host toolchain defeats the purpose.)
Rob Landley <rob@landley.net>
parents: 608
diff changeset
185 # Squashfs is an alternate packaging option.
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 281
diff changeset
186
648
a72f7f70c003 Now that the 2.6.29 kernel is out with squashfs, add squashfs to host-tools.sh and system-image.sh.
Rob Landley <rob@landley.net>
parents: 642
diff changeset
187 if [ ! -f "${HOSTTOOLS}"/mksquashfs ]
a72f7f70c003 Now that the 2.6.29 kernel is out with squashfs, add squashfs to host-tools.sh and system-image.sh.
Rob Landley <rob@landley.net>
parents: 642
diff changeset
188 then
a72f7f70c003 Now that the 2.6.29 kernel is out with squashfs, add squashfs to host-tools.sh and system-image.sh.
Rob Landley <rob@landley.net>
parents: 642
diff changeset
189 setupfor squashfs &&
a72f7f70c003 Now that the 2.6.29 kernel is out with squashfs, add squashfs to host-tools.sh and system-image.sh.
Rob Landley <rob@landley.net>
parents: 642
diff changeset
190 cd squashfs-tools &&
a72f7f70c003 Now that the 2.6.29 kernel is out with squashfs, add squashfs to host-tools.sh and system-image.sh.
Rob Landley <rob@landley.net>
parents: 642
diff changeset
191 make -j $CPUS &&
a72f7f70c003 Now that the 2.6.29 kernel is out with squashfs, add squashfs to host-tools.sh and system-image.sh.
Rob Landley <rob@landley.net>
parents: 642
diff changeset
192 cp mksquashfs unsquashfs "${HOSTTOOLS}" &&
a72f7f70c003 Now that the 2.6.29 kernel is out with squashfs, add squashfs to host-tools.sh and system-image.sh.
Rob Landley <rob@landley.net>
parents: 642
diff changeset
193 cd ..
a72f7f70c003 Now that the 2.6.29 kernel is out with squashfs, add squashfs to host-tools.sh and system-image.sh.
Rob Landley <rob@landley.net>
parents: 642
diff changeset
194
a72f7f70c003 Now that the 2.6.29 kernel is out with squashfs, add squashfs to host-tools.sh and system-image.sh.
Rob Landley <rob@landley.net>
parents: 642
diff changeset
195 cleanup squashfs
a72f7f70c003 Now that the 2.6.29 kernel is out with squashfs, add squashfs to host-tools.sh and system-image.sh.
Rob Landley <rob@landley.net>
parents: 642
diff changeset
196 fi
108
b66d638a3844 Build User Mode Linux and have that do the ext2 packaging (for now, anyway).
Rob Landley <rob@landley.net>
parents: 99
diff changeset
197
649
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
198 # Here's some stuff that isn't used to build a cross compiler or system
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
199 # image, but is used by run-from-build.sh. By default we assume it's
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
200 # installed on the host you're running system images on (which may not be
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
201 # the one you're building them on).
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
202
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
203 # Either build qemu from source, or symlink it.
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
204
651
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
205 if [ ! -f "${HOSTTOOLS}"/qemu ]
649
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
206 then
651
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
207 if [ ! -z "$HOST_BUILD_EXTRA" ]
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
208 then
649
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
209
651
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
210 # Build qemu. Note that this is _very_slow_. (It takes about as long as
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
211 # building a system image from scratch, including the cross compiler.)
649
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
212
651
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
213 # It's also ugly: its wants to populate a bunch of subdirectories under
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
214 # --prefix, and we can't just install it in host-temp and copy out what
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
215 # we want because the pc-bios directory needs to exist at a hardwired
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
216 # absolute path, so we do the install by hand.
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
217
649
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
218 setupfor qemu &&
650
7a4ea7f6dc3d Revert qemu ppc openbios to the version before the --nographic bug showed up (which was svn 6658). See http://lists.gnu.org/archive/html/qemu-devel/2009-03/msg01070.html for details.
Rob Landley <rob@landley.net>
parents: 649
diff changeset
219 cp "$SOURCES"/patches/openbios-ppc pc-bios/openbios-ppc &&
682
d79f936c8f42 Fix qemu build so it can find pc-bios directory.
Rob Landley <rob@landley.net>
parents: 669
diff changeset
220 sed -i 's@datasuffix=".*"@datasuffix="/pc-bios"@' configure &&
651
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
221 ./configure --disable-gfx-check --prefix="$HOSTTOOLS" &&
650
7a4ea7f6dc3d Revert qemu ppc openbios to the version before the --nographic bug showed up (which was svn 6658). See http://lists.gnu.org/archive/html/qemu-devel/2009-03/msg01070.html for details.
Rob Landley <rob@landley.net>
parents: 649
diff changeset
222 make -j $CPUS &&
651
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
223 # Copy the executable files and ROM files
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
224 cp $(find -type f -perm +111 -name "qemu*") "$HOSTTOOLS" &&
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
225 cp -r pc-bios "$HOSTTOOLS" &&
649
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
226 cd ..
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
227
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
228 cleanup qemu
651
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
229 else
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
230 # Symlink qemu out of the host, if found. Since run-from-build.sh uses
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
231 # $PATH=.../build/host if it exists, add the various qemu instances to that.
649
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
232
651
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
233 echo "$OLDPATH" | sed 's/:/\n/g' | while read i
649
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
234 do
660
3561574d8a56 The i386 version is "qemu" with no trailing dash, so symlink that too.
Rob Landley <rob@landley.net>
parents: 657
diff changeset
235 for j in $(cd "$i"; ls qemu* 2>/dev/null)
651
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
236 do
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
237 ln -s "$i/$j" "$HOSTTOOLS/$j"
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
238 done
649
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
239 done
651
0d6c67c401e0 Fix qemu build and add sh4 -append patch.
Rob Landley <rob@landley.net>
parents: 650
diff changeset
240 fi
649
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
241 fi
950ef7de1cf9 Add qemu to host-tools.sh. If HOST_BUILD_EXTRA set, compile from source, otherwise symlink it from host. (Note that ppc --nographic and sh4 --append are currently broken in host version of qemu.)
Rob Landley <rob@landley.net>
parents: 648
diff changeset
242
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
243 if [ ! -z "$RECORD_COMMANDS" ]
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
244 then
604
7fc1f4695c29 Minor cosmetic cleanup (don't warn about re-linking things that are expected to already be there), and don't build distccd if it's already in $PATH. (We need to put genext2fs in host/path because system-image.sh isn't using host's $PATH, but run-from-build.sh and friends do use host $PATH.)
Rob Landley <rob@landley.net>
parents: 580
diff changeset
245 # Make sure the host tools we just built are also in wrapdir
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
246 for j in $(ls "$HOSTTOOLS")
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
247 do
608
ab76d4cdd392 Jean Wolter pointed out that running RECORD_COMMANDS=1 twice could create circular symlinks. Hopefully fixed now, and some related cleanups/clarifications.
Rob Landley <rob@landley.net>
parents: 604
diff changeset
248 [ -e "$BUILD/wrapdir/$j" ] || ln -s wrappy "$BUILD/wrapdir/$j"
352
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
249 done
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
250 fi
1782b77fae15 Add command logging. Set RECORD_COMMANDS=1 to log every command line run
Rob Landley <rob@landley.net>
parents: 340
diff changeset
251
93
153ba1a0b427 Break out the qemu build (and squashfs) into something easy to comment out,
Rob Landley <rob@landley.net>
parents:
diff changeset
252 echo -e "\e[32mHost tools build complete.\e[0m"