Merged build and package in treetap

This commit is contained in:
Alexander Hill
2026-01-16 21:59:51 -05:00
parent 6b94b54ae8
commit 7493b86f41
44 changed files with 65 additions and 313 deletions

View File

@@ -80,7 +80,7 @@ EOF
fi fi
# Install headers for Linux # Install headers for Linux
LINUX_VERSION=$(sed -En "s/SRC_VERSION=\"?(.+)\"/\1/p" $SPEC/linux/linux.spec) LINUX_VERSION=$($TREETAP variable $SPEC/linux/linux.spec SRC_VERSION)
tar xf $SOURCES/linux/$LINUX_VERSION/linux-*.tar* tar xf $SOURCES/linux/$LINUX_VERSION/linux-*.tar*
cd linux-*/ cd linux-*/
# NOTE: LLVM=1 is required here because GCC and other GNU tools are required in # NOTE: LLVM=1 is required here because GCC and other GNU tools are required in
@@ -95,7 +95,7 @@ cp -r usr/include $BOOTSTRAP/root/usr
cd .. cd ..
# Install headers for musl # Install headers for musl
MUSL_VERSION=$(sed -En "s/SRC_VERSION=\"?(.+)\"/\1/p" $SPEC/musl/musl.spec) MUSL_VERSION=$($TREETAP variable $SPEC/musl/musl.spec SRC_VERSION)
tar xf $SOURCES/musl/$MUSL_VERSION/musl-*.tar* tar xf $SOURCES/musl/$MUSL_VERSION/musl-*.tar*
cd musl-*/ cd musl-*/
# NOTE: Patch for musl 1.2.5 to prevent a character encoding vulnerability. This # NOTE: Patch for musl 1.2.5 to prevent a character encoding vulnerability. This
@@ -118,7 +118,7 @@ make -O -j $PROCS install-headers DESTDIR=$BOOTSTRAP/root
cd .. cd ..
# Build and install compiler-rt builtins # Build and install compiler-rt builtins
LLVM_VERSION=$(sed -En "s/SRC_VERSION=\"?(.+)\"/\1/p" $SPEC/llvm/llvm.spec) LLVM_VERSION=$($TREETAP variable $SPEC/llvm/llvm.spec SRC_VERSION)
LLVM_MAJOR_VERSION=$(echo $LLVM_VERSION | cut -d"." -f1) LLVM_MAJOR_VERSION=$(echo $LLVM_VERSION | cut -d"." -f1)
tar xf $SOURCES/llvm/$LLVM_VERSION/llvm-project-*.tar* tar xf $SOURCES/llvm/$LLVM_VERSION/llvm-project-*.tar*
cd llvm-project-*/ cd llvm-project-*/
@@ -136,8 +136,7 @@ cd ..
# system's runtime if this is not specified. ~ahill # system's runtime if this is not specified. ~ahill
LIBCC="$BOOTSTRAP/root/lib/clang/$LLVM_MAJOR_VERSION/lib/linux/libclang_rt.builtins-x86_64.a" \ LIBCC="$BOOTSTRAP/root/lib/clang/$LLVM_MAJOR_VERSION/lib/linux/libclang_rt.builtins-x86_64.a" \
$TREETAP build $SPEC/musl/musl.spec $TREETAP build $SPEC/musl/musl.spec
$TREETAP package $SPEC/musl/musl.spec $TREETAP install $($TREETAP variable $SPEC/musl/musl.spec TT_PACKAGE) $BOOTSTRAP/root
$TREETAP install $TT_DIR/packages/$MICROARCH/musl-*.cpio.xz $BOOTSTRAP/root
# Include compiler-rt and musl in our environment # Include compiler-rt and musl in our environment
export CFLAGS="$CFLAGS -Qunused-arguments -rtlib=compiler-rt -Wl,--dynamic-linker=/lib/ld-musl-$ARCH.so.1" export CFLAGS="$CFLAGS -Qunused-arguments -rtlib=compiler-rt -Wl,--dynamic-linker=/lib/ld-musl-$ARCH.so.1"
@@ -228,8 +227,7 @@ SOURCES=(coreutils dash diffutils findutils grep gzip make mawk patch sed tar)
for name in $SOURCES; do for name in $SOURCES; do
$TREETAP fetch $SPEC/$name/$name.spec $TREETAP fetch $SPEC/$name/$name.spec
$TREETAP build $SPEC/$name/$name.spec $TREETAP build $SPEC/$name/$name.spec
$TREETAP package $SPEC/$name/$name.spec $TREETAP install $($TREETAP variable $SPEC/$name/$name.spec TT_PACKAGE) $BOOTSTRAP/root
$TREETAP install $TT_DIR/packages/$MICROARCH/$name-*.cpio.xz $BOOTSTRAP/root
done done
# Install Treetap # Install Treetap

