Removed busybox, mold, and toybox.

Starting to refactor the system for 2026. The direction previous development was heading did not make sense short term. Let's focus on making a functional system over making optimized choices.
This commit is contained in:
Alexander Hill 2026-01-03 14:58:30 -05:00
parent cb149dd14e
commit 843336d44f
8 changed files with 33 additions and 1736 deletions

View File

@ -8,28 +8,50 @@ Definitions:
| ------------- | ---------- | ------------ |
| `autoconf` | Yes | Yes |
| `automake` | Yes | Yes |
| `busybox` | Yes | Yes |
| `bc` |
| `byacc` | Yes | Yes |
| `bzip2` | Yes | Yes |
| `chrony` |
| `cmake` | Yes | Yes |
| `coreutils` |
| `dhcpcd` |
| `diffutils` |
| `findutils` |
| `flex` | Yes | Yes |
| `gettext` |
| `grep` |
| `groff` | Yes | Yes |
| `gzip` |
| `iproute2` |
| `kbd` |
| `kmod` |
| `less` |
| `libarchive` | Yes | Yes |
| `libcap2` |
| `libelf` | Yes | Yes |
| `libmnl` |
| `libnftnl` |
| `libressl` | Yes | Yes |
| `libtool` | Yes | Yes |
| `libyaml` | Yes | Yes |
| `limine` |
| `linux` | No | No |
| `llvm` | No | No |
| `m4` | Yes | Yes |
| `make` | Yes | Yes |
| `mold` | Yes | Yes |
| `mawk` |
| `muon` | Yes | Yes |
| `musl` | Yes | Yes |
| `nano` | Yes | Yes |
| `nano` |
| `nasm` | Yes | Yes |
| `ncurses` |
| `nftables` |
| `openrc` |
| `patch` |
| `perl` | Yes | Yes |
| `pkgconf` | Yes | Yes |
| `ruby` | Yes | Yes |
| `sed` |
| `shadow` |
| `tar` |
| `xz` | Yes | Yes |
| `zlib` | Yes | Yes |
| `zsh` |

View File

@ -18,10 +18,10 @@ else
export CC=clang
export CXX=clang++
fi
export CFLAGS="-fuse-ld=mold -O3 -march=$MICROARCH -pipe --sysroot=$BOOTSTRAP/root -Wno-unused-command-line-argument"
export CFLAGS="-fuse-ld=lld -O3 -march=$MICROARCH -pipe --sysroot=$BOOTSTRAP/root -Wno-unused-command-line-argument"
export CXXFLAGS=$CFLAGS
export RANLIB=llvm-ranlib
export LD=mold
export LD=ld.lld
export LDFLAGS="--sysroot=$BOOTSTRAP/root"
export TREETAP=$(pwd)/treetap
export TT_DIR=$(pwd)/.treetap
@ -68,7 +68,7 @@ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_LINKER_TYPE MOLD)
set(CMAKE_LINKER_TYPE LLD)
set(CMAKE_SYSROOT "$BOOTSTRAP/root")
set(CMAKE_SYSTEM_NAME Linux)
EOF
@ -201,7 +201,7 @@ NATIVE_TOOL_DIR=$(dirname $(which llvm-tblgen) | sed -z "s/\n//g")
cd llvm-project-*/
cmake -S llvm -B build-llvm \
-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
-DCLANG_DEFAULT_LINKER=mold \
-DCLANG_DEFAULT_LINKER=lld \
-DCLANG_DEFAULT_RTLIB=compiler-rt \
-DCLANG_DEFAULT_UNWINDLIB=libunwind \
-DCLANG_TABLEGEN=$NATIVE_TOOL_DIR/clang-tblgen \
@ -226,7 +226,7 @@ ln -s clang++ $BOOTSTRAP/root/bin/c++
cd ..
# Build remaining software with treetap
SOURCES=(make mold toybox)
SOURCES=(make)
for name in $SOURCES; do
$TREETAP fetch $SPEC/$name/$name.spec
$TREETAP build $SPEC/$name/$name.spec
@ -255,12 +255,10 @@ SOURCES=(
llvm
m4
make
mold
muon
musl
perl
pkgconf
toybox
xz
zlib
)

View File

