Integrated Treetap into Maple Linux #1

Merged
ahill merged 74 commits from treetap into main 2026-01-25 22:51:04 +00:00
12 changed files with 327 additions and 7 deletions
Showing only changes of commit 679f263c2f - Show all commits

View File

@ -2,6 +2,9 @@ This document tracks which packages can be built and packaged within the chroot.
| Package | Can Build? | Can Package? |
| ------------ | ---------- | ------------ |
| `autoconf` | Yes | Yes |
| `automake` | Yes | Yes |
| `bsdutils` | Yes | Yes |
| `busybox` | No | No |
| `byacc` | Yes | Yes |
| `bzip2` | Yes | Yes |
@ -17,6 +20,9 @@ This document tracks which packages can be built and packaged within the chroot.
| `mold` | Yes | Yes |
| `muon` | Yes | Yes |
| `musl` | Yes | Yes |
| `musl-fts` | Yes | Yes |
| `ncurses` | Yes | Yes |
| `perl` | Yes | Yes |
| `pkgconf` | Yes | Yes |
| `xz` | Yes | Yes |
| `zlib` | Yes | Yes |

View File

@ -241,7 +241,33 @@ cp $TREETAP $BOOTSTRAP/root/bin/
mkdir -p $BOOTSTRAP/root/maple/
cp rootbuild.sh $BOOTSTRAP/root/maple/
export TT_DIR=$BOOTSTRAP/root/maple/.treetap
SOURCES=(busybox byacc bzip2 cmake editline flex libarchive libressl linux llvm m4 make mold muon musl ncurses xz zlib)
SOURCES=(
autoconf
automake
bsdutils
busybox
byacc
bzip2
cmake
editline
flex
libarchive
libressl
libtool
linux
llvm
m4
make
mold
muon
musl
musl-fts
ncurses
perl
pkgconf
xz
zlib
)
for name in $SOURCES; do
$TREETAP fetch $SPEC/$name/$name.spec
done

25
maple-chroot Executable file
View File

@ -0,0 +1,25 @@
#!/bin/sh
if [ -z "$1" ] && [ ! -d "$1" ]; then
echo "Usage: $0 <root>"
exit 1
fi
if mount --rbind /dev $1/dev && mount --make-rslave $1/dev; then
if mount -t proc /proc $1/proc; then
if mount --bind /run $1/run; then
if mount --rbind /sys $1/sys && mount --make-rslave $1/sys; then
if mount --rbind /tmp $1/tmp; then
SHELL=$2
[ -z "$SHELL" ] && SHELL=/bin/sh
chroot $1 $SHELL
umount -R $1/tmp
fi
umount -R $1/sys
fi
umount -R $1/run
fi
umount -R $1/proc
fi
umount -R $1/dev
fi

View File

@ -25,8 +25,11 @@ make -j $(nproc) install DESTDIR=/
# NOTE: mold requires CMake to build. ~ahill
# NOTE: flex requires byacc and m4 to build. ~ahill
# NOTE: editline requires ncurses to build. ~ahill
# 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
cd /maple
PACKAGES="byacc bzip2 libressl m4 make muon musl ncurses xz zlib editline flex libarchive cmake mold"
PACKAGES="byacc bzip2 libressl m4 make muon musl ncurses perl pkgconf xz zlib autoconf automake editline flex libarchive libtool musl-fts cmake mold"
for pkg in $PACKAGES; do
treetap fetch sources/$pkg/$pkg.spec
treetap build sources/$pkg/$pkg.spec

View File

@ -0,0 +1,21 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="ba885c1319578d6c94d46e9b0dceb4014caafe2490e437a0dbca3f270a223f5a"
SRC_NAME="autoconf"
SRC_URL="https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz"
SRC_VERSION="2.72"
build() {
tar xf ../$SRC_FILENAME
cd autoconf-*/
./configure $TT_AUTOCONF_COMMON
make -O -j $TT_PROCS
}
clean() {
rm -rf autoconf-*/
}
package() {
cd autoconf-*/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
}

View File

@ -0,0 +1,21 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="168aa363278351b89af56684448f525a5bce5079d0b6842bd910fdd3f1646887"
SRC_NAME="automake"
SRC_URL="https://ftp.gnu.org/gnu/automake/automake-1.18.1.tar.xz"
SRC_VERSION="1.18.1"
build() {
tar xf ../$SRC_FILENAME
cd automake-*/
./configure $TT_AUTOCONF_COMMON
make -j $TT_PROCS
}
clean() {
rm -rf automake-*/
}
package() {
cd automake-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
}

View File

