summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2013-03-15 16:24:15 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2013-03-15 16:24:15 +0000
commitaffce543de8e1427e0c6a19aa3588adbd0488a53 (patch)
tree43c81a655e6b4b0930d273b6d1dc3b67bfd42eef
parent758342a7973cb185ad6d68263abc29dd3664a531 (diff)
parentee408cf414ccdc0abc424b5a6e472207c2ae2f4d (diff)
downloadbusybox-affce543de8e1427e0c6a19aa3588adbd0488a53.tar.gz
Merge branch 'baserock/samthursfield/build-essential-2-rebase' into baserock/build-essential
-rw-r--r--busybox.morph84
-rw-r--r--busybox.morph.yaml95
-rw-r--r--stage2-busybox.morph46
-rw-r--r--stage2-busybox.morph.yaml74
4 files changed, 254 insertions, 45 deletions
diff --git a/busybox.morph b/busybox.morph
index 7158fe3fe..9408c49a6 100644
--- a/busybox.morph
+++ b/busybox.morph
@@ -3,62 +3,56 @@
"kind": "chunk",
"configure-commands": [
"make defconfig",
- "sed -e 's/.*FEATURE_PREFER_APPLETS.*/CONFIG_FEATURE_PREFER_APPLETS=y/' -i .config",
- "sed -e 's/.*FEATURE_SH_STANDALONE.*/CONFIG_FEATURE_SH_STANDALONE=y/' -i .config",
- "sed -e 's/^CONFIG_INETD=.*/# CONFIG_INETD is not set/' -i .config",
- "sed -e 's/.*FEATURE_COMPRESS_USAGE=.*/CONFIG_FEATURE_COMPRESS_USAGE=y/' -i .config",
- "sed -e 's/.*FEATURE_COMPRESS_USAGE=.*/CONFIG_FEATURE_COMPRESS_USAGE=y/' -i .config",
- "sed -e 's/.*FEATURE_PREFER_APPLETS=.*/# CONFIG_FEATURE_PREFER_APPLETS is not set/' -i .config",
- "sed -e 's/.*FEATURE_MOUNT_CIFS=.*/# CONFIG_FEATURE_MOUNT_CIFS is not set/' -i .config",
- "sed -e 's|.*UDHCPC_DEFAULT_SCRIPT=.*|CONFIG_UDHCPC_DEFAULT_SCRIPT=\"'\"$PREFIX\"/share/udhcpc/default.script'\"|' -i .config",
+ "sed -e 's|.*UDHCPC_DEFAULT_SCRIPT.*|CONFIG_UDHCPC_DEFAULT_SCRIPT=\"'\"$PREFIX\"/share/udhcpc/default.script'\"|' -i .config",
"sed -e 's|.*IFUPDOWN_IFSTATE_PATH.*|CONFIG_IFUPDOWN_IFSTATE_PATH=\"/run/ifstate\"|' -i .config",
"[ \"$PREFIX\" = /usr ] || sed -e 's/.*INSTALL_NO_USR.*/CONFIG_INSTALL_NO_USR=y/' -i .config",
- "sed -e 's/.*MODPROBE_SMALL=.*/# CONFIG_MODPROBE_SMALL is not set/' -i .config",
- "sed -e 's/.*INSMOD=.*/CONFIG_INSMOD=y/' -i .config",
- "sed -e 's/.*RMMOD=.*/CONFIG_RMMOD=y/' -i .config",
- "sed -e 's/.*LSMOD=.*/CONFIG_LSMOD=y/' -i .config",
- "sed -e 's/.*DEPMOD=.*/CONFIG_DEPMOD=y/' -i .config",
- "sed -e 's/.*MODPROBE=.*/CONFIG_MODPROBE=y/' -i .config",
- "sed -e 's/.*FEATURE_MODPROBE_BLACKLIST=.*/CONFIG_FEATURE_MODPROBE_BLACKLIST=y/' -i .config",
- "sed -e 's/.*FEATURE_LSMOD_PRETTY_2_6_OUTPUT=.*/CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y/' -i .config",
- "sed -e 's/.*CONFIG_LOSETUP.*/# CONFIG_LOSETUP is not set/' -i .config",
- "sed -e 's/.*CONFIG_LSUSB.*/# CONFIG_LSUSB is not set/' -i .config",
- "sed -e 's/.*CONFIG_INIT.*/# CONFIG_INIT is not set/' -i .config",
- "sed -e 's/.*CONFIG_HALT.*/# CONFIG_HALT is not set/' -i .config",
- "sed -e 's/.*CONFIG_RUNLEVEL.*/# CONFIG_RUNLEVEL is not set/' -i .config",
- "sed -e 's/.*CONFIG_FEATURE_USE_INITTAB.*/# CONFIG_FEATURE_USE_INITTAB is not set/' -i .config",
- "sed -e 's/.*CONFIG_FEATURE_INIT_SCTTY.*/# CONFIG_FEATURE_INIT_SCTTY is not set/' -i .config",
- "sed -e 's/.*CONFIG_FEATURE_INIT_SYSLOG.*/# CONFIG_FEATURE_INIT_SYSLOG is not set/' -i .config",
- "sed -e 's/.*CONFIG_FEATURE_EXTRA_QUIET.*/# CONFIG_FEATURE_EXTRA_QUIET is not set/' -i .config",
- "sed -e 's/.*CONFIG_FEATURE_INIT_COREDUMPS.*/# CONFIG_FEATURE_INIT_COREDUMPS is not set/' -i .config",
- "sed -e 's/.*CONFIG_FEATURE_INITRD.*/# CONFIG_FEATURE_INITRD is not set/' -i .config",
- "sed -e 's/.*CONFIG_INIT_TERMINAL_TYPE.*/CONFIG_INIT_TERMINAL_TYPE=\"\"/' -i .config",
- "sed -e 's/.*CONFIG_MKFS_EXT2.*/# CONFIG_MKFS_EXT2 is not set/' -i .config",
- "sed -e 's/.*CONFIG_FSCK_MINIX.*/# CONFIG_FSCK_MINIX is not set/' -i .config",
- "sed -e 's/.*CONFIG_MKFS_MINIX.*/# CONFIG_MKFS_MINIX is not set/' -i .config",
- "sed -e 's/.*CONFIG_FEATURE_MINIX2.*/# CONFIG_FEATURE_MINIX2 is not set/' -i .config",
- "sed -e 's/.*CONFIG_STRINGS.*/# CONFIG_STRINGS is not set/' -i .config",
- "sed -e 's/.*CONFIG_PATCH.*/# CONFIG_PATCH is not set/' -i .config",
- "sed -e 's/.*CONFIG_UNLZMA.*/# CONFIG_UNLZMA is not set/' -i .config",
- "sed -e 's/.*CONFIG_LZMA.*/# CONFIG_LZMA is not set/' -i .config",
- "sed -e 's/.*CONFIG_UNXZ.*/# CONFIG_UNXZ is not set/' -i .config",
- "sed -e 's/.*CONFIG_XZ.*/# CONFIG_XZ is not set/' -i .config",
- "sed -e 's/.*CONFIG_AWK=.*/# CONFIG_AWK is not set/' -i .config"
+ "sed -e 's/CONFIG_AWK=y.*/# CONFIG_AWK is not set/' -i .config",
+ "sed -e 's/CONFIG_INETD=y.*/# CONFIG_INETD is not set/' -i .config",
+ "sed -e 's/CONFIG_PATCH=y.*/# CONFIG_PATCH is not set/' -i .config",
+ "sed -e 's/CONFIG_DEPMOD=y.*/# CONFIG_DEPMOD is not set/' -i .config",
+ "sed -e 's/CONFIG_INSMOD=y.*/# CONFIG_INSMOD is not set/' -i .config",
+ "sed -e 's/CONFIG_MODPROBE=y.*/# CONFIG_MODPROBE is not set/' -i .config",
+ "sed -e 's/CONFIG_MODPROBE_SMALL=y.*/# CONFIG_MODPROBE_SMALL is not set/' -i .config",
+ "sed -e 's/CONFIG_LSMOD=y.*/# CONFIG_LSMOD is not set/' -i .config",
+ "sed -e 's/CONFIG_RMMOD=y.*/# CONFIG_RMMOD is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_MOUNT_CIFS=y.*/# CONFIG_FEATURE_MOUNT_CIFS is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_EXTRA_QUIET=y.*/# CONFIG_FEATURE_EXTRA_QUIET is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_INIT_COREDUMPS=y.*/# CONFIG_FEATURE_INIT_COREDUMPS is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_INIT_SCTTY=y.*/# CONFIG_FEATURE_INIT_SCTTY is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_INIT_SYSLOG=y.*/# CONFIG_FEATURE_INIT_SYSLOG is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_INITRD=y.*/# CONFIG_FEATURE_INITRD is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_USE_INITTAB=y.*/# CONFIG_FEATURE_USE_INITTAB is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_MINIX2=y.*/# CONFIG_FEATURE_MINIX2 is not set/' -i .config",
+ "sed -e 's/CONFIG_FSCK_MINIX=y.*/# CONFIG_FSCK_MINIX is not set/' -i .config",
+ "sed -e 's/CONFIG_HALT=y.*/# CONFIG_HALT is not set/' -i .config",
+ "sed -e 's/CONFIG_INIT=y.*/# CONFIG_INIT is not set/' -i .config",
+ "sed -e 's/CONFIG_INIT_TERMINAL_TYPE=y.*/CONFIG_INIT_TERMINAL_TYPE=\"\"/' -i .config",
+ "sed -e 's/CONFIG_LOSETUP=y.*/# CONFIG_LOSETUP is not set/' -i .config",
+ "sed -e 's/CONFIG_LSUSB=y.*/# CONFIG_LSUSB is not set/' -i .config",
+ "sed -e 's/CONFIG_LZMA=y.*/# CONFIG_LZMA is not set/' -i .config",
+ "sed -e 's/CONFIG_MKFS_EXT2=y.*/# CONFIG_MKFS_EXT2 is not set/' -i .config",
+ "sed -e 's/CONFIG_MKFS_MINIX=y.*/# CONFIG_MKFS_MINIX is not set/' -i .config",
+ "sed -e 's/CONFIG_RUNLEVEL=y.*/# CONFIG_RUNLEVEL is not set/' -i .config",
+ "sed -e 's/CONFIG_STRINGS=y.*/# CONFIG_STRINGS is not set/' -i .config",
+ "sed -e 's/CONFIG_UNLZMA=y.*/# CONFIG_UNLZMA is not set/' -i .config",
+ "sed -e 's/CONFIG_UNXZ=y.*/# CONFIG_UNXZ is not set/' -i .config",
+ "sed -e 's/CONFIG_XZ=y.*/# CONFIG_XZ is not set/' -i .config"
],
"build-commands": [
- "for f in ifup@.service ntpd.service crond.service; do sed -e 's|@rootprefix@||g' \"systemd-units/$f.in\" >\"systemd-units/$f\"; done",
- "make"
+ "make",
+ "for f in ifup@.service ntpd.service crond.service; do\n sed -e 's|@rootprefix@||g' \"systemd-units/$f.in\" >\"systemd-units/$f\";\ndone\n"
],
"install-commands": [
- "if [ \"$PREFIX\" = /usr ]; then PREFIX=; fi && make CONFIG_PREFIX=\"$DESTDIR$PREFIX\" install && chmod 6755 \"$DESTDIR$PREFIX\"/bin/busybox",
+ "if [ \"$PREFIX\" = /usr ]; then PREFIX=; fi &&\n make CONFIG_PREFIX=\"$DESTDIR$PREFIX\" install &&\n chmod 6755 \"$DESTDIR$PREFIX\"/bin/busybox\n",
"mkdir -p \"$DESTDIR/var/spool/cron/crontabs\"",
"mkdir -p \"$DESTDIR/lib/systemd/system/multi-user.target.wants\"",
- "for f in systemd-units/*.service; do install -m 644 \"$f\" \"$DESTDIR/lib/systemd/system\"; done",
- "for f in $(cd systemd-units; ls *.service | grep -v -F \"@\"); do ln -s \"../$f\" \"$DESTDIR/lib/systemd/system/multi-user.target.wants/\"; done",
+ "for f in systemd-units/*.service; do\n install -m 644 \"$f\" \"$DESTDIR/lib/systemd/system\";\ndone\n",
+ "for f in $(cd systemd-units; ls *.service | grep -v -F \"@\"); do\n ln -s \"../$f\" \"$DESTDIR/lib/systemd/system/multi-user.target.wants/\";\ndone\n",
"mkdir -p \"$DESTDIR/lib/udev/rules.d\"",
"for f in udev-rules/100-baserock.rules; do install -m 644 \"$f\" \"$DESTDIR/lib/udev/rules.d\"; done",
"mkdir -p \"$DESTDIR$PREFIX\"/share/udhcpc",
"cp examples/udhcp/simple.script \"$DESTDIR$PREFIX\"/share/udhcpc/default.script",
- "cp scripts/ntpd-set.sh \"$DESTDIR$PREFIX\"/bin/ntpd-set.sh && chmod 6755 \"$DESTDIR$PREFIX\"/bin/ntpd-set.sh"
+ "cp scripts/ntpd-set.sh \"$DESTDIR$PREFIX\"/bin/ntpd-set.sh",
+ "chmod 6755 \"$DESTDIR$PREFIX\"/bin/ntpd-set.sh"
]
}
diff --git a/busybox.morph.yaml b/busybox.morph.yaml
new file mode 100644
index 000000000..8be8faa2d
--- /dev/null
+++ b/busybox.morph.yaml
@@ -0,0 +1,95 @@
+name: busybox
+kind: chunk
+
+configure-commands:
+ # Busybox's default config has everything enabled.
+ - make defconfig
+
+ - sed -e 's|.*UDHCPC_DEFAULT_SCRIPT.*|CONFIG_UDHCPC_DEFAULT_SCRIPT="'"$PREFIX"/share/udhcpc/default.script'"|' -i .config
+ - sed -e 's|.*IFUPDOWN_IFSTATE_PATH.*|CONFIG_IFUPDOWN_IFSTATE_PATH="/run/ifstate"|' -i .config
+
+ # Avoid dividing applets between $PREFIX/[s]bin and $PREFIX/usr/[s]bin.
+ - '[ "$PREFIX" = /usr ] || sed -e ''s/.*INSTALL_NO_USR.*/CONFIG_INSTALL_NO_USR=y/'' -i .config'
+
+ # We have GAWK.
+ - sed -e 's/CONFIG_AWK=y.*/# CONFIG_AWK is not set/' -i .config
+
+ # Depends on stuff that was removed since eglibc 2.14.
+ - sed -e 's/CONFIG_INETD=y.*/# CONFIG_INETD is not set/' -i .config
+
+ # Busybox Patch is incompatible enough with GNU Patch that it can't be
+ # used for GNULib projects built from Git.
+ - sed -e 's/CONFIG_PATCH=y.*/# CONFIG_PATCH is not set/' -i .config
+
+ # None of this is needed because we have kmod; and it actually breaks the
+ # Linux build because depmod isn't compatible enough with util-linux's.
+ - sed -e 's/CONFIG_DEPMOD=y.*/# CONFIG_DEPMOD is not set/' -i .config
+ - sed -e 's/CONFIG_INSMOD=y.*/# CONFIG_INSMOD is not set/' -i .config
+ - sed -e 's/CONFIG_MODPROBE=y.*/# CONFIG_MODPROBE is not set/' -i .config
+ - sed -e 's/CONFIG_MODPROBE_SMALL=y.*/# CONFIG_MODPROBE_SMALL is not set/' -i .config
+ - sed -e 's/CONFIG_LSMOD=y.*/# CONFIG_LSMOD is not set/' -i .config
+ - sed -e 's/CONFIG_RMMOD=y.*/# CONFIG_RMMOD is not set/' -i .config
+
+ # General features that we don't need.
+ - sed -e 's/CONFIG_FEATURE_MOUNT_CIFS=y.*/# CONFIG_FEATURE_MOUNT_CIFS is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_EXTRA_QUIET=y.*/# CONFIG_FEATURE_EXTRA_QUIET is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_INIT_COREDUMPS=y.*/# CONFIG_FEATURE_INIT_COREDUMPS is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_INIT_SCTTY=y.*/# CONFIG_FEATURE_INIT_SCTTY is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_INIT_SYSLOG=y.*/# CONFIG_FEATURE_INIT_SYSLOG is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_INITRD=y.*/# CONFIG_FEATURE_INITRD is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_USE_INITTAB=y.*/# CONFIG_FEATURE_USE_INITTAB is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_MINIX2=y.*/# CONFIG_FEATURE_MINIX2 is not set/' -i .config
+ - sed -e 's/CONFIG_FSCK_MINIX=y.*/# CONFIG_FSCK_MINIX is not set/' -i .config
+ - sed -e 's/CONFIG_HALT=y.*/# CONFIG_HALT is not set/' -i .config
+ - sed -e 's/CONFIG_INIT=y.*/# CONFIG_INIT is not set/' -i .config
+ - sed -e 's/CONFIG_INIT_TERMINAL_TYPE=y.*/CONFIG_INIT_TERMINAL_TYPE=""/' -i .config
+ - sed -e 's/CONFIG_LOSETUP=y.*/# CONFIG_LOSETUP is not set/' -i .config
+ - sed -e 's/CONFIG_LSUSB=y.*/# CONFIG_LSUSB is not set/' -i .config
+ - sed -e 's/CONFIG_LZMA=y.*/# CONFIG_LZMA is not set/' -i .config
+ - sed -e 's/CONFIG_MKFS_EXT2=y.*/# CONFIG_MKFS_EXT2 is not set/' -i .config
+ - sed -e 's/CONFIG_MKFS_MINIX=y.*/# CONFIG_MKFS_MINIX is not set/' -i .config
+ - sed -e 's/CONFIG_RUNLEVEL=y.*/# CONFIG_RUNLEVEL is not set/' -i .config
+ - sed -e 's/CONFIG_STRINGS=y.*/# CONFIG_STRINGS is not set/' -i .config
+ - sed -e 's/CONFIG_UNLZMA=y.*/# CONFIG_UNLZMA is not set/' -i .config
+ - sed -e 's/CONFIG_UNXZ=y.*/# CONFIG_UNXZ is not set/' -i .config
+ - sed -e 's/CONFIG_XZ=y.*/# CONFIG_XZ is not set/' -i .config
+
+build-commands:
+ - make
+ - |
+ for f in ifup@.service ntpd.service crond.service; do
+ sed -e 's|@rootprefix@||g' "systemd-units/$f.in" >"systemd-units/$f";
+ done
+
+install-commands:
+ - |
+ if [ "$PREFIX" = /usr ]; then PREFIX=; fi &&
+ make CONFIG_PREFIX="$DESTDIR$PREFIX" install &&
+ chmod 6755 "$DESTDIR$PREFIX"/bin/busybox
+
+ - mkdir -p "$DESTDIR/var/spool/cron/crontabs"
+
+ # Install systemd units
+ - mkdir -p "$DESTDIR/lib/systemd/system/multi-user.target.wants"
+ - |
+ for f in systemd-units/*.service; do
+ install -m 644 "$f" "$DESTDIR/lib/systemd/system";
+ done
+ - |
+ for f in $(cd systemd-units; ls *.service | grep -v -F "@"); do
+ ln -s "../$f" "$DESTDIR/lib/systemd/system/multi-user.target.wants/";
+ done
+
+ # Install custom udev rule to run ifup for every network device detected
+ - mkdir -p "$DESTDIR/lib/udev/rules.d"
+ - for f in udev-rules/100-baserock.rules; do
+ install -m 644 "$f" "$DESTDIR/lib/udev/rules.d";
+ done
+
+ # Set up DHCP
+ - mkdir -p "$DESTDIR$PREFIX"/share/udhcpc
+ - cp examples/udhcp/simple.script "$DESTDIR$PREFIX"/share/udhcpc/default.script
+
+ # Set up NTP
+ - cp scripts/ntpd-set.sh "$DESTDIR$PREFIX"/bin/ntpd-set.sh
+ - chmod 6755 "$DESTDIR$PREFIX"/bin/ntpd-set.sh
diff --git a/stage2-busybox.morph b/stage2-busybox.morph
new file mode 100644
index 000000000..ec4a38912
--- /dev/null
+++ b/stage2-busybox.morph
@@ -0,0 +1,46 @@
+{
+ "name": "stage2-busybox",
+ "kind": "chunk",
+ "configure-commands": [
+ "stage2-eglibc-fix-specs",
+ "make HOSTCC=\"/usr/bin/gcc\" CROSS_COMPILE=$TARGET_STAGE1- defconfig",
+ "[ \"$PREFIX\" = /usr ] || sed -e 's/.*INSTALL_NO_USR.*/CONFIG_INSTALL_NO_USR=y/' -i .config",
+ "sed -e 's/CONFIG_AWK=y.*/# CONFIG_AWK is not set/' -i .config",
+ "sed -e 's/CONFIG_INETD=y.*/# CONFIG_INETD is not set/' -i .config",
+ "sed -e 's/CONFIG_PATCH=y.*/# CONFIG_PATCH is not set/' -i .config",
+ "sed -e 's/CONFIG_DEPMOD=y.*/# CONFIG_DEPMOD is not set/' -i .config",
+ "sed -e 's/CONFIG_INSMOD=y.*/# CONFIG_INSMOD is not set/' -i .config",
+ "sed -e 's/CONFIG_MODPROBE=y.*/# CONFIG_MODPROBE is not set/' -i .config",
+ "sed -e 's/CONFIG_MODPROBE_SMALL=y.*/# CONFIG_MODPROBE_SMALL is not set/' -i .config",
+ "sed -e 's/CONFIG_LSMOD=y.*/# CONFIG_LSMOD is not set/' -i .config",
+ "sed -e 's/CONFIG_RMMOD=y.*/# CONFIG_RMMOD is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_MOUNT_CIFS=y.*/# CONFIG_FEATURE_MOUNT_CIFS is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_EXTRA_QUIET=y.*/# CONFIG_FEATURE_EXTRA_QUIET is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_INIT_COREDUMPS=y.*/# CONFIG_FEATURE_INIT_COREDUMPS is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_INIT_SCTTY=y.*/# CONFIG_FEATURE_INIT_SCTTY is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_INIT_SYSLOG=y.*/# CONFIG_FEATURE_INIT_SYSLOG is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_INITRD=y.*/# CONFIG_FEATURE_INITRD is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_USE_INITTAB=y.*/# CONFIG_FEATURE_USE_INITTAB is not set/' -i .config",
+ "sed -e 's/CONFIG_FEATURE_MINIX2=y.*/# CONFIG_FEATURE_MINIX2 is not set/' -i .config",
+ "sed -e 's/CONFIG_FSCK_MINIX=y.*/# CONFIG_FSCK_MINIX is not set/' -i .config",
+ "sed -e 's/CONFIG_HALT=y.*/# CONFIG_HALT is not set/' -i .config",
+ "sed -e 's/CONFIG_INIT=y.*/# CONFIG_INIT is not set/' -i .config",
+ "sed -e 's/CONFIG_INIT_TERMINAL_TYPE=y.*/CONFIG_INIT_TERMINAL_TYPE=\"\"/' -i .config",
+ "sed -e 's/CONFIG_LOSETUP=y.*/# CONFIG_LOSETUP is not set/' -i .config",
+ "sed -e 's/CONFIG_LSUSB=y.*/# CONFIG_LSUSB is not set/' -i .config",
+ "sed -e 's/CONFIG_LZMA=y.*/# CONFIG_LZMA is not set/' -i .config",
+ "sed -e 's/CONFIG_MKFS_EXT2=y.*/# CONFIG_MKFS_EXT2 is not set/' -i .config",
+ "sed -e 's/CONFIG_MKFS_MINIX=y.*/# CONFIG_MKFS_MINIX is not set/' -i .config",
+ "sed -e 's/CONFIG_RUNLEVEL=y.*/# CONFIG_RUNLEVEL is not set/' -i .config",
+ "sed -e 's/CONFIG_STRINGS=y.*/# CONFIG_STRINGS is not set/' -i .config",
+ "sed -e 's/CONFIG_UNLZMA=y.*/# CONFIG_UNLZMA is not set/' -i .config",
+ "sed -e 's/CONFIG_UNXZ=y.*/# CONFIG_UNXZ is not set/' -i .config",
+ "sed -e 's/CONFIG_XZ=y.*/# CONFIG_XZ is not set/' -i .config"
+ ],
+ "build-commands": [
+ "export STAGE2_SYSROOT=\"$(dirname $(pwd))\"\nexport CPPFLAGS=\"--sysroot=$STAGE2_SYSROOT\"\nexport LDFLAGS=\"-Wl,--sysroot=$STAGE2_SYSROOT\"\nmake HOSTCC=\"/usr/bin/gcc\" CROSS_COMPILE=$TARGET_STAGE1-\n"
+ ],
+ "install-commands": [
+ "export STAGE2_SYSROOT=\"$(dirname $(pwd))\"\nexport CPPFLAGS=\"--sysroot=$STAGE2_SYSROOT\"\nexport LDFLAGS=\"-Wl,--sysroot=$STAGE2_SYSROOT\"\nmake CONFIG_PREFIX=\"$DESTDIR$PREFIX\" \\\n HOSTCC=\"/usr/bin/gcc\" CROSS_COMPILE=$TARGET_STAGE1- install &&\nchmod 6755 \"$DESTDIR$PREFIX\"/bin/busybox\n"
+ ]
+}
diff --git a/stage2-busybox.morph.yaml b/stage2-busybox.morph.yaml
new file mode 100644
index 000000000..d2f0ec7af
--- /dev/null
+++ b/stage2-busybox.morph.yaml
@@ -0,0 +1,74 @@
+name: stage2-busybox
+kind: chunk
+
+configure-commands:
+ - stage2-eglibc-fix-specs
+
+ # Explicitly setting HOSTCC is required because we have a 'gcc' earlier in
+ # the PATH supplied by the stage2-gcc chunk, which can't execute outside of
+ # the stage 3 staging area.
+ - make HOSTCC="/usr/bin/gcc" CROSS_COMPILE=$TARGET_STAGE1- defconfig
+
+ # Avoid dividing applets between $PREFIX/[s]bin and $PREFIX/usr/[s]bin.
+ - '[ "$PREFIX" = /usr ] || sed -e ''s/.*INSTALL_NO_USR.*/CONFIG_INSTALL_NO_USR=y/'' -i .config'
+
+ # We have GAWK.
+ - sed -e 's/CONFIG_AWK=y.*/# CONFIG_AWK is not set/' -i .config
+
+ # Depends on stuff that was removed since eglibc 2.14.
+ - sed -e 's/CONFIG_INETD=y.*/# CONFIG_INETD is not set/' -i .config
+
+ # Busybox Patch is incompatible enough with GNU Patch that it can't be
+ # used for GNULib projects built from Git.
+ - sed -e 's/CONFIG_PATCH=y.*/# CONFIG_PATCH is not set/' -i .config
+
+ # None of this is needed because we have kmod; and it actually breaks the
+ # Linux build because depmod isn't compatible enough with util-linux's.
+ - sed -e 's/CONFIG_DEPMOD=y.*/# CONFIG_DEPMOD is not set/' -i .config
+ - sed -e 's/CONFIG_INSMOD=y.*/# CONFIG_INSMOD is not set/' -i .config
+ - sed -e 's/CONFIG_MODPROBE=y.*/# CONFIG_MODPROBE is not set/' -i .config
+ - sed -e 's/CONFIG_MODPROBE_SMALL=y.*/# CONFIG_MODPROBE_SMALL is not set/' -i .config
+ - sed -e 's/CONFIG_LSMOD=y.*/# CONFIG_LSMOD is not set/' -i .config
+ - sed -e 's/CONFIG_RMMOD=y.*/# CONFIG_RMMOD is not set/' -i .config
+
+ # General features that we don't need.
+ - sed -e 's/CONFIG_FEATURE_MOUNT_CIFS=y.*/# CONFIG_FEATURE_MOUNT_CIFS is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_EXTRA_QUIET=y.*/# CONFIG_FEATURE_EXTRA_QUIET is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_INIT_COREDUMPS=y.*/# CONFIG_FEATURE_INIT_COREDUMPS is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_INIT_SCTTY=y.*/# CONFIG_FEATURE_INIT_SCTTY is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_INIT_SYSLOG=y.*/# CONFIG_FEATURE_INIT_SYSLOG is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_INITRD=y.*/# CONFIG_FEATURE_INITRD is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_USE_INITTAB=y.*/# CONFIG_FEATURE_USE_INITTAB is not set/' -i .config
+ - sed -e 's/CONFIG_FEATURE_MINIX2=y.*/# CONFIG_FEATURE_MINIX2 is not set/' -i .config
+ - sed -e 's/CONFIG_FSCK_MINIX=y.*/# CONFIG_FSCK_MINIX is not set/' -i .config
+ - sed -e 's/CONFIG_HALT=y.*/# CONFIG_HALT is not set/' -i .config
+ - sed -e 's/CONFIG_INIT=y.*/# CONFIG_INIT is not set/' -i .config
+ - sed -e 's/CONFIG_INIT_TERMINAL_TYPE=y.*/CONFIG_INIT_TERMINAL_TYPE=""/' -i .config
+ - sed -e 's/CONFIG_LOSETUP=y.*/# CONFIG_LOSETUP is not set/' -i .config
+ - sed -e 's/CONFIG_LSUSB=y.*/# CONFIG_LSUSB is not set/' -i .config
+ - sed -e 's/CONFIG_LZMA=y.*/# CONFIG_LZMA is not set/' -i .config
+ - sed -e 's/CONFIG_MKFS_EXT2=y.*/# CONFIG_MKFS_EXT2 is not set/' -i .config
+ - sed -e 's/CONFIG_MKFS_MINIX=y.*/# CONFIG_MKFS_MINIX is not set/' -i .config
+ - sed -e 's/CONFIG_RUNLEVEL=y.*/# CONFIG_RUNLEVEL is not set/' -i .config
+ - sed -e 's/CONFIG_STRINGS=y.*/# CONFIG_STRINGS is not set/' -i .config
+ - sed -e 's/CONFIG_UNLZMA=y.*/# CONFIG_UNLZMA is not set/' -i .config
+ - sed -e 's/CONFIG_UNXZ=y.*/# CONFIG_UNXZ is not set/' -i .config
+ - sed -e 's/CONFIG_XZ=y.*/# CONFIG_XZ is not set/' -i .config
+
+build-commands:
+ - |
+ export STAGE2_SYSROOT="$(dirname $(pwd))"
+ export CPPFLAGS="--sysroot=$STAGE2_SYSROOT"
+ export LDFLAGS="-Wl,--sysroot=$STAGE2_SYSROOT"
+ make HOSTCC="/usr/bin/gcc" CROSS_COMPILE=$TARGET_STAGE1-
+
+install-commands:
+ # We expect to be built with a non-standard prefix in stage 2 (i.e. not
+ # /usr). The install will break if prefix is set to /usr.
+ - |
+ export STAGE2_SYSROOT="$(dirname $(pwd))"
+ export CPPFLAGS="--sysroot=$STAGE2_SYSROOT"
+ export LDFLAGS="-Wl,--sysroot=$STAGE2_SYSROOT"
+ make CONFIG_PREFIX="$DESTDIR$PREFIX" \
+ HOSTCC="/usr/bin/gcc" CROSS_COMPILE=$TARGET_STAGE1- install &&
+ chmod 6755 "$DESTDIR$PREFIX"/bin/busybox