@ -28,14 +28,13 @@ echo "Done!"
# missing functionality! ~ahill
# NOTE: CMake requires LibreSSL and libarchive to function properly so it is
# built after them. ~ahill
# NOTE: mold requires CMake to build. ~ahill
# NOTE: flex requires byacc and m4 to build. ~ahill
# NOTE: autoconf requires GNU m4 and perl to build. ~ahill
# NOTE: automake requires m4 to build. ~ahill
# NOTE: groff requires Perl to build. ~ahill
# NOTE: nasm requires autoconf and automake to build. ~ahill
cd /maple
PACKAGES="byacc bzip2 libelf libressl m4 make muon musl perl pkgconf toybox xz zlib autoconf automake flex groff libarchive libtool nasm cmake mold"
PACKAGES="byacc bzip2 libelf libressl m4 make muon musl perl pkgconf xz zlib autoconf automake flex groff libarchive libtool nasm cmake"
for pkg in $PACKAGES; do
treetap fetch /maple/sources/$pkg/$pkg.spec
treetap build /maple/sources/$pkg/$pkg.spec

File diff suppressed because it is too large Load Diff

View File

@ -1,43 +0,0 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314"
SRC_NAME="busybox"
SRC_PATCHES="
a35fa3d6687d7cbcaa2d8675208392086d56df0c8719ddbde9f46373b189d0d4 .config
"
SRC_REVISION=4
SRC_URL="https://busybox.net/downloads/busybox-1.36.1.tar.bz2"
SRC_VERSION="1.36.1"
build() {
tar xf ../$SRC_FILENAME
cd busybox-$SRC_VERSION/
cp ../.config .
# NOTE: Like we did with musl before, we don't set CROSS_COMPILE because
# LLVM is smart and doesn't need a compiler to cross-compile code.
# With that said, Busybox uses Kbuild, which hard-codes variables like
# CC to GNU-based tools, which is not what we want. The following sed
# hack should do the trick, but I wonder if there's a better solution.
# ~ahill
sed -i "s/?*= \$(CROSS_COMPILE)/?= /" Makefile
# NOTE: Apparently, Busybox fails to properly check for ncurses since the
# test compiles a main function without a return value type, causing
# the compilation to fail. This patch fixes the issue by making the
# returned type "void". This doesn't actually affect the build, but
# I'm not sure where else to put this. ~ahill
sed -i "s/main()/void main()/" scripts/kconfig/lxdialog/check-lxdialog.sh
# NOTE: AR, CC, and HOSTCC are required here due to GNU dependencies. ~ahill
make -O -j $TT_PROCS AR=ar CC=clang HOSTCC=clang
}
clean() {
rm -rf busybox-$SRC_VERSION/
}
package() {
cd busybox-$SRC_VERSION/
# NOTE: Busybox doesn't have a proper DESTDIR, so we just set CONFIG_PREFIX
# during the install to work around this limitation. ~ahill
# NOTE: Once again, AR, CC, and HOSTCC are set because we're using LLVM and
# not GCC. ~ahill
make -O -j $TT_PROCS install AR=ar CC=clang CONFIG_PREFIX=$TT_INSTALLDIR HOSTCC=$CC
}

View File

@ -1,28 +0,0 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_FILENAME="mold-2.40.4.tar.gz"
SRC_HASH="69414c702ec1084e1fa8ca16da24f167f549e5e11e9ecd5d70a8dcda6f08c249"
SRC_NAME="mold"
SRC_URL="https://github.com/rui314/mold/archive/refs/tags/v2.40.4.tar.gz"
SRC_VERSION="2.40.4"
build() {
tar xf ../$SRC_FILENAME
cd mold-*/
cmake -B build $TT_CMAKE_COMMON
cmake --build build --parallel $TT_PROCS
}
clean() {
rm -rf mold-*/
}
package() {
cd mold-*/
# NOTE: Setting --prefix here is ineffective because GNUInstallDirs are used
# in install functions despite CMake's documentation warning against
# such a thing for this exact reason. ~ahill
# See also: https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html
cmake --install build --parallel $TT_PROCS
mkdir -p $TT_INSTALLDIR$TT_BINDIR
ln -sf mold $TT_INSTALLDIR$TT_BINDIR/ld
}

View File

