summaryrefslogtreecommitdiff
path: root/busybox.morph
blob: 73dfee2c20b72a187d55e0193e344251ec494c09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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'

    # 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_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_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_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 fin in systemd-units/*.in
      do
          f=$(echo "$fin" | sed 's/\.in$//')
          sed -e 's|@rootprefix@||g' "$fin" >"$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
    - install scripts/run-ntpd-with-config "$DESTDIR$PREFIX"/sbin/.
    - install -d "$DESTDIR/etc"
    - |
      cat << EOF > "$DESTDIR/etc/ntpd.conf"
      server 0.pool.ntp.org
      server 1.pool.ntp.org
      server 2.pool.ntp.org
      server 3.pool.ntp.org
      EOF