repo/core/busybox/build

66 lines
1.9 KiB
Plaintext
Raw Normal View History

2019-05-14 20:05:50 +00:00
#!/bin/sh -e
2019-05-14 11:02:11 +00:00
2021-06-30 10:19:00 +00:00
for patch in patch/*.patch; do
2020-02-20 19:15:54 +00:00
patch -p1 < "$patch"
done
# Remove forced gcc/g++ usage so builds work on gcc-less systems.
2021-07-18 03:51:20 +00:00
sed -e "s#= g[c+][c+]#= $CC#g" \
-e "s#\(\$(CROSS_COMPILE)\)gcc#\1$CC#g" Makefile > _
2021-07-03 20:17:40 +00:00
mv -f _ Makefile
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-18 03:51:20 +00:00
sed "s&\(\$(CC),\)clang&\1$CC&g" Makefile.flags > _
2021-07-03 20:17:40 +00:00
mv -f _ Makefile.flags
esac
# Build and install regular busybox.
# This excludes utilities which require 'suid' to function.
2021-07-18 03:51:20 +00:00
make V=1 HOSTCC="$CC"
make CONFIG_PREFIX="$1/usr" install
# Rename the binary temporarily.
mv "$1/usr/bin/busybox" "$1/usr/bin/busybox-nosuid"
# Build and install suid busybox.
# This _only_ includes utlities which require 'suid' to function.
cp -f .config-suid .config
2021-07-18 03:51:20 +00:00
make HOSTCC="$CC"
make CONFIG_PREFIX="$1/usr" install
# Aptly name the busybox binaries.
2020-04-22 16:27:33 +00:00
mv -f "$1/usr/bin/busybox" "$1/usr/bin/busybox-suid"
mv -f "$1/usr/bin/busybox-nosuid" "$1/usr/bin/busybox"
# 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-11 01:43:31 +00: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 07:03:11 +00:00
chmod u+s "$1/usr/bin/busybox-suid"
2020-05-17 06:13:58 +00:00
# The acpid command requires that this directory exist
# and does not automatically create it..
mkdir -p "$1/etc/acpid"
# Install runit services.
2021-07-01 16:03:35 +00: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 07:54:08 +00:00
2021-07-01 16:03:35 +00:00
cp -f mdev.conf "$1/etc/mdev.conf"