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 |
| `automake` | Yes | Yes |
| `bsdutils` | Yes | Yes |
| `busybox` | No | No |
| `busybox` | Yes | Yes |
| `byacc` | Yes | Yes |
| `bzip2` | Yes | Yes |
| `cmake` | Yes | Yes |

View File

@ -271,4 +271,4 @@ SOURCES=(
for name in $SOURCES; do
$TREETAP fetch $SPEC/$name/$name.spec
done
cp -r $SPEC $BOOTSTRAP/root/maple/
cp -r $SPEC $BOOTSTRAP/root/maple/

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: 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

View File

@ -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
}
}

View File

@ -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

View File

@ -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
}
# 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>
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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

64
treetap
View File

@ -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