Integrated Treetap into Maple Linux #1

Merged
ahill merged 74 commits from treetap into main 2026-01-25 22:51:04 +00:00
13 changed files with 188 additions and 184 deletions
Showing only changes of commit 70055d5bc8 - Show all commits

View File

@ -9,7 +9,7 @@ Definitions:
| `autoconf` | Yes | Yes | | `autoconf` | Yes | Yes |
| `automake` | Yes | Yes | | `automake` | Yes | Yes |
| `bsdutils` | Yes | Yes | | `bsdutils` | Yes | Yes |
| `busybox` | No | No | | `busybox` | Yes | Yes |
| `byacc` | Yes | Yes | | `byacc` | Yes | Yes |
| `bzip2` | Yes | Yes | | `bzip2` | Yes | Yes |
| `cmake` | Yes | Yes | | `cmake` | Yes | Yes |

View File

@ -32,8 +32,9 @@ make -j $(nproc) install DESTDIR=/ > /dev/null 2>&1
# NOTE: autoconf requires GNU m4 and perl to build. ~ahill # NOTE: autoconf requires GNU m4 and perl to build. ~ahill
# NOTE: automake requires m4 to build. ~ahill # NOTE: automake requires m4 to build. ~ahill
# NOTE: musl-fts requires autoconf, automake, and libtool to build. ~ahill # NOTE: musl-fts requires autoconf, automake, and libtool to build. ~ahill
# NOTE: bsdutils requires musl-fts and muon to build. ~ahill
cd /maple cd /maple
PACKAGES="byacc bzip2 libressl m4 make muon musl ncurses perl pkgconf xz zlib autoconf automake editline flex libarchive libtool musl-fts cmake mold" PACKAGES="busybox byacc bzip2 groff libressl m4 make muon musl nasm ncurses perl pkgconf xz zlib autoconf automake editline flex libarchive libtool musl-fts bsdutils cmake mold"
for pkg in $PACKAGES; do for pkg in $PACKAGES; do
treetap fetch /maple/sources/$pkg/$pkg.spec treetap fetch /maple/sources/$pkg/$pkg.spec
treetap build /maple/sources/$pkg/$pkg.spec treetap build /maple/sources/$pkg/$pkg.spec

View File