View File

@@ -50,6 +50,5 @@ PACKAGES="$LAYER0 $LAYER1 $LAYER2"
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
treetap package /maple/sources/$pkg/$pkg.spec treetap install $(treetap variable /maple/sources/$pkg/$pkg.spec TT_PACKAGE)
treetap install /maple/.treetap/packages/*/$pkg-*.cpio.xz
done done

View File

@@ -9,13 +9,5 @@ build() {
cd autoconf-*/ cd autoconf-*/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
clean() {
rm -rf autoconf-*/
}
package() {
cd autoconf-*/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -9,13 +9,5 @@ build() {
cd automake-*/ cd automake-*/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -j $TT_PROCS make -j $TT_PROCS
}
clean() {
rm -rf automake-*/
}
package() {
cd automake-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -13,9 +13,5 @@ build() {
# package on Maple Linux, so it doesn't make sense to include it for # package on Maple Linux, so it doesn't make sense to include it for
# the sole purpose of building bc. ~ahill # the sole purpose of building bc. ~ahill
make -O -j $TT_PROCS MAKEINFO=true make -O -j $TT_PROCS MAKEINFO=true
}
package() {
cd bc-$SRC_VERSION/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR MAKEINFO=true make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR MAKEINFO=true
} }

View File

@@ -9,14 +9,6 @@ build() {
cd byacc-*/ cd byacc-*/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
clean() {
rm -rf byacc-*/
}
package() {
cd byacc-*/
# NOTE: byacc's "make install" calls diff -c, which is unsupported by # NOTE: byacc's "make install" calls diff -c, which is unsupported by
# Busybox. Unfortunately, our other implementation of diff requires # Busybox. Unfortunately, our other implementation of diff requires
# byacc to build, meaning we'll need to do a manual install to prevent # byacc to build, meaning we'll need to do a manual install to prevent

View File

@@ -19,14 +19,6 @@ build() {
# NOTE: bzip2recover is part of the first Makefile, so we need to invoke # NOTE: bzip2recover is part of the first Makefile, so we need to invoke
# that to build the command. ~ahill # that to build the command. ~ahill
make -O -j $TT_PROCS bzip2recover CC=$CC CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64" make -O -j $TT_PROCS bzip2recover CC=$CC CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64"
}
clean() {
rm -rf bzip2-*/
}
package() {
cd bzip2-*/
# NOTE: The shared Makefile doesn't have an "install" target, so we just # NOTE: The shared Makefile doesn't have an "install" target, so we just
# copy the files over ourselves. ~ahill # copy the files over ourselves. ~ahill
mkdir -p $TT_INSTALLDIR$TT_BINDIR mkdir -p $TT_INSTALLDIR$TT_BINDIR

View File

@@ -22,13 +22,5 @@ build() {
--system-zlib \ --system-zlib \
--xdgdatadir=$TT_DATADIR --xdgdatadir=$TT_DATADIR
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
clean() {
rm -rf cmake-*/
}
package() {
cd cmake-*/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -9,13 +9,5 @@ build() {
cd coreutils-*/ cd coreutils-*/
./configure $TT_AUTOCONF_COMMON --disable-year2038 ./configure $TT_AUTOCONF_COMMON --disable-year2038
make -j $TT_PROCS make -j $TT_PROCS
}
clean() {
rm -rf coreutils-*/
}
package() {
cd coreutils-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -10,14 +10,6 @@ build() {
cd dash-*/ cd dash-*/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -j $TT_PROCS make -j $TT_PROCS
}
clean() {
rm -rf dash-*/
}
package() {
cd dash-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
ln -s dash $TT_INSTALLDIR/bin/sh ln -s dash $TT_INSTALLDIR/bin/sh
} }

View File

@@ -15,9 +15,5 @@ build() {
# See also: https://lists.gnu.org/archive/html/bug-gnulib/2025-04/msg00056.html # See also: https://lists.gnu.org/archive/html/bug-gnulib/2025-04/msg00056.html
./configure $TT_AUTOCONF_COMMON gl_cv_func_strcasecmp_works=y ./configure $TT_AUTOCONF_COMMON gl_cv_func_strcasecmp_works=y
make -j $TT_PROCS make -j $TT_PROCS
}
package() {
cd diffutils-$SRC_VERSION/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -9,13 +9,5 @@ build() {
cd findutils-*/ cd findutils-*/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -j $TT_PROCS make -j $TT_PROCS
}
clean() {
rm -rf findutils-*/
}
package() {
cd findutils-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -9,13 +9,5 @@ build() {
cd flex-*/ cd flex-*/
./configure $TT_AUTOCONF_COMMON --disable-static ./configure $TT_AUTOCONF_COMMON --disable-static
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
clean() {
rm -rf flex-*/
}
package() {
cd flex-*/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -30,9 +30,6 @@ build() {
# NOTE: Is there a better way to do this? This probably won't survive # NOTE: Is there a better way to do this? This probably won't survive
# cross-compilation. ~ahill # cross-compilation. ~ahill
./build-$SRC_VERSION/strfile maple ./build-$SRC_VERSION/strfile maple
}
package() {
cmake --install build-$SRC_VERSION --parallel $TT_PROCS cmake --install build-$SRC_VERSION --parallel $TT_PROCS
cp maple $TT_INSTALLDIR/usr/share/games/fortunes/ cp maple $TT_INSTALLDIR/usr/share/games/fortunes/
cp maple.dat $TT_INSTALLDIR/usr/share/games/fortunes/ cp maple.dat $TT_INSTALLDIR/usr/share/games/fortunes/

View File

@@ -9,9 +9,5 @@ build() {
cd grep-$SRC_VERSION/ cd grep-$SRC_VERSION/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -j $TT_PROCS make -j $TT_PROCS
}
package() {
cd grep-$SRC_VERSION/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -9,13 +9,5 @@ build() {
cd groff-*/ cd groff-*/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -j $TT_PROCS make -j $TT_PROCS
}
clean() {
rm -rf groff-*/
}
package() {
cd groff-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -9,9 +9,5 @@ build() {
cd gzip-$SRC_VERSION/ cd gzip-$SRC_VERSION/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -j $TT_PROCS make -j $TT_PROCS
}
package() {
cd gzip-$SRC_VERSION/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -10,14 +10,6 @@ build() {
cd initramfs-tools-*/ cd initramfs-tools-*/
# NOTE: Since this is for a single file, we don't pass TT_PROC. ~ahill # NOTE: Since this is for a single file, we don't pass TT_PROC. ~ahill
make make
}
clean() {
rm -rf initramfs-tools-*/
}
package() {
cd initramfs-tools-*/
# NOTE: There's no make install! ~ahill # NOTE: There's no make install! ~ahill
mkdir -p $TT_INSTALLDIR/bin mkdir -p $TT_INSTALLDIR/bin

View File

@@ -14,9 +14,5 @@ build() {
# ~ahill # ~ahill
./configure $TT_AUTOCONF_COMMON --disable-manpages --enable-year2038 ./configure $TT_AUTOCONF_COMMON --disable-manpages --enable-year2038
make -j $TT_PROCS make -j $TT_PROCS
}
package() {
cd kmod-$SRC_VERSION/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -9,13 +9,5 @@ build() {
cd libarchive-*/ cd libarchive-*/
./configure $TT_AUTOCONF_COMMON --disable-static --enable-year2038 ./configure $TT_AUTOCONF_COMMON --disable-static --enable-year2038
make -j $TT_PROCS make -j $TT_PROCS
}
clean() {
rm -rf libarchive-*/
}
package() {
cd libarchive-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -17,10 +17,6 @@ build() {
INCDIR=$TT_INCLUDEDIR \ INCDIR=$TT_INCLUDEDIR \
exec_prefix=$TT_PREFIX \ exec_prefix=$TT_PREFIX \
prefix=$TT_PREFIX prefix=$TT_PREFIX
}
package() {
cd libcap-$SRC_VERSION/
make -O \ make -O \
-C libcap \ -C libcap \
-j $TT_PROCS \ -j $TT_PROCS \

View File

@@ -19,13 +19,5 @@ build() {
sed -i "s/-lzstd//" Makefile sed -i "s/-lzstd//" Makefile
sed -i "/#define USE_ZSTD/d" src/config.h sed -i "/#define USE_ZSTD/d" src/config.h
make -O -j $TT_PROCS make -O -j $TT_PROCS
} make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR INCDIR=$TT_INCLUDEDIR
clean() {
rm -rf libelf-$SRC_VERSION/
}
package() {
cd libelf-$SRC_VERSION/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR INCDIR=/usr/include
} }

View File

@@ -15,13 +15,5 @@ build() {
# ~ahill # ~ahill
./configure $TT_AUTOCONF_COMMON --disable-static ./configure $TT_AUTOCONF_COMMON --disable-static
make -j $TT_PROCS make -j $TT_PROCS
}
clean() {
rm -rf libressl-*/
}
package() {
cd libressl-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -15,13 +15,5 @@ build() {
# libtoolize. Strangely enough, libtool is hard-coded to /bin/sh, so # libtoolize. Strangely enough, libtool is hard-coded to /bin/sh, so
# I don't know why libtoolize uses /usr/bin/env. ~ahill # I don't know why libtoolize uses /usr/bin/env. ~ahill
sed -i "s|/usr/bin/env sh|/bin/sh|" libtoolize sed -i "s|/usr/bin/env sh|/bin/sh|" libtoolize
}
clean() {
rm -rf libtool-*/
}
package() {
cd libtool-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -10,9 +10,5 @@ build() {
# TODO: How should other architectures be handled? ~ahill # TODO: How should other architectures be handled? ~ahill
./configure $TT_AUTOCONF_COMMON --enable-uefi-x86-64 ./configure $TT_AUTOCONF_COMMON --enable-uefi-x86-64
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
package() {
cd limine-$SRC_VERSION/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -15,10 +15,6 @@ build() {
# where to find the parser generator manually. ~ahill # where to find the parser generator manually. ~ahill
LLVM=1 make -j $TT_PROCS defconfig YACC=byacc LLVM=1 make -j $TT_PROCS defconfig YACC=byacc
LLVM=1 make -j $TT_PROCS YACC=byacc LLVM=1 make -j $TT_PROCS YACC=byacc
}
package() {
cd linux-$SRC_VERSION/
make -j $TT_PROCS install INSTALL_PATH=$TT_INSTALLDIR/boot make -j $TT_PROCS install INSTALL_PATH=$TT_INSTALLDIR/boot
make -j $TT_PROCS modules_install INSTALL_MOD_PATH=$TT_INSTALLDIR make -j $TT_PROCS modules_install INSTALL_MOD_PATH=$TT_INSTALLDIR
# TODO: Run dtbs_install on non-x86 systems ~ahill # TODO: Run dtbs_install on non-x86 systems ~ahill

View File

@@ -9,13 +9,5 @@ build() {
cd m4-*/ cd m4-*/
./configure $TT_AUTOCONF_COMMON --enable-year2038 ./configure $TT_AUTOCONF_COMMON --enable-year2038
make -j $TT_PROCS make -j $TT_PROCS
}
clean() {
rm -rf m4-*/
}
package() {
cd m4-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -9,13 +9,5 @@ build() {
cd make-*/ cd make-*/
./configure $TT_AUTOCONF_COMMON --enable-year2038 ./configure $TT_AUTOCONF_COMMON --enable-year2038
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
clean() {
rm -rf make-*/
}
package() {
cd make-*/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -10,10 +10,6 @@ build() {
cd mawk-$SRC_VERSION/ cd mawk-$SRC_VERSION/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
package() {
cd mawk-$SRC_VERSION/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
ln -s mawk $TT_INSTALLDIR/bin/awk ln -s mawk $TT_INSTALLDIR/bin/awk
} }

View File

@@ -14,13 +14,5 @@ build() {
CC="clang -std=c99" ./bootstrap.sh build CC="clang -std=c99" ./bootstrap.sh build
./build/muon-bootstrap setup $TT_MESON_COMMON build ./build/muon-bootstrap setup $TT_MESON_COMMON build
./build/muon-bootstrap -C build samu ./build/muon-bootstrap -C build samu
}
clean() {
rm -rf muon-*/
}
package() {
cd muon-*/
DESTDIR=$TT_INSTALLDIR ./build/muon -C build install DESTDIR=$TT_INSTALLDIR ./build/muon -C build install
} }

View File

@@ -18,14 +18,6 @@ build() {
patch -p1 < ../CVE-2025-26519.patch patch -p1 < ../CVE-2025-26519.patch
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
clean() {
rm -rf musl-*/
}
package() {
cd musl-*/
DESTDIR=$TT_INSTALLDIR make install DESTDIR=$TT_INSTALLDIR make install
# NOTE: Apparently, the linker library has an entry point that we can use as # NOTE: Apparently, the linker library has an entry point that we can use as
# ldd. What kind of black magic is this? ~ahill # ldd. What kind of black magic is this? ~ahill

View File

@@ -9,9 +9,5 @@ build() {
cd nano-$SRC_VERSION/ cd nano-$SRC_VERSION/
./configure $TT_AUTOCONF_COMMON --enable-utf8 --enable-year2038 ./configure $TT_AUTOCONF_COMMON --enable-utf8 --enable-year2038
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
package() {
cd nano-$SRC_VERSION/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -14,13 +14,5 @@ build() {
# attempting to redefine a C++ keyword in include/compiler.h. # attempting to redefine a C++ keyword in include/compiler.h.
sed -i "/# ifdef bool/,/# endif/d" include/compiler.h sed -i "/# ifdef bool/,/# endif/d" include/compiler.h
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
clean() {
rm -rf nasm-$SRC_VERSION/
}
package() {
cd nasm-$SRC_VERSION/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -13,9 +13,5 @@ build() {
--without-normal \ --without-normal \
--with-shared --with-shared
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
package() {
cd ncurses-$SRC_VERSION/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -14,9 +14,5 @@ build() {
-Dzsh-completions=true \ -Dzsh-completions=true \
build build
muon samu -C build muon samu -C build
}
package() {
cd openrc-$SRC_VERSION/
muon -C build install -d $TT_INSTALLDIR muon -C build install -d $TT_INSTALLDIR
} }

View File

@@ -9,9 +9,5 @@ build() {
cd patch-$SRC_VERSION/ cd patch-$SRC_VERSION/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -j $TT_PROCS make -j $TT_PROCS
}
package() {
cd patch-$SRC_VERSION/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -20,13 +20,5 @@ build() {
-D usrinc=$TT_INCLUDEDIR \ -D usrinc=$TT_INCLUDEDIR \
-D vendorprefix=$TT_PREFIX -D vendorprefix=$TT_PREFIX
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
clean() {
rm -rf perl-*/
}
package() {
cd perl-*/
make -O -j $TT_PROCS install.perl DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install.perl DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -9,14 +9,6 @@ build() {
cd pkgconf-*/ cd pkgconf-*/
./configure $TT_AUTOCONF_COMMON --disable-static --enable-year2038 ./configure $TT_AUTOCONF_COMMON --disable-static --enable-year2038
make -j $TT_PROCS make -j $TT_PROCS
}
clean() {
rm -rf pkgconf-*/
}
package() {
cd pkgconf-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
# NOTE: Symlink for compatibility's sake. Currently being used by Muon. # NOTE: Symlink for compatibility's sake. Currently being used by Muon.
# ~ahill # ~ahill

View File

@@ -9,9 +9,5 @@ build() {
cd sed-$SRC_VERSION/ cd sed-$SRC_VERSION/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -j $TT_PROCS make -j $TT_PROCS
}
package() {
cd sed-$SRC_VERSION/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -9,9 +9,5 @@ build() {
cd tar-$SRC_VERSION/ cd tar-$SRC_VERSION/
./configure $TT_AUTOCONF_COMMON ./configure $TT_AUTOCONF_COMMON
make -j $TT_PROCS make -j $TT_PROCS
}
package() {
cd tar-$SRC_VERSION/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -13,13 +13,5 @@ build() {
cd xz-*/ cd xz-*/
./configure $TT_AUTOCONF_COMMON --disable-static --enable-year2038 ./configure $TT_AUTOCONF_COMMON --disable-static --enable-year2038
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
clean() {
rm -rf xz-*/
}
package() {
cd xz-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -24,9 +24,5 @@ build() {
--prefix=/usr \ --prefix=/usr \
--shared --shared
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
package() {
cd zlib-$SRC_VERSION/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
} }

View File

@@ -19,10 +19,6 @@ build() {
--enable-multibyte \ --enable-multibyte \
--enable-libc-musl --enable-libc-musl
make -O -j $TT_PROCS make -O -j $TT_PROCS
}
package() {
cd zsh-$SRC_VERSION/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
ln -sf zsh $TT_INSTALLDIR/bin/bash ln -sf zsh $TT_INSTALLDIR/bin/bash
} }

62
treetap
View File

@@ -18,6 +18,14 @@
# Changelog # # Changelog #
############# #############
# January 16, 2026 (1.5.0)
# + Added TT_PACKAGE [ahill]
# + Added variable subcommand [ahill]
# * Converted the build log path to an absolute path [ahill]
# * Merged the functionality of the package verb into the build command [ahill]
# * Packages are no longer built if the package file exists already [ahill]
# - Removed the purge subcommand in favor of clean [ahill]
# January 4, 2026 (1.4.1) # January 4, 2026 (1.4.1)
# * Set LD to ld.lld after mold was removed from Maple Linux. [ahill] # * Set LD to ld.lld after mold was removed from Maple Linux. [ahill]
# - Replaced clean with purge, since the current implementation of clean isn't # - Replaced clean with purge, since the current implementation of clean isn't
@@ -79,8 +87,7 @@
# of useful variables to take advantage of. ~ahill # of useful variables to take advantage of. ~ahill
# Specification Functions: # Specification Functions:
# build - Builds the package # build - Builds the package and installs it to $TT_INSTALLDIR
# package - Installs the package contents to $TT_INSTALLDIR
# Specification Variables: # Specification Variables:
# SRC_FILENAME - The name of the tarball to extract (optional) # SRC_FILENAME - The name of the tarball to extract (optional)
@@ -126,6 +133,8 @@
# [scope: source] # [scope: source]
# TT_MICROARCH - The microarchitecture to optimize for # TT_MICROARCH - The microarchitecture to optimize for
# [scope: source] # [scope: source]
# TT_PACKAGE - The path to the package being built
# [scope: source]
# TT_PKGDIR - The path to the package directory # TT_PKGDIR - The path to the package directory
# [scope: global] # [scope: global]
# TT_PREFIX - The desired prefix for the package # TT_PREFIX - The desired prefix for the package
@@ -150,7 +159,7 @@
[ -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.4.1" TT_VERSION="1.5.0"
######################### #########################
# Environment Variables # # Environment Variables #
@@ -183,8 +192,7 @@ help_message() {
echo " $0 build <spec>" echo " $0 build <spec>"
echo " $0 clean <spec>" echo " $0 clean <spec>"
echo " $0 fetch <spec>" echo " $0 fetch <spec>"
echo " $0 package <spec>" echo " $0 variable <spec> <name>"
echo " $0 purge <spec>"
exit 1 exit 1
} }
@@ -257,6 +265,7 @@ source_spec() {
# occur and where to put the artifacts. ~ahill # occur and where to put the artifacts. ~ahill
TT_BUILDDIR="$TT_DIR/sources/$SRC_NAME/$SRC_VERSION/$TT_MICROARCH" TT_BUILDDIR="$TT_DIR/sources/$SRC_NAME/$SRC_VERSION/$TT_MICROARCH"
TT_INSTALLDIR="$TT_BUILDDIR/install" TT_INSTALLDIR="$TT_BUILDDIR/install"
TT_PACKAGE="$TT_PKGDIR/$TT_MICROARCH/$SRC_NAME-$SRC_FULLVERSION-$TT_MICROARCH.cpio.xz"
# Create convenience variables # Create convenience variables
TT_AUTOCONF_COMMON=$(echo "--bindir=$TT_BINDIR \ TT_AUTOCONF_COMMON=$(echo "--bindir=$TT_BINDIR \
@@ -363,7 +372,12 @@ package_uninstall() {
# Builds the source from the previously fetched tarball # Builds the source from the previously fetched tarball
source_build() { source_build() {
source_spec $1 source_spec $1
if [ -f "$TT_PACKAGE" ]; then
echo "Skipping build for $SRC_NAME $SRC_FULLVERSION"
exit 0
fi
mkdir -p $TT_BUILDDIR mkdir -p $TT_BUILDDIR
mkdir -p $TT_INSTALLDIR
if [ ! -z "$SRC_PATCHES" ]; then if [ ! -z "$SRC_PATCHES" ]; then
echo -n "Validating patches for $SRC_NAME $SRC_FULLVERSION... " echo -n "Validating patches for $SRC_NAME $SRC_FULLVERSION... "
cd $(dirname $1) cd $(dirname $1)
@@ -383,12 +397,18 @@ source_build() {
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
# troubleshooting purposes. ~ahill # troubleshooting purposes. ~ahill
TT_BUILD_LOG=build-$(date +%Y%m%d%H%M%S).log TT_BUILD_LOG=$TT_BUILDDIR/build-$(date +%Y%m%d%H%M%S).log
echo "Build started with treetap $TT_VERSION at $(date)" > $TT_BUILD_LOG echo "Build started with treetap $TT_VERSION at $(date)" > $TT_BUILD_LOG
build >> $TT_BUILD_LOG 2>&1 build >> $TT_BUILD_LOG 2>&1
echo "Build finished at $(date)" >> $TT_BUILD_LOG echo "Build finished at $(date)" >> $TT_BUILD_LOG
cd $PUSHD
echo "Done!" echo "Done!"
cd $TT_INSTALLDIR
echo -n "Archiving $SRC_NAME $SRC_FULLVERSION for $TT_MICROARCH... "
mkdir -p $TT_PKGDIR/$TT_MICROARCH
find | bsdcpio -Jo > $TT_PACKAGE
rm -rf $TT_INSTALLDIR
echo "Done!"
cd $PUSHD
exit 0 exit 0
} }
@@ -416,27 +436,18 @@ source_fetch() {
exit 0 exit 0
} }
# Packages the built artifacts for distribution # Purges the entire build directory for a source
source_package() { source_clean() {
source_spec $1 source_spec $1
mkdir -p $TT_BUILDDIR rm -rf $TT_BUILDDIR
mkdir -p $TT_INSTALLDIR
mkdir -p $TT_PKGDIR/$TT_MICROARCH
PUSHD=$(pwd)
cd $TT_BUILDDIR
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_FULLVERSION-$TT_MICROARCH.cpio.xz"
rm -rf $TT_INSTALLDIR
cd $PUSHD
exit 0 exit 0
} }
# Purges the entire build directory for a source # Prints a variable defined by treetap
source_purge() { source_variable() {
source_spec $1 source_spec $1
rm -rf $TT_BUILDDIR [ -z "$2" ] && (echo "source_variable: Variable name not given"; exit 1)
eval "echo \${$2}"
exit 0 exit 0
} }
@@ -446,11 +457,10 @@ source_purge() {
case "$1" in case "$1" in
"build") source_build $2 ;; "build") source_build $2 ;;
"clean") source_purge $2 ;; "clean") source_clean $2 ;;
"fetch") source_fetch $2 ;; "fetch") source_fetch $2 ;;
"install") package_install $2 $3 ;; "install") package_install $2 $3 ;;
"package") source_package $2 ;;
"purge") source_purge $2 ;;
"uninstall") package_uninstall $2 $3 ;; "uninstall") package_uninstall $2 $3 ;;
"variable") source_variable $2 $3 ;;
*) help_message ;; *) help_message ;;
esac esac