105 lines
4.5 KiB
Bash
Executable File
105 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# ============================================================================
|
|
# DarkForge Linux — Phase 0: Download Source Tarballs
|
|
# ============================================================================
|
|
# Purpose: Download all source tarballs needed for the toolchain bootstrap.
|
|
# Every filename is versioned and matches exactly what the build
|
|
# scripts expect. No "latest" or unversioned URLs.
|
|
# Inputs: LFS environment variable (path to target partition)
|
|
# Outputs: Source tarballs in ${LFS}/sources/
|
|
# Assumes: Internet access, wget or curl available
|
|
# Updated: 2026-03-20 — synced all versions with build scripts
|
|
# Mirror: Uses ftp.klid.dk (Denmark) for GNU packages — fast in EU
|
|
# ============================================================================
|
|
|
|
set -euo pipefail
|
|
|
|
LFS="${LFS:-/mnt/darkforge}"
|
|
SRCDIR="${LFS}/sources"
|
|
GNU_MIRROR="http://ftp.klid.dk/ftp/gnu"
|
|
|
|
mkdir -p "${SRCDIR}"
|
|
cd "${SRCDIR}"
|
|
|
|
echo "=== DarkForge: Downloading source tarballs ==="
|
|
echo "GNU mirror: ${GNU_MIRROR}"
|
|
|
|
# --- Helper function ----------------------------------------------------------
|
|
download() {
|
|
local url="$1"
|
|
local filename="${2:-$(basename "${url}")}"
|
|
|
|
if [ -f "${filename}" ]; then
|
|
echo " [SKIP] ${filename} already exists"
|
|
return 0
|
|
fi
|
|
|
|
echo " [GET] ${filename}"
|
|
wget --no-verbose --continue "${url}" -O "${filename}" || {
|
|
echo " [FAIL] ${filename} — trying curl fallback"
|
|
curl -fLo "${filename}" "${url}" || {
|
|
echo " [ERROR] Failed to download ${filename}"
|
|
return 1
|
|
}
|
|
}
|
|
}
|
|
|
|
# ==============================================================================
|
|
# Cross-Toolchain (Chapter 5)
|
|
# ==============================================================================
|
|
echo ">>> Cross-Toolchain packages..."
|
|
download "${GNU_MIRROR}/binutils/binutils-2.46.0.tar.xz"
|
|
download "${GNU_MIRROR}/gcc/gcc-15.2.0/gcc-15.2.0.tar.xz"
|
|
download "${GNU_MIRROR}/glibc/glibc-2.43.tar.xz"
|
|
download "https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.19.8.tar.xz"
|
|
download "https://www.mpfr.org/mpfr-current/mpfr-4.2.2.tar.xz"
|
|
download "https://gmplib.org/download/gmp/gmp-6.3.0.tar.xz"
|
|
download "${GNU_MIRROR}/mpc/mpc-1.3.1.tar.gz"
|
|
|
|
# ==============================================================================
|
|
# Temporary Tools (Chapter 6)
|
|
# ==============================================================================
|
|
echo ">>> Temporary tools packages..."
|
|
download "${GNU_MIRROR}/m4/m4-1.4.21.tar.xz"
|
|
download "https://invisible-island.net/datafiles/release/ncurses.tar.gz"
|
|
download "${GNU_MIRROR}/bash/bash-5.3.tar.gz"
|
|
download "${GNU_MIRROR}/coreutils/coreutils-9.10.tar.xz"
|
|
download "${GNU_MIRROR}/diffutils/diffutils-3.12.tar.xz"
|
|
download "https://astron.com/pub/file/file-5.47.tar.gz"
|
|
download "${GNU_MIRROR}/findutils/findutils-4.10.0.tar.xz"
|
|
download "${GNU_MIRROR}/gawk/gawk-5.4.0.tar.xz"
|
|
download "${GNU_MIRROR}/grep/grep-3.12.tar.xz"
|
|
download "${GNU_MIRROR}/gzip/gzip-1.14.tar.xz"
|
|
download "${GNU_MIRROR}/make/make-4.4.tar.gz"
|
|
download "${GNU_MIRROR}/patch/patch-2.8.tar.xz"
|
|
download "${GNU_MIRROR}/sed/sed-4.9.tar.xz"
|
|
download "${GNU_MIRROR}/tar/tar-latest.tar.xz"
|
|
download "https://github.com/tukaani-project/xz/releases/download/v5.8.1/xz-5.8.1.tar.gz"
|
|
download "https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz"
|
|
|
|
# ==============================================================================
|
|
# Chroot Packages (Chapter 7)
|
|
# ==============================================================================
|
|
echo ">>> Chroot packages..."
|
|
download "${GNU_MIRROR}/gettext/gettext-1.0.tar.xz"
|
|
download "${GNU_MIRROR}/bison/bison-3.8.2.tar.xz"
|
|
download "https://www.cpan.org/src/5.0/perl-5.40.2.tar.xz"
|
|
download "https://www.python.org/ftp/python/3.13.3/Python-3.13.3.tar.xz"
|
|
download "${GNU_MIRROR}/texinfo/texinfo-7.3.tar.xz"
|
|
download "https://zlib.net/zlib-1.3.2.tar.xz"
|
|
download "https://www.kernel.org/pub/linux/utils/util-linux/v2.40/util-linux-2.40.4.tar.xz"
|
|
|
|
# ==============================================================================
|
|
# Patches
|
|
# ==============================================================================
|
|
echo ">>> Patches..."
|
|
download "https://www.linuxfromscratch.org/patches/lfs/13.0/glibc-fhs-1.patch"
|
|
|
|
echo ""
|
|
echo "=== All downloads complete ==="
|
|
echo "Source tarballs are in: ${SRCDIR}/"
|
|
FILECOUNT=$(ls -1 "${SRCDIR}/"*.{tar.*,patch,gz,xz} 2>/dev/null | wc -l)
|
|
echo "${FILECOUNT} files downloaded."
|
|
echo ""
|
|
echo "Verify with: ls -lh ${SRCDIR}/"
|