@ -2,93 +2,13 @@
SRC_FILENAME="bsdutils-13.2.tar.gz" SRC_FILENAME="bsdutils-13.2.tar.gz"
SRC_HASH="4547990309afe686c6f36c2a4f7ac5806e0064b182dd1f93f52dda7661979a3c" SRC_HASH="4547990309afe686c6f36c2a4f7ac5806e0064b182dd1f93f52dda7661979a3c"
SRC_NAME="bsdutils" SRC_NAME="bsdutils"
SRC_REVISION=1
SRC_URL="https://codeberg.org/dcantrell/bsdutils/archive/v13.2.tar.gz" SRC_URL="https://codeberg.org/dcantrell/bsdutils/archive/v13.2.tar.gz"
SRC_VERSION="13.2" SRC_VERSION="13.2"
# TODO: Determine which utilities should be moved to bsdutils and which should # NOTE: Even though the install implementation from bsdutils is being used, some
# stick with Busybox. ~ahill # packages may try to use -D and -t, which are only supported under
# [ # Busybox's implementation. ~ahill
# bc
# cat
# chgrp
# chmod
# chown
# chroot
# cksum
# comm
# cp
# csplit
# cut
# date
# dc
# dd
# dirname
# du
# echo
# env
# expand
# expr
# factor
# false
# fmt
# fold
# groups
# head
# hexdump
# hostname
# id
# install
# join
# kill
# ln
# logname
# ls
# mkdir
# mkfifo
# mknod
# mktemp
# mv
# nice
# nl
# nohup
# paste
# pathchk
# pr
# printenv
# printf
# pwd
# readlink
# realpath
# rm
# rmdir
# sed
# seq
# sleep
# split
# stat
# stdbuf
# stty
# sync
# tail
# tee
# test
# timeout
# touch
# tr
# true
# truncate
# tsort
# tty
# uname
# unexpand
# uniq
# unlink
# users
# which
# who
# whoami
# xargs
# yes
build() { build() {
tar xf ../$SRC_FILENAME tar xf ../$SRC_FILENAME
@ -104,9 +24,50 @@ build() {
# dependency from being introduced. ~ahill # dependency from being introduced. ~ahill
sed -i "/'find'/d" src/meson.build sed -i "/'find'/d" src/meson.build
# NOTE: Finally, we have a *lot* of duplicate commands between bsdutils and # NOTE: Finally, we have a *lot* of duplicate commands between bsdutils and
# Busybox. Busybox takes priority unless the bsdutils version has more # Busybox. After reviewing *all* of the commands they share, these are
# functionality. ~ahill # the commands I believe Busybox should handle. ~ahill
# ... sed -i "/'dirname'/d" src/meson.build
sed -i "/'echo'/d" src/meson.build
sed -i "/'expand'/d" src/meson.build
sed -i "/'expr'/d" src/meson.build
sed -i "/'false'/d" src/meson.build
sed -i "/'fold'/d" src/meson.build
sed -i "/'groups'/d" src/meson.build
sed -i "/'head'/d" src/meson.build
sed -i "/'hexdump'/d" src/meson.build
sed -i "/'kill'/d" src/meson.build
sed -i "/'ln'/d" src/meson.build
sed -i "/'logname'/d" src/meson.build
sed -i "/'ls'/d" src/meson.build
sed -i "/'mkdir'/d" src/meson.build
sed -i "/'mkfifo'/d" src/meson.build
sed -i "/'mknod'/d" src/meson.build
sed -i "/'mktemp'/d" src/meson.build
sed -i "/'mv'/d" src/meson.build
sed -i "/'nice'/d" src/meson.build
sed -i "/'nohup'/d" src/meson.build
sed -i "/'paste'/d" src/meson.build
sed -i "/'printenv'/d" src/meson.build
sed -i "/'printf'/d" src/meson.build
sed -i "/'pwd'/d" src/meson.build
sed -i "/'rm'/d" src/meson.build
sed -i "/'rmdir'/d" src/meson.build
sed -i "/'sed'/d" src/meson.build
sed -i "/'sleep'/d" src/meson.build
sed -i "/'stat'/d" src/meson.build
sed -i "/'stty'/d" src/meson.build
sed -i "/'sync'/d" src/meson.build
sed -i "/'tail'/d" src/meson.build
sed -i "/'tee'/d" src/meson.build
sed -i "/'test'/d" src/meson.build
sed -i "/'true'/d" src/meson.build
sed -i "/'tty'/d" src/meson.build
sed -i "/'uname'/d" src/meson.build
sed -i "/'unexpand'/d" src/meson.build
sed -i "/'uniq'/d" src/meson.build
sed -i "/'users'/d" src/meson.build
sed -i "/'whoami'/d" src/meson.build
sed -i "/'xargs'/d" src/meson.build
muon setup $TT_MESON_COMMON build muon setup $TT_MESON_COMMON build
muon samu -C build muon samu -C build
} }

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Busybox version: 1.36.1 # Busybox version: 1.36.1
# Sun Nov 23 09:24:20 2025 # Sun Dec 7 02:40:00 2025
# #
CONFIG_HAVE_DOT_CONFIG=y CONFIG_HAVE_DOT_CONFIG=y
@ -54,7 +54,7 @@ CONFIG_EXTRA_LDFLAGS=""
CONFIG_EXTRA_LDLIBS="" CONFIG_EXTRA_LDLIBS=""
# CONFIG_USE_PORTABLE_CODE is not set # CONFIG_USE_PORTABLE_CODE is not set
CONFIG_STACK_OPTIMIZATION_386=y CONFIG_STACK_OPTIMIZATION_386=y
CONFIG_STATIC_LIBGCC=y # CONFIG_STATIC_LIBGCC is not set
# #
# Installation Options ("make install" behavior) # Installation Options ("make install" behavior)
@ -149,17 +149,17 @@ CONFIG_FEATURE_SEAMLESS_GZ=y
CONFIG_GUNZIP=y CONFIG_GUNZIP=y
CONFIG_ZCAT=y CONFIG_ZCAT=y
CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y
CONFIG_BUNZIP2=y # CONFIG_BUNZIP2 is not set
CONFIG_BZCAT=y # CONFIG_BZCAT is not set
# CONFIG_UNLZMA is not set # CONFIG_UNLZMA is not set
# CONFIG_LZCAT is not set # CONFIG_LZCAT is not set
# CONFIG_LZMA is not set # CONFIG_LZMA is not set
# CONFIG_UNXZ is not set # CONFIG_UNXZ is not set
# CONFIG_XZCAT is not set # CONFIG_XZCAT is not set
# CONFIG_XZ is not set # CONFIG_XZ is not set
CONFIG_BZIP2=y # CONFIG_BZIP2 is not set
CONFIG_BZIP2_SMALL=8 CONFIG_BZIP2_SMALL=0
CONFIG_FEATURE_BZIP2_DECOMPRESS=y # CONFIG_FEATURE_BZIP2_DECOMPRESS is not set
# CONFIG_CPIO is not set # CONFIG_CPIO is not set
# CONFIG_FEATURE_CPIO_O is not set # CONFIG_FEATURE_CPIO_O is not set
# CONFIG_FEATURE_CPIO_P is not set # CONFIG_FEATURE_CPIO_P is not set
@ -217,56 +217,56 @@ CONFIG_FEATURE_PRESERVE_HARDLINKS=y
# #
CONFIG_FEATURE_HUMAN_READABLE=y CONFIG_FEATURE_HUMAN_READABLE=y
CONFIG_BASENAME=y CONFIG_BASENAME=y
CONFIG_CAT=y # CONFIG_CAT is not set
CONFIG_FEATURE_CATN=y # CONFIG_FEATURE_CATN is not set
CONFIG_FEATURE_CATV=y # CONFIG_FEATURE_CATV is not set
CONFIG_CHGRP=y # CONFIG_CHGRP is not set
CONFIG_CHMOD=y # CONFIG_CHMOD is not set
CONFIG_CHOWN=y # CONFIG_CHOWN is not set
CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y # CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set
CONFIG_CHROOT=y # CONFIG_CHROOT is not set
CONFIG_CKSUM=y # CONFIG_CKSUM is not set
CONFIG_CRC32=y CONFIG_CRC32=y
CONFIG_COMM=y # CONFIG_COMM is not set
CONFIG_CP=y # CONFIG_CP is not set
CONFIG_FEATURE_CP_LONG_OPTIONS=y # CONFIG_FEATURE_CP_LONG_OPTIONS is not set
CONFIG_FEATURE_CP_REFLINK=y # CONFIG_FEATURE_CP_REFLINK is not set
CONFIG_CUT=y # CONFIG_CUT is not set
CONFIG_FEATURE_CUT_REGEX=y # CONFIG_FEATURE_CUT_REGEX is not set
CONFIG_DATE=y # CONFIG_DATE is not set
CONFIG_FEATURE_DATE_ISOFMT=y # CONFIG_FEATURE_DATE_ISOFMT is not set
# CONFIG_FEATURE_DATE_NANO is not set # CONFIG_FEATURE_DATE_NANO is not set
CONFIG_FEATURE_DATE_COMPAT=y # CONFIG_FEATURE_DATE_COMPAT is not set
CONFIG_DD=y # CONFIG_DD is not set
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y # CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y # CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set
CONFIG_FEATURE_DD_IBS_OBS=y # CONFIG_FEATURE_DD_IBS_OBS is not set
CONFIG_FEATURE_DD_STATUS=y # CONFIG_FEATURE_DD_STATUS is not set
CONFIG_DF=y CONFIG_DF=y
CONFIG_FEATURE_DF_FANCY=y CONFIG_FEATURE_DF_FANCY=y
CONFIG_FEATURE_SKIP_ROOTFS=y CONFIG_FEATURE_SKIP_ROOTFS=y
CONFIG_DIRNAME=y CONFIG_DIRNAME=y
CONFIG_DOS2UNIX=y CONFIG_DOS2UNIX=y
CONFIG_UNIX2DOS=y CONFIG_UNIX2DOS=y
CONFIG_DU=y # CONFIG_DU is not set
CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y # CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K is not set
CONFIG_ECHO=y CONFIG_ECHO=y
CONFIG_FEATURE_FANCY_ECHO=y CONFIG_FEATURE_FANCY_ECHO=y
CONFIG_ENV=y # CONFIG_ENV is not set
CONFIG_EXPAND=y CONFIG_EXPAND=y
CONFIG_UNEXPAND=y CONFIG_UNEXPAND=y
CONFIG_EXPR=y CONFIG_EXPR=y
CONFIG_EXPR_MATH_SUPPORT_64=y CONFIG_EXPR_MATH_SUPPORT_64=y
CONFIG_FACTOR=y # CONFIG_FACTOR is not set
CONFIG_FALSE=y CONFIG_FALSE=y
CONFIG_FOLD=y CONFIG_FOLD=y
CONFIG_HEAD=y CONFIG_HEAD=y
CONFIG_FEATURE_FANCY_HEAD=y CONFIG_FEATURE_FANCY_HEAD=y
CONFIG_HOSTID=y CONFIG_HOSTID=y
CONFIG_ID=y # CONFIG_ID is not set
CONFIG_GROUPS=y CONFIG_GROUPS=y
CONFIG_INSTALL=y # CONFIG_INSTALL is not set
CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y # CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
CONFIG_LINK=y CONFIG_LINK=y
CONFIG_LN=y CONFIG_LN=y
CONFIG_LOGNAME=y CONFIG_LOGNAME=y
@ -296,7 +296,7 @@ CONFIG_MKNOD=y
CONFIG_MKTEMP=y CONFIG_MKTEMP=y
CONFIG_MV=y CONFIG_MV=y
CONFIG_NICE=y CONFIG_NICE=y
CONFIG_NL=y # CONFIG_NL is not set
CONFIG_NOHUP=y CONFIG_NOHUP=y
CONFIG_NPROC=y CONFIG_NPROC=y
CONFIG_OD=y CONFIG_OD=y
@ -304,12 +304,12 @@ CONFIG_PASTE=y
CONFIG_PRINTENV=y CONFIG_PRINTENV=y
CONFIG_PRINTF=y CONFIG_PRINTF=y
CONFIG_PWD=y CONFIG_PWD=y
CONFIG_READLINK=y # CONFIG_READLINK is not set
CONFIG_FEATURE_READLINK_FOLLOW=y # CONFIG_FEATURE_READLINK_FOLLOW is not set
CONFIG_REALPATH=y # CONFIG_REALPATH is not set
CONFIG_RM=y CONFIG_RM=y
CONFIG_RMDIR=y CONFIG_RMDIR=y
CONFIG_SEQ=y # CONFIG_SEQ is not set
CONFIG_SHRED=y CONFIG_SHRED=y
CONFIG_SHUF=y CONFIG_SHUF=y
CONFIG_SLEEP=y CONFIG_SLEEP=y
@ -317,8 +317,8 @@ CONFIG_FEATURE_FANCY_SLEEP=y
CONFIG_SORT=y CONFIG_SORT=y
CONFIG_FEATURE_SORT_BIG=y CONFIG_FEATURE_SORT_BIG=y
# CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set # CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set
CONFIG_SPLIT=y # CONFIG_SPLIT is not set
CONFIG_FEATURE_SPLIT_FANCY=y # CONFIG_FEATURE_SPLIT_FANCY is not set
CONFIG_STAT=y CONFIG_STAT=y
CONFIG_FEATURE_STAT_FORMAT=y CONFIG_FEATURE_STAT_FORMAT=y
CONFIG_FEATURE_STAT_FILESYSTEM=y CONFIG_FEATURE_STAT_FILESYSTEM=y
@ -336,21 +336,21 @@ CONFIG_TEST=y
CONFIG_TEST1=y CONFIG_TEST1=y
CONFIG_TEST2=y CONFIG_TEST2=y
CONFIG_FEATURE_TEST_64=y CONFIG_FEATURE_TEST_64=y
CONFIG_TIMEOUT=y # CONFIG_TIMEOUT is not set
CONFIG_TOUCH=y # CONFIG_TOUCH is not set
CONFIG_FEATURE_TOUCH_SUSV3=y # CONFIG_FEATURE_TOUCH_SUSV3 is not set
CONFIG_TR=y # CONFIG_TR is not set
CONFIG_FEATURE_TR_CLASSES=y # CONFIG_FEATURE_TR_CLASSES is not set
CONFIG_FEATURE_TR_EQUIV=y # CONFIG_FEATURE_TR_EQUIV is not set
CONFIG_TRUE=y CONFIG_TRUE=y
CONFIG_TRUNCATE=y # CONFIG_TRUNCATE is not set
CONFIG_TSORT=y # CONFIG_TSORT is not set
CONFIG_TTY=y CONFIG_TTY=y
CONFIG_UNAME=y CONFIG_UNAME=y
CONFIG_UNAME_OSNAME="GNU/Linux" CONFIG_UNAME_OSNAME="GNU/Linux"
CONFIG_BB_ARCH=y CONFIG_BB_ARCH=y
CONFIG_UNIQ=y CONFIG_UNIQ=y
CONFIG_UNLINK=y # CONFIG_UNLINK is not set
CONFIG_USLEEP=y CONFIG_USLEEP=y
CONFIG_UUDECODE=y CONFIG_UUDECODE=y
CONFIG_BASE32=y CONFIG_BASE32=y
@ -358,11 +358,11 @@ CONFIG_BASE64=y
CONFIG_UUENCODE=y CONFIG_UUENCODE=y
CONFIG_WC=y CONFIG_WC=y
CONFIG_FEATURE_WC_LARGE=y CONFIG_FEATURE_WC_LARGE=y
CONFIG_WHO=y # CONFIG_WHO is not set
CONFIG_W=y CONFIG_W=y
CONFIG_USERS=y CONFIG_USERS=y
CONFIG_WHOAMI=y CONFIG_WHOAMI=y
CONFIG_YES=y # CONFIG_YES is not set
# #
# Console Utilities # Console Utilities
@ -404,7 +404,7 @@ CONFIG_FEATURE_RUN_PARTS_FANCY=y
CONFIG_START_STOP_DAEMON=y CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
CONFIG_WHICH=y # CONFIG_WHICH is not set
# #
# klibc-utils # klibc-utils
@ -509,7 +509,7 @@ CONFIG_FEATURE_WAIT_FOR_INIT=y
# CONFIG_FEATURE_CALL_TELINIT is not set # CONFIG_FEATURE_CALL_TELINIT is not set
CONFIG_TELINIT_PATH="" CONFIG_TELINIT_PATH=""
CONFIG_INIT=y CONFIG_INIT=y
CONFIG_LINUXRC=y # CONFIG_LINUXRC is not set
CONFIG_FEATURE_USE_INITTAB=y CONFIG_FEATURE_USE_INITTAB=y
# CONFIG_FEATURE_KILL_REMOVED is not set # CONFIG_FEATURE_KILL_REMOVED is not set
CONFIG_FEATURE_KILL_DELAY=0 CONFIG_FEATURE_KILL_DELAY=0
@ -760,12 +760,12 @@ CONFIG_ADJTIMEX=y
CONFIG_ASCII=y CONFIG_ASCII=y
# CONFIG_BBCONFIG is not set # CONFIG_BBCONFIG is not set
# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set # CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
CONFIG_BC=y # CONFIG_BC is not set
CONFIG_DC=y # CONFIG_DC is not set
CONFIG_FEATURE_DC_BIG=y # CONFIG_FEATURE_DC_BIG is not set
# CONFIG_FEATURE_DC_LIBM is not set # CONFIG_FEATURE_DC_LIBM is not set
CONFIG_FEATURE_BC_INTERACTIVE=y # CONFIG_FEATURE_BC_INTERACTIVE is not set
CONFIG_FEATURE_BC_LONG_OPTIONS=y # CONFIG_FEATURE_BC_LONG_OPTIONS is not set
CONFIG_BEEP=y CONFIG_BEEP=y
CONFIG_FEATURE_BEEP_FREQ=4000 CONFIG_FEATURE_BEEP_FREQ=4000
CONFIG_FEATURE_BEEP_LENGTH_MS=30 CONFIG_FEATURE_BEEP_LENGTH_MS=30
@ -882,7 +882,7 @@ CONFIG_FEATURE_FTPD_AUTHENTICATION=y
CONFIG_FTPGET=y CONFIG_FTPGET=y
CONFIG_FTPPUT=y CONFIG_FTPPUT=y
CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
CONFIG_HOSTNAME=y # CONFIG_HOSTNAME is not set
CONFIG_DNSDOMAINNAME=y CONFIG_DNSDOMAINNAME=y
CONFIG_HTTPD=y CONFIG_HTTPD=y
CONFIG_FEATURE_HTTPD_PORT_DEFAULT=80 CONFIG_FEATURE_HTTPD_PORT_DEFAULT=80

View File

@ -2,14 +2,15 @@
SRC_HASH="b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314" SRC_HASH="b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314"
SRC_NAME="busybox" SRC_NAME="busybox"
SRC_PATCHES=" SRC_PATCHES="
63478e21fdb8a1aa13d5f98c6a599e6ed040deb79707677f6186083c826a2824 .config 59d4edffe7f191fa3c8ae519ca62ea6cff77e5c9ae0945fd381570e884065975 .config
" "
SRC_REVISION=3
SRC_URL="https://busybox.net/downloads/busybox-1.36.1.tar.bz2" SRC_URL="https://busybox.net/downloads/busybox-1.36.1.tar.bz2"
SRC_VERSION="1.36.1r2" SRC_VERSION="1.36.1"
build() { build() {
tar xf ../$SRC_FILENAME tar xf ../$SRC_FILENAME
cd busybox-*/ cd busybox-$SRC_VERSION/
cp ../.config . cp ../.config .
# NOTE: Like we did with musl before, we don't set CROSS_COMPILE because # 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. # LLVM is smart and doesn't need a compiler to cross-compile code.
@ -24,16 +25,19 @@ build() {
# returned type "void". This doesn't actually affect the build, but # returned type "void". This doesn't actually affect the build, but
# I'm not sure where else to put this. ~ahill # I'm not sure where else to put this. ~ahill
sed -i "s/main()/void main()/" scripts/kconfig/lxdialog/check-lxdialog.sh sed -i "s/main()/void main()/" scripts/kconfig/lxdialog/check-lxdialog.sh
make -O -j $TT_PROCS # 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() { clean() {
rm -rf busybox-*/ rm -rf busybox-$SRC_VERSION/
} }
package() { package() {
cd busybox-*/ cd busybox-$SRC_VERSION/
# NOTE: Busybox doesn't have a proper DESTDIR, so we just set CONFIG_PREFIX # NOTE: Busybox doesn't have a proper DESTDIR, so we just set CONFIG_PREFIX
# during the install to work around this limitation. ~ahill # during the install to work around this limitation. ~ahill
make -O -j $TT_PROCS install CONFIG_PREFIX=$TT_INSTALLDIR # 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,8 +1,9 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev> # Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269" SRC_HASH="ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269"
SRC_NAME="bzip2" SRC_NAME="bzip2"
SRC_REVISION=2
SRC_URL="https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz" SRC_URL="https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz"
SRC_VERSION="1.0.8r2" SRC_VERSION="1.0.8"
# TODO: Install the man pages ~ahill # TODO: Install the man pages ~ahill

View File

@ -1,8 +1,9 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev> # Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="4104e94657d247c811cb29985405a360b78130b5d51e7f6daceb2447830bd579" SRC_HASH="4104e94657d247c811cb29985405a360b78130b5d51e7f6daceb2447830bd579"
SRC_NAME="cmake" SRC_NAME="cmake"
SRC_REVISION=1
SRC_URL="https://github.com/Kitware/CMake/releases/download/v4.2.0/cmake-4.2.0.tar.gz" SRC_URL="https://github.com/Kitware/CMake/releases/download/v4.2.0/cmake-4.2.0.tar.gz"
SRC_VERSION="4.2.0r1" SRC_VERSION="4.2.0"
build() { build() {
tar xf ../$SRC_FILENAME tar xf ../$SRC_FILENAME

View File

@ -2,8 +2,9 @@
SRC_FILENAME="muon-0.5.0.tar.gz" SRC_FILENAME="muon-0.5.0.tar.gz"
SRC_HASH="565c1b6e1e58f7e90d8813fda0e2102df69fb493ddab4cf6a84ce3647466bee5" SRC_HASH="565c1b6e1e58f7e90d8813fda0e2102df69fb493ddab4cf6a84ce3647466bee5"
SRC_NAME="muon" SRC_NAME="muon"
SRC_REVISION=1
SRC_URL="https://git.sr.ht/~lattis/muon/archive/0.5.0.tar.gz" SRC_URL="https://git.sr.ht/~lattis/muon/archive/0.5.0.tar.gz"
SRC_VERSION="0.5.0r1" SRC_VERSION="0.5.0"
build() { build() {
tar xf ../$SRC_FILENAME tar xf ../$SRC_FILENAME

View File

@ -4,8 +4,9 @@ SRC_NAME="musl"
SRC_PATCHES=" SRC_PATCHES="
c0ffd0493dcde91850e39428a31577892aad20e83bc4bf4a5c37350649ce7932 CVE-2025-26519.patch c0ffd0493dcde91850e39428a31577892aad20e83bc4bf4a5c37350649ce7932 CVE-2025-26519.patch
" "
SRC_REVISION=1
SRC_URL="https://musl.libc.org/releases/musl-1.2.5.tar.gz" SRC_URL="https://musl.libc.org/releases/musl-1.2.5.tar.gz"
SRC_VERSION="1.2.5r1" SRC_VERSION="1.2.5"
build() { build() {
tar xf ../$SRC_FILENAME tar xf ../$SRC_FILENAME

View File

@ -1,8 +1,9 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev> # Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="136d91bc269a9a5785e5f9e980bc76ab57428f604ce3e5a5a90cebc767971cc6" SRC_HASH="136d91bc269a9a5785e5f9e980bc76ab57428f604ce3e5a5a90cebc767971cc6"
SRC_NAME="ncurses" SRC_NAME="ncurses"
SRC_REVISION=1
SRC_URL="https://invisible-island.net/archives/ncurses/ncurses-6.5.tar.gz" SRC_URL="https://invisible-island.net/archives/ncurses/ncurses-6.5.tar.gz"
SRC_VERSION="6.5r1" SRC_VERSION="6.5"
# TODO: Remove the target triple prefix from all of ncurses' executables ~ahill # TODO: Remove the target triple prefix from all of ncurses' executables ~ahill

View File

@ -1,8 +1,9 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev> # Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="e093ef184d7f9a1b9797e2465296f55510adb6dab8842b0c3ed53329663096dc" SRC_HASH="e093ef184d7f9a1b9797e2465296f55510adb6dab8842b0c3ed53329663096dc"
SRC_NAME="perl" SRC_NAME="perl"
SRC_REVISION=1
SRC_URL="https://www.cpan.org/src/5.0/perl-5.42.0.tar.gz" SRC_URL="https://www.cpan.org/src/5.0/perl-5.42.0.tar.gz"
SRC_VERSION="5.42.0r1" SRC_VERSION="5.42.0"
build() { build() {
tar xf ../$SRC_FILENAME tar xf ../$SRC_FILENAME

54
treetap
View File

@ -18,6 +18,12 @@
# Changelog # # Changelog #
############# #############
# December 6, 2025 (1.4.0)
# + Added sane defaults for the environment if they are not defined [ahill]
# + Added SRC_REVISION and SRC_FULLVERSION to prevent issues related to
# SRC_VERSION [ahill]
# * Fixed an issue where uninstalls fail due to spaces in the filename [ahill]
# November 29, 2025 (1.3.1) # November 29, 2025 (1.3.1)
# + Added GNUInstallDirs to TT_CMAKE_COMMON [ahill] # + Added GNUInstallDirs to TT_CMAKE_COMMON [ahill]
# * Tweaked the messages to make it easier to see that treetap exited # * Tweaked the messages to make it easier to see that treetap exited
@ -74,10 +80,16 @@
# Specification Variables: # Specification Variables:
# SRC_FILENAME - The name of the tarball to extract (optional) # SRC_FILENAME - The name of the tarball to extract (optional)
# SRC_HASH - The hash of the tarball for verification purposes (required) # SRC_FULLVERSION - The full version of the package, which is automatically
# set to SRC_VERSION, or "(SRC_VERSION)r(SRC_REVISION)" if
# SRC_REVISION is set.
# SRC_HASH - The hash of the tarball for verification purposes
# (required)
# SRC_NAME - The name of the package being built (required) # SRC_NAME - The name of the package being built (required)
# SRC_PATCHES - A list of SHA256 hashes followed by their filenames to be # SRC_PATCHES - A list of SHA256 hashes followed by their filenames to be
# copied to the build directory (optional) # copied to the build directory (optional)
# SRC_REVISION - The package revision number to denote changes specifically
# made for Maple Linux (optional)
# SRC_URL - The URL of the tarball to be downloaded (required) # SRC_URL - The URL of the tarball to be downloaded (required)
# SRC_VERSION - The version of the package being built (required) # SRC_VERSION - The version of the package being built (required)
@ -134,7 +146,22 @@
[ -z "$TT_DIR" ] && TT_DIR="$(pwd)/.treetap" [ -z "$TT_DIR" ] && TT_DIR="$(pwd)/.treetap"
[ -z "$TT_PKGDIR" ] && TT_PKGDIR="$TT_DIR/packages" [ -z "$TT_PKGDIR" ] && TT_PKGDIR="$TT_DIR/packages"
[ -z "$TT_SYSROOT" ] && TT_SYSROOT=/ [ -z "$TT_SYSROOT" ] && TT_SYSROOT=/
TT_VERSION="1.3.1" TT_VERSION="1.4.0"
#########################
# Environment Variables #
#########################
[ -z "$AR" ] && export AR=ar
[ -z "$AS" ] && export AS=nasm
[ -z "$CC" ] && export CC=clang
[ -z "$CXX" ] && export CXX=clang++
[ -z "$LD" ] && export LD=mold
[ -z "$NM" ] && export NM=nm
[ -z "$OBJCOPY" ] && export OBJCOPY=objcopy
[ -z "$OBJDUMP" ] && export OBJDUMP=objdump
[ -z "$PKG_CONFIG" ] && export PKG_CONFIG=pkgconf
[ -z "$STRIP" ] && export STRIP=strip
##################### #####################
# Utility Functions # # Utility Functions #
@ -184,6 +211,11 @@ source_spec() {
[ -z "$SRC_NAME" ] && (echo "source_spec: SRC_NAME is required but not defined"; exit 1) [ -z "$SRC_NAME" ] && (echo "source_spec: SRC_NAME is required but not defined"; exit 1)
[ -z "$SRC_URL" ] && (echo "source_spec: SRC_URL is required but not defined"; exit 1) [ -z "$SRC_URL" ] && (echo "source_spec: SRC_URL is required but not defined"; exit 1)
[ -z "$SRC_VERSION" ] && (echo "source_spec: SRC_VERSION is required but not defined"; exit 1) [ -z "$SRC_VERSION" ] && (echo "source_spec: SRC_VERSION is required but not defined"; exit 1)
if [ -z "$SRC_REVISION" ]; then
SRC_FULLVERSION=$SRC_VERSION
else
SRC_FULLVERSION="${SRC_VERSION}r${SRC_REVISION}"
fi
# Optional Fields # Optional Fields
[ -z "$SRC_FILENAME" ] && SRC_FILENAME=$(basename $SRC_URL) [ -z "$SRC_FILENAME" ] && SRC_FILENAME=$(basename $SRC_URL)
@ -314,10 +346,10 @@ package_uninstall() {
PUSHD=$(pwd) PUSHD=$(pwd)
cd $TT_SYSROOT cd $TT_SYSROOT
bsdcpio -iJt < $PKG_FULLPATH | tail -n +2 | sort -r | while read path; do bsdcpio -iJt < $PKG_FULLPATH | tail -n +2 | sort -r | while read path; do
if [ -d $path ]; then if [ -d "$path" ]; then
rmdir --ignore-fail-on-non-empty $path rmdir --ignore-fail-on-non-empty "$path"
else else
rm -f $path rm -f "$path"
fi fi
done done
cd $PUSHD cd $PUSHD
@ -329,12 +361,12 @@ source_build() {
source_spec $1 source_spec $1
mkdir -p $TT_BUILDDIR mkdir -p $TT_BUILDDIR
if [ ! -z "$SRC_PATCHES" ]; then if [ ! -z "$SRC_PATCHES" ]; then
echo -n "Validating patches for $SRC_NAME $SRC_VERSION... " echo -n "Validating patches for $SRC_NAME $SRC_FULLVERSION... "
cd $(dirname $1) cd $(dirname $1)
echo $SRC_PATCHES | sha256sum -c - > /dev/null echo $SRC_PATCHES | sha256sum -c - > /dev/null
# Is this even the right way to check a return value? ~ahill # Is this even the right way to check a return value? ~ahill
if [ ! "$?" = "0" ]; then if [ ! "$?" = "0" ]; then
echo "Failed to validate patches for $SRC_NAME $SRC_VERSION for $TT_MICROARCH ($TT_TARGET)" echo "Failed to validate patches for $SRC_NAME $SRC_FULLVERSION for $TT_MICROARCH ($TT_TARGET)"
exit 1 exit 1
fi fi
echo $SRC_PATCHES | while read line; do echo $SRC_PATCHES | while read line; do
@ -342,7 +374,7 @@ source_build() {
done done
echo "Done!" echo "Done!"
fi fi
echo -n "Building $SRC_NAME $SRC_VERSION for $TT_MICROARCH... " echo -n "Building $SRC_NAME $SRC_FULLVERSION for $TT_MICROARCH... "
PUSHD=$(pwd) PUSHD=$(pwd)
cd $TT_BUILDDIR cd $TT_BUILDDIR
# Please don't use this in your build script. This is meant for # Please don't use this in your build script. This is meant for
@ -362,7 +394,7 @@ source_clean() {
mkdir -p $TT_BUILDDIR mkdir -p $TT_BUILDDIR
PUSHD=$(pwd) PUSHD=$(pwd)
cd $TT_BUILDDIR cd $TT_BUILDDIR
echo -n "Cleaning $SRC_NAME $SRC_VERSION for $TT_MICROARCH... " echo -n "Cleaning $SRC_NAME $SRC_FULLVERSION for $TT_MICROARCH... "
clean clean
rm -rf $TT_INSTALLDIR rm -rf $TT_INSTALLDIR
cd $PUSHD cd $PUSHD
@ -402,10 +434,10 @@ source_package() {
mkdir -p $TT_PKGDIR/$TT_MICROARCH mkdir -p $TT_PKGDIR/$TT_MICROARCH
PUSHD=$(pwd) PUSHD=$(pwd)
cd $TT_BUILDDIR cd $TT_BUILDDIR
echo -n "Archiving $SRC_NAME $SRC_VERSION for $TT_MICROARCH... " echo -n "Archiving $SRC_NAME $SRC_FULLVERSION for $TT_MICROARCH... "
package > package-$(date +%Y%m%d%H%M%S).log package > package-$(date +%Y%m%d%H%M%S).log
cd $TT_INSTALLDIR cd $TT_INSTALLDIR
find | bsdcpio -Jo > "$TT_PKGDIR/$TT_MICROARCH/$SRC_NAME-$SRC_VERSION-$TT_MICROARCH.cpio.xz" find | bsdcpio -Jo > "$TT_PKGDIR/$TT_MICROARCH/$SRC_NAME-$SRC_FULLVERSION-$TT_MICROARCH.cpio.xz"
rm -rf $TT_INSTALLDIR rm -rf $TT_INSTALLDIR
cd $PUSHD cd $PUSHD
exit 0 exit 0