2019-05-14 14:05:50 -06:00
|
|
|
#!/bin/sh -e
|
2019-05-14 05:02:11 -06:00
|
|
|
|
2021-06-30 04:19:00 -06:00
|
|
|
for patch in patch/*.patch; do
|
2020-02-20 12:15:54 -07:00
|
|
|
patch -p1 < "$patch"
|
|
|
|
done
|
2020-02-20 11:11:13 -07:00
|
|
|
|
2020-11-19 00:51:06 -07:00
|
|
|
# Remove forced gcc/g++ usage so builds work on gcc-less systems.
|
2021-07-03 14:17:40 -06:00
|
|
|
sed -e "s#= g[c+][c+]#= ${CC:=cc}#g" \
|
|
|
|
-e "s#\(\$(CROSS_COMPILE)\)gcc#\1${CC}#g" Makefile > _
|
|
|
|
mv -f _ Makefile
|
2020-11-19 00:51:06 -07:00
|
|
|
|
2021-07-12 11:24:39 -06:00
|
|
|
case $("$CC" --version) in *clang*)
|
|
|
|
# Disable UB based optimizations which are optimized out by
|
|
|
|
# clang and become null pointer dereferences(?).
|
|
|
|
patch -p1 < patch-clang/fix-UB.patch
|
|
|
|
|
|
|
|
# Ensure that busybox's build system is aware that 'cc' may point
|
|
|
|
# to clang rather than GCC. This is the case in non-GCC systems.
|
2021-07-03 14:17:40 -06:00
|
|
|
sed "s&\(\$(CC),\)clang&\1${CC}&g" Makefile.flags > _
|
|
|
|
mv -f _ Makefile.flags
|
2020-11-19 02:27:12 -07:00
|
|
|
esac
|
|
|
|
|
2019-08-25 11:46:59 -06:00
|
|
|
# Build and install regular busybox.
|
|
|
|
# This excludes utilities which require 'suid' to function.
|
2020-11-19 02:32:27 -07:00
|
|
|
make CC="$CC" HOSTCC="$CC"
|
2019-08-25 11:46:59 -06:00
|
|
|
make CONFIG_PREFIX="$1/usr" install
|
2019-06-30 09:47:11 -06:00
|
|
|
|
2019-08-25 11:46:59 -06:00
|
|
|
# Rename the binary temporarily.
|
|
|
|
mv "$1/usr/bin/busybox" "$1/usr/bin/busybox-nosuid"
|
2019-07-20 10:56:09 -06:00
|
|
|
|
2019-08-25 11:46:59 -06:00
|
|
|
# Build and install suid busybox.
|
|
|
|
# This _only_ includes utlities which require 'suid' to function.
|
|
|
|
cp -f .config-suid .config
|
2020-11-19 02:32:27 -07:00
|
|
|
make CC="$CC" HOSTCC="$CC"
|
2019-08-25 11:46:59 -06:00
|
|
|
make CONFIG_PREFIX="$1/usr" install
|
|
|
|
|
|
|
|
# Aptly name the busybox binaries.
|
2020-04-22 10:27:33 -06:00
|
|
|
mv -f "$1/usr/bin/busybox" "$1/usr/bin/busybox-suid"
|
|
|
|
mv -f "$1/usr/bin/busybox-nosuid" "$1/usr/bin/busybox"
|
2019-08-25 11:46:59 -06:00
|
|
|
|
|
|
|
# Install the non-suid symlinks.
|
|
|
|
"$1/usr/bin/busybox" --list | while read -r bin; do
|
|
|
|
ln -s busybox "$1/usr/bin/$bin"
|
|
|
|
done
|
2019-08-10 19:43:31 -06:00
|
|
|
|
2019-08-25 11:46:59 -06:00
|
|
|
# Install the suid symlinks.
|
|
|
|
"$1/usr/bin/busybox-suid" --list | while read -r bin; do
|
|
|
|
ln -s busybox-suid "$1/usr/bin/$bin"
|
|
|
|
done
|
|
|
|
|
|
|
|
# Set suid on busybox suid.
|
2019-09-02 01:03:11 -06:00
|
|
|
chmod u+s "$1/usr/bin/busybox-suid"
|
2019-08-25 11:46:59 -06:00
|
|
|
|
2020-05-17 00:13:58 -06:00
|
|
|
# The acpid command requires that this directory exist
|
|
|
|
# and does not automatically create it..
|
|
|
|
mkdir -p "$1/etc/acpid"
|
|
|
|
|
2019-08-25 11:46:59 -06:00
|
|
|
# Install runit services.
|
2021-07-01 10:03:35 -06:00
|
|
|
for s in acpid crond syslogd mdev ntpd; do
|
|
|
|
mkdir -p "$1/etc/sv/$s"
|
|
|
|
cp -f "$s.run" "$1/etc/sv/$s/run"
|
|
|
|
ln -sf "/run/runit/supervise.$s" "$1/etc/sv/$s/supervise"
|
|
|
|
done
|
2020-01-20 00:54:08 -07:00
|
|
|
|
2021-07-01 10:03:35 -06:00
|
|
|
cp -f mdev.conf "$1/etc/mdev.conf"
|