Started bootstrapping with treetap
This commit is contained in:
parent
5484dbc5de
commit
8bd73c53fc
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1 +0,0 @@
|
|||||||
*.patch text eol=lf
|
|
||||||
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,3 +1,2 @@
|
|||||||
/build
|
/.bootstrap
|
||||||
/maple
|
/.treetap
|
||||||
/sources
|
|
||||||
|
|||||||
171
bootstrap.sh
Executable file
171
bootstrap.sh
Executable file
@ -0,0 +1,171 @@
|
|||||||
|
#!/bin/zsh -e
|
||||||
|
|
||||||
|
BOOTSTRAP=$(pwd)/.bootstrap
|
||||||
|
MICROARCH="skylake"
|
||||||
|
PROCS=$(nproc)
|
||||||
|
SOURCES=$(pwd)/.treetap/sources
|
||||||
|
TARGET=x86_64-maple-linux-musl
|
||||||
|
|
||||||
|
# Fetch sources required for a bootstrap
|
||||||
|
./treetap fetch sources/busybox.spec
|
||||||
|
./treetap fetch sources/linux.spec
|
||||||
|
./treetap fetch sources/llvm.spec
|
||||||
|
./treetap fetch sources/musl.spec
|
||||||
|
|
||||||
|
# Simplified filesystem heirarchy with symlinks for compatibility
|
||||||
|
mkdir -p $BOOTSTRAP/root/{bin,boot/EFI/BOOT,dev,etc,home,lib,proc,run,sys,tmp,usr/{include,share},var/{cache,lib,log,spool,tmp}}
|
||||||
|
ln -sf bin $BOOTSTRAP/root/sbin
|
||||||
|
ln -sf ../bin $BOOTSTRAP/root/usr/bin
|
||||||
|
ln -sf ../bin $BOOTSTRAP/root/usr/sbin
|
||||||
|
ln -sf ../lib $BOOTSTRAP/root/usr/lib
|
||||||
|
ln -sf ../lib $BOOTSTRAP/root/usr/libexec
|
||||||
|
ln -sf ../run/lock $BOOTSTRAP/root/var/lock
|
||||||
|
ln -sf ../run $BOOTSTRAP/root/var/run
|
||||||
|
|
||||||
|
# Prepare for the build
|
||||||
|
ARCH=$(echo $TARGET | cut -d"-" -f1)
|
||||||
|
export AR=llvm-ar
|
||||||
|
export CC=clang
|
||||||
|
export CFLAGS="-fuse-ld=lld -O3 -march=$MICROARCH -pipe --sysroot=$BOOTSTRAP/root -Wno-unused-command-line-argument"
|
||||||
|
export CXX=clang++
|
||||||
|
export CXXFLAGS=$CFLAGS
|
||||||
|
export RANLIB=llvm-ranlib
|
||||||
|
export LD=ld.lld
|
||||||
|
export TREETAP_SYSROOT=$BOOTSTRAP/root
|
||||||
|
export TREETAP_TARGET=$TARGET
|
||||||
|
mkdir -p $BOOTSTRAP/build
|
||||||
|
cd $BOOTSTRAP/build
|
||||||
|
|
||||||
|
# Define the target for Maple Linux
|
||||||
|
cat << EOF > $BOOTSTRAP/$TARGET.cmake
|
||||||
|
set(CMAKE_ASM_COMPILER_TARGET $TARGET)
|
||||||
|
set(CMAKE_C_COMPILER $CC)
|
||||||
|
set(CMAKE_C_COMPILER_TARGET $TARGET)
|
||||||
|
set(CMAKE_C_FLAGS_INIT "$CFLAGS")
|
||||||
|
set(CMAKE_CXX_COMPILER $CXX)
|
||||||
|
set(CMAKE_CXX_COMPILER_TARGET $TARGET)
|
||||||
|
set(CMAKE_CXX_FLAGS_INIT "$CXXFLAGS")
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
|
set(CMAKE_LINKER_TYPE LLD)
|
||||||
|
set(CMAKE_SYSROOT "$BOOTSTRAP/root")
|
||||||
|
set(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Install headers for Linux
|
||||||
|
tar xf $SOURCES/linux/*/linux-*.tar*
|
||||||
|
cd linux-*/
|
||||||
|
# NOTE: LLVM=1 is required here because GCC and other GNU tools are required in
|
||||||
|
# some places still. This allows us to use LLVM and bypass the parts that
|
||||||
|
# haven't become portable yet. ~ahill
|
||||||
|
LLVM=1 make -j $PROCS mrproper
|
||||||
|
# NOTE: We don't use the built-in headers_install target because it requires
|
||||||
|
# rsync for some reason. ~ahill
|
||||||
|
LLVM=1 make -j $PROCS headers ARCH=$ARCH
|
||||||
|
find usr/include -type f ! -name "*.h" -delete
|
||||||
|
cp -r usr/include $BOOTSTRAP/root/usr
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# Install headers for musl
|
||||||
|
tar xf $SOURCES/musl/*/musl-*.tar*
|
||||||
|
cd musl-*/
|
||||||
|
# NOTE: We are intentionally not passing --target here because musl follows the
|
||||||
|
# GNU approach when it comes to cross-compiling. This means the build
|
||||||
|
# script prefaces the name of every build tool with the target triple
|
||||||
|
# we're compiling for. This is unnecessary for LLVM, because we can simply
|
||||||
|
# pass -target <triple> to the compiler and have it generate machine code
|
||||||
|
# for that target. ~ahill
|
||||||
|
./configure \
|
||||||
|
--bindir=/bin \
|
||||||
|
--includedir=/usr/include \
|
||||||
|
--libdir=/lib \
|
||||||
|
--prefix=/
|
||||||
|
make -O -j $PROCS
|
||||||
|
make -O -j $PROCS install-headers DESTDIR=$BOOTSTRAP/root
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# Build and install compiler-rt builtins
|
||||||
|
tar xf $SOURCES/llvm/*/llvm-project-*.tar*
|
||||||
|
cd llvm-project-*/
|
||||||
|
cmake -S compiler-rt/lib/builtins -B build-builtins \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=$BOOTSTRAP/root \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=$BOOTSTRAP/$TARGET.cmake \
|
||||||
|
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON
|
||||||
|
cmake --build build-builtins --parallel $PROCS
|
||||||
|
cmake --install build-builtins --parallel $PROCS
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# Build musl for real this time
|
||||||
|
cd musl-*/
|
||||||
|
# TODO: CVE-2025-26519
|
||||||
|
make clean
|
||||||
|
# NOTE: LIBCC is required here because it will attempt to link with the build
|
||||||
|
# system's runtime if this is not specified. ~ahill
|
||||||
|
LIBCC="$BOOTSTRAP/root/lib/linux/libclang_rt.builtins-x86_64.a" \
|
||||||
|
./configure \
|
||||||
|
--bindir=/bin \
|
||||||
|
--includedir=/usr/include \
|
||||||
|
--libdir=/lib \
|
||||||
|
--prefix=/
|
||||||
|
make -O -j $PROCS
|
||||||
|
make -O -j $PROCS install DESTDIR=$BOOTSTRAP/root
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# 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 CXXFLAGS="$CXXFLAGS -Qunused-arguments -rtlib=compiler-rt -Wl,--dynamic-linker=/lib/ld-musl-$ARCH.so.1"
|
||||||
|
|
||||||
|
# Build the LLVM runtimes
|
||||||
|
# NOTE: When CMake tests the C++ compiler, it attempts to link libstdc++/libc++
|
||||||
|
# before it even exists, causing an error. We can bypass this by simply
|
||||||
|
# setting CMAKE_CXX_COMPILER_WORKS, therefore tricking CMake into
|
||||||
|
# performing a successful build. Yet another instance where the genie in
|
||||||
|
# the bottle does exactly what we asked, and not what we wanted. ~ahill
|
||||||
|
cd llvm-project-*/
|
||||||
|
cmake -S runtimes -B build-runtimes \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_CXX_COMPILER_WORKS=ON \
|
||||||
|
-DCMAKE_INSTALL_INCLUDEDIR=$BOOTSTRAP/root/usr/include \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=$BOOTSTRAP/root \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=$BOOTSTRAP/$TARGET.cmake \
|
||||||
|
-DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \
|
||||||
|
-DLIBCXX_CXX_ABI=libcxxabi \
|
||||||
|
-DLIBCXX_HAS_MUSL_LIBC=ON \
|
||||||
|
-DLIBCXX_USE_COMPILER_RT=ON \
|
||||||
|
-DLIBCXXABI_USE_COMPILER_RT=ON \
|
||||||
|
-DLIBCXXABI_USE_LLVM_UNWINDER=ON \
|
||||||
|
-DLIBUNWIND_USE_COMPILER_RT=ON \
|
||||||
|
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind"
|
||||||
|
cmake --build build-runtimes --parallel $PROCS
|
||||||
|
cmake --install build-runtimes --parallel $PROCS
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# Now we can introduce libc++ into the environment
|
||||||
|
# NOTE: clang++ attempts to build with headers from the build system rather than
|
||||||
|
# exclusively relying on the sysroot. Because of this, we must manually
|
||||||
|
# define the proper include path. ~ahill
|
||||||
|
export CXXFLAGS="$CXXFLAGS -isystem $BOOTSTRAP/root/usr/include/c++/v1 -nostdinc++ -stdlib=libc++"
|
||||||
|
|
||||||
|
# Build LLVM itself
|
||||||
|
# NOTE: LLVM_ENABLE_ZSTD is disabled because we don't have zstd in the sysroot,
|
||||||
|
# and because I don't believe that a library created by Facebook should
|
||||||
|
# be required for an operating system to function. ~ahill
|
||||||
|
cd llvm-project-*/
|
||||||
|
cmake -S llvm -B build-llvm \
|
||||||
|
-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
|
||||||
|
-DCLANG_DEFAULT_RTLIB=compiler-rt \
|
||||||
|
-DCLANG_DEFAULT_UNWINDLIB=libunwind \
|
||||||
|
-DCLANG_VENDOR=Maple \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=$BOOTSTRAP/root \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=$BOOTSTRAP/$TARGET.cmake \
|
||||||
|
-DLLVM_ENABLE_LIBCXX=ON \
|
||||||
|
-DLLVM_ENABLE_PROJECTS="clang;lld;llvm" \
|
||||||
|
-DLLVM_ENABLE_ZSTD=OFF \
|
||||||
|
-DLLVM_HOST_TRIPLE=$TARGET
|
||||||
|
cmake --build build-llvm --parallel $PROCS
|
||||||
|
# ...
|
||||||
|
cd ..
|
||||||
@ -1,192 +0,0 @@
|
|||||||
#!/bin/zsh -e
|
|
||||||
export BUILD=$(clang -dumpmachine)
|
|
||||||
export MAPLE=$(pwd)/maple
|
|
||||||
export MICROARCH="skylake"
|
|
||||||
export TARGET=x86_64-maple-linux-musl
|
|
||||||
|
|
||||||
export AR=llvm-ar
|
|
||||||
export CC=clang
|
|
||||||
export CFLAGS="-O3 -march=$MICROARCH -pipe"
|
|
||||||
export CXX=clang++
|
|
||||||
export CXXFLAGS="$CFLAGS"
|
|
||||||
export LD=ld.lld
|
|
||||||
export RANLIB=llvm-ranlib
|
|
||||||
export THREADS=$(nproc)
|
|
||||||
|
|
||||||
# A simplified version of the filesystem loosely based on FHS with symlinks for
|
|
||||||
# backwards compatibility. ~ahill
|
|
||||||
mkdir -p $MAPLE/{bin,boot/EFI/BOOT,dev,etc,home,lib,proc,run,sys,tmp,usr/{include,share},var/{cache,lib,log,spool,tmp}}
|
|
||||||
# TODO: Does it make sense to have this long-term? Anything that depends on
|
|
||||||
# libc++ fails to link without it, but this should be fixed via a
|
|
||||||
# configuration change in LLVM. ~ahill
|
|
||||||
ln -sf . $MAPLE/lib/$TARGET
|
|
||||||
ln -sf . $MAPLE/usr/include/$TARGET
|
|
||||||
# NOTE: Symlinks are for compatibility's sake. These shouldn't have to exist for
|
|
||||||
# the base system to function. ~ahill
|
|
||||||
ln -sf bin $MAPLE/sbin
|
|
||||||
ln -sf ../bin $MAPLE/usr/bin
|
|
||||||
ln -sf ../bin $MAPLE/usr/sbin
|
|
||||||
ln -sf ../lib $MAPLE/usr/lib
|
|
||||||
ln -sf ../lib $MAPLE/usr/libexec
|
|
||||||
ln -sf ../run/lock $MAPLE/var/lock
|
|
||||||
ln -sf ../run $MAPLE/var/run
|
|
||||||
|
|
||||||
# NOTE: These are exclusively used for the bootstrapping process and can be
|
|
||||||
# removed later. ~ahill
|
|
||||||
mkdir -p $MAPLE/maple/{patches,sources}
|
|
||||||
|
|
||||||
# Create the build directory and enter it so we can begin! ~ahill
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
|
|
||||||
# Linux Headers
|
|
||||||
tar xf ../sources/linux-*.tar*
|
|
||||||
cd linux-*/
|
|
||||||
LLVM=1 make -j $THREADS mrproper
|
|
||||||
# NOTE: We don't use the built-in headers_install here because it requires rsync
|
|
||||||
# for some reason. ~ahill
|
|
||||||
LLVM=1 make -j $THREADS headers
|
|
||||||
find usr/include -type f ! -name "*.h" -delete
|
|
||||||
cp -r usr/include $MAPLE/usr
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
# musl Build (Stage 1)
|
|
||||||
tar xf ../sources/musl-*.tar*
|
|
||||||
cd musl-*/
|
|
||||||
./configure \
|
|
||||||
--bindir=/bin \
|
|
||||||
--build=$BUILD \
|
|
||||||
--includedir=/usr/include \
|
|
||||||
--libdir=/lib \
|
|
||||||
--prefix=/ \
|
|
||||||
--target=$TARGET
|
|
||||||
make -O -j $THREADS
|
|
||||||
make -O install-headers DESTDIR=$MAPLE
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
# LLVM Build
|
|
||||||
tar xf ../sources/llvm-project-*.tar*
|
|
||||||
cd llvm-project-*/
|
|
||||||
|
|
||||||
# Common flags used across all of the LLVM builds
|
|
||||||
COMMON_LLVM_CMAKE=(
|
|
||||||
"-DCMAKE_ASM_COMPILER_TARGET=$TARGET"
|
|
||||||
"-DCMAKE_BUILD_TYPE=Release"
|
|
||||||
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON"
|
|
||||||
"-DCMAKE_C_COMPILER=$CC"
|
|
||||||
"-DCMAKE_C_COMPILER_TARGET=$TARGET"
|
|
||||||
"-DCMAKE_CXX_COMPILER=$CXX"
|
|
||||||
"-DCMAKE_CXX_COMPILER_TARGET=$TARGET"
|
|
||||||
"-DCMAKE_FIND_ROOT_PATH=$MAPLE"
|
|
||||||
"-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY"
|
|
||||||
"-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY"
|
|
||||||
"-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY"
|
|
||||||
"-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER"
|
|
||||||
"-DCMAKE_INSTALL_DATAROOTDIR=usr/share"
|
|
||||||
"-DCMAKE_INSTALL_INCLUDEDIR=usr/include"
|
|
||||||
"-DCMAKE_INSTALL_LIBEXECDIR=lib"
|
|
||||||
"-DCMAKE_INSTALL_PREFIX=$MAPLE"
|
|
||||||
"-DCMAKE_INSTALL_RPATH=/lib"
|
|
||||||
"-DCMAKE_INSTALL_RUNSTATEDIR=run"
|
|
||||||
"-DCMAKE_INSTALL_SHAREDSTATEDIR=usr/com"
|
|
||||||
"-DCMAKE_SYSROOT=$MAPLE"
|
|
||||||
"-DCMAKE_SYSTEM_NAME=Linux"
|
|
||||||
"-DLLVM_HOST_TRIPLE=$TARGET"
|
|
||||||
"-DLLVM_USE_LINKER=lld"
|
|
||||||
"-DLLVM_TARGETS_TO_BUILD=X86"
|
|
||||||
"-DLLVM_ENABLE_ZSTD=OFF"
|
|
||||||
)
|
|
||||||
|
|
||||||
# (LLVM) Builtins Build
|
|
||||||
# NOTE: For some reason, atomics are not built unless you... disable the thing
|
|
||||||
# that disables it? Why was it implemented this way? ~ahill
|
|
||||||
cmake -S compiler-rt/lib/builtins -B build-builtins \
|
|
||||||
$COMMON_LLVM_CMAKE \
|
|
||||||
-DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF
|
|
||||||
cmake --build build-builtins
|
|
||||||
cmake --install build-builtins
|
|
||||||
|
|
||||||
# musl Build (Stage 2)
|
|
||||||
# FIXME: CVE-2025-26519
|
|
||||||
cd ../musl-*/
|
|
||||||
make -O clean
|
|
||||||
CFLAGS="-fuse-ld=lld --sysroot=$MAPLE $CFLAGS" \
|
|
||||||
LIBCC="$MAPLE/lib/linux/libclang_rt.builtins-x86_64.a" \
|
|
||||||
./configure \
|
|
||||||
--bindir=/bin \
|
|
||||||
--build=$BUILD \
|
|
||||||
--includedir=/usr/include \
|
|
||||||
--libdir=/lib \
|
|
||||||
--prefix=/ \
|
|
||||||
--target=$TARGET
|
|
||||||
make -O -j $THREADS
|
|
||||||
make -O install DESTDIR=$MAPLE
|
|
||||||
# NOTE: musl provides static libraries for POSIX libraries such as libm, but
|
|
||||||
# fails to provide shared versions which will breaks builds later on.
|
|
||||||
# Granted, they are useless since libc.so contains all the functionality
|
|
||||||
# we need, but it is needed for compatibility. As of April 5th, 2025, zsh
|
|
||||||
# is known to be misconfigured as a result of missing libraries. ~ahill
|
|
||||||
for lib in $(grep "EMPTY_LIB_NAMES =" Makefile | sed "s/EMPTY_LIB_NAMES = //"); do
|
|
||||||
ln -sf libc.so $MAPLE/lib/lib$lib.so
|
|
||||||
done
|
|
||||||
# NOTE: musl has some witchcraft associated with it that allows it to function
|
|
||||||
# as an implementation of ldd. Honestly, the idea of a library with as an
|
|
||||||
# entry point is something I have never thought of before, but I'm
|
|
||||||
# interested in exploring the possibilities. ~ahill
|
|
||||||
ln -sf /lib/ld-musl-x86_64.so.1 $MAPLE/bin/ldd
|
|
||||||
cd ../llvm-project-*/
|
|
||||||
|
|
||||||
# (LLVM) Runtimes Build
|
|
||||||
# TODO: Is it possible to prevent CMake from building static libraries? ~ahill
|
|
||||||
# NOTE: We have to trick CMake because we don't have a copy of libunwind yet, so
|
|
||||||
# CMAKE_C_COMPILER_WORKS and CMAKE_CXX_COMPILER_WORKS are manually set to
|
|
||||||
# prevent it from trying to link with libunwind initially. ~ahill
|
|
||||||
cmake -S runtimes -B build-runtimes \
|
|
||||||
$COMMON_LLVM_CMAKE \
|
|
||||||
-DCMAKE_C_COMPILER_WORKS=ON \
|
|
||||||
-DCMAKE_C_FLAGS="-fuse-ld=lld -Qunused-arguments -rtlib=compiler-rt -Wl,--dynamic-linker=/lib/ld-musl-x86_64.so.1" \
|
|
||||||
-DCMAKE_CXX_COMPILER_WORKS=ON \
|
|
||||||
-DCMAKE_CXX_FLAGS="-fuse-ld=lld -Qunused-arguments -rtlib=compiler-rt -Wl,--dynamic-linker=/lib/ld-musl-x86_64.so.1" \
|
|
||||||
-DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF \
|
|
||||||
-DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \
|
|
||||||
-DLIBCXX_CXX_ABI=libcxxabi \
|
|
||||||
-DLIBCXX_HAS_MUSL_LIBC=ON \
|
|
||||||
-DLIBCXX_USE_COMPILER_RT=ON \
|
|
||||||
-DLIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL=OFF \
|
|
||||||
-DLIBCXXABI_USE_COMPILER_RT=ON \
|
|
||||||
-DLIBCXXABI_USE_LLVM_UNWINDER=ON \
|
|
||||||
-DLIBUNWIND_USE_COMPILER_RT=ON \
|
|
||||||
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind;libcxxabi;libcxx"
|
|
||||||
cmake --build build-runtimes
|
|
||||||
cmake --install build-runtimes
|
|
||||||
|
|
||||||
# (LLVM) LLVM Build
|
|
||||||
# NOTE: For some reason, atomics cannot be found in compiler-rt, so we have to
|
|
||||||
# help it by specifying HAVE_CXX_ATOMICS_WITHOUT_LIB and
|
|
||||||
# HAVE_CXX_ATOMICS64_WITHOUT_LIB. ~ahill
|
|
||||||
cmake -S llvm -B build-llvm \
|
|
||||||
$COMMON_LLVM_CMAKE \
|
|
||||||
-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
|
|
||||||
-DCLANG_DEFAULT_RTLIB=compiler-rt \
|
|
||||||
-DCLANG_DEFAULT_UNWINDLIB=libunwind \
|
|
||||||
-DCLANG_VENDOR=Maple \
|
|
||||||
-DCMAKE_C_FLAGS="-fuse-ld=lld -Qunused-arguments -rtlib=compiler-rt -unwindlib=libunwind -Wl,--dynamic-linker=/lib/ld-musl-x86_64.so.1" \
|
|
||||||
-DCMAKE_CXX_FLAGS="-fuse-ld=lld -Qunused-arguments -rtlib=compiler-rt -stdlib=libc++ -unwindlib=libunwind -Wl,--dynamic-linker=/lib/ld-musl-x86_64.so.1" \
|
|
||||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
|
||||||
-DCXX_SUPPORTS_CUSTOM_LINKER=ON \
|
|
||||||
-DHAVE_CXX_ATOMICS_WITHOUT_LIB=ON \
|
|
||||||
-DHAVE_CXX_ATOMICS64_WITHOUT_LIB=ON \
|
|
||||||
-DLLVM_BUILD_LLVM_DYLIB=ON \
|
|
||||||
-DLLVM_ENABLE_LIBCXX=ON \
|
|
||||||
-DLLVM_ENABLE_PROJECTS="clang;libclc;lld;lldb;llvm" \
|
|
||||||
-DLLVM_ENABLE_RTTI=ON \
|
|
||||||
-DLLVM_INSTALL_BINUTILS_SYMLINKS=ON \
|
|
||||||
-DLLVM_INSTALL_UTILS=ON \
|
|
||||||
-DLLVM_LINK_LLVM_DYLIB=ON
|
|
||||||
cmake --build build-llvm
|
|
||||||
# ...
|
|
||||||
|
|
||||||
# Finally done with LLVM ~ahill
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
# ...
|
|
||||||
1889
build-chroot.sh
1889
build-chroot.sh
File diff suppressed because it is too large
Load Diff
@ -1,41 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
MAPLE=$(pwd)/maple
|
|
||||||
|
|
||||||
run_chroot() {
|
|
||||||
SHELL=/bin/sh
|
|
||||||
if [ -e $MAPLE/bin/zsh ]; then
|
|
||||||
SHELL=/bin/zsh
|
|
||||||
fi
|
|
||||||
chroot $MAPLE $SHELL
|
|
||||||
}
|
|
||||||
|
|
||||||
if mount --rbind /dev $MAPLE/dev && mount --make-rslave $MAPLE/dev; then
|
|
||||||
if mount -t proc /proc $MAPLE/proc; then
|
|
||||||
if mount --rbind /sys $MAPLE/sys && mount --make-rslave $MAPLE/sys; then
|
|
||||||
if mount --rbind /tmp $MAPLE/tmp; then
|
|
||||||
if mount --bind /run $MAPLE/run; then
|
|
||||||
if [ -d $MAPLE/maple/sources ]; then
|
|
||||||
if mount --bind ./sources $MAPLE/maple/sources; then
|
|
||||||
if [ -d $MAPLE/maple/patches ]; then
|
|
||||||
if mount --bind ./patches $MAPLE/maple/patches; then
|
|
||||||
run_chroot
|
|
||||||
umount $MAPLE/maple/patches
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
run_chroot
|
|
||||||
fi
|
|
||||||
umount $MAPLE/maple/sources
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
run_chroot
|
|
||||||
fi
|
|
||||||
umount $MAPLE/run
|
|
||||||
fi
|
|
||||||
umount $MAPLE/tmp
|
|
||||||
fi
|
|
||||||
umount -R $MAPLE/sys
|
|
||||||
fi
|
|
||||||
umount $MAPLE/proc
|
|
||||||
fi
|
|
||||||
umount -R $MAPLE/dev
|
|
||||||
fi
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
# fstab Generation
|
|
||||||
# TODO: Is the dump column still used today? ~ahill
|
|
||||||
# NOTE: /dev is not here because CONFIG_DEVTMPFS_MOUNT is enabled in the Linux
|
|
||||||
# kernel configuration. ~ahill
|
|
||||||
echo "/dev/vda2 / xfs defaults 1 1" > /etc/fstab
|
|
||||||
echo "/dev/vda1 /boot vfat defaults 0 2" >> /etc/fstab
|
|
||||||
echo "proc /proc proc nosuid,noexec,nodev 0 0" >> /etc/fstab
|
|
||||||
echo "sysfs /sys sysfs nosuid,noexec,nodev 0 0" >> /etc/fstab
|
|
||||||
echo "devpts /dev/pts devpts defaults 0 0" >> /etc/fstab
|
|
||||||
echo "tmpfs /run tmpfs defaults 0 0" >> /etc/fstab
|
|
||||||
echo "tmpfs /dev/shm tmpfs nosuid,nodev 0 0" >> /etc/fstab
|
|
||||||
echo "cgroup2 /sys/fs/cgroup cgroup2 nosuid,noexec,nodev 0 0" >> /etc/fstab
|
|
||||||
|
|
||||||
# initramfs Generation
|
|
||||||
mkdir -p /etc/tinyramfs
|
|
||||||
echo "root=/dev/vda2" > /etc/tinyramfs/config
|
|
||||||
echo "root_type=xfs" >> /etc/tinyramfs/config
|
|
||||||
# FIXME: Setting monolith to true is a workaround since tinyramfs searches for
|
|
||||||
# /sbin/kmod, which doesn't work since kmod is installed under /bin.
|
|
||||||
# While kmod *should* be moved under /sbin, tinyramfs also shouldn't
|
|
||||||
# hard-code paths like that, so we need a way to patch this going
|
|
||||||
# forward. Without a proper patch, kernel modules cannot be added to the
|
|
||||||
# initramfs, which will cause issues with drivers later on. ~ahill
|
|
||||||
echo "monolith=true" >> /etc/tinyramfs/config
|
|
||||||
# TODO: This is a terrible way to detect the kernel version, since anything
|
|
||||||
# else under /lib/modules will cause this to break, such as having
|
|
||||||
# multiple kernel versions present. ~ahill
|
|
||||||
tinyramfs -k $(ls /lib/modules) /boot/initramfs
|
|
||||||
@ -1,22 +0,0 @@
|
|||||||
#!/bin/sh -e
|
|
||||||
mkdir -p sources
|
|
||||||
cd sources
|
|
||||||
cat ../sources.list | while read line; do
|
|
||||||
# This ignores lines starting with # so comments can be added. ~ahill
|
|
||||||
if case $line in \#*) false;; *) true;; esac; then
|
|
||||||
HASH=$(echo $line | cut -d"," -f1)
|
|
||||||
# Comments (-f2) are ignored by the script ~ahill
|
|
||||||
URL=$(echo $line | cut -d"," -f3)
|
|
||||||
CANONICAL=$(echo $line | cut -d"," -f4)
|
|
||||||
if [ -z "$CANONICAL" ]; then
|
|
||||||
OUTPUT=$(basename $URL)
|
|
||||||
else
|
|
||||||
OUTPUT=$CANONICAL
|
|
||||||
fi
|
|
||||||
if [ ! -f "$OUTPUT" ]; then
|
|
||||||
echo $OUTPUT
|
|
||||||
curl -L $URL -o $OUTPUT
|
|
||||||
fi
|
|
||||||
echo "$HASH $OUTPUT" | sha256sum -c -
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
@ -1,225 +0,0 @@
|
|||||||
--- src/drm-shim/drm_shim.c 2025-07-14 02:47:27.834000000 +0000
|
|
||||||
+++ src/drm-shim/drm_shim.c 2025-07-14 02:58:33.373000000 +0000
|
|
||||||
@@ -324,8 +324,6 @@
|
|
||||||
|
|
||||||
return real_fopen(path, mode);
|
|
||||||
}
|
|
||||||
-PUBLIC FILE *fopen64(const char *path, const char *mode)
|
|
||||||
- __attribute__((alias("fopen")));
|
|
||||||
|
|
||||||
/* Intercepts access(render_node_path) to trick drmGetMinorType */
|
|
||||||
PUBLIC int access(const char *path, int mode)
|
|
||||||
@@ -371,7 +369,6 @@
|
|
||||||
|
|
||||||
return fd;
|
|
||||||
}
|
|
||||||
-PUBLIC int open64(const char*, int, ...) __attribute__((alias("open")));
|
|
||||||
|
|
||||||
/* __open64_2 isn't declared unless _FORTIFY_SOURCE is defined. */
|
|
||||||
PUBLIC int __open64_2(const char *path, int flags);
|
|
||||||
@@ -429,45 +426,6 @@
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-/* Fakes stat to return character device stuff for our fake render node. */
|
|
||||||
-PUBLIC int __xstat64(int ver, const char *path, struct stat64 *st)
|
|
||||||
-{
|
|
||||||
- init_shim();
|
|
||||||
-
|
|
||||||
- /* Note: call real stat if we're in the process of probing for a free
|
|
||||||
- * render node!
|
|
||||||
- */
|
|
||||||
- if (render_node_minor == -1)
|
|
||||||
- return real___xstat64(ver, path, st);
|
|
||||||
-
|
|
||||||
- if (hide_drm_device_path(path)) {
|
|
||||||
- errno = ENOENT;
|
|
||||||
- return -1;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- /* Fool libdrm's probe of whether the /sys dir for this char dev is
|
|
||||||
- * there.
|
|
||||||
- */
|
|
||||||
- char *sys_dev_drm_dir;
|
|
||||||
- nfasprintf(&sys_dev_drm_dir,
|
|
||||||
- "/sys/dev/char/%d:%d/device/drm",
|
|
||||||
- DRM_MAJOR, render_node_minor);
|
|
||||||
- if (strcmp(path, sys_dev_drm_dir) == 0) {
|
|
||||||
- free(sys_dev_drm_dir);
|
|
||||||
- return 0;
|
|
||||||
- }
|
|
||||||
- free(sys_dev_drm_dir);
|
|
||||||
-
|
|
||||||
- if (strcmp(path, render_node_path) != 0)
|
|
||||||
- return real___xstat64(ver, path, st);
|
|
||||||
-
|
|
||||||
- memset(st, 0, sizeof(*st));
|
|
||||||
- st->st_rdev = makedev(DRM_MAJOR, render_node_minor);
|
|
||||||
- st->st_mode = S_IFCHR;
|
|
||||||
-
|
|
||||||
- return 0;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
/* Fakes fstat to return character device stuff for our fake render node. */
|
|
||||||
PUBLIC int __fxstat(int ver, int fd, struct stat *st)
|
|
||||||
{
|
|
||||||
@@ -485,22 +443,6 @@
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-PUBLIC int __fxstat64(int ver, int fd, struct stat64 *st)
|
|
||||||
-{
|
|
||||||
- init_shim();
|
|
||||||
-
|
|
||||||
- struct shim_fd *shim_fd = drm_shim_fd_lookup(fd);
|
|
||||||
-
|
|
||||||
- if (!shim_fd)
|
|
||||||
- return real___fxstat64(ver, fd, st);
|
|
||||||
-
|
|
||||||
- memset(st, 0, sizeof(*st));
|
|
||||||
- st->st_rdev = makedev(DRM_MAJOR, render_node_minor);
|
|
||||||
- st->st_mode = S_IFCHR;
|
|
||||||
-
|
|
||||||
- return 0;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
#else
|
|
||||||
|
|
||||||
PUBLIC int stat(const char* path, struct stat* stat_buf)
|
|
||||||
@@ -541,44 +483,6 @@
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-PUBLIC int stat64(const char* path, struct stat64* stat_buf)
|
|
||||||
-{
|
|
||||||
- init_shim();
|
|
||||||
-
|
|
||||||
- /* Note: call real stat if we're in the process of probing for a free
|
|
||||||
- * render node!
|
|
||||||
- */
|
|
||||||
- if (render_node_minor == -1)
|
|
||||||
- return real_stat64(path, stat_buf);
|
|
||||||
-
|
|
||||||
- if (hide_drm_device_path(path)) {
|
|
||||||
- errno = ENOENT;
|
|
||||||
- return -1;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- /* Fool libdrm's probe of whether the /sys dir for this char dev is
|
|
||||||
- * there.
|
|
||||||
- */
|
|
||||||
- char *sys_dev_drm_dir;
|
|
||||||
- nfasprintf(&sys_dev_drm_dir,
|
|
||||||
- "/sys/dev/char/%d:%d/device/drm",
|
|
||||||
- DRM_MAJOR, render_node_minor);
|
|
||||||
- if (strcmp(path, sys_dev_drm_dir) == 0) {
|
|
||||||
- free(sys_dev_drm_dir);
|
|
||||||
- return 0;
|
|
||||||
- }
|
|
||||||
- free(sys_dev_drm_dir);
|
|
||||||
-
|
|
||||||
- if (strcmp(path, render_node_path) != 0)
|
|
||||||
- return real_stat64(path, stat_buf);
|
|
||||||
-
|
|
||||||
- memset(stat_buf, 0, sizeof(*stat_buf));
|
|
||||||
- stat_buf->st_rdev = makedev(DRM_MAJOR, render_node_minor);
|
|
||||||
- stat_buf->st_mode = S_IFCHR;
|
|
||||||
-
|
|
||||||
- return 0;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
PUBLIC int fstat(int fd, struct stat* stat_buf)
|
|
||||||
{
|
|
||||||
init_shim();
|
|
||||||
@@ -594,22 +498,6 @@
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
-PUBLIC int fstat64(int fd, struct stat64* stat_buf)
|
|
||||||
-{
|
|
||||||
- init_shim();
|
|
||||||
-
|
|
||||||
- struct shim_fd *shim_fd = drm_shim_fd_lookup(fd);
|
|
||||||
-
|
|
||||||
- if (!shim_fd)
|
|
||||||
- return real_fstat64(fd, stat_buf);
|
|
||||||
-
|
|
||||||
- memset(stat_buf, 0, sizeof(*stat_buf));
|
|
||||||
- stat_buf->st_rdev = makedev(DRM_MAJOR, render_node_minor);
|
|
||||||
- stat_buf->st_mode = S_IFCHR;
|
|
||||||
-
|
|
||||||
- return 0;
|
|
||||||
-}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Tracks if the opendir was on /dev/dri. */
|
|
||||||
@@ -664,34 +552,6 @@
|
|
||||||
return ent;
|
|
||||||
}
|
|
||||||
|
|
||||||
-/* If we're looking at /dev/dri, add our render node to the list
|
|
||||||
- * before the real entries in the directory.
|
|
||||||
- */
|
|
||||||
-PUBLIC struct dirent64 *
|
|
||||||
-readdir64(DIR *dir)
|
|
||||||
-{
|
|
||||||
- init_shim();
|
|
||||||
-
|
|
||||||
- struct dirent64 *ent = NULL;
|
|
||||||
-
|
|
||||||
- static struct dirent64 render_node_dirent = { 0 };
|
|
||||||
-
|
|
||||||
- simple_mtx_lock(&shim_lock);
|
|
||||||
- if (_mesa_set_search(opendir_set, dir)) {
|
|
||||||
- strcpy(render_node_dirent.d_name,
|
|
||||||
- render_node_dirent_name);
|
|
||||||
- render_node_dirent.d_type = DT_CHR;
|
|
||||||
- ent = &render_node_dirent;
|
|
||||||
- _mesa_set_remove_key(opendir_set, dir);
|
|
||||||
- }
|
|
||||||
- simple_mtx_unlock(&shim_lock);
|
|
||||||
-
|
|
||||||
- if (!ent && dir != fake_dev_dri)
|
|
||||||
- ent = real_readdir64(dir);
|
|
||||||
-
|
|
||||||
- return ent;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
/* Cleans up tracking of opendir("/dev/dri") */
|
|
||||||
PUBLIC int
|
|
||||||
closedir(DIR *dir)
|
|
||||||
@@ -774,7 +634,7 @@
|
|
||||||
* our DRM fd to drm_shim_ioctl().
|
|
||||||
*/
|
|
||||||
PUBLIC int
|
|
||||||
-ioctl(int fd, unsigned long request, ...)
|
|
||||||
+ioctl(int fd, int request, ...)
|
|
||||||
{
|
|
||||||
init_shim();
|
|
||||||
|
|
||||||
@@ -810,8 +670,6 @@
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
-PUBLIC int fcntl64(int, int, ...)
|
|
||||||
- __attribute__((alias("fcntl")));
|
|
||||||
|
|
||||||
/* I wrote this when trying to fix gallium screen creation, leaving it around
|
|
||||||
* since it's probably good to have.
|
|
||||||
@@ -841,15 +699,3 @@
|
|
||||||
|
|
||||||
return real_mmap(addr, length, prot, flags, fd, offset);
|
|
||||||
}
|
|
||||||
-
|
|
||||||
-PUBLIC void *
|
|
||||||
-mmap64(void* addr, size_t length, int prot, int flags, int fd, off64_t offset)
|
|
||||||
-{
|
|
||||||
- init_shim();
|
|
||||||
-
|
|
||||||
- struct shim_fd *shim_fd = drm_shim_fd_lookup(fd);
|
|
||||||
- if (shim_fd)
|
|
||||||
- return drm_shim_mmap(shim_fd, length, prot, flags, fd, offset);
|
|
||||||
-
|
|
||||||
- return real_mmap64(addr, length, prot, flags, fd, offset);
|
|
||||||
-}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
timeout: 3
|
|
||||||
|
|
||||||
/Maple Linux
|
|
||||||
protocol: linux
|
|
||||||
kernel_path: boot():/vmlinuz
|
|
||||||
kernel_cmdline: root=/dev/vda2
|
|
||||||
module_path: boot():/initramfs
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
cmdport 0
|
|
||||||
pool pool.ntp.org iburst maxsources 3
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
root:x:0:root
|
|
||||||
nobody:x:65534:nobody
|
|
||||||
@ -1 +0,0 @@
|
|||||||
maple
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
#!/bin/openrc-run
|
|
||||||
description="Network Time Protocol Daemon"
|
|
||||||
command="/bin/chronyd"
|
|
||||||
pidfile="/run/chrony/chronyd.pid"
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
#!/bin/openrc-run
|
|
||||||
description="DHCP Client Daemon"
|
|
||||||
command="/bin/dhcpcd"
|
|
||||||
command_args="-M"
|
|
||||||
command_args_background="-b"
|
|
||||||
pidfile="/run/dhcpcd/pid"
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
#!/bin/openrc-run
|
|
||||||
command="/bin/dropbear"
|
|
||||||
command_args="-R"
|
|
||||||
pidfile="/run/dropbear.pid"
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
#!/bin/openrc-run
|
|
||||||
description="Mini Device Mapper Daemon"
|
|
||||||
command="/bin/mdevd"
|
|
||||||
command_args="-O4"
|
|
||||||
command_background="yes"
|
|
||||||
pidfile="/run/mdevd.pid"
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
NAME=Maple Linux
|
|
||||||
VERSION=2025
|
|
||||||
ID=maple
|
|
||||||
VERSION_ID=2025
|
|
||||||
PRETTY_NAME="Maple Linux"
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
#%PAM-1.0
|
|
||||||
auth include system-auth
|
|
||||||
account include system-auth
|
|
||||||
password include system-auth
|
|
||||||
session include system-auth
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
#%PAM-1.0
|
|
||||||
auth required pam_unix.so nullok
|
|
||||||
account required pam_unix.so
|
|
||||||
password required pam_unix.so nullok shadow
|
|
||||||
session required pam_unix.so
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
root:x:0:0::/:/bin/zsh
|
|
||||||
nobody:x:65534:65534::/:/bin/nologin
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
nameserver 1.1.1.1
|
|
||||||
nameserver 1.0.0.1
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
root::20295::::::
|
|
||||||
nobody::20374::::::
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
/bin/sh
|
|
||||||
/bin/zsh
|
|
||||||
147
sources.list
147
sources.list
@ -1,147 +0,0 @@
|
|||||||
#sha256sum,comment,url,filename(optional)
|
|
||||||
ba885c1319578d6c94d46e9b0dceb4014caafe2490e437a0dbca3f270a223f5a,autoconf,https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz,
|
|
||||||
168aa363278351b89af56684448f525a5bce5079d0b6842bd910fdd3f1646887,automake,https://ftp.gnu.org/gnu/automake/automake-1.18.1.tar.xz,
|
|
||||||
0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d,babel,https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz,
|
|
||||||
ae470fec429775653e042015edc928d07c8c3b2fc59765172a330d3d87785f86,bc,https://ftp.gnu.org/gnu/bc/bc-1.08.2.tar.gz,
|
|
||||||
9bba0214ccf7f1079c5d59210045227bcf619519840ebfa80cd3849cff5a5bf2,bison,https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz,
|
|
||||||
698edd0ea270bde950f53aed21f3a0135672206f3911e0176261a31e0e07b397,build,https://files.pythonhosted.org/packages/25/1c/23e33405a7c9eac261dff640926b8b5adaed6a6eb3e1767d441ed611d0c0/build-1.3.0.tar.gz,
|
|
||||||
ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269,bzip2,https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz,
|
|
||||||
445ed8208a6e4823de1226a74ca319d3600e83f6369f99b14265006599c32ccb,cairo,https://cairographics.org/releases/cairo-1.18.4.tar.xz,
|
|
||||||
33ea8eb2a4daeaa506e8fcafd5d6d89027ed6f2f0609645c6f149b560d301706,chrony,https://chrony-project.org/releases/chrony-4.8.tar.gz,
|
|
||||||
ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a,click,https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz,
|
|
||||||
643f04182b7ba323ab31f526f785134fb79cba3188a852206ef0473fee282a15,cmake,https://github.com/Kitware/CMake/releases/download/v4.1.2/cmake-4.1.2.tar.gz,
|
|
||||||
e6d4fd2d852c9141a1c2a18a13d146a0cd7e45195f72293a4e4c044ec6ccca15,coreutils,https://ftp.gnu.org/gnu/coreutils/coreutils-9.8.tar.xz,
|
|
||||||
937610b97c329a1ec9268553fb780037bcfff0dcffe9725ebc4fd9c1aa9075db,cpio,https://ftp.gnu.org/gnu/cpio/cpio-2.15.tar.bz2,
|
|
||||||
40c8cddbcb6cc6251c03dea423a472a6cea4037be654ba5cf5dec6eb2d22ff1d,curl,https://curl.se/download/curl-8.16.0.tar.xz,
|
|
||||||
845fd61702ae5e53e09664faa450da82805958924b109b8c5b4777bd8551af00,dash,https://salsa.debian.org/debian/dash/-/archive/debian/0.5.12-12/dash-debian-0.5.12-12.tar.gz,
|
|
||||||
6721e606609226dbf4d864a78802a9e96beec0ee034a1bd84138b3e037bba7d9,dhcpcd,https://github.com/NetworkConfiguration/dhcpcd/releases/download/v10.2.4/dhcpcd-10.2.4.tar.xz,
|
|
||||||
7c8b7f9fc8609141fdea9cece85249d308624391ff61dedaf528fcb337727dfd,diffutils,https://ftp.gnu.org/gnu/diffutils/diffutils-3.12.tar.xz,
|
|
||||||
64926eebf90092dca21b14259a5301b7b98e7b1943e8a201c7d726084809b527,dosfstools,https://github.com/dosfstools/dosfstools/releases/download/v4.2/dosfstools-4.2.tar.gz,
|
|
||||||
93ebe1294ee3203d3bf548c78d51bde9494d3f24de64eaec380a2620f0431f20,dropbear,https://github.com/mkj/dropbear/archive/refs/tags/DROPBEAR_2025.88.tar.gz,dropbear-2025.88.tar.gz
|
|
||||||
71df8f40706a7bb0a80a5367079ea75d91da4f8c65c58ec59bcdfbf7decdab9f,expat,https://github.com/libexpat/libexpat/releases/download/R_2_7_3/expat-2.7.3.tar.xz,
|
|
||||||
1387e0b67ff247d2abde998f90dfbf70c1491391a59ddfecb8ae698789f0a4f5,findutils,https://ftp.gnu.org/gnu/findutils/findutils-4.10.0.tar.xz,
|
|
||||||
1b1cde5b235d40479e91be2f0e88a309e3214c8ab470ec8a2744d82a5a9ea05c,fribidi,https://github.com/fribidi/fribidi/releases/download/v1.0.16/fribidi-1.0.16.tar.xz,
|
|
||||||
2b47e8f2d90d35d29339ed78e1a6eabb36eefa9cfa5a5ca3b0d1f27502c43675,flatpak,https://github.com/flatpak/flatpak/releases/download/1.16.1/flatpak-1.16.1.tar.xz,
|
|
||||||
e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995,flex,https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz,
|
|
||||||
18f63100d6f94385c6ed57a72073443e1a71a4acb4339491615d0f16d6ff01b2,flit_core,https://files.pythonhosted.org/packages/69/59/b6fc2188dfc7ea4f936cd12b49d707f66a1cb7a1d2c16172963534db741b/flit_core-3.12.0.tar.gz,
|
|
||||||
f0129159515c13ebe53ba2a6a94755e98c266470e844ee0aacc6196fd62b44f0,font-util,https://gitlab.freedesktop.org/xorg/font/util/-/archive/font-util-1.4.1/util-font-util-1.4.1.tar.gz,
|
|
||||||
82e73b26adad651b236e5f5d4b3074daf8ff0910188808496326bd3449e5261d,fontconfig,https://gitlab.freedesktop.org/fontconfig/fontconfig/-/archive/2.17.1/fontconfig-2.17.1.tar.gz,
|
|
||||||
32427e8c471ac095853212a37aef816c60b42052d4d9e48230bab3bdf2936ccc,freetype,https://download.savannah.gnu.org/releases/freetype/freetype-2.14.1.tar.xz,
|
|
||||||
f8c3486509de705192138b00ef2c00bbbdd0e84c30d5c07d23fc73a9dc4cc9cc,gawk,https://ftp.gnu.org/gnu/gawk/gawk-5.3.2.tar.xz,
|
|
||||||
cc591e3949a95e2f7b50173c9373df8846648b15aa596d9e7ec7258381bfac0d,gdk-pixbuf,https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/archive/2.44.3/gdk-pixbuf-2.44.3.tar.gz,
|
|
||||||
d1fb86e260cfe7da6031f94d2e44c0da55903dbae0a2fa0fae78c91ae1b56f00,gettext,https://ftp.gnu.org/pub/gnu/gettext/gettext-0.26.tar.xz,
|
|
||||||
3524fc5fd81f16f80e1696a8281bd8ad831048b67848015d7b7382bf365ae685,git,https://github.com/git/git/archive/refs/tags/v2.51.0.tar.gz,git-2.51.0.tar.gz
|
|
||||||
56aef5791f402fff73a2de0664e573c5d00ef8cb71405eb76b388f44c6d78927,glib,https://gitlab.gnome.org/GNOME/glib/-/archive/2.86.0/glib-2.86.0.tar.gz,
|
|
||||||
b16c78e7604b9be9f546ee35ad8b6db6f39bbbbfb19e8d038b6fe2ea5bba4ff4,glslang,https://github.com/KhronosGroup/glslang/archive/refs/tags/15.4.0.tar.gz,glslang-15.4.0.tar.gz
|
|
||||||
a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898,gmp,https://gmplib.org/download/gmp/gmp-6.3.0.tar.xz,
|
|
||||||
fd87e0aba7e43ae054837afd6cd4db03a3f2693deb3619085e6ed9d8d9604ad8,gperf,https://ftp.gnu.org/pub/gnu/gperf/gperf-3.3.tar.gz,
|
|
||||||
2649b27c0e90e632eadcd757be06c6e9a4f48d941de51e7c0f83ff76408a07b9,grep,https://ftp.gnu.org/gnu/grep/grep-3.12.tar.xz,
|
|
||||||
069a00aa1fc893f18423602f4e095583be5a220429f6e8a58d70511490b4b019,gvdb,https://gitlab.gnome.org/GNOME/gvdb/-/archive/2b42fc75f09dbe1cd1057580b5782b08f2dcb400/gvdb-2b42fc75f09dbe1cd1057580b5782b08f2dcb400.tar.gz,
|
|
||||||
01a7b881bd220bfdf615f97b8718f80bdfd3f6add385b993dcf6efd14e8c0ac6,gzip,https://ftp.gnu.org/gnu/gzip/gzip-1.14.tar.xz,
|
|
||||||
e5c81b7f6e0b102dfb000cfa424538b8e896ab78a2f4b8a5ec8cae62ab43369e,harfbuzz,https://github.com/harfbuzz/harfbuzz/releases/download/12.1.0/harfbuzz-12.1.0.tar.xz,
|
|
||||||
d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000,importlib_metadata,https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz,
|
|
||||||
9781e59410ab7dea8e9f79bb10ff1488e63d10fcbb70503b94426ba27a8e2dec,iproute2,https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-6.17.0.tar.xz,
|
|
||||||
fb3197f17a99eb44d22a3a1a71f755f9622dd963e66acfdea1a45120951b02ed,kbd,https://www.kernel.org/pub/linux/utils/kbd/kbd-2.9.0.tar.xz,
|
|
||||||
5a5d5073070cc7e0c7a7a3c6ec2a0e1780850c8b47b3e3892226b93ffcb9cb54,kmod,https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-34.2.tar.xz,
|
|
||||||
19f917d42d530f98815ac824d90c7eaf648e9d9a50e4f309c812457ffa5496b5,libarchive,https://libarchive.org/downloads/libarchive-3.8.1.tar.xz,
|
|
||||||
b88cc9163d0c652aaf39a99991d974ddba1c3a9711db8f1b5838af2a14731014,libbsd,https://libbsd.freedesktop.org/releases/libbsd-0.12.2.tar.xz,
|
|
||||||
629da4ab29900d0f7fcc36227073743119925fd711c99a1689bbf5c9b40c8e6f,libcap2,https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.76.tar.xz,
|
|
||||||
6cab16d4d259b6abc9f485233863454114a3c307eca806679aad3edbe967bf42,libdrm,https://dri.freedesktop.org/libdrm/libdrm-2.4.126.tar.xz,
|
|
||||||
6253395679c2bb2156d926b3d8b7e3b2bbeb40a56d2bea29e1c73e40ed9de4ba,libelf,https://github.com/arachsys/libelf/archive/refs/tags/v0.193.tar.gz,libelf-0.193.tar.gz
|
|
||||||
0cfa48d1dddac26988ae9ce16282eff97683f1adcd3f5d4312f86d714565d890,libevdev,https://gitlab.freedesktop.org/libevdev/libevdev/-/archive/libevdev-1.13.4/libevdev-libevdev-1.13.4.tar.gz,
|
|
||||||
31dc201284fb5d2bec60b2ceee3126b5cf633c3de74151be44817890e8e7c581,libfontenc,https://gitlab.freedesktop.org/xorg/lib/libfontenc/-/archive/libfontenc-1.1.8/libfontenc-libfontenc-1.1.8.tar.gz,
|
|
||||||
f3a3082a23b37c293a4fcd1053147b371f2ff91fa7ea1b2a52e335676bac82dc,libffi,https://github.com/libffi/libffi/releases/download/v3.5.2/libffi-3.5.2.tar.gz,
|
|
||||||
9c15fa751bb8093d042dae1b9f125eb45198c32c6704cd5481ccde460d4f8151,libinih,https://github.com/benhoyt/inih/archive/refs/tags/r62.tar.gz,libinih-r62.tar.gz
|
|
||||||
98bb615d98ddc4607bddb13a7b7550d129eb8cd16f86cd5ca090207bc46b488b,libinput,https://gitlab.freedesktop.org/libinput/libinput/-/archive/1.29.1/libinput-1.29.1.tar.gz,
|
|
||||||
8f0012234b464ce50890c490f18194f913a7b1f4e6a03d6644179fa0f867d0cf,libjpeg-turbo,https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/3.1.2/libjpeg-turbo-3.1.2.tar.gz,
|
|
||||||
1bd6aa42275313af3141c7cf2e5b964e8b1fd488025caf2f971f43b00776b332,libmd,https://libbsd.freedesktop.org/releases/libmd-1.1.0.tar.xz,
|
|
||||||
274b9b919ef3152bfb3da3a13c950dd60d6e2bcd54230ffeca298d03b40d0525,libmnl,https://www.netfilter.org/pub/libmnl/libmnl-1.0.5.tar.bz2,
|
|
||||||
0f4be47a8bb8b77a350ee58cbd4b5fae6260ad486a527706ab15cfe1dd55a3c4,libnftnl,https://www.netfilter.org/pub/libnftnl/libnftnl-1.3.0.tar.xz,
|
|
||||||
a395317730e0e8d5e71419d4d1256a89e32c2fa793607b63c4d0fb497ae34602,libpciaccess,https://gitlab.freedesktop.org/xorg/lib/libpciaccess/-/archive/libpciaccess-0.18.1/libpciaccess-libpciaccess-0.18.1.tar.gz,
|
|
||||||
4df396518620a7aa3651443e87d1b2862e4e88cad135a8b93423e01706232307,libpng,https://download.sourceforge.net/libpng/libpng-1.6.50.tar.xz,
|
|
||||||
c7ff7a7d675d5f57730940e5ccff1dbe2dcd5b7405b5397e0f7ffd66a5ed5679,libressl,https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-4.1.1.tar.gz,
|
|
||||||
f81f5860666b0bc7d84baddefa60d1cb9fa6fceb2398cc3baca6afaa60266675,libtool,https://ftp.gnu.org/gnu/libtool/libtool-2.5.4.tar.xz,
|
|
||||||
0bd89b657d62d019598e6c7ed726ff8fed80e8ba092a83b484d66afb80b77da5,libudev-zero,https://github.com/illiliti/libudev-zero/archive/refs/tags/1.0.3.tar.gz,libudev-zero-1.0.3.tar.gz
|
|
||||||
ea97bead1e8721d9002055970e8ad64ef79ee9dcee8595a3dae2cf5c2192a47f,libX11,https://gitlab.freedesktop.org/xorg/lib/libx11/-/archive/libX11-1.8.12/libx11-libX11-1.8.12.tar.gz,
|
|
||||||
af261cc1b3b349cfe7a7899a48b4e4aa257b4d11bf2ea084fb3191df7d15fbe9,libXau,https://gitlab.freedesktop.org/xorg/lib/libxau/-/archive/libXau-1.0.12/libxau-libXau-1.0.12.tar.gz,
|
|
||||||
113a6f8f614e037ff03cad218cdcbfe307dfc9d909a842b17276a694476ed639,libxcb,https://gitlab.freedesktop.org/xorg/lib/libxcb/-/archive/libxcb-1.17.0/libxcb-libxcb-1.17.0.tar.gz,
|
|
||||||
5edaa65f5abd94ae12030b52fda66828eb8a41396aa9c02fd2c6210445fff61e,libxcvt,https://gitlab.freedesktop.org/xorg/lib/libxcvt/-/archive/libxcvt-0.1.3/libxcvt-libxcvt-0.1.3.tar.gz,
|
|
||||||
f5e93a7191e4ea2f43482e9c8470c5320e1bb7ee0070b72f97ad2d1141833cd4,libXdmcp,https://gitlab.freedesktop.org/xorg/lib/libxdmcp/-/archive/libXdmcp-1.1.5/libxdmcp-libXdmcp-1.1.5.tar.gz,
|
|
||||||
4e48ea271b5f53c3386018a6e0263454fe582a413fce0273ade601fbfe9e0c72,libXext,https://gitlab.freedesktop.org/xorg/lib/libxext/-/archive/libXext-1.3.6/libxext-libXext-1.3.6.tar.gz,
|
|
||||||
1e7dfe2dd0eb2528fc21c2b1db64443b0f41e2ac623809939be6b4008c42ef5a,libXfixes,https://gitlab.freedesktop.org/xorg/lib/libxfixes/-/archive/libXfixes-6.0.2/libxfixes-libXfixes-6.0.2.tar.gz,
|
|
||||||
fb0fab7745c4670cd3c49b0cd3965494a6bee3778f36a0385a3265e803fe4d70,libXfont2,https://gitlab.freedesktop.org/xorg/lib/libxfont/-/archive/libXfont2-2.0.7/libxfont-libXfont2-2.0.7.tar.gz,
|
|
||||||
f033ea2b78d2b8f6c6fc4028aeace48f8d1b59d881d602a1d9418da69cc50200,libxkbfile,https://gitlab.freedesktop.org/xorg/lib/libxkbfile/-/archive/libxkbfile-1.1.3/libxkbfile-libxkbfile-1.1.3.tar.gz,
|
|
||||||
027e302d24e0d136393a24e02938046cda72281a3e3620d56cbc0995524658bc,libxml2,https://gitlab.gnome.org/GNOME/libxml2/-/archive/v2.15.0/libxml2-v2.15.0.tar.gz,
|
|
||||||
a1909cbe9ded94187b6420ae8c347153f8278955265cb80a64cdae5501433396,libXrandr,https://gitlab.freedesktop.org/xorg/lib/libxrandr/-/archive/libXrandr-1.5.4/libxrandr-libXrandr-1.5.4.tar.gz,
|
|
||||||
470559df9e0e4dbc81d5855d3d364a17e12263600a08217232f8b1f6ef3cddbf,libxrender,https://gitlab.freedesktop.org/xorg/lib/libxrender/-/archive/libXrender-0.9.12/libxrender-libXrender-0.9.12.tar.gz,
|
|
||||||
61b90057e1cb1ec4688b2fd223f5008d637ab5a5e476ef3727543bb449c87697,libxshmfence,https://gitlab.freedesktop.org/xorg/lib/libxshmfence/-/archive/libxshmfence-1.3.3/libxshmfence-libxshmfence-1.3.3.tar.gz,
|
|
||||||
6def23c86de6ff72030b9971ed6ddec24ba9b47344237ab7b5abeb2f044c3332,libxtrans,https://gitlab.freedesktop.org/xorg/lib/libxtrans/-/archive/xtrans-1.6.0/libxtrans-xtrans-1.6.0.tar.gz,
|
|
||||||
a23745e7865f4aa2ee2610f289ed8081140580cbe577b46aa1a7fb28ab7192cf,libXxf86vm,https://gitlab.freedesktop.org/xorg/lib/libxxf86vm/-/archive/libXxf86vm-1.1.6/libxxf86vm-libXxf86vm-1.1.6.tar.gz,
|
|
||||||
29d52f0584cd0d9aa108e303e48551707f537f74c34a16479abb0497d8145a58,Limine,https://codeberg.org/Limine/Limine/releases/download/v10.1.0/limine-10.1.0.tar.xz,
|
|
||||||
0e1a946741db288a40361ad04ff38fe04bf0819834b8abb84c4b535fed9ba4ef,lingua,https://files.pythonhosted.org/packages/ba/85/50f030e20ca64562ac8fd36b65338c4da626739afd49200936f3d99a6047/lingua-4.15.0.tar.gz,
|
|
||||||
fdebcb065065f5c1b8dc68a6fb59cda50cdddbf9103d207c2196d55ea764f57f,Linux,https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.17.2.tar.xz,
|
|
||||||
21dbcec6e01dd578f14789eac9024a18941e6f2702a05cf91b28c232eeb26ab0,Linux PAM,https://github.com/linux-pam/linux-pam/releases/download/v1.7.1/Linux-PAM-1.7.1.tar.xz,
|
|
||||||
9c9db50d8046f668156d83f6b594631b4ca79a0d96e4f19bed9dc019b022e58f,LLVM,https://github.com/llvm/llvm-project/releases/download/llvmorg-21.1.3/llvm-project-21.1.3.src.tar.xz,
|
|
||||||
e236ea3a1ccf5f6c270b1c4bb60726f371fa49459a8eaaebc90b216b328daf2b,m4,https://ftp.gnu.org/gnu/m4/m4-1.4.20.tar.xz,
|
|
||||||
dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3,make,https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz,
|
|
||||||
99579a6f39583fa7e5630a28c3c1f440e4e97a414b80372649c0ce338da2ea28,mako,https://files.pythonhosted.org/packages/9e/38/bd5b78a920a64d708fe6bc8e0a2c075e1389d53bef8413725c63ba041535/mako-1.3.10.tar.gz,
|
|
||||||
ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0,markupsafe,https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz,
|
|
||||||
ec966eec39879f33c785343373021c44f887c836a08fcaf1d63412e3bdbfca32,mdevd,https://skarnet.org/software/mdevd/mdevd-0.1.7.0.tar.gz,
|
|
||||||
276490281e37add4ebc935a106af33daa70d3cbca4305afc8746ea66981d2f71,mesa,https://gitlab.freedesktop.org/mesa/mesa/-/archive/mesa-25.2.4/mesa-mesa-25.2.4.tar.gz,
|
|
||||||
a55bd02a9af4dd266c0042ec608744fff3a017577614c057da09f1f4566ea32c,mtdev,https://bitmath.se/org/code/mtdev/mtdev-1.1.7.tar.gz,
|
|
||||||
565c1b6e1e58f7e90d8813fda0e2102df69fb493ddab4cf6a84ce3647466bee5,muon,https://git.sr.ht/~lattis/muon/archive/0.5.0.tar.gz,muon-0.5.0.tar.gz
|
|
||||||
a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4,musl,https://musl.libc.org/releases/musl-1.2.5.tar.gz,
|
|
||||||
f7abfbf0eed5f573ab51bd77a458f32d82f9859c55e9689f819d96fe1437a619,nano,https://nano-editor.org/dist/v8/nano-8.6.tar.xz,
|
|
||||||
b7324cbe86e767b65f26f467ed8b12ad80e124e3ccb89076855c98e43a9eddd4,nasm,https://www.nasm.us/pub/nasm/releasebuilds/3.01/nasm-3.01.tar.xz,
|
|
||||||
97fc51ac2b085d4cde31ef4d2c3122c21abc217e9090a43a30fc5ec21684e059,ncurses,https://invisible-island.net/datafiles/release/ncurses.tar.gz,ncurses-6.3.tar.gz
|
|
||||||
1daf10f322e14fd90a017538aaf2c034d7cc1eb1cc418ded47445d714ea168d4,nftables,https://www.netfilter.org/pub/nftables/nftables-1.1.5.tar.xz,
|
|
||||||
1b661016bd8cd4189be83b441dd7062c967b641fdc00f741e359e22d06857df8,openrc,https://github.com/OpenRC/openrc/archive/refs/tags/0.63.tar.gz,openrc-0.63.tar.gz
|
|
||||||
d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f,packaging,https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz,
|
|
||||||
1b2e2f683dfb5adec3faf17087ade8c648f10a5d3d0e17e421e0ac1a39e6740e,pango,https://gitlab.gnome.org/GNOME/pango/-/archive/1.57.0/pango-1.57.0.tar.gz,
|
|
||||||
f87cee69eec2b4fcbf60a396b030ad6aa3415f192aa5f7ee84cad5e11f7f5ae3,patch,https://ftp.gnu.org/gnu/patch/patch-2.8.tar.xz,
|
|
||||||
8d28d7f2c3b970c3a4bf3776bcbb5adfc923183ce74bc8df1ebaad8c1985bd07,pcre2,https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.46/pcre2-10.46.tar.gz,
|
|
||||||
e093ef184d7f9a1b9797e2465296f55510adb6dab8842b0c3ed53329663096dc,perl,https://www.cpan.org/src/5.0/perl-5.42.0.tar.gz,
|
|
||||||
a098c33924754ad43f981b740f6d576c70f9ed1006e12221b1845431ebce1239,pixman,https://cairographics.org/releases/pixman-0.46.4.tar.xz,
|
|
||||||
cd05c9589b9f86ecf044c10a2269822bc9eb001eced2582cfffd658b0a50c243,pkgconf,https://distfiles.ariadne.space/pkgconf/pkgconf-2.5.1.tar.xz,
|
|
||||||
f3ef94aefed6e183e342a8a269ae1fc4742ba193186ad76f175938621dbfc26b,polib,https://files.pythonhosted.org/packages/10/9a/79b1067d27e38ddf84fe7da6ec516f1743f31f752c6122193e7bce38bdbf/polib-1.2.0.tar.gz,
|
|
||||||
c2e6d193cc78f84cd6ddb72aaf6d5c6a9162f0470e5992092057f5ff518562fa,procps-ng,https://gigenet.dl.sourceforge.net/project/procps-ng/Production/procps-ng-4.0.5.tar.xz,
|
|
||||||
1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8,pyproject_hooks,https://files.pythonhosted.org/packages/e7/82/28175b2414effca1cdac8dc99f76d660e7a4fb0ceefa4b4ab8f5f6742925/pyproject_hooks-1.2.0.tar.gz,
|
|
||||||
61a42919e13d539f7673cf11d1c404380e28e540510860b9d242196e165709c9,Python,https://www.python.org/ftp/python/3.9.23/Python-3.9.23.tar.xz,
|
|
||||||
70d4739585a7008f37bf4933c013fdb327b8878a5a69fcbb3316c88882f0f49b,pytest-runner,https://files.pythonhosted.org/packages/d7/7d/60976d532519c3a0b41e06a59ad60949e2be1af937cf02738fec91bfd808/pytest-runner-6.0.1.tar.gz,
|
|
||||||
d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e,pyyaml,https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz,
|
|
||||||
6bfeaddd90ffda2f063492b092bfed925c4b8c701579baf4b1316e021470daac,rustc,https://static.rust-lang.org/dist/rustc-1.90.0-src.tar.xz,
|
|
||||||
3b8cf51548dfc49b7efe035e191ff5e1963ebc4fe8f6064a5eefc5343eaf78a5,samurai,https://github.com/michaelforney/samurai/releases/download/1.2/samurai-1.2.tar.gz,
|
|
||||||
6e226b732e1cd739464ad6862bd1a1aba42d7982922da7a53519631d24975181,sed,https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz,
|
|
||||||
f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c,setuptools,https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz,
|
|
||||||
6662c9b9497b6c9bf13bead9d7a9084756f68238302c5ed089fb4dbd29d102d7,setuptools_scm,https://files.pythonhosted.org/packages/8f/8d/ffdcace33d0480d591057a30285b7c33f8dc431fed3fff7dbadf5f9f128f/setuptools_scm-9.2.0.tar.gz,
|
|
||||||
add4604d3bc410344433122a819ee4154b79dd8316a56298c60417e637c07608,shadow,https://github.com/shadow-maint/shadow/releases/download/4.18.0/shadow-4.18.0.tar.xz,
|
|
||||||
531291d0387eb94e16e775d7e73788d06d2b2fdd8cd2ac6b6b15287593b6a2de,shared-mime-info,https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/2.4/shared-mime-info-2.4.tar.gz,
|
|
||||||
0e626261848cc920738f92fd50a24c14b21e30306dfed97b8435369f4bae00a5,skalibs,https://skarnet.org/software/skalibs/skalibs-2.14.4.0.tar.gz,
|
|
||||||
878fb5ab705442070e4dd1929bb5e2249511c0bcf2b0eeacf3bcd80875c82eff,StrEnum,https://files.pythonhosted.org/packages/85/ad/430fb60d90e1d112a62ff57bdd1f286ec73a2a0331272febfddd21f330e1/StrEnum-0.4.15.tar.gz,
|
|
||||||
5bbea925663d4cd2bab23efad53874f2718248a73dcaf9dd21dff8cb48e602fc,SPIRV-Headers,https://github.com/KhronosGroup/SPIRV-Headers/archive/refs/tags/vulkan-sdk-1.4.321.0.tar.gz,SPIRV-Headers-vulkan-sdk-1.4.321.0.tar.gz
|
|
||||||
4f7019a06c731daebbc18080db338964002493ead4cfb440fef95d120c50a170,SPIRV-LLVM-Translator,https://github.com/KhronosGroup/SPIRV-LLVM-Translator/archive/refs/tags/v21.1.0.tar.gz,spirv-llvm-translator-21.1.0.tar.gz
|
|
||||||
6a9313fa68e061d463f616357cd24cdf1c3a27d906ea791d7ba67dd1b6666a40,SPIRV-Tools,https://github.com/KhronosGroup/SPIRV-Tools/archive/refs/tags/v2025.1.tar.gz,spirv-tools-2025.1.tar.gz
|
|
||||||
4d62ff37342ec7aed748535323930c7cf94acf71c3591882b26a7ea50f3edc16,tar,https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz,
|
|
||||||
b92017489bdc1db3a4c97191aa4b75366673cb746de0dce5d7a749d5954681ba,tiff,https://download.osgeo.org/libtiff/tiff-4.7.1.tar.xz,
|
|
||||||
6ee152cfb083a378285a49c8e52294307458119147f795bfb7f460cb7ed1d659,tinyramfs,https://github.com/illiliti/tinyramfs/archive/refs/tags/0.2.0.tar.gz,tinyramfs-0.2.0.tar.gz
|
|
||||||
cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff,tomli,https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz,
|
|
||||||
0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466,typing_extensions,https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz,
|
|
||||||
26687ec84e3e114759454c884a08abeaf79dec09b041895ddf4c45ec150acb6d,liburcu,https://lttng.org/files/urcu/userspace-rcu-0.15.3.tar.bz2,
|
|
||||||
6062a1d89b571a61932e6fc0211f36060c4183568b81ee866cf363bce9f6583e,util-linux,https://www.kernel.org/pub/linux/utils/util-linux/v2.41/util-linux-2.41.2.tar.xz,
|
|
||||||
beac7e00e5996bd0c9d9bd8cf62704583b22dbe8613bd768626b95fcac955744,util-macros,https://gitlab.freedesktop.org/xorg/util/macros/-/archive/util-macros-1.20.2/macros-util-macros-1.20.2.tar.gz,
|
|
||||||
661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729,wheel,https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz,
|
|
||||||
7b56592b339d47809cbefb9f46721705c662de1a001bc773d335975cd2eba34f,xcb-util,https://gitlab.freedesktop.org/xorg/lib/libxcb-util/-/archive/xcb-util-0.4.1/libxcb-util-xcb-util-0.4.1.tar.gz,
|
|
||||||
6389dae32d7d772245fed7c76d3f83cb7ffa88eb447dbb4db8400c2220e42c2a,xcb-util-m4,https://gitlab.freedesktop.org/xorg/util/xcb-util-m4/-/archive/c617eee22ae5c285e79e81ec39ce96862fd3262f/xcb-util-m4-c617eee22ae5c285e79e81ec39ce96862fd3262f.tar.gz,
|
|
||||||
c1b792306874c36b535413a33edc71a0ac46e78adcf6ddb1a34090a07393d717,xcb-util-wm,https://gitlab.freedesktop.org/xorg/lib/libxcb-wm/-/archive/xcb-util-wm-0.4.2/libxcb-wm-xcb-util-wm-0.4.2.tar.gz,
|
|
||||||
479447448281cfb6585ad780f23bd75311af20daf344fb9209c8a87ea77e296a,xcbproto,https://gitlab.freedesktop.org/xorg/proto/xcbproto/-/archive/xcb-proto-1.17.0/xcbproto-xcb-proto-1.17.0.tar.gz,
|
|
||||||
fa7ba8c35cb988e7d65b7e7630fe9d0e17e8d79799d3b98db7e19f2b9b150506,xfsprogs,https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-6.16.0.tar.xz,
|
|
||||||
dd18aece9b4e99e6b3d4d9d436cf0645ea31d11e142da193e8b01c23a8b097b2,xkbcomp,https://gitlab.freedesktop.org/xorg/app/xkbcomp/-/archive/xkbcomp-1.4.7/xkbcomp-xkbcomp-1.4.7.tar.gz,
|
|
||||||
81107e12f71087b3f1d7dea43c186805d46abaffead0cafca9bdd24b94c2007e,xkeyboard-config,https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/archive/xkeyboard-config-2.46/xkeyboard-config-xkeyboard-config-2.46.tar.gz,
|
|
||||||
f1be5a443af78307af18103a6bb614021fe163380b0eb43dec820a2389fbd6c8,xlibre-xf86-input-libinput,https://github.com/X11Libre/xf86-input-libinput/archive/refs/tags/xlibre-xf86-input-libinput-1.5.1.0.tar.gz,
|
|
||||||
7137c2bdd9e290aff83565d77b842a209b138776785c745cf7c0d10c9f25fe8f,xlibre-xf86-video-vesa,https://codeload.github.com/X11Libre/xf86-video-vesa/tar.gz/refs/tags/xlibre-xf86-video-vesa-2.6.0.3,xlibre-xf86-video-vesa-2.6.0.3.tar.gz
|
|
||||||
32c5760681cbfbc3b8a605a18588c9c5dd721aecf40acc140fbe8b4f765c4e13,xlibre-xserver,https://github.com/X11Libre/xserver/archive/refs/tags/xlibre-xserver-25.0.0.12.tar.gz,
|
|
||||||
c92466091663b68d93997eab4f329d0be511cb448a61b61fe74a738f2698b77c,xorgproto,https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/archive/xorgproto-2024.1/xorgproto-xorgproto-2024.1.tar.gz,
|
|
||||||
0b54f79df85912504de0b14aec7971e3f964491af1812d83447005807513cd9e,xz,https://github.com/tukaani-project/xz/releases/download/v5.8.1/xz-5.8.1.tar.xz,
|
|
||||||
a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166,zipp,https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz,
|
|
||||||
9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23,zlib,https://www.zlib.net/zlib-1.3.1.tar.gz,
|
|
||||||
9b8d1ecedd5b5e81fbf1918e876752a7dd948e05c1a0dba10ab863842d45acd5,zsh,https://www.zsh.org/pub/zsh-5.9.tar.xz,
|
|
||||||
4
sources/busybox.spec
Normal file
4
sources/busybox.spec
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
SRC_HASH="b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314"
|
||||||
|
SRC_NAME="busybox"
|
||||||
|
SRC_URL="https://busybox.net/downloads/busybox-1.36.1.tar.bz2"
|
||||||
|
SRC_VERSION="1.36.1"
|
||||||
4
sources/linux.spec
Normal file
4
sources/linux.spec
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
SRC_HASH="ddf2ea0d4439e1d57136be3623102af9458f601f5b1cb77e83246e88aea09d0e"
|
||||||
|
SRC_NAME="linux"
|
||||||
|
SRC_URL="https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.17.7.tar.xz"
|
||||||
|
SRC_VERSION="6.17.7"
|
||||||
4
sources/llvm.spec
Normal file
4
sources/llvm.spec
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
SRC_HASH="1794be4bf974e99a3fe1da4b2b9b1456c02ae9479c942f365441d8d207bd650c"
|
||||||
|
SRC_NAME="llvm"
|
||||||
|
SRC_URL="https://github.com/llvm/llvm-project/releases/download/llvmorg-21.1.5/llvm-project-21.1.5.src.tar.xz"
|
||||||
|
SRC_VERSION="21.1.5"
|
||||||
28
sources/musl.spec
Normal file
28
sources/musl.spec
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
SRC_HASH="a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4"
|
||||||
|
SRC_NAME="musl"
|
||||||
|
SRC_URL="https://musl.libc.org/releases/musl-1.2.5.tar.gz"
|
||||||
|
SRC_VERSION="1.2.5"
|
||||||
|
|
||||||
|
# TODO: CVE-2025-26519
|
||||||
|
|
||||||
|
build() {
|
||||||
|
tar xf ../musl-*.tar*
|
||||||
|
cd musl-*/
|
||||||
|
./configure \
|
||||||
|
--bindir=$TREETAP_BINDIR \
|
||||||
|
--build=$TREETAP_BUILD \
|
||||||
|
--includedir=$TREETAP_INCLUDEDIR \
|
||||||
|
--libdir=$TREETAP_LIBDIR \
|
||||||
|
--prefix=$TREETAP_PREFIX \
|
||||||
|
--target=$TREETAP_TARGET
|
||||||
|
make -j $TREETAP_PROCS
|
||||||
|
}
|
||||||
|
|
||||||
|
clean() {
|
||||||
|
rm -rf musl-*/
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
cd musl-*/
|
||||||
|
DESTDIR=$TREETAP_INSTALLDIR make install
|
||||||
|
}
|
||||||
195
treetap
Executable file
195
treetap
Executable file
@ -0,0 +1,195 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
# Copyright (c) 2025 Alexander Hill
|
||||||
|
|
||||||
|
# Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
# purpose with or without fee is hereby granted, provided that the above
|
||||||
|
# copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
# PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Global Variables #
|
||||||
|
####################
|
||||||
|
|
||||||
|
[ -z "$TREETAP_DIR" ] && TREETAP_DIR="$(pwd)/.treetap"
|
||||||
|
[ -z "$TREETAP_PKGDIR" ] && TREETAP_PKGDIR="$TREETAP_DIR/packages"
|
||||||
|
[ -z "$TREETAP_SYSROOT" ] && TREETAP_SYSROOT=/
|
||||||
|
TREETAP_VERSION="1.0.0"
|
||||||
|
|
||||||
|
#####################
|
||||||
|
# Utility Functions #
|
||||||
|
#####################
|
||||||
|
|
||||||
|
# Displays the usage information for treetap
|
||||||
|
help_message() {
|
||||||
|
echo "treetap $TREETAP_VERSION"
|
||||||
|
echo
|
||||||
|
echo "Package Commands:"
|
||||||
|
echo " $0 install <package> [sysroot]"
|
||||||
|
echo " $0 uninstall <package> [sysroot]"
|
||||||
|
echo
|
||||||
|
echo "Source Commands:"
|
||||||
|
echo " $0 build <spec>"
|
||||||
|
echo " $0 clean <spec>"
|
||||||
|
echo " $0 fetch <spec>"
|
||||||
|
echo " $0 package <spec>"
|
||||||
|
echo " $0 purge <spec>"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Confirms that the given strings are valid package and sysroot paths
|
||||||
|
package_check() {
|
||||||
|
[ -z "$1" ] && (echo "package_check: Missing package file"; exit 1)
|
||||||
|
[ -z "$2" ] && (echo "package_check: Missing sysroot"; exit 1)
|
||||||
|
[ ! -f "$1" ] && (echo "package_check: Package file \"$1\" not found"; exit 1)
|
||||||
|
[ ! -d "$2" ] && (echo "package_check: Sysroot \"$2\" not found"; exit 1)
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
# Reads the source specification and ensures it includes the required data
|
||||||
|
source_spec() {
|
||||||
|
# Sanity Check
|
||||||
|
[ -z "$1" ] && (echo "source_spec: Missing specification file"; exit 1)
|
||||||
|
[ ! -f "$1" ] && (echo "source_spec: Specification file \"$1\" not found"; exit 1)
|
||||||
|
|
||||||
|
# Zhu Li, do the thing!
|
||||||
|
source $1
|
||||||
|
|
||||||
|
# Required Fields
|
||||||
|
[ -z "$SRC_HASH" ] && (echo "source_spec: SRC_HASH 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_VERSION" ] && (echo "source_spec: SRC_VERSION is required but not defined"; exit 1)
|
||||||
|
|
||||||
|
# Optional Fields
|
||||||
|
[ -z "$SRC_FILENAME" ] && SRC_FILENAME=$(basename $SRC_URL)
|
||||||
|
|
||||||
|
# Environmental Variables
|
||||||
|
[ -z "$TREETAP_BINDIR" ] && TREETAP_BINDIR=/bin
|
||||||
|
TREETAP_BUILD=$(clang -dumpmachine)
|
||||||
|
[ -z "$TREETAP_TARGET" ] && TREETAP_TARGET=$TREETAP_BUILD
|
||||||
|
TREETAP_BUILDDIR="$TREETAP_DIR/sources/$SRC_NAME/$SRC_VERSION/$TREETAP_TARGET"
|
||||||
|
[ -z "$TREETAP_INCLUDEDIR" ] && TREETAP_INCLUDEDIR=/usr/include
|
||||||
|
TREETAP_INSTALLDIR="$TREETAP_BUILDDIR/install"
|
||||||
|
[ -z "$TREETAP_LIBDIR" ] && TREETAP_LIBDIR=/lib
|
||||||
|
[ -z "$TREETAP_PREFIX" ] && TREETAP_PREFIX=/
|
||||||
|
[ -z "$TREETAP_PROCS" ] && TREETAP_PROCS=$(nproc)
|
||||||
|
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
###############
|
||||||
|
# Subcommands #
|
||||||
|
###############
|
||||||
|
|
||||||
|
# Installs a package to the sysroot
|
||||||
|
package_install() {
|
||||||
|
[ ! -z "$2" ] && TREETAP_SYSROOT=$2
|
||||||
|
package_check $1 $TREETAP_SYSROOT
|
||||||
|
echo "Installing $(basename $1)"
|
||||||
|
FULLPATH=$(pwd)/$1
|
||||||
|
pushd $TREETAP_SYSROOT > /dev/null
|
||||||
|
xz -cd $FULLPATH | cpio -idmu --quiet
|
||||||
|
popd > /dev/null
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Uninstalls a package from the sysroot
|
||||||
|
package_uninstall() {
|
||||||
|
[ ! -z "$2" ] && TREETAP_SYSROOT=$2
|
||||||
|
package_check $1 $TREETAP_SYSROOT
|
||||||
|
echo "Uninstalling $(basename $1)"
|
||||||
|
FULLPATH=$(pwd)/$1
|
||||||
|
pushd $TREETAP_SYSROOT > /dev/null
|
||||||
|
xz -cd $FULLPATH | cpio -it --quiet | tail -n +2 | sort -r | while read path; do
|
||||||
|
if [ -d $path ]; then
|
||||||
|
rmdir --ignore-fail-on-non-empty $path
|
||||||
|
else
|
||||||
|
rm -f $path
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
popd > /dev/null
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Builds the source from the previously fetched tarball
|
||||||
|
source_build() {
|
||||||
|
source_spec $1
|
||||||
|
mkdir -p $TREETAP_BUILDDIR
|
||||||
|
pushd $TREETAP_BUILDDIR > /dev/null
|
||||||
|
echo "Building $SRC_NAME $SRC_VERSION"
|
||||||
|
build > build-$(date +%Y%m%d%H%M%S).log 2>&1
|
||||||
|
popd > /dev/null
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cleans the source from the previous build
|
||||||
|
source_clean() {
|
||||||
|
source_spec $1
|
||||||
|
mkdir -p $TREETAP_BUILDDIR
|
||||||
|
pushd $TREETAP_BUILDDIR > /dev/null
|
||||||
|
echo "Cleaning $SRC_NAME $SRC_VERSION"
|
||||||
|
clean
|
||||||
|
rm -rf $TREETAP_INSTALLDIR
|
||||||
|
popd > /dev/null
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fetches and verifies the integrity of the source tarball
|
||||||
|
source_fetch() {
|
||||||
|
source_spec $1
|
||||||
|
mkdir -p $TREETAP_BUILDDIR
|
||||||
|
pushd $TREETAP_BUILDDIR/.. > /dev/null
|
||||||
|
echo "Fetching $SRC_FILENAME"
|
||||||
|
curl -L -sS $SRC_URL -o $SRC_FILENAME
|
||||||
|
echo "Verifying $SRC_FILENAME"
|
||||||
|
echo "$SRC_HASH $SRC_FILENAME" | sha256sum -c - > /dev/null
|
||||||
|
popd > /dev/null
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Packages the built artifacts for distribution
|
||||||
|
source_package() {
|
||||||
|
source_spec $1
|
||||||
|
mkdir -p $TREETAP_BUILDDIR
|
||||||
|
mkdir -p $TREETAP_INSTALLDIR
|
||||||
|
mkdir -p $TREETAP_PKGDIR
|
||||||
|
pushd $TREETAP_BUILDDIR > /dev/null
|
||||||
|
echo "Moving artifacts for $SRC_NAME $SRC_VERSION"
|
||||||
|
package > package-$(date +%Y%m%d%H%M%S).log
|
||||||
|
echo "Archiving $SRC_NAME $SRC_VERSION"
|
||||||
|
cd $TREETAP_INSTALLDIR
|
||||||
|
find | cpio -o --quiet | xz -cz > "$TREETAP_PKGDIR/$SRC_NAME-$SRC_VERSION.cpio.xz"
|
||||||
|
rm -rf $TREETAP_INSTALLDIR
|
||||||
|
popd > /dev/null
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Purges the entire build directory for a source
|
||||||
|
source_purge() {
|
||||||
|
source_spec $1
|
||||||
|
rm -rf $TREETAP_BUILDDIR
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
###############
|
||||||
|
# Entry Point #
|
||||||
|
###############
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
"build") source_build $2 ;;
|
||||||
|
"clean") source_clean $2 ;;
|
||||||
|
"fetch") source_fetch $2 ;;
|
||||||
|
"install") package_install $2 $3 ;;
|
||||||
|
"package") source_package $2 ;;
|
||||||
|
"purge") source_purge $2 ;;
|
||||||
|
"uninstall") package_uninstall $2 $3 ;;
|
||||||
|
*) help_message ;;
|
||||||
|
esac
|
||||||
Loading…
x
Reference in New Issue
Block a user