@ -0,0 +1,121 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_FILENAME="bsdutils-13.2.tar.gz"
SRC_HASH="4547990309afe686c6f36c2a4f7ac5806e0064b182dd1f93f52dda7661979a3c"
SRC_NAME="bsdutils"
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
build() {
tar xf ../$SRC_FILENAME
cd bsdutils/
# NOTE: Before we start building bsdutils, we tell it *not* to build df/wc,
# since that requires an additional dependency (libxo) and we already
# have BusyBox's version of df and wc to replace it. ~ahill
sed -i "/libxo/d" meson.build
sed -i "/'df'/d" src/meson.build
sed -i "/'wc'/d" src/meson.build
# NOTE: Apparently, rpmatch is REQUIRED, despite meson.build stating that it
# is optional. Disabling find in favor of BusyBox to prevent another
# 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
# ...
muon setup $TT_MESON_COMMON build
muon samu -C build
}
clean() {
rm -rf bsdutils/
}
package() {
cd bsdutils/
muon -C build install -d $TT_INSTALLDIR
}

View File

@ -0,0 +1,27 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="f81f5860666b0bc7d84baddefa60d1cb9fa6fceb2398cc3baca6afaa60266675"
SRC_NAME="libtool"
SRC_URL="https://ftp.gnu.org/gnu/libtool/libtool-2.5.4.tar.xz"
SRC_VERSION="2.5.4"
build() {
tar xf ../$SRC_FILENAME
cd libtool-*/
./configure $TT_AUTOCONF_COMMON --disable-static
make -j $TT_PROCS
# NOTE: For some reason, libtoolize uses the env command to locate sh, but
# we don't have the env command yet, because env is part of bsdutils,
# which requires musl-fts to function, which we can't build without
# libtoolize. Strangely enough, libtool is hard-coded to /bin/sh, so
# I don't know why libtoolize uses /usr/bin/env. ~ahill
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
}

View File

@ -1,13 +1,14 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="e4315fef49b08912b1d1db3774dd98f971397b2751c648512b6c8d852590dc50"
SRC_HASH="e236ea3a1ccf5f6c270b1c4bb60726f371fa49459a8eaaebc90b216b328daf2b"
SRC_NAME="m4"
SRC_URL="http://haddonthethird.net/m4/m4-2.tar.bz2"
SRC_VERSION="2"
SRC_URL="https://ftp.gnu.org/gnu/m4/m4-1.4.20.tar.xz"
SRC_VERSION="1.4.20"
build() {
tar xf ../$SRC_FILENAME
cd m4-*/
make -O -j $TT_PROCS
./configure $TT_AUTOCONF_COMMON --enable-year2038
make -j $TT_PROCS
}
clean() {
@ -16,5 +17,5 @@ clean() {
package() {
cd m4-*/
make -O -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
}

View File

@ -0,0 +1,24 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_FILENAME="musl_fts-1.2.7.tar.gz"
SRC_HASH="49ae567a96dbab22823d045ffebe0d6b14b9b799925e9ca9274d47d26ff482a6"
SRC_NAME="musl-fts"
SRC_URL="https://github.com/void-linux/musl-fts/archive/refs/tags/v1.2.7.tar.gz"
SRC_VERSION="1.2.7"
build() {
tar xf ../$SRC_FILENAME
cd musl-fts-*/
# TODO: Can we rewrite this to not rely on libtool going forward? ~ahill
./bootstrap.sh
./configure $TT_AUTOCONF_COMMON --disable-static
make -j $TT_PROCS
}
clean() {
rm -rf musl-fts-*/
}
package() {
cd musl-fts-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
}

21
sources/perl/perl.spec Normal file
View File

@ -0,0 +1,21 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="e093ef184d7f9a1b9797e2465296f55510adb6dab8842b0c3ed53329663096dc"
SRC_NAME="perl"
SRC_URL="https://www.cpan.org/src/5.0/perl-5.42.0.tar.gz"
SRC_VERSION="5.42.0"
build() {
tar xf ../$SRC_FILENAME
cd perl-*/
./Configure -des
make -O -j $TT_PROCS
}
clean() {
rm -rf perl-*/
}
package() {
cd perl-*/
make -O -j $TT_PROCS DESTDIR=$TT_INSTALLDIR
}

View File

@ -0,0 +1,24 @@
# Maintainer: Alexander Hill <ahill@breadpudding.dev>
SRC_HASH="cd05c9589b9f86ecf044c10a2269822bc9eb001eced2582cfffd658b0a50c243"
SRC_NAME="pkgconf"
SRC_URL="https://distfiles.dereferenced.org/pkgconf/pkgconf-2.5.1.tar.xz"
SRC_VERSION="2.5.1"
build() {
tar xf ../$SRC_FILENAME
cd pkgconf-*/
./configure $TT_AUTOCONF_COMMON --disable-static --enable-year2038
make -j $TT_PROCS
}
clean() {
rm -rf pkgconf-*/
}
package() {
cd pkgconf-*/
make -j $TT_PROCS install DESTDIR=$TT_INSTALLDIR
# NOTE: Symlink for compatibility's sake. Currently being used by Muon.
# ~ahill
ln -sf pkgconf $TT_INSTALLDIR/bin/pkg-config
}