A whole new world!~
Co-authored-by: Alexander Hill <ahill@breadpudding.dev> Co-authored-by: Nicholas McDaniel <nickmcdaniel00@gmail.com>
This commit is contained in:
commit
f18cf1e886
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
/build
|
||||
/maple
|
||||
/sources
|
||||
15
LICENSE
Normal file
15
LICENSE
Normal file
@ -0,0 +1,15 @@
|
||||
ISC License
|
||||
|
||||
Copyright (c) Alexander Hill, Nicholas McDaniel, and Maple Linux Contributors
|
||||
|
||||
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.
|
||||
372
build-bootstrap.sh
Executable file
372
build-bootstrap.sh
Executable file
@ -0,0 +1,372 @@
|
||||
#!/bin/sh -e
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
export LD=ld.lld
|
||||
export MAPLE=$(pwd)/maple
|
||||
export THREADS=$(nproc)
|
||||
export HOST=x86_64-unknown-linux-musl
|
||||
|
||||
# A simplified FHS variant with symlinks for backwards compatibility ~ahill
|
||||
# TODO: Where does /usr/com fit into all of this (shared state directory)? ~ahill
|
||||
mkdir -p $MAPLE/bin
|
||||
mkdir -p $MAPLE/boot
|
||||
mkdir -p $MAPLE/dev
|
||||
mkdir -p $MAPLE/etc
|
||||
mkdir -p $MAPLE/home/root
|
||||
mkdir -p $MAPLE/lib
|
||||
# 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 -s . $MAPLE/lib/$HOST
|
||||
mkdir -p $MAPLE/maple/sources
|
||||
mkdir -p $MAPLE/mnt
|
||||
mkdir -p $MAPLE/proc
|
||||
ln -s home/root $MAPLE/root
|
||||
ln -s var/run $MAPLE/run
|
||||
mkdir -p $MAPLE/sbin
|
||||
mkdir -p $MAPLE/sys
|
||||
mkdir -p $MAPLE/tmp
|
||||
mkdir -p $MAPLE/usr
|
||||
ln -s ../bin $MAPLE/usr/bin
|
||||
mkdir -p $MAPLE/usr/include
|
||||
ln -s ../lib $MAPLE/usr/lib
|
||||
ln -s ../lib $MAPLE/usr/libexec
|
||||
ln -s ../sbin $MAPLE/usr/sbin
|
||||
mkdir -p $MAPLE/usr/share
|
||||
mkdir -p $MAPLE/var
|
||||
mkdir -p $MAPLE/var/cache
|
||||
mkdir -p $MAPLE/var/lib
|
||||
mkdir -p $MAPLE/var/lock
|
||||
mkdir -p $MAPLE/var/log
|
||||
mkdir -p $MAPLE/var/run
|
||||
mkdir -p $MAPLE/var/spool
|
||||
mkdir -p $MAPLE/var/tmp
|
||||
|
||||
mkdir -p build
|
||||
cd build
|
||||
|
||||
# LLVM Build
|
||||
tar xf ../sources/llvm-project-*.tar*
|
||||
cd llvm-project-*/
|
||||
cmake -B stage1 -G Ninja -S llvm \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=$MAPLE/maple/tools \
|
||||
-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
|
||||
-DCLANG_DEFAULT_RTLIB=compiler-rt \
|
||||
-DCLANG_DEFAULT_UNWINDLIB=libunwind \
|
||||
-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_ENABLE_ASSERTIONS=OFF \
|
||||
-DLIBUNWIND_USE_COMPILER_RT=ON \
|
||||
-DLLVM_BUILD_LLVM_DYLIB=ON \
|
||||
-DLLVM_ENABLE_LIBCXX=ON \
|
||||
-DLLVM_ENABLE_PROJECTS="clang;lld;llvm" \
|
||||
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind;libcxxabi;libcxx" \
|
||||
-DLLVM_HOST_TRIPLE=$HOST \
|
||||
-DLLVM_INSTALL_BINUTILS_SYMLINKS=ON \
|
||||
-DLLVM_INSTALL_UTILS=ON \
|
||||
-DLLVM_LINK_LLVM_DYLIB=ON \
|
||||
-DLLVM_TARGETS_TO_BUILD=X86 \
|
||||
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
|
||||
cmake --build stage1
|
||||
cmake --install stage1
|
||||
cd ..
|
||||
|
||||
export CC="$MAPLE/maple/tools/bin/clang"
|
||||
export CXX="$MAPLE/maple/tools/bin/clang++"
|
||||
export CFLAGS="--sysroot=$MAPLE"
|
||||
export CXXFLAGS="$CFLAGS"
|
||||
export LD=$MAPLE/maple/tools/bin/ld.lld
|
||||
export PATH="$MAPLE/maple/tools/bin:$PATH"
|
||||
|
||||
# Linux Headers
|
||||
tar xf ../sources/linux-*.tar*
|
||||
cd linux-*/
|
||||
LLVM=1 make -j $THREADS mrproper
|
||||
LLVM=1 make -j $THREADS headers_install INSTALL_HDR_PATH=$MAPLE/usr
|
||||
cd ..
|
||||
|
||||
# musl Build
|
||||
tar xf ../sources/musl-*.tar*
|
||||
cd musl-*/
|
||||
./configure --disable-static --includedir=/usr/include --prefix=""
|
||||
make -j $THREADS
|
||||
make -j $THREADS 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 -s 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 -s /lib/ld-musl-x86_64.so.1 $MAPLE/bin/ldd
|
||||
cd ..
|
||||
|
||||
# dash Build
|
||||
tar xf ../sources/dash-*.tar*
|
||||
cd dash-*/
|
||||
./configure \
|
||||
--datarootdir=/usr/share \
|
||||
--exec-prefix="" \
|
||||
--includedir=/usr/include \
|
||||
--libexecdir=/lib \
|
||||
--prefix="" \
|
||||
--sharedstatedir=/usr/com
|
||||
make -j $THREADS
|
||||
make -j $THREADS install DESTDIR=$MAPLE
|
||||
ln -s dash $MAPLE/bin/sh
|
||||
cd ..
|
||||
|
||||
# m4 Build
|
||||
tar xf ../sources/m4-*.tar*
|
||||
cd m4-*/
|
||||
./configure \
|
||||
--datarootdir=/usr/share \
|
||||
--disable-nls \
|
||||
--enable-c++ \
|
||||
--includedir=/usr/include \
|
||||
--libexecdir=/lib \
|
||||
--prefix="" \
|
||||
--sharedstatedir=/usr/com
|
||||
make -j $THREADS
|
||||
make -j $THREADS install DESTDIR=$MAPLE
|
||||
cd ..
|
||||
|
||||
# Coreutils Build
|
||||
tar xf ../sources/coreutils-*.tar*
|
||||
cd coreutils-*/
|
||||
./configure \
|
||||
--datarootdir=/usr/share \
|
||||
--disable-nls \
|
||||
--includedir=/usr/include \
|
||||
--libexecdir=/lib \
|
||||
--prefix="" \
|
||||
--sharedstatedir=/usr/com
|
||||
make -j $THREADS
|
||||
make -j $THREADS install DESTDIR=$MAPLE
|
||||
cd ..
|
||||
|
||||
# Diffutils Build
|
||||
tar xf ../sources/diffutils-*.tar*
|
||||
cd diffutils-*/
|
||||
./configure \
|
||||
--disable-nls \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install DESTDIR=$MAPLE
|
||||
cd ..
|
||||
|
||||
# Findutils Build
|
||||
tar xf ../sources/findutils-*.tar*
|
||||
cd findutils-*/
|
||||
./configure \
|
||||
--datarootdir=/usr/share \
|
||||
--disable-nls \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install DESTDIR=$MAPLE
|
||||
cd ..
|
||||
|
||||
# Grep Build
|
||||
tar xf ../sources/grep-*.tar*
|
||||
cd grep-*/
|
||||
./configure \
|
||||
--datarootdir=/usr/share \
|
||||
--disable-nls \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install DESTDIR=$MAPLE
|
||||
cd ..
|
||||
|
||||
# Gzip Build
|
||||
tar xf ../sources/gzip-*.tar*
|
||||
cd gzip-*/
|
||||
./configure \
|
||||
--datarootdir=/usr/share \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREAD
|
||||
make -j $THREAD install DESTDIR=$MAPLE
|
||||
cd ..
|
||||
|
||||
# Make Build
|
||||
tar xf ../sources/make-*.tar*
|
||||
cd make-*/
|
||||
./configure \
|
||||
--datarootdir=/usr/share \
|
||||
--disable-nls \
|
||||
--enable-year2038 \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREAD
|
||||
make -j $THREAD install DESTDIR=$MAPLE
|
||||
cd ..
|
||||
|
||||
# Sed Build
|
||||
tar xf ../sources/sed-*.tar*
|
||||
cd sed-*/
|
||||
./configure \
|
||||
--datarootdir=/usr/share \
|
||||
--disable-i18n \
|
||||
--disable-nls \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREAD
|
||||
make -j $THREAD install DESTDIR=$MAPLE
|
||||
cd ..
|
||||
|
||||
# Tar Build
|
||||
tar xf ../sources/tar-*.tar*
|
||||
cd tar-*/
|
||||
./configure \
|
||||
--datarootdir=/usr/share \
|
||||
--disable-nls \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREAD
|
||||
make -j $THREAD install DESTDIR=$MAPLE
|
||||
cd ..
|
||||
|
||||
# Xz Build
|
||||
tar xf ../sources/xz-*.tar*
|
||||
cd xz-*/
|
||||
./configure \
|
||||
--datarootdir=/usr/share \
|
||||
--disable-doc \
|
||||
--disable-nls \
|
||||
--disable-static \
|
||||
--enable-year2038 \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREAD
|
||||
make -j $THREAD install DESTDIR=$MAPLE
|
||||
cd ..
|
||||
|
||||
# Clear compiler flags to avoid potentially issues with the LLVM build
|
||||
export CFLAGS=""
|
||||
export CXXFLAGS=""
|
||||
|
||||
# LLVM Build (Stage 2)
|
||||
tar xf ../sources/llvm-project-*.tar*
|
||||
cd llvm-project-*/
|
||||
TOOLCHAIN_FILE=$HOST-maple-clang.cmake
|
||||
# NOTE: First time doing this. Did I do it right? ~ahill
|
||||
echo "set(CMAKE_SYSTEM_NAME Linux)" > $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_SYSROOT $MAPLE)" >> $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_C_COMPILER_TARGET $HOST)" >> $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_CXX_COMPILER_TARGET $HOST)" >> $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_C_FLAGS_INIT \"$CFLAGS\")" >> $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_CXX_FLAGS_INIT \"$CXXFLAGS\")" >> $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_LINKER_TYPE LLD)" >> $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_C_COMPILER \"$CC\")" >> $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_CXX_COMPILER \"$CXX\")" >> $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> $TOOLCHAIN_FILE
|
||||
echo "set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)" >> $TOOLCHAIN_FILE
|
||||
# TODO: Is it possible to prevent CMake from building static libraries? ~ahill
|
||||
# NOTE: compiler-rt fails to build on musl because execinfo.h is missing.
|
||||
# Disabling COMPILER_RT_BUILD_GWP_ASAN works. ~ahill
|
||||
# See also: https://github.com/llvm/llvm-project/issues/60687
|
||||
cmake -B stage2 -G Ninja -S llvm \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=$MAPLE/usr \
|
||||
-DCMAKE_TOOLCHAIN_FILE=$(pwd)/$TOOLCHAIN_FILE \
|
||||
-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
|
||||
-DCLANG_DEFAULT_RTLIB=compiler-rt \
|
||||
-DCLANG_DEFAULT_UNWINDLIB=libunwind \
|
||||
-DCOMPILER_RT_BUILD_GWP_ASAN=OFF \
|
||||
-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_ENABLE_ASSERTIONS=OFF \
|
||||
-DLIBUNWIND_USE_COMPILER_RT=ON \
|
||||
-DLLVM_BUILD_LLVM_DYLIB=ON \
|
||||
-DLLVM_ENABLE_LIBCXX=ON \
|
||||
-DLLVM_ENABLE_LLD=ON \
|
||||
-DLLVM_ENABLE_PROJECTS="clang;lld;llvm" \
|
||||
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind;libcxxabi;libcxx" \
|
||||
-DLLVM_ENABLE_ZSTD=OFF \
|
||||
-DLLVM_HOST_TRIPLE=$HOST \
|
||||
-DLLVM_INSTALL_BINUTILS_SYMLINKS=ON \
|
||||
-DLLVM_INSTALL_UTILS=ON \
|
||||
-DLLVM_LINK_LLVM_DYLIB=ON \
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
||||
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
|
||||
cmake --build stage2
|
||||
cmake --install stage2
|
||||
ln -s clang $MAPLE/bin/cc
|
||||
ln -s clang++ $MAPLE/bin/c++
|
||||
ln -s ld.lld $MAPLE/bin/ld
|
||||
cd ..
|
||||
|
||||
# CMake Build
|
||||
tar xf ../sources/cmake-*.tar*
|
||||
cd cmake-*/
|
||||
# NOTE: Tests are disabled because they attempt to run on the system responsible
|
||||
# for the build, not the system being built. ~ahill
|
||||
cmake -B build -G Ninja \
|
||||
-DBUILD_TESTING=OFF \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_C_COMPILER=$CC \
|
||||
-DCMAKE_CXX_COMPILER=$CXX \
|
||||
-DCMAKE_INSTALL_PREFIX=$MAPLE/usr \
|
||||
-DCMAKE_SYSROOT=$MAPLE \
|
||||
-DCMAKE_USE_OPENSSL=OFF
|
||||
cmake --build build
|
||||
cmake --install build
|
||||
cd ..
|
||||
|
||||
# Gawk Build
|
||||
tar xf ../sources/gawk-*.tar*
|
||||
cd gawk-*/
|
||||
./configure \
|
||||
--disable-mpfr \
|
||||
--disable-nls \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install DESTDIR=$MAPLE
|
||||
cd ..
|
||||
416
build-chroot.sh
Executable file
416
build-chroot.sh
Executable file
@ -0,0 +1,416 @@
|
||||
#!/bin/sh -e
|
||||
THREADS=$(nproc)
|
||||
|
||||
mkdir -p build
|
||||
cd build
|
||||
|
||||
# Zlib Build
|
||||
tar xf ../sources/zlib-*.tar*
|
||||
cd zlib-*/
|
||||
# The configure script refuses to build a shared library because the linker
|
||||
# script attempts to modify symbols that do not exist. Passing CFLAGS fixes the
|
||||
# issue. ~ahill
|
||||
CFLAGS="-Wl,--undefined-version" ./configure --prefix=/usr --shared
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# LibreSSL Build
|
||||
tar xf ../sources/libressl-*.tar*
|
||||
cd libressl-*/
|
||||
./configure \
|
||||
--disable-static \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# bzip2 Build
|
||||
tar xf ../sources/bzip2-*.tar*
|
||||
cd bzip2-*/
|
||||
make CC=clang
|
||||
make install CC=clang PREFIX=/usr
|
||||
cd ..
|
||||
|
||||
# libarchive Build
|
||||
tar xf ../sources/libarchive-*.tar*
|
||||
cd libarchive-*/
|
||||
./configure \
|
||||
--disable-static \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# libexpat Build
|
||||
tar xf ../sources/expat-*.tar*
|
||||
cd expat-*/
|
||||
./configure \
|
||||
--disable-static \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# pkgconf Build
|
||||
tar xf ../sources/pkgconf-*.tar*
|
||||
cd pkgconf-*/
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-year2038 \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# Perl Build
|
||||
tar xf ../sources/perl-*.tar*
|
||||
cd perl-*/
|
||||
# NOTE: d_eaccess is manually undefined because of undeclared function use in
|
||||
# pp_sys.c ~ahill
|
||||
./Configure -des \
|
||||
-Dprefix=/usr \
|
||||
-Dvendorprefix=/usr \
|
||||
-Duseshrplib \
|
||||
-Dusethreads \
|
||||
-Ud_eaccess
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# cURL Build
|
||||
tar xf ../sources/curl-*.tar*
|
||||
cd curl-*/
|
||||
./configure \
|
||||
--disable-ntlm \
|
||||
--disable-static \
|
||||
--enable-ipv6 \
|
||||
--enable-optimize \
|
||||
--enable-unix-sockets \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--with-ca-bundle=/etc/ssl/cert.pem \
|
||||
--with-ca-path=/etc/ssl/certs \
|
||||
--with-openssl \
|
||||
--with-zlib \
|
||||
--with-zsh-functions-dir \
|
||||
--without-libpsl
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# Samurai Build
|
||||
tar xf ../sources/samurai-*.tar*
|
||||
cd samurai-*/
|
||||
# NOTE: Unfortunately, there is no way to change the prefix without modifying
|
||||
# the Makefile. ~ahill
|
||||
sed -i "s/^PREFIX=.*/PREFIX=\/usr/" Makefile
|
||||
# NOTE: CC is manually defined due to the use of the c99 command. ~ahill
|
||||
make -j $THREADS CC=clang
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# git Build
|
||||
tar xf ../sources/git-*.tar*
|
||||
cd git-*/
|
||||
# NOTE: musl doesn't support REG_STARTEND, which git requires. Therefore, we
|
||||
# pass NO_REGEX=NeedsStartEnd so git will use its own implementation
|
||||
# instead. ~ahill
|
||||
# NOTE: Passing NO_TCLTK disables the GUI and passing NO_GETTEXT disables locale
|
||||
# generation... unless it attempts to build the GUI, where it will attempt
|
||||
# to generate the locales anyways. ~ahill
|
||||
make -j $THREADS all prefix=/usr NO_GETTEXT=YesUnfortunately NO_REGEX=NeedsStartEnd NO_TCLTK=YesPlease
|
||||
make -j $THREADS install prefix=/usr NO_GETTEXT=YesUnfortunately NO_REGEX=NeedsStartEnd NO_TCLTK=YesPlease
|
||||
cd ..
|
||||
|
||||
# muon Build
|
||||
tar xf ../sources/muon-*.tar*
|
||||
cd muon-*/
|
||||
# NOTE: Muon's bootstrap script requires the "c99" command, which doesn't exist
|
||||
# on Maple Linux. Using sed to rewrite the command to clang -std=c99
|
||||
# instead. ~ahill
|
||||
sed -i "s/c99/clang -std=c99/" bootstrap.sh
|
||||
CFLAGS="-DBOOTSTRAP_NO_SAMU" ./bootstrap.sh build
|
||||
./build/muon-bootstrap setup -Dprefix=/usr build
|
||||
samu -C build
|
||||
./build/muon-bootstrap -C build install
|
||||
cd ..
|
||||
|
||||
# ncurses Build
|
||||
tar xf ../sources/ncurses-*.tar*
|
||||
cd ncurses-*/
|
||||
./configure \
|
||||
--enable-ext-colors \
|
||||
--enable-widec \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--prefix=/usr \
|
||||
--with-shared \
|
||||
--with-cxx-binding \
|
||||
--with-cxx-shared \
|
||||
--without-ada \
|
||||
--without-manpages \
|
||||
--without-normal
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# zsh Build
|
||||
tar xf ../sources/zsh-*.tar*
|
||||
cd zsh-*/
|
||||
# NOTE: The target triple is explicitly passed to the configure script since it
|
||||
# believes the host system is based on glibc rather than musl. ~ahill
|
||||
# NOTE: Most of Autoconf's tests do not specify a type for the main function,
|
||||
# causing clang to get angry. Passing -Wno-implicit-int fixes this. ~ahill
|
||||
CFLAGS="-Wno-implicit-int" ./configure \
|
||||
--build=$(clang -dumpmachine) \
|
||||
--disable-locale \
|
||||
--enable-libc-musl \
|
||||
--enable-multibyte \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--prefix=/usr
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
# NOTE: While zsh isn't 100% compatible with bash, it can still be used as a
|
||||
# reliable replacement in this case. ~ahill
|
||||
ln -s zsh /bin/bash
|
||||
cd ..
|
||||
|
||||
# libcap Build
|
||||
tar xf ../sources/libcap-*.tar*
|
||||
cd libcap-*/
|
||||
# NOTE: Review additional prefix settings for correctness
|
||||
make CC=clang prefix=/usr lib=lib -j $THREADS
|
||||
make prefix=/usr lib=lib -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# Linux PAM Build
|
||||
tar xf ../sources/Linux-PAM-*.tar*
|
||||
cd Linux-PAM-*/
|
||||
# FIXME: Muon has an issue with system dependencies that lack a pkgconfig file.
|
||||
# We change the method we use for resolving dependencies as a workaround.
|
||||
# ~ahill
|
||||
sed -i "s/^libdl = dependency('dl')/libdl = dependency('dl', method : 'system')/" meson.build
|
||||
# NOTE: The version script associated with PAM attempts to modify symbols that
|
||||
# don't exist, so it fails to compile on LLVM. Passing
|
||||
# -Wl,--undefined-version fixes the problem. ~ahill
|
||||
LDFLAGS="-Wl,--undefined-version" muon setup build
|
||||
# NOTE: We are using Samurai directly because we don't have the ability to reach
|
||||
# the Internet to download meson's tests in our current state. ~ahill
|
||||
samu -C build
|
||||
muon -C build install
|
||||
cd ..
|
||||
|
||||
# OpenRC Build
|
||||
tar xf ../sources/openrc-*.tar*
|
||||
cd openrc-*/
|
||||
muon setup build
|
||||
samu -C build
|
||||
# NOTE: build/src/shared/version is never generated, which causes an error with
|
||||
# the install process. Deleting the last line as a workaround. ~ahill
|
||||
sed -i "/^install.*\/src\/shared\/version\".*/d" ./tools/meson_final.sh
|
||||
# NOTE: One of the shell scripts OpenRC uses to install requires a DESTDIR, so
|
||||
# we simply say the root is / in this case. ~ahill
|
||||
DESTDIR=/ muon -C build install
|
||||
cd ..
|
||||
|
||||
# nasm Build
|
||||
tar xf ../sources/nasm-*.tar*
|
||||
cd nasm-*/
|
||||
./configure \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# Limine Build
|
||||
tar xf ../sources/limine-*.tar*
|
||||
cd limine-*/
|
||||
./configure \
|
||||
--enable-uefi-x86-64 \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# dosfstools Build
|
||||
tar xf ../sources/dosfstools-*.tar*
|
||||
cd dosfstools-*/
|
||||
./configure \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/usr/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# bison Build
|
||||
tar xf ../sources/bison-*.tar*
|
||||
cd bison-*/
|
||||
./configure \
|
||||
--disable-nls \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/usr/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# flex Build
|
||||
tar xf ../sources/flex-*.tar*
|
||||
cd flex-*/
|
||||
./configure \
|
||||
--disable-nls \
|
||||
--disable-static \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/usr/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# util-linux Build
|
||||
tar xf ../sources/util-linux-*.tar*
|
||||
cd util-linux-*
|
||||
# lastlog2 depends on sqlite, which we don't have
|
||||
# groups and chown are disabled as we don't have either at this point
|
||||
# TODO: Do we care about bash completion when we're using zsh? ~ahill
|
||||
./configure \
|
||||
--disable-liblastlog2 \
|
||||
--disable-makeinstall-chown \
|
||||
--disable-nls \
|
||||
--disable-pam-lastlog2 \
|
||||
--disable-static \
|
||||
--disable-use-tty-group \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/usr/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--without-python \
|
||||
--without-systemd
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# libinih Build
|
||||
tar xf ../sources/libinih-*.tar*
|
||||
cd inih-*/
|
||||
muon setup \
|
||||
-Ddefault_library=shared \
|
||||
-Dprefix=/usr \
|
||||
build
|
||||
muon samu -C build
|
||||
muon -C build install
|
||||
cd ..
|
||||
|
||||
# liburcu Build
|
||||
tar xf ../sources/userspace-rcu-*.tar*
|
||||
cd userspace-rcu-*/
|
||||
./configure \
|
||||
--disable-static \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/usr/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# xfsprogs Build
|
||||
tar xf ../sources/xfsprogs-*.tar*
|
||||
cd xfsprogs-*/
|
||||
# Overriding system statx fixes an issue with musl compatability.
|
||||
# Gentoo bugzilla for reference: https://bugs.gentoo.org/948468
|
||||
CFLAGS=-DOVERRIDE_SYSTEM_STATX ./configure \
|
||||
--disable-static \
|
||||
--enable-gettext=no \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/usr/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
make -j $THREADS
|
||||
make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# bc Build
|
||||
tar xf ../sources/bc-*.tar*
|
||||
cd bc-*/
|
||||
./configure \
|
||||
--exec-prefix="" \
|
||||
--libexecdir=/usr/lib \
|
||||
--localstatedir=/var \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc
|
||||
# NOTE: Documentation is not properly built here,
|
||||
# MAKEINFO=true replaces the makeinfo executable (which we don't have)
|
||||
# with `/usr/bin/true`. This is fine for the bootstrap, but should
|
||||
# not be done when properly packaged. ~nmcdaniel
|
||||
make MAKEINFO=true -j $THREADS
|
||||
make MAKEINFO=true -j $THREADS install
|
||||
cd ..
|
||||
|
||||
# libelf Build
|
||||
tar xf ../sources/libelf-*.tar*
|
||||
cd libelf-*/
|
||||
# NOTE: This distribution of libelf has been extracted from elfutils and lacks a
|
||||
# proper configuration script. The best we can do is modify src/config.h
|
||||
# to do what we need. Zstd does *not* belong in binaries. ~ahill
|
||||
sed -i "/#define USE_ZSTD.*/d" src/config.h
|
||||
# NOTE: Similarly, we need to modify the Makefile to prevent it from linking
|
||||
# with zstd. At the very least, we can use the proper target to only build
|
||||
# the shared library. ~ahill
|
||||
sed -i "s/-lzstd//" Makefile
|
||||
make -j $THREADS libelf.so
|
||||
make -j $THREADS install-headers
|
||||
make -j $THREADS install-shared
|
||||
cd ..
|
||||
|
||||
# Linux Build
|
||||
tar xf ../sources/linux-*.tar*
|
||||
cd linux-*/
|
||||
# NOTE: LLVM=1 is required for the Linux kernel Makefile. Otherwise, things will
|
||||
# not build properly. ~ahill
|
||||
LLVM=1 make -j $THREADS mrproper
|
||||
LLVM=1 make -j $THREADS defconfig
|
||||
LLVM=1 make -j $THREADS
|
||||
LLVM=1 make -j $THREADS install
|
||||
cd ..
|
||||
|
||||
cd ..
|
||||
20
build-image.sh
Executable file
20
build-image.sh
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/sh -e
|
||||
dd if=/dev/zero of=maple.img bs=1G count=4
|
||||
# TODO: Replace parted with sfdisk to reduce the number of dependencies required
|
||||
# to build Maple Linux. ~ahill
|
||||
parted --script maple.img \
|
||||
mklabel gpt \
|
||||
mkpart fat32 0% 512M \
|
||||
mkpart xfs 512M 100% \
|
||||
set 1 esp on
|
||||
# FIXME: If we adjust the partition table above, these numbers are no longer
|
||||
# accurate. Is there a way to automate this process in a rootless
|
||||
# fashion? ~ahill
|
||||
dd if=/dev/zero of=maple.img1 count=997375
|
||||
mkfs.fat -F32 maple.img1
|
||||
dd if=maple.img1 of=maple.img seek=2048 conv=notrunc
|
||||
rm maple.img1
|
||||
dd if=/dev/zero of=maple.img2 count=7387135
|
||||
mkfs.xfs maple.img2
|
||||
dd if=maple.img2 of=maple.img seek=999424 conv=notrunc
|
||||
rm maple.img2
|
||||
22
maple-chroot.sh
Executable file
22
maple-chroot.sh
Executable file
@ -0,0 +1,22 @@
|
||||
#!/bin/sh
|
||||
MAPLE=$(pwd)/maple
|
||||
|
||||
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 mount --bind ./sources $MAPLE/maple/sources; then
|
||||
chroot $MAPLE /bin/sh
|
||||
umount $MAPLE/maple/sources
|
||||
fi
|
||||
umount $MAPLE/run
|
||||
fi
|
||||
umount $MAPLE/tmp
|
||||
fi
|
||||
umount -R $MAPLE/sys
|
||||
fi
|
||||
umount $MAPLE/proc
|
||||
fi
|
||||
umount -R $MAPLE/dev
|
||||
fi
|
||||
43
sources.list
Normal file
43
sources.list
Normal file
@ -0,0 +1,43 @@
|
||||
515430115b3334c636317503460a0950dff79940aa3259ce2c1aa67c2881d023,https://ftp.gnu.org/gnu/bc/bc-1.08.1.tar.xz,
|
||||
9bba0214ccf7f1079c5d59210045227bcf619519840ebfa80cd3849cff5a5bf2,https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz,
|
||||
ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269,https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz
|
||||
ddc54ad63b87e153cf50be450a6580f1b17b4881de8941da963ff56991a4083b,https://github.com/Kitware/CMake/releases/download/v4.0.0/cmake-4.0.0.tar.gz,
|
||||
e8bb26ad0293f9b5a1fc43fb42ba970e312c66ce92c1b0b16713d7500db251bf,https://ftp.gnu.org/gnu/coreutils/coreutils-9.7.tar.xz,
|
||||
c261a4db579b289a7501565497658bbd52d3138fdbaccf1490fa918129ab45bc,https://curl.se/download/curl-8.13.0.tar.gz,
|
||||
a0d845af4bfc1e11ff67986cf9684ac9d158b75c04b20433f1f213d2053680be,https://salsa.debian.org/debian/dash/-/archive/debian/0.5.12-11/dash-debian-0.5.12-11.tar.gz,
|
||||
7c8b7f9fc8609141fdea9cece85249d308624391ff61dedaf528fcb337727dfd,https://ftp.gnu.org/gnu/diffutils/diffutils-3.12.tar.xz,
|
||||
64926eebf90092dca21b14259a5301b7b98e7b1943e8a201c7d726084809b527,https://github.com/dosfstools/dosfstools/releases/download/v4.2/dosfstools-4.2.tar.gz,
|
||||
354552544b8f99012e5062f7d570ec77f14b412a3ff5c7d8d0dae62c0d217c30,https://github.com/libexpat/libexpat/releases/download/R_2_7_1/expat-2.7.1.tar.xz,
|
||||
1387e0b67ff247d2abde998f90dfbf70c1491391a59ddfecb8ae698789f0a4f5,https://ftp.gnu.org/gnu/findutils/findutils-4.10.0.tar.xz,
|
||||
e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995,https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz,
|
||||
f8c3486509de705192138b00ef2c00bbbdd0e84c30d5c07d23fc73a9dc4cc9cc,https://ftp.gnu.org/gnu/gawk/gawk-5.3.2.tar.xz,
|
||||
1bfeeafc78036e78c7b422219473987a6fa79bfdc1da673fcf20e4901399e09f,https://git.kernel.org/pub/scm/git/git.git/snapshot/git-2.49.0.tar.gz,
|
||||
1db2aedde89d0dea42b16d9528f894c8d15dae4e190b59aecc78f5a951276eab,https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz,
|
||||
7454eb6935db17c6655576c2e1b0fabefd38b4d0936e0f87f48cd062ce91a057,https://ftp.gnu.org/gnu/gzip/gzip-1.13.tar.xz,
|
||||
ed8b5732e4cd6e30fae909fb945cad8ff9cb7be5c6cdaa3944ec96e4a200c04c,https://libarchive.org/downloads/libarchive-3.7.9.tar.xz,
|
||||
de4e7e064c9ba451d5234dd46e897d7c71c96a9ebf9a0c445bc04f4742d83632,https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.75.tar.xz,
|
||||
a359755a54200e0d9fab4bf169d5af7d2177d12b324874c6c32eaac5cce79295,https://github.com/arachsys/libelf/archive/refs/tags/v0.192.1.tar.gz,libelf-0.192.1.tar.gz
|
||||
706aa05c888b53bd170e5d8aa8f8a9d9ccf5449dfed262d5103d1f292af26774,https://github.com/benhoyt/inih/archive/refs/tags/r60.tar.gz,libinih-r60.tar.gz
|
||||
4d841955f0acc3dfc71d0e3dd35f283af461222350e26843fea9731c0246a1e4,https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-4.0.0.tar.gz,
|
||||
47460e776a45bd4f54f14b7a6f6c1302d06b2df668b4a13033fdb0b2c8e4a9e0,https://github.com/limine-bootloader/limine/releases/download/v9.2.2/limine-9.2.2.tar.xz,
|
||||
5bf122d1879fd64fadf0cecfcd477957ebce1bc5931c14835ee0eda88463e407,https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.14.1.tar.xz,
|
||||
57dcd7a6b966ecd5bbd95e1d11173734691e16b68692fa59661cdae9b13b1697,https://github.com/linux-pam/linux-pam/releases/download/v1.7.0/Linux-PAM-1.7.0.tar.xz,
|
||||
f0a4a240aabc9b056142d14d5478bb6d962aeac549cbd75b809f5499240a8b38,https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.2/llvm-project-20.1.2.src.tar.xz,
|
||||
63aede5c6d33b6d9b13511cd0be2cac046f2e70fd0a07aa9573a04a82783af96,https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz,
|
||||
dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3,https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz,
|
||||
c2ce8302e886b2d3534ec38896a824dc83f43698d085d57bb19a751611d94e86,https://git.sr.ht/~lattis/muon/archive/0.4.0.tar.gz,muon-0.4.0.tar.gz
|
||||
a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4,https://musl.libc.org/releases/musl-1.2.5.tar.gz,
|
||||
1412a1c760bbd05db026b6c0d1657affd6631cd0a63cddb6f73cc6d4aa616148,https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.xz,
|
||||
97fc51ac2b085d4cde31ef4d2c3122c21abc217e9090a43a30fc5ec21684e059,https://invisible-island.net/datafiles/release/ncurses.tar.gz,ncurses-6.3.tar.gz
|
||||
a56bfc25c86620c6d04ee3037fbeb7f3cc508f6d0040ca006dea34b8ad2696e9,https://github.com/OpenRC/openrc/archive/refs/tags/0.61.tar.gz,openrc-0.61.tar.gz
|
||||
02f8c45bb379ed0c3de7514fad48c714fd46be8f0b536bfd5320050165a1ee26,https://www.cpan.org/src/5.0/perl-5.40.1.tar.gz,
|
||||
51203d99ed573fa7344bf07ca626f10c7cc094e0846ac4aa0023bd0c83c25a41,https://distfiles.ariadne.space/pkgconf/pkgconf-2.4.3.tar.xz,
|
||||
3b8cf51548dfc49b7efe035e191ff5e1963ebc4fe8f6064a5eefc5343eaf78a5,https://github.com/michaelforney/samurai/releases/download/1.2/samurai-1.2.tar.gz,
|
||||
6e226b732e1cd739464ad6862bd1a1aba42d7982922da7a53519631d24975181,https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz,
|
||||
4d62ff37342ec7aed748535323930c7cf94acf71c3591882b26a7ea50f3edc16,https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz,
|
||||
0b54f79df85912504de0b14aec7971e3f964491af1812d83447005807513cd9e,https://github.com/tukaani-project/xz/releases/download/v5.8.1/xz-5.8.1.tar.xz,
|
||||
98d66cc12f2c5881879b976f0c55d10d311401513be254e3bd28cf3811fb50c8,https://lttng.org/files/urcu/userspace-rcu-latest-0.15.tar.bz2,userspace-rcu-0.15.tar.bz2
|
||||
c014b5861695b603d0be2ad1e6f10d5838b9d7859e1dd72d01504556817d8a87,https://www.kernel.org/pub/linux/utils/util-linux/v2.41/util-linux-2.41.tar.gz,
|
||||
0459933f93d94c82bc2789e7bd63742273d9d74207cdae67dc3032038da08337,https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-6.13.0.tar.xz,
|
||||
9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23,https://www.zlib.net/zlib-1.3.1.tar.gz,
|
||||
9b8d1ecedd5b5e81fbf1918e876752a7dd948e05c1a0dba10ab863842d45acd5,https://www.zsh.org/pub/zsh-5.9.tar.xz,
|
||||
18
sources.sh
Executable file
18
sources.sh
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/sh -e
|
||||
mkdir -p sources
|
||||
cd sources
|
||||
cat ../sources.list | while read line; do
|
||||
HASH=$(echo $line | cut -d"," -f1)
|
||||
URL=$(echo $line | cut -d"," -f2)
|
||||
CANONICAL=$(echo $line | cut -d"," -f3)
|
||||
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 -
|
||||
done
|
||||
Loading…
x
Reference in New Issue
Block a user