summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Hill <ahill@breadpudding.dev>2025-12-06 21:48:33 -0500
committerAlexander Hill <ahill@breadpudding.dev>2025-12-06 21:48:33 -0500
commit70055d5bc825b3020ce7d86bf1380048561e23b9 (patch)
treee8b785bbe34cb366b71ba38d91742584d805df96
parentcdbbc7ce28104d17a80851b64c16849b70e0322b (diff)
Merged bsdutils/Busybox and updated treetap
-rw-r--r--STATUS.md2
-rwxr-xr-xbootstrap.sh2
-rwxr-xr-xrootbuild.sh3
-rw-r--r--sources/bsdutils/bsdutils.spec137
-rw-r--r--sources/busybox/.config126
-rwxr-xr-xsources/busybox/busybox.spec20
-rw-r--r--sources/bzip2/bzip2.spec3
-rw-r--r--sources/cmake/cmake.spec3
-rw-r--r--sources/muon/muon.spec3
-rwxr-xr-xsources/musl/musl.spec3
-rw-r--r--sources/ncurses/ncurses.spec3
-rw-r--r--sources/perl/perl.spec3
-rwxr-xr-xtreetap64
13 files changed, 188 insertions, 184 deletions
diff --git a/STATUS.md b/STATUS.md
index 8f703bc..0cca612 100644
--- a/STATUS.md
+++ b/STATUS.md
@@ -9,7 +9,7 @@ Definitions:
| `autoconf` | Yes | Yes |
| `automake` | Yes | Yes |
| `bsdutils` | Yes | Yes |
-| `busybox` | No | No |
+| `busybox` | Yes | Yes |
| `byacc` | Yes | Yes |
| `bzip2` | Yes | Yes |
| `cmake` | Yes | Yes |
diff --git a/bootstrap.sh b/bootstrap.sh
index 868f3c4..b531aa7 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -271,4 +271,4 @@ SOURCES=(
for name in $SOURCES; do
$TREETAP fetch $SPEC/$name/$name.spec
done
-cp -r $SPEC $BOOTSTRAP/root/maple/ \ No newline at end of file
+cp -r $SPEC $BOOTSTRAP/root/maple/
diff --git a/rootbuild.sh b/rootbuild.sh
index 363d91b..75e424c 100755
--- a/rootbuild.sh
+++ b/rootbuild.sh
@@ -32,8 +32,9 @@ make -j $(nproc) install DESTDIR=/ > /dev/null 2>&1
# NOTE: autoconf requires GNU m4 and perl to build. ~ahill
# NOTE: automake requires m4 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
-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
treetap fetch /maple/sources/$pkg/$pkg.spec
treetap build /maple/sources/$pkg/$pkg.spec
diff --git a/sources/bsdutils/bsdutils.spec b/sources/bsdutils/bsdutils.spec
index 487558d..6c2eb63 100644
--- a/sources/bsdutils/bsdutils.spec
+++ b/sources/bsdutils/bsdutils.spec
@@ -2,93 +2,13 @@
SRC_FILENAME="bsdutils-13.2.tar.gz"
SRC_HASH="4547990309afe686c6f36c2a4f7ac5806e0064b182dd1f93f52dda7661979a3c"
SRC_NAME="bsdutils"
+SRC_REVISION=1
SRC_URL="https://codeberg.org/dcantrell/bsdutils/archive/v13.2.tar.gz"
SRC_VERSION="13.2"
-# TODO: Determine which utilities should be moved to bsdutils and which should
-# stick with Busybox. ~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
+# NOTE: Even though the install implementation from bsdutils is being used, some
+# packages may try to use -D and -t, which are only supported under
+# Busybox's implementation. ~ahill
build() {
tar xf ../$SRC_FILENAME
@@ -104,9 +24,50 @@ build() {
# dependency from being introduced. ~ahill
sed -i "/'find'/d" src/meson.build
# NOTE: Finally, we have a *lot* of duplicate commands between bsdutils and
- # Busybox. Busybox takes priority unless the bsdutils version has more
- # functionality. ~ahill
- # ...
+ # Busybox. After reviewing *all* of the commands they share, these are
+ # 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 samu -C build
}
@@ -118,4 +79,4 @@ clean() {
package() {
cd bsdutils/
muon -C build install -d $TT_INSTALLDIR
-} \ No newline at end of file
+}
diff --git a/sources/busybox/.config b/sources/busybox/.config
index b61b046..5c29f10 100644
--- a/sources/busybox/.config
+++ b/sources/busybox/.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.36.1
-# Sun Nov 23 09:24:20 2025
+# Sun Dec 7 02:40:00 2025
#
CONFIG_HAVE_DOT_CONFIG=y
@@ -54,7 +54,7 @@ CONFIG_EXTRA_LDFLAGS=""
CONFIG_EXTRA_LDLIBS=""
# CONFIG_USE_PORTABLE_CODE is not set
CONFIG_STACK_OPTIMIZATION_386=y
-CONFIG_STATIC_LIBGCC=y
+# CONFIG_STATIC_LIBGCC is not set
#
# Installation Options ("make install" behavior)
@@ -149,17 +149,17 @@ CONFIG_FEATURE_SEAMLESS_GZ=y
CONFIG_GUNZIP=y
CONFIG_ZCAT=y
CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y
-CONFIG_BUNZIP2=y
-CONFIG_BZCAT=y
+# CONFIG_BUNZIP2 is not set
+# CONFIG_BZCAT is not set
# CONFIG_UNLZMA is not set
# CONFIG_LZCAT is not set
# CONFIG_LZMA is not set
# CONFIG_UNXZ is not set
# CONFIG_XZCAT is not set
# CONFIG_XZ is not set
-CONFIG_BZIP2=y
-CONFIG_BZIP2_SMALL=8
-CONFIG_FEATURE_BZIP2_DECOMPRESS=y
+# CONFIG_BZIP2 is not set
+CONFIG_BZIP2_SMALL=0
+# CONFIG_FEATURE_BZIP2_DECOMPRESS is not set
# CONFIG_CPIO is not set
# CONFIG_FEATURE_CPIO_O 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_BASENAME=y
-CONFIG_CAT=y
-CONFIG_FEATURE_CATN=y
-CONFIG_FEATURE_CATV=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
-CONFIG_CHROOT=y
-CONFIG_CKSUM=y
+# CONFIG_CAT is not set
+# CONFIG_FEATURE_CATN is not set
+# CONFIG_FEATURE_CATV is not set
+# CONFIG_CHGRP is not set
+# CONFIG_CHMOD is not set
+# CONFIG_CHOWN is not set
+# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set
+# CONFIG_CHROOT is not set
+# CONFIG_CKSUM is not set
CONFIG_CRC32=y
-CONFIG_COMM=y
-CONFIG_CP=y
-CONFIG_FEATURE_CP_LONG_OPTIONS=y
-CONFIG_FEATURE_CP_REFLINK=y
-CONFIG_CUT=y
-CONFIG_FEATURE_CUT_REGEX=y
-CONFIG_DATE=y
-CONFIG_FEATURE_DATE_ISOFMT=y
+# CONFIG_COMM is not set
+# CONFIG_CP is not set
+# CONFIG_FEATURE_CP_LONG_OPTIONS is not set
+# CONFIG_FEATURE_CP_REFLINK is not set
+# CONFIG_CUT is not set
+# CONFIG_FEATURE_CUT_REGEX is not set
+# CONFIG_DATE is not set
+# CONFIG_FEATURE_DATE_ISOFMT is not set
# CONFIG_FEATURE_DATE_NANO is not set
-CONFIG_FEATURE_DATE_COMPAT=y
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
-CONFIG_FEATURE_DD_IBS_OBS=y
-CONFIG_FEATURE_DD_STATUS=y
+# CONFIG_FEATURE_DATE_COMPAT is not set
+# CONFIG_DD is not set
+# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
+# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+# CONFIG_FEATURE_DD_STATUS is not set
CONFIG_DF=y
CONFIG_FEATURE_DF_FANCY=y
CONFIG_FEATURE_SKIP_ROOTFS=y
CONFIG_DIRNAME=y
CONFIG_DOS2UNIX=y
CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+# CONFIG_DU is not set
+# CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K is not set
CONFIG_ECHO=y
CONFIG_FEATURE_FANCY_ECHO=y
-CONFIG_ENV=y
+# CONFIG_ENV is not set
CONFIG_EXPAND=y
CONFIG_UNEXPAND=y
CONFIG_EXPR=y
CONFIG_EXPR_MATH_SUPPORT_64=y
-CONFIG_FACTOR=y
+# CONFIG_FACTOR is not set
CONFIG_FALSE=y
CONFIG_FOLD=y
CONFIG_HEAD=y
CONFIG_FEATURE_FANCY_HEAD=y
CONFIG_HOSTID=y
-CONFIG_ID=y
+# CONFIG_ID is not set
CONFIG_GROUPS=y
-CONFIG_INSTALL=y
-CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+# CONFIG_INSTALL is not set
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
CONFIG_LINK=y
CONFIG_LN=y
CONFIG_LOGNAME=y
@@ -296,7 +296,7 @@ CONFIG_MKNOD=y
CONFIG_MKTEMP=y
CONFIG_MV=y
CONFIG_NICE=y
-CONFIG_NL=y
+# CONFIG_NL is not set
CONFIG_NOHUP=y
CONFIG_NPROC=y
CONFIG_OD=y
@@ -304,12 +304,12 @@ CONFIG_PASTE=y
CONFIG_PRINTENV=y
CONFIG_PRINTF=y
CONFIG_PWD=y
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_REALPATH=y
+# CONFIG_READLINK is not set
+# CONFIG_FEATURE_READLINK_FOLLOW is not set
+# CONFIG_REALPATH is not set
CONFIG_RM=y
CONFIG_RMDIR=y
-CONFIG_SEQ=y
+# CONFIG_SEQ is not set
CONFIG_SHRED=y
CONFIG_SHUF=y
CONFIG_SLEEP=y
@@ -317,8 +317,8 @@ CONFIG_FEATURE_FANCY_SLEEP=y
CONFIG_SORT=y
CONFIG_FEATURE_SORT_BIG=y
# CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set
-CONFIG_SPLIT=y
-CONFIG_FEATURE_SPLIT_FANCY=y
+# CONFIG_SPLIT is not set
+# CONFIG_FEATURE_SPLIT_FANCY is not set
CONFIG_STAT=y
CONFIG_FEATURE_STAT_FORMAT=y
CONFIG_FEATURE_STAT_FILESYSTEM=y
@@ -336,21 +336,21 @@ CONFIG_TEST=y
CONFIG_TEST1=y
CONFIG_TEST2=y
CONFIG_FEATURE_TEST_64=y
-CONFIG_TIMEOUT=y
-CONFIG_TOUCH=y
-CONFIG_FEATURE_TOUCH_SUSV3=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-CONFIG_FEATURE_TR_EQUIV=y
+# CONFIG_TIMEOUT is not set
+# CONFIG_TOUCH is not set
+# CONFIG_FEATURE_TOUCH_SUSV3 is not set
+# CONFIG_TR is not set
+# CONFIG_FEATURE_TR_CLASSES is not set
+# CONFIG_FEATURE_TR_EQUIV is not set
CONFIG_TRUE=y
-CONFIG_TRUNCATE=y
-CONFIG_TSORT=y
+# CONFIG_TRUNCATE is not set
+# CONFIG_TSORT is not set
CONFIG_TTY=y
CONFIG_UNAME=y
CONFIG_UNAME_OSNAME="GNU/Linux"
CONFIG_BB_ARCH=y
CONFIG_UNIQ=y
-CONFIG_UNLINK=y
+# CONFIG_UNLINK is not set
CONFIG_USLEEP=y
CONFIG_UUDECODE=y
CONFIG_BASE32=y
@@ -358,11 +358,11 @@ CONFIG_BASE64=y
CONFIG_UUENCODE=y
CONFIG_WC=y
CONFIG_FEATURE_WC_LARGE=y
-CONFIG_WHO=y
+# CONFIG_WHO is not set
CONFIG_W=y
CONFIG_USERS=y
CONFIG_WHOAMI=y
-CONFIG_YES=y
+# CONFIG_YES is not set
#
# Console Utilities
@@ -404,7 +404,7 @@ CONFIG_FEATURE_RUN_PARTS_FANCY=y
CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-CONFIG_WHICH=y
+# CONFIG_WHICH is not set
#
# klibc-utils
@@ -509,7 +509,7 @@ CONFIG_FEATURE_WAIT_FOR_INIT=y
# CONFIG_FEATURE_CALL_TELINIT is not set
CONFIG_TELINIT_PATH=""
CONFIG_INIT=y
-CONFIG_LINUXRC=y
+# CONFIG_LINUXRC is not set
CONFIG_FEATURE_USE_INITTAB=y
# CONFIG_FEATURE_KILL_REMOVED is not set
CONFIG_FEATURE_KILL_DELAY=0
@@ -760,12 +760,12 @@ CONFIG_ADJTIMEX=y
CONFIG_ASCII=y
# CONFIG_BBCONFIG is not set
# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
-CONFIG_BC=y
-CONFIG_DC=y
-CONFIG_FEATURE_DC_BIG=y
+# CONFIG_BC is not set
+# CONFIG_DC is not set
+# CONFIG_FEATURE_DC_BIG is not set
# CONFIG_FEATURE_DC_LIBM is not set
-CONFIG_FEATURE_BC_INTERACTIVE=y
-CONFIG_FEATURE_BC_LONG_OPTIONS=y
+# CONFIG_FEATURE_BC_INTERACTIVE is not set
+# CONFIG_FEATURE_BC_LONG_OPTIONS is not set
CONFIG_BEEP=y
CONFIG_FEATURE_BEEP_FREQ=4000
CONFIG_FEATURE_BEEP_LENGTH_MS=30
@@ -882,7 +882,7 @@ CONFIG_FEATURE_FTPD_AUTHENTICATION=y
CONFIG_FTPGET=y
CONFIG_FTPPUT=y
CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
-CONFIG_HOSTNAME=y
+# CONFIG_HOSTNAME is not set
CONFIG_DNSDOMAINNAME=y
CONFIG_HTTPD=y
CONFIG_FEATURE_HTTPD_PORT_DEFAULT=80
diff --git a/sources/busybox/busybox.spec b/sources/busybox/busybox.spec
index da3a454..d7e2746 100755
--- a/sources/busybox/busybox.spec
+++ b/sources/busybox/busybox.spec
@@ -2,14 +2,15 @@
SRC_HASH="b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314"
SRC_NAME="busybox"
SRC_PATCHES="
-63478e21fdb8a1aa13d5f98c6a599e6ed040deb79707677f6186083c826a2824 .config
+59d4edffe7f191fa3c8ae519ca62ea6cff77e5c9ae0945fd381570e884065975 .config
"
+SRC_REVISION=3
SRC_URL="https://busybox.net/downloads/busybox-1.36.1.tar.bz2"
-SRC_VERSION="1.36.1r2"
+SRC_VERSION="1.36.1"
build() {
tar xf ../$SRC_FILENAME
- cd busybox-*/
+ 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.
@@ -24,16 +25,19 @@ build() {
# 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
- 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() {
- rm -rf busybox-*/
+ rm -rf busybox-$SRC_VERSION/
}
package() {
- cd busybox-*/
+ 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
- make -O -j $TT_PROCS install CONFIG_PREFIX=$TT_INSTALLDIR
-} \ No newline at end of file
+ # 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
+}
diff --git a/sources/bzip2/bzip2.spec b/sources/bzip2/bzip2.spec
index 956ce0d..55a9a0f 100644
--- a/sources/bzip2/bzip2.spec
+++ b/sources/bzip2/bzip2.spec
@@ -1,8 +1,9 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269"
SRC_NAME="bzip2"
+SRC_REVISION=2
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
diff --git a/sources/cmake/cmake.spec b/sources/cmake/cmake.spec
index 5687bba..b82a8d1 100644
--- a/sources/cmake/cmake.spec
+++ b/sources/cmake/cmake.spec
@@ -1,8 +1,9 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="4104e94657d247c811cb29985405a360b78130b5d51e7f6daceb2447830bd579"
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_VERSION="4.2.0r1"
+SRC_VERSION="4.2.0"
build() {
tar xf ../$SRC_FILENAME
diff --git a/sources/muon/muon.spec b/sources/muon/muon.spec
index 0828618..0de3bdd 100644
--- a/sources/muon/muon.spec
+++ b/sources/muon/muon.spec
@@ -2,8 +2,9 @@
SRC_FILENAME="muon-0.5.0.tar.gz"
SRC_HASH="565c1b6e1e58f7e90d8813fda0e2102df69fb493ddab4cf6a84ce3647466bee5"
SRC_NAME="muon"
+SRC_REVISION=1
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() {
tar xf ../$SRC_FILENAME
diff --git a/sources/musl/musl.spec b/sources/musl/musl.spec
index a4fb38a..455bb7f 100755
--- a/sources/musl/musl.spec
+++ b/sources/musl/musl.spec
@@ -4,8 +4,9 @@ SRC_NAME="musl"
SRC_PATCHES="
c0ffd0493dcde91850e39428a31577892aad20e83bc4bf4a5c37350649ce7932 CVE-2025-26519.patch
"
+SRC_REVISION=1
SRC_URL="https://musl.libc.org/releases/musl-1.2.5.tar.gz"
-SRC_VERSION="1.2.5r1"
+SRC_VERSION="1.2.5"
build() {
tar xf ../$SRC_FILENAME
diff --git a/sources/ncurses/ncurses.spec b/sources/ncurses/ncurses.spec
index 14165c6..0128c50 100644
--- a/sources/ncurses/ncurses.spec
+++ b/sources/ncurses/ncurses.spec
@@ -1,8 +1,9 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="136d91bc269a9a5785e5f9e980bc76ab57428f604ce3e5a5a90cebc767971cc6"
SRC_NAME="ncurses"
+SRC_REVISION=1
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
diff --git a/sources/perl/perl.spec b/sources/perl/perl.spec
index bc737a1..310694c 100644
--- a/sources/perl/perl.spec
+++ b/sources/perl/perl.spec
@@ -1,8 +1,9 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="e093ef184d7f9a1b9797e2465296f55510adb6dab8842b0c3ed53329663096dc"
SRC_NAME="perl"
+SRC_REVISION=1
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() {
tar xf ../$SRC_FILENAME
diff --git a/treetap b/treetap
index 7cce3d6..4fc2657 100755
--- a/treetap
+++ b/treetap
@@ -18,6 +18,12 @@
# 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)
# + Added GNUInstallDirs to TT_CMAKE_COMMON [ahill]
# * Tweaked the messages to make it easier to see that treetap exited
@@ -73,13 +79,19 @@
# package - Installs the package contents to $TT_INSTALLDIR
# Specification Variables:
-# SRC_FILENAME - The name of the tarball to extract (optional)
-# SRC_HASH - The hash of the tarball for verification purposes (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_FILENAME - The name of the tarball to extract (optional)
+# 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_PATCHES - A list of SHA256 hashes followed by their filenames to be
# copied to the build directory (optional)
-# SRC_URL - The URL of the tarball to be downloaded (required)
-# SRC_VERSION - The version of the package being built (required)
+# 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_VERSION - The version of the package being built (required)
# Treetap Variables:
# TT_ARCH - The architecture portion of TT_TARGET
@@ -134,7 +146,22 @@
[ -z "$TT_DIR" ] && TT_DIR="$(pwd)/.treetap"
[ -z "$TT_PKGDIR" ] && TT_PKGDIR="$TT_DIR/packages"
[ -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 #
@@ -184,6 +211,11 @@ source_spec() {
[ -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_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
[ -z "$SRC_FILENAME" ] && SRC_FILENAME=$(basename $SRC_URL)
@@ -314,10 +346,10 @@ package_uninstall() {
PUSHD=$(pwd)
cd $TT_SYSROOT
bsdcpio -iJt < $PKG_FULLPATH | tail -n +2 | sort -r | while read path; do
- if [ -d $path ]; then
- rmdir --ignore-fail-on-non-empty $path
+ if [ -d "$path" ]; then
+ rmdir --ignore-fail-on-non-empty "$path"
else
- rm -f $path
+ rm -f "$path"
fi
done
cd $PUSHD
@@ -329,12 +361,12 @@ source_build() {
source_spec $1
mkdir -p $TT_BUILDDIR
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)
echo $SRC_PATCHES | sha256sum -c - > /dev/null
# Is this even the right way to check a return value? ~ahill
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
fi
echo $SRC_PATCHES | while read line; do
@@ -342,7 +374,7 @@ source_build() {
done
echo "Done!"
fi
- echo -n "Building $SRC_NAME $SRC_VERSION for $TT_MICROARCH... "
+ echo -n "Building $SRC_NAME $SRC_FULLVERSION for $TT_MICROARCH... "
PUSHD=$(pwd)
cd $TT_BUILDDIR
# Please don't use this in your build script. This is meant for
@@ -362,7 +394,7 @@ source_clean() {
mkdir -p $TT_BUILDDIR
PUSHD=$(pwd)
cd $TT_BUILDDIR
- echo -n "Cleaning $SRC_NAME $SRC_VERSION for $TT_MICROARCH... "
+ echo -n "Cleaning $SRC_NAME $SRC_FULLVERSION for $TT_MICROARCH... "
clean
rm -rf $TT_INSTALLDIR
cd $PUSHD
@@ -402,10 +434,10 @@ source_package() {
mkdir -p $TT_PKGDIR/$TT_MICROARCH
PUSHD=$(pwd)
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
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
cd $PUSHD
exit 0