@ -1,392 +0,0 @@
#
# Automatically generated make config: don't edit
# ToyBox version: KCONFIG_VERSION
# Sun Dec 21 19:29:09 2025
#
# CONFIG_TOYBOX_ON_ANDROID is not set
CONFIG_TOYBOX_FORK=y
#
# Posix commands
#
CONFIG_BASENAME=y
CONFIG_CAL=y
CONFIG_CAT=y
CONFIG_CHGRP=y
CONFIG_CHOWN=y
CONFIG_CHMOD=y
CONFIG_CKSUM=y
CONFIG_CRC32=y
CONFIG_CMP=y
CONFIG_COMM=y
CONFIG_CP=y
CONFIG_MV=y
CONFIG_INSTALL=y
CONFIG_CPIO=y
CONFIG_CUT=y
CONFIG_DATE=y
CONFIG_DD=y
CONFIG_DF=y
CONFIG_DIRNAME=y
CONFIG_DU=y
CONFIG_ECHO=y
CONFIG_ENV=y
CONFIG_EXPAND=y
CONFIG_FALSE=y
CONFIG_FILE=y
CONFIG_FIND=y
CONFIG_FOLD=y
CONFIG_GETCONF=y
CONFIG_GREP=y
CONFIG_EGREP=y
CONFIG_FGREP=y
CONFIG_HEAD=y
CONFIG_ICONV=y
CONFIG_ID=y
CONFIG_GROUPS=y
CONFIG_LOGNAME=y
CONFIG_WHOAMI=y
CONFIG_KILL=y
CONFIG_KILLALL5=y
CONFIG_LINK=y
CONFIG_LN=y
CONFIG_LOGGER=y
CONFIG_LS=y
CONFIG_MKDIR=y
CONFIG_MKFIFO=y
CONFIG_NICE=y
CONFIG_NL=y
CONFIG_NOHUP=y
CONFIG_OD=y
CONFIG_PASTE=y
CONFIG_PATCH=y
CONFIG_PRINTF=y
CONFIG_PS=y
CONFIG_TOP=y
CONFIG_IOTOP=y
CONFIG_PGREP=y
CONFIG_PKILL=y
CONFIG_PWD=y
CONFIG_RENICE=y
CONFIG_RM=y
CONFIG_RMDIR=y
CONFIG_SED=y
CONFIG_SLEEP=y
CONFIG_SORT=y
CONFIG_SPLIT=y
CONFIG_STRINGS=y
CONFIG_TAIL=y
CONFIG_TAR=y
CONFIG_TEE=y
CONFIG_TEST=y
CONFIG_TEST_GLUE=y
CONFIG_TIME=y
CONFIG_TOUCH=y
CONFIG_TRUE=y
CONFIG_TSORT=y
CONFIG_TTY=y
CONFIG_ULIMIT=y
CONFIG_ARCH=y
CONFIG_UNAME=y
CONFIG_UNIQ=y
CONFIG_UNLINK=y
CONFIG_UUDECODE=y
CONFIG_UUENCODE=y
CONFIG_WC=y
CONFIG_WHO=y
CONFIG_XARGS=y
#
# Pending (unfinished) commands
#
# CONFIG_ARP is not set
# CONFIG_ARPING is not set
CONFIG_AWK=y
CONFIG_BC=y
# CONFIG_BOOTCHARTD is not set
# CONFIG_BRCTL is not set
CONFIG_CHSH=y
CONFIG_CROND=y
CONFIG_CRONTAB=y
# CONFIG_CSPLIT is not set
# CONFIG_DHCP is not set
# CONFIG_DHCP6 is not set
# CONFIG_DHCPD is not set
# CONFIG_DEBUG_DHCP is not set
CONFIG_DIFF=y
# CONFIG_DUMPLEASES is not set
CONFIG_EXPR=y
CONFIG_FDISK=y
CONFIG_FSCK=y
# CONFIG_GETFATTR is not set
CONFIG_GETTY=y
# CONFIG_GITCOMPAT is not set
# CONFIG_GITCLONE is not set
# CONFIG_GITINIT is not set
# CONFIG_GITREMOTE is not set
# CONFIG_GITFETCH is not set
# CONFIG_GITCHECKOUT is not set
CONFIG_GROUPADD=y
CONFIG_GROUPDEL=y
CONFIG_HEXDUMP=y
# CONFIG_INIT is not set
CONFIG_IP=y
CONFIG_IPCRM=y
CONFIG_IPCS=y
# CONFIG_KLOGD is not set
CONFIG_LAST=y
CONFIG_LSOF=y
CONFIG_MAN=y
CONFIG_MDEV=y
CONFIG_MDEV_CONF=y
CONFIG_MODPROBE=y
CONFIG_MORE=y
CONFIG_ROUTE=y
CONFIG_SH=y
# CONFIG_ALIAS is not set
# CONFIG_BREAK is not set
# CONFIG_CD is not set
# CONFIG_CONTINUE is not set
# CONFIG_DECLARE is not set
# CONFIG_EXIT is not set
# CONFIG_SET is not set
# CONFIG_UNSET is not set
# CONFIG_EVAL is not set
# CONFIG_EXEC is not set
# CONFIG_EXPORT is not set
# CONFIG_JOBS is not set
# CONFIG_LOCAL is not set
# CONFIG_RETURN is not set
# CONFIG_SHIFT is not set
# CONFIG_SOURCE is not set
# CONFIG_TRAP is not set
# CONFIG_UNALIAS is not set
# CONFIG_WAIT is not set
# CONFIG_STRACE is not set
# CONFIG_STTY is not set
# CONFIG_SULOGIN is not set
# CONFIG_SYSLOGD is not set
# CONFIG_TCPSVD is not set
CONFIG_TELNET=y
# CONFIG_TELNETD is not set
CONFIG_TFTP=y
CONFIG_TFTPD=y
CONFIG_TR=y
CONFIG_TRACEROUTE=y
CONFIG_USERADD=y
CONFIG_USERDEL=y
# CONFIG_VI is not set
# CONFIG_XZCAT is not set
#
# Other commands
#
CONFIG_ACPI=y
CONFIG_ASCII=y
CONFIG_UNICODE=y
CONFIG_BASE64=y
CONFIG_BASE32=y
CONFIG_BLKDISCARD=y
CONFIG_BLKID=y
CONFIG_FSTYPE=y
CONFIG_BLOCKDEV=y
# CONFIG_BUNZIP2 is not set
# CONFIG_BZCAT is not set
# CONFIG_CHCON is not set
CONFIG_CHROOT=y
CONFIG_CHRT=y
CONFIG_CLEAR=y
CONFIG_COUNT=y
CONFIG_DEVMEM=y
CONFIG_DOS2UNIX=y
CONFIG_UNIX2DOS=y
CONFIG_EJECT=y
CONFIG_FACTOR=y
CONFIG_FALLOCATE=y
CONFIG_FLOCK=y
CONFIG_FMT=y
CONFIG_FREE=y
CONFIG_FREERAMDISK=y
CONFIG_FSFREEZE=y
CONFIG_FSYNC=y
CONFIG_GETOPT=y
CONFIG_GPIODETECT=y
CONFIG_GPIOFIND=y
CONFIG_GPIOINFO=y
CONFIG_GPIOGET=y
CONFIG_GPIOSET=y
CONFIG_HD=y
CONFIG_HELP=y
CONFIG_HEXEDIT=y
CONFIG_HWCLOCK=y
CONFIG_I2CDETECT=y
CONFIG_I2CDUMP=y
CONFIG_I2CGET=y
CONFIG_I2CSET=y
CONFIG_I2CTRANSFER=y
CONFIG_INOTIFYD=y
CONFIG_INSMOD=y
CONFIG_IONICE=y
CONFIG_IORENICE=y
CONFIG_LINUX32=y
CONFIG_LOGIN=y
CONFIG_LOSETUP=y
CONFIG_LSATTR=y
CONFIG_CHATTR=y
CONFIG_LSMOD=y
CONFIG_LSPCI=y
CONFIG_LSUSB=y
CONFIG_MAKEDEVS=y
CONFIG_MCOOKIE=y
CONFIG_MEMEATER=y
CONFIG_MIX=y
CONFIG_MKPASSWD=y
CONFIG_MKSWAP=y
CONFIG_MODINFO=y
CONFIG_MOUNTPOINT=y
CONFIG_NBD_CLIENT=y
CONFIG_NBD_SERVER=y
CONFIG_NOLOGIN=y
CONFIG_UNSHARE=y
CONFIG_NSENTER=y
CONFIG_ONEIT=y
CONFIG_OPENVT=y
CONFIG_CHVT=y
CONFIG_DEALLOCVT=y
CONFIG_PARTPROBE=y
CONFIG_PIVOT_ROOT=y
CONFIG_PMAP=y
CONFIG_PRINTENV=y
CONFIG_PWDX=y
CONFIG_PWGEN=y
CONFIG_READAHEAD=y
CONFIG_READELF=y
CONFIG_READLINK=y
CONFIG_REALPATH=y
CONFIG_REBOOT=y
CONFIG_RESET=y
CONFIG_REV=y
CONFIG_RMMOD=y
CONFIG_RTCWAKE=y
CONFIG_SETFATTR=y
CONFIG_SETSID=y
CONFIG_SHA3SUM=y
CONFIG_SHRED=y
CONFIG_SHUF=y
CONFIG_STAT=y
CONFIG_SWAPOFF=y
CONFIG_SWAPON=y
CONFIG_SWITCH_ROOT=y
CONFIG_SYSCTL=y
CONFIG_TAC=y
CONFIG_NPROC=y
CONFIG_TASKSET=y
CONFIG_TIMEOUT=y
CONFIG_TRUNCATE=y
CONFIG_TS=y
CONFIG_UCLAMPSET=y
CONFIG_UPTIME=y
CONFIG_USLEEP=y
CONFIG_UUIDGEN=y
CONFIG_VCONFIG=y
CONFIG_VMSTAT=y
CONFIG_W=y
CONFIG_WATCH=y
CONFIG_WATCHDOG=y
CONFIG_WHICH=y
CONFIG_XXD=y
CONFIG_YES=y
#
# Networking commands
#
CONFIG_FTPGET=y
CONFIG_FTPPUT=y
CONFIG_HOST=y
CONFIG_HTTPD=y
CONFIG_IFCONFIG=y
CONFIG_MICROCOM=y
CONFIG_NETCAT=y
CONFIG_NETSTAT=y
CONFIG_PING=y
CONFIG_RFKILL=y
CONFIG_SNTP=y
CONFIG_TUNCTL=y
CONFIG_WGET=y
# CONFIG_WGET_LIBTLS is not set
#
# Linux Standard Base commands
#
CONFIG_DMESG=y
CONFIG_GZIP=y
CONFIG_GUNZIP=y
CONFIG_ZCAT=y
CONFIG_HOSTNAME=y
CONFIG_DNSDOMAINNAME=y
CONFIG_KILLALL=y
CONFIG_MD5SUM=y
CONFIG_SHA1SUM=y
CONFIG_SHA224SUM=y
CONFIG_SHA256SUM=y
CONFIG_SHA384SUM=y
CONFIG_SHA512SUM=y
CONFIG_MKNOD=y
CONFIG_MKTEMP=y
CONFIG_MOUNT=y
CONFIG_PASSWD=y
# CONFIG_PASSWD_SAD is not set
CONFIG_PIDOF=y
CONFIG_SEQ=y
CONFIG_SU=y
CONFIG_SYNC=y
CONFIG_UMOUNT=y
#
# Example commands
#
# CONFIG_DEMO_MANY_OPTIONS is not set
# CONFIG_DEMO_NUMBER is not set
# CONFIG_DEMO_SCANKEY is not set
# CONFIG_DEMO_UTF8TOWC is not set
# CONFIG_HELLO is not set
# CONFIG_HOSTID is not set
# CONFIG_LOGPATH is not set
# CONFIG_SKELETON is not set
# CONFIG_SKELETON_ALIAS is not set
#
# Android commands
#
# CONFIG_GETENFORCE is not set
# CONFIG_LOAD_POLICY is not set
# CONFIG_LOG is not set
# CONFIG_RESTORECON is not set
# CONFIG_RUNCON is not set
# CONFIG_SENDEVENT is not set
# CONFIG_SETENFORCE is not set
#
#
#
#
# Toybox global settings
#
CONFIG_TOYBOX=y
CONFIG_TOYBOX_SUID=y
CONFIG_TOYBOX_LSM_NONE=y
# CONFIG_TOYBOX_SELINUX is not set
# CONFIG_TOYBOX_SMACK is not set
# CONFIG_TOYBOX_LIBCRYPTO is not set
# CONFIG_TOYBOX_LIBZ is not set
CONFIG_TOYBOX_FLOAT=y
CONFIG_TOYBOX_HELP=y
CONFIG_TOYBOX_HELP_DASHDASH=y
CONFIG_TOYBOX_ZHELP=y
# CONFIG_TOYBOX_FREE is not set
# CONFIG_TOYBOX_NORECURSE is not set
# CONFIG_TOYBOX_DEBUG is not set
CONFIG_TOYBOX_UID_SYS=100
CONFIG_TOYBOX_UID_USR=1000
# CONFIG_TOYBOX_FORCE_NOMMU is not set

View File

@ -1,28 +0,0 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="9d4c124d7d731a2db399f6278baa2b42c2e3511f610c6ad30cc3f1a52581334b"
SRC_NAME="toybox"
SRC_PATCHES="
f4dda4662bead0679256f54b1770faa57c1bfea9462778edf537644d1e5aa3b0 .config
"
SRC_URL="https://landley.net/toybox/downloads/toybox-0.8.13.tar.gz"
SRC_VERSION="0.8.13"
build() {
tar xf ../$SRC_FILENAME
cd toybox-$SRC_VERSION/
# NOTE: make defconfig seems to do more than simply configure toybox. We'll
# run it to set *something* up, then overwrite the configuration with
# what I saved before. ~ahill
make defconfig
cp ../.config .
make -j $TT_PROCS
}
clean() {
rm -rf toybox-$SRC_VERSION/
}
package() {
cd toybox-$SRC_VERSION/
PREFIX=$TT_INSTALLDIR/bin ./scripts/install.sh --symlink
}