commit d5ba5c95d8f0bc148f30b548c8a635a201ea689f
parent 3b39835c88629c93dc75da9b59dac7f661636190
Author: w79958ml <mikolaj.lenczewski@student.manchester.ac.uk>
Date: Sat, 10 Oct 2020 16:43:09 +0100
Finally have working bootstrap script! Cleaned up repo
Diffstat:
13 files changed, 164 insertions(+), 1809 deletions(-)
diff --git a/build-clfs b/build-clfs
@@ -72,8 +72,8 @@ read _
rm -rf /home/clfs
userdel clfs
-sudo groupadd clfs
-sudo useradd -s /bin/bash -g clfs -m -k /dev/null clfs
+groupadd clfs
+useradd -s /bin/bash -g clfs -m -k /dev/null clfs
chown -Rv clfs ${CLFS}
diff --git a/build-clfs-legacy b/build-clfs-legacy
@@ -1,932 +0,0 @@
-#!/bin/sh
-
-
-################################################################################
-### I) Preparation for the build ###############################################
-################################################################################
-export CLFS=/mnt/clfs
-export CLFS_BUILD=${CLFS}/build
-export CLFS_CONFIGS=${CLFS}/configs
-export CLFS_LOGS=${CLFS}/logs
-export CLFS_SCRIPTS=${CLFS}/scripts
-export CLFS_SOURCES=${CLFS}/sources
-export CLFS_ROOT=${CLFS}/rootfs
-export CLFS_SYSROOT=${CLFS_ROOT}
-export CLFS_BOOT_ROOT=${CLFS}/bootfs
-export CLFS_CROSS_ROOT=${CLFS}/crossfs
-export CLFS_CROSS_SYSROOT=${CLFS_CROSS_ROOT} #### this assignment is temporary
-
-
-mkdir -pv ${CLFS}
-rm -rf ${CLFS_BUILD} ${CLFS_ROOT} ${CLFS_BOOT_ROOT} ${CLFS_CROSS_ROOT}
-chmod 777 ${CLFS}
-
-mkdir -pv ${CLFS_BUILD} ${CLFS_CONFIGS} ${CLFS_LOGS} ${CLFS_SCRIPTS} ${CLFS_SOURCES}
-chmod -v a+wt ${CLFS_BUILD} ${CLFS_CONFIGS} ${CLFS_LOGS} ${CLFS_SCRIPTS} ${CLFS_SOURCES}
-
-
-fetch_packages () {
- rm -rf ${CLFS_SOURCES}/{md5sums,wget-list}
-
- tr -d '\r' < wget-list.src > ${CLFS_SOURCES}/wget-list
- tr -d '\r' < md5sums.src > ${CLFS_SOURCES}/md5sums
-
- pushd ${CLFS_SOURCES} > /dev/null
- wget --input-file=wget-list --continue
- md5sum -c md5sums
- popd > /dev/null
-}
-
-fetch_packages
-
-
-## Copying over scripts and additional config files
-rm -rf ${CLFS_CONFIGS}/* ${CLFS_SCRIPTS}/*
-cp -rf configs/* ${CLFS_CONFIGS}
-cp -rf scripts/* ${CLFS_SCRIPTS}
-chmod +x ${CLFS_SCRIPTS}/*
-
-
-${CLFS_SCRIPTS}/host-check.sh
-echo "Press enter to continue..."
-read _
-
-
-## Creating the CLFS build user
-rm -rf /home/clfs
-userdel clfs
-
-sudo groupadd clfs
-sudo useradd -s /bin/bash -g clfs -m -k /dev/null clfs
-
-chown -Rv clfs ${CLFS}
-
-mkdir -p /home/clfs
-
-cat > /home/clfs/.bash_profile <<'EOF'
-exec env -i HOME=${HOME} TERM=${TERM} PS1='\u:\w\$ ' /bin/bash
-EOF
-
-cat > /home/clfs/.bashrc <<'EOF'
-set +h
-umask 022
-
-## Extracts a package source archive, and runs the given callback function.
-## $1 : Package definition variable group name (i.e. GCC, LINUX, ZLIB)
-## $2 : Processing callback function, run in source directory after unzipping
-## $3 : Log file name
-EXTRACT () {
- local PKG_VAR_GROUP_NAME=${1}
- local PROCESS_FUNC=${2}
- local PKG_VANITY_NAME=${3:-${PKG_VAR_GROUP_NAME}}
-
- local PKG_VER=${PKG_VAR_GROUP_NAME}_VER
- local PKG_VER=${!PKG_VER}
- local PKG_DIR=${PKG_VAR_GROUP_NAME}_DIR
- local PKG_DIR=${!PKG_DIR}
- local PKG_ARCHIVE=${PKG_VAR_GROUP_NAME}_ARCHIVE
- local PKG_ARCHIVE=${!PKG_ARCHIVE}
-
- echo "Extracting package ${PKG_VANITY_NAME} (ver. ${PKG_VER}) source: '${PKG_ARCHIVE}' -> '${PKG_DIR}'"
- pushd ${CLFS_SOURCES} > /dev/null
-
- local STDOUT_LOG="${PKG_VANITY_NAME}.stdout.log"
- local STDERR_LOG="${PKG_VANITY_NAME}.stderr.log"
-
- echo " stdout will be logged to '${STDOUT_LOG}'; stderr will be logged to '${STDERR_LOG}'"
-
- local TMP_OUT="${TMPDIR:-/tmp}/out.$$" TMP_ERR="${TMPDIR:-/tmp}/err.$$"
- mkfifo "${TMP_OUT}" "${TMP_ERR}"
-
- tar xf ${PKG_ARCHIVE} && cd ${PKG_DIR} && \
- $PROCESS_FUNC >"${TMP_OUT}" 2>"${TMP_ERR}" & \
- tee "${CLFS_LOGS}/${STDOUT_LOG}" < "${TMP_OUT}" & \
- tee "${CLFS_LOGS}/${STDERR_LOG}" < "${TMP_ERR}" && \
- echo "Successfully extracted and processed package ${PKG_VANITY_NAME}!" || \
- echo "Failed to extract or process package ${PKG_VANITY_NAME}!"
-
- cd ${CLFS_SOURCES}
- rm -rf ${PKG_DIR}
-
- rm "${TMP_OUT}" "${TMP_ERR}" > /dev/null
- popd > /dev/null
-}
-
-EOF
-
-cat >> /home/clfs/.bashrc <<EOF
-export CLFS=${CLFS}
-export CLFS_BUILD=${CLFS_BUILD}
-export CLFS_CONFIGS=${CLFS_CONFIGS}
-export CLFS_LOGS=${CLFS_LOGS}
-export CLFS_SCRIPTS=${CLFS_SCRIPTS}
-export CLFS_SOURCES=${CLFS_SOURCES}
-export CLFS_ROOT=${CLFS_ROOT}
-export CLFS_SYSROOT=${CLFS_SYSROOT}
-export CLFS_BOOT_ROOT=${CLFS_BOOT_ROOT}
-export CLFS_CROSS_ROOT=${CLFS_CROSS_ROOT}
-
-EOF
-
-cat >> /home/clfs/.bashrc <<'EOF'
-export CLFS_HOSTNAME="raspi"
-export CLFS_HOST="$(echo ${MACHTYPE} | sed "s/-[^-]*/-cross/")"
-export CLFS_TARGET="arm-linux-musleabihf"
-export CLFS_ARCH="arm"
-export CLFS_ARCH_DTS_LIST=("bcm2837-rpi-3-b.dtb")
-export CLFS_GCC_ARCH="armv8-a+crc+crypto"
-export CLFS_GCC_ARCH_HAS_FLOAT_AND_FPU=true
-export CLFS_GCC_FLOAT="hard"
-export CLFS_GCC_FPU="crypto-neon-fp-armv8"
-export CLFS_GCC_TUNE="cortex-a53"
-
-if [ "${CLFS_GCC_ARCH_HAS_FLOAT_AND_FPU}" = true ]; then
-export CLFS_GCC_FLOAT_OPT="--with-float=${CLFS_GCC_FLOAT}"
-export CLFS_GCC_FPU_OPT="--with-fpu=${CLFS_GCC_FPU}"
-fi
-
-export CLFS_CROSS_SYSROOT=${CLFS_CROSS_ROOT}/${CLFS_TARGET}
-
-MAKEFLAGS="-j$(nproc --all)"
-LC_ALL=POSIX
-PATH=${CLFS_CROSS_ROOT}/bin:/bin:/usr/bin
-export MAKEFLAGS LC_ALL PATH
-unset CFLAGS
-EOF
-
-chown -Rf clfs /home/clfs
-
-
-su - clfs <<'CLFS_USER_EOF'
-
-source ~/.bashrc
-
-
-################################################################################
-### II) Setting package version variables ######################################
-################################################################################
-## Defines a package
-## $1 : The name of the package variable group (e.g. MUSL, LINUX, GCC)
-## $2 : The package source version
-## $3 : The package source archive compression (e.g. gz, bz2, xz)
-## $4 : The package source directory prefix
-## $5 : The package source archive prefix. Overrides the PKG_DIR_PREFIX if defined
-DEFINE () {
- local PKG_NAME=$1
- local PKG_VER=$2
- local PKG_COMPRESSION=$3
- local PKG_DIR_PREFIX=$4
- local PKG_ARCHIVE_PREFIX=$5
-
- local PKG_VER_SUBSTR=${PKG_VER:+'-'}${PKG_VER}
- local PKG_DIR=${PKG_DIR_PREFIX}${PKG_VER_SUBSTR}
- local PKG_ARCHIVE=${PKG_ARCHIVE_PREFIX:-${PKG_DIR_PREFIX}}${PKG_VER_SUBSTR}.tar.${PKG_COMPRESSION}
-
- [ -n "${PKG_VER}" ] && printf -v ${PKG_NAME}_VER ${PKG_VER}
- printf -v ${PKG_NAME}_DIR ${PKG_DIR}
- printf -v ${PKG_NAME}_ARCHIVE ${PKG_ARCHIVE}
-
- export "${PKG_NAME}_VER" "${PKG_NAME}_DIR" "${PKG_NAME}_ARCHIVE"
-}
-
-###### "VAR_GROUP_NAME" "VERSION" "COMPRESSION" "DIR_PREFIX" "ARCHIVE_PREFIX"
-####################################################################################################
-DEFINE "BINUTILS" "2.35" "xz" "binutils" ""
-DEFINE "BOOTSCRIPTS" "" "gz" "bootscripts-embedded-master" "master"
-DEFINE "BUSYBOX" "1.32.0" "bz2" "busybox" ""
-DEFINE "DROPBEAR" "2020.80" "bz2" "dropbear" ""
-DEFINE "GCC" "10.2.0" "xz" "gcc" ""
-DEFINE "GMP" "6.2.0" "xz" "gmp" ""
-DEFINE "IANA_ETC" "20200910" "gz" "iana-etc" ""
-DEFINE "LINUX" "5.8.9" "xz" "linux" ""
-DEFINE "MPC" "1.2.0" "gz" "mpc" ""
-DEFINE "MPFR" "4.1.0" "xz" "mpfr" ""
-DEFINE "MUSL" "1.2.1" "gz" "musl" ""
-DEFINE "NETPLUG" "1.2.9.2" "bz2" "netplug" ""
-DEFINE "UBOOT" "2020.07" "bz2" "u-boot" ""
-DEFINE "ZLIB" "1.2.11" "xz" "zlib" ""
-
-
-################################################################################
-### III) Preparation for the build #############################################
-################################################################################
-## Creating a FSH-compliant directory structure in CLFS_ROOT
-mkdir -pv ${CLFS_ROOT}/{bin,boot,dev,etc,home,lib,media,mnt,opt,proc,root,run,sbin,srv,tmp}
-
-mkdir -pv ${CLFS_ROOT}/etc/{opt,}
-mkdir -pv ${CLFS_ROOT}/lib/{modules,}
-mkdir -pv ${CLFS_ROOT}/usr/{bin,include,lib,libexec,sbin,share,src}
-mkdir -pv ${CLFS_ROOT}/usr/local/{bin,etc,games,include,lib,man,sbin,share,src}
-mkdir -pv ${CLFS_ROOT}/usr/share/{man,misc}
-mkdir -pv ${CLFS_ROOT}/var/{cache,lib,local,lock,log,mail,opt,spool,tmp}
-
-ln -fsv ../proc/mounts ${CLFS_ROOT}/etc/mtab
-ln -fsv ../run ${CLFS_ROOT}/var/run
-ln -fsv ../mail ${CLFS_ROOT}/var/spool/mail
-
-chmod 0750 ${CLFS_ROOT}/root
-chmod 1777 ${CLFS_ROOT}/{var/,}tmp
-
-
-## Ensuring that ${CLFS_SYSROOT}, ${CLFS_BOOT_ROOT}, and ${CLFS_CROSS_(SYS)ROOT} exist
-mkdir -pv ${CLFS_SYSROOT} ${CLFS_BOOT_ROOT} ${CLFS_CROSS_SYSROOT}
-#### this allows us to treat ${CLFS_CROSS_SYSROOT} and ${CLFS_CROSS_SYSROOT}/usr identically
-ln -fsv . ${CLFS_CROSS_SYSROOT}/usr
-
-
-## Creating the group,passwd, and lastlog files
-cat > ${CLFS_ROOT}/etc/group << "EOF"
-root:x:0:
-bin:x:1:
-sys:x:2:
-kmem:x:3:
-tty:x:4:
-tape:x:5:
-daemon:x:6:
-floppy:x:7:
-disk:x:8:
-lp:x:9:
-dialout:x:10:
-audio:x:11:
-video:x:12:
-utmp:x:13:
-usb:x:14:
-cdrom:x:15:
-EOF
-
-cat > ${CLFS_ROOT}/etc/passwd << "EOF"
-root::0:0:root:/root:/bin/ash
-EOF
-
-touch ${CLFS_ROOT}/var/log/lastlog
-chmod -v 664 ${CLFS_ROOT}/var/log/lastlog
-
-
-cd ${CLFS_SOURCES}
-
-
-################################################################################
-### IV) Building the cross-compilation toolchain ###############################
-################################################################################
-## Binutils - Pass 1
-BINUTILS_PASS1 () {
- mkdir -v binutils-build
- cd binutils-build
-
- ../configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --with-sysroot=${CLFS_CROSS_SYSROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- --target=${CLFS_TARGET} \
- --disable-nls \
- --disable-shared \
- --disable-multilib \
- --disable-werror
-
- make && make install
-}
-EXTRACT "BINUTILS" BINUTILS_PASS1 "toolchain-binutils-pass1-install"
-
-
-## GCC - Pass 1
-GCC_PASS1 () {
- tar xf ../${MPFR_ARCHIVE}
- mv -v ${MPFR_DIR} mpfr
- tar xf ../${GMP_ARCHIVE}
- mv -v ${GMP_DIR} gmp
- tar xf ../${MPC_ARCHIVE}
- mv -v ${MPC_DIR} mpc
-
- mkdir -v gcc-build
- cd gcc-build
-
- ../configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --with-sysroot=${CLFS_CROSS_SYSROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- --target=${CLFS_TARGET} \
- --with-newlib \
- --without-headers \
- --enable-initfini-array \
- --disable-nls \
- --disable-shared \
- --disable-multilib \
- --disable-decimal-float \
- --disable-threads \
- --disable-libatomic \
- --disable-libgomp \
- --disable-libquadmath \
- --disable-libsanitizer \
- --disable-libssp \
- --disable-libvtv \
- --disable-libstdcxx \
- --enable-languages=c,c++ \
- --with-arch=${CLFS_ARM_ARCH} \
- --with-tune=${CLFS_GCC_TUNE} \
- ${CLFS_GCC_FLOAT_OPT} ${CLFS_GCC_FPU_OPT}
-
- make all-gcc all-target-libgcc && make install-gcc install-target-libgcc
-
- cd ..
- cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
- `dirname $(${CLFS_TARGET}-gcc -print-libgcc-file-name)`/install-tools/include/limits.h
-}
-EXTRACT "GCC" GCC_PASS1 "toolchain-gcc-pass1-install"
-
-
-## Linux API Headers
-LINUX () {
- make mrproper
-
- make ARCH=${CLFS_ARCH} headers_check
- make ARCH=${CLFS_ARCH} headers
-
- find usr/include -name '.*' -delete
- rm usr/include/Makefile
- cp -r usr/include ${CLFS_CROSS_SYSROOT}
-}
-EXTRACT "LINUX" LINUX "toolchain-linux-headers-install"
-
-
-## Musl libc
-MUSL () {
- ./configure \
- CROSS_COMPILE=${CLFS_TARGET}- \
- --prefix=/ \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- --target=${CLFS_TARGET}
-
- make && make DESTDIR=${CLFS_CROSS_SYSROOT} install
-
- ${CLFS_CROSS_ROOT}/libexec/gcc/${CLFS_TARGET}/${GCC_VER}/install-tools/mkheaders
-}
-EXTRACT "MUSL" MUSL "toolchain-libc-install"
-
-
-## Libstdc++ - Pass 1
-LIBSTDCXX_PASS1 () {
- mkdir -v libstdcxx-build
- cd libstdcxx-build
-
- ../libstdc++-v3/configure \
- --prefix=/ \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- --target=${CLFS_TARGET} \
- --disable-nls \
- --disable-multilib \
- --disable-libstdcxx-pch \
- --with-gxx-include-dir=${CLFS_CROSS_SYSROOT}/include/c++/${GCC_VER}
-
- make && make DESTDIR=${CLFS_CROSS_SYSROOT} install
-}
-EXTRACT "GCC" LIBSTDCXX_PASS1 "toolchain-libstdc++-pass1-install"
-
-
-## Binutils - Pass 2
-BINUTILS_PASS2 () {
- mkdir -v binutils-build
- cd binutils-build
-
- ../configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --with-sysroot=${CLFS_SYSROOT} \
- --with-build-sysroot=${CLFS_CROSS_SYSROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- --target=${CLFS_TARGET} \
- --disable-nls \
- --enable-shared \
- --disable-multilib \
- --disable-werror
-
- make && make install
-}
-EXTRACT "BINUTILS" BINUTILS_PASS2 "toolchain-binutils-pass2-install"
-
-
-## GCC - Pass 2
-GCC_PASS2 () {
- tar xf ../${MPFR_ARCHIVE}
- mv -v ${MPFR_DIR} mpfr
- tar xf ../${GMP_ARCHIVE}
- mv -v ${GMP_DIR} gmp
- tar xf ../${MPC_ARCHIVE}
- mv -v ${MPC_DIR} mpc
-
- mkdir -v gcc-build
- cd gcc-build
-
- mkdir -pv ${CLFS_TARGET}/libgcc
- ln -s ../../../libgcc/gthr-posix.h ${CLFS_TARGET}/libgcc/gthr-default.h
-
- ../configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --with-sysroot=${CLFS_SYSROOT} \
- --with-build-sysroot=${CLFS_CROSS_SYSROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- CC_FOR_TARGET=${CLFS_TARGET}-gcc \
- --target=${CLFS_TARGET} \
- --enable-initfini-array \
- --disable-nls \
- --disable-multilib \
- --disable-libsanitizer \
- --disable-libstdcxx \
- --enable-languages=c,c++ \
- --with-arch=${CLFS_ARM_ARCH} \
- --with-tune=${CLFS_GCC_TUNE} \
- ${CLFS_GCC_FLOAT_OPT} ${CLFS_GCC_FPU_OPT}
-
- make && make install
-}
-EXTRACT "GCC" GCC_PASS2 "toolchain-gcc-pass2-install"
-
-
-## Libstdc++ - Pass 2
-LIBSTDCXX_PASS2 () {
- ln -s gthr-posix.h libgcc/gthr-default.h
-
- mkdir -v libstdcxx-build
- cd libstdcxx-build
-
- ../libstdc++-v3/configure \
- CXXFLAGS="-g -O2 -D_GNU_SOURCE" \
- --prefix=/ \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- --target=${CLFS_TARGET} \
- --disable-nls \
- --disable-multilib \
- --disable-libstdcxx-pch
-
- make && make DESTDIR=${CLFS_CROSS_SYSROOT} install
-}
-EXTRACT "GCC" LIBSTDCXX_PASS2 "toolchain-libstdc++-pass2-install"
-
-
-## Setting toolchain variables
-echo export CC=\""${CLFS_TARGET}-gcc\"" >> ~/.bashrc
-echo export CXX=\""${CLFS_TARGET}-g++\"" >> ~/.bashrc
-echo export AR=\""${CLFS_TARGET}-ar\"" >> ~/.bashrc
-echo export AS=\""${CLFS_TARGET}-as\"" >> ~/.bashrc
-echo export LD=\""${CLFS_TARGET}-ld\"" >> ~/.bashrc
-echo export RANLIB=\""${CLFS_TARGET}-ranlib\"" >> ~/.bashrc
-echo export READELF=\""${CLFS_TARGET}-readelf\"" >> ~/.bashrc
-echo export STRIP=\""${CLFS_TARGET}-strip\"" >> ~/.bashrc
-
-
-source ~/.bashrc
-
-
-################################################################################
-### V) Building and installing basic system packages ###########################
-################################################################################
-## Creating passwd, group, and lastlog files
-ln -svf ../proc/mounts ${CLFS_ROOT}/etc/mtab
-
-cat > ${CLFS_ROOT}/etc/passwd <<'EOF'
-root::0:0:root:/root:/bin/ash
-EOF
-
-cat > ${CLFS_ROOT}/etc/group <<'EOF'
-root:x:0:
-bin:x:1:
-sys:x:2:
-kmem:x:3:
-tty:x:4:
-tape:x:5:
-daemon:x:6:
-floppy:x:7:
-disk:x:8:
-lp:x:9:
-dialout:x:10:
-audio:x:11:
-video:x:12:
-utmp:x:13:
-usb:x:14:
-cdrom:x:15:
-EOF
-
-touch ${CLFS_ROOT}/var/log/lastlog
-chmod -v 664 ${CLFS_ROOT}/var/log/lastlog
-
-## Installing libgcc
-cp -v ${CLFS_CROSS_SYSROOT}/lib/libgcc_s.so{.1,} ${CLFS_ROOT}/lib/
-${CLFS_TARGET}-strip ${CLFS_ROOT}/lib/libgcc_s.so{.1,}
-
-
-## Linux API Headers
-LINUX () {
- make mrproper
-
- make ARCH=${CLFS_ARCH} headers_check
- make ARCH=${CLFS_ARCH} headers
-
- find usr/include -name '.*' -delete
- rm usr/include/Makefile
- cp -r usr/include ${CLFS_SYSROOT}/usr
-}
-EXTRACT "LINUX" LINUX "core-pkg-linux-headers-install"
-
-
-## Musl libc
-MUSL () {
- ./configure \
- CROSS_COMPILE=${CLFS_TARGET}- \
- --prefix=/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET} \
- --target=${CLFS_TARGET}
-
- make && make DESTDIR=${CLFS_SYSROOT} install
-}
-EXTRACT "MUSL" MUSL "core-pkg-iana-etc-install"
-
-
-## Libstdc++
-LIBSTDCXX () {
- ln -s gthr-posix.h libgcc/gthr-default.h
-
- mkdir -v libstdcxx-build
- cd libstdcxx-build
-
- ../libstdc++-v3/configure \
- CXXFLAGS="-g -O2 -D_GNU_SOURCE" \
- --prefix=/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET} \
- --target=${CLFS_TARGET} \
- --disable-nls \
- --disable-multilib
-
- make && make DESTDIR=${CLFS_SYSROOT} install
-}
-EXTRACT "GCC" LIBSTDCXX "core-pkg-libstdc++-install"
-
-
-## Installing busybox
-BUSYBOX () {
- make distclean
-
- make ARCH="${CLFS_ARCH}" defconfig
-
- sed -i 's/\(CONFIG_\)\(.*\)\(INETD\)\(.*\)=y/# \1\2\3\4 is not set/g' .config
- sed -i 's/\(CONFIG_IFPLUGD\)=y/# \1 is not set/' .config
-
- sed -i 's/\(CONFIG_FEATURE_WTMP\)=y/# \1 is not set/' .config
- sed -i 's/\(CONFIG_FEATURE_UTMP\)=y/# \1 is not set/' .config
-
- sed -i 's/\(CONFIG_UDPSVD\)=y/# \1 is not set/' .config
- sed -i 's/\(CONFIG_TCPSVD\)=y/# \1 is not set/' .config
-
- make ARCH="${CLFS_ARCH}" CROSS_COMPILE="${CLFS_TARGET}-" && \
- make ARCH="${CLFS_ARCH}" CROSS_COMPILE="${CLFS_TARGET}-" CONFIG_PREFIX="${CLFS_ROOT}" install
-
- #### For building the linux kernel with modules
- cp -v examples/depmod.pl ${CLFS_CROSS_ROOT}/bin
- chmod -v 755 ${CLFS_CROSS_ROOT}/bin/depmod.pl
-}
-EXTRACT "BUSYBOX" BUSYBOX "core-pkg-busybox-install"
-
-
-## Installing iana-etc
-IANA_ETC () {
- cp protocols services ${CLFS_ROOT}/etc
-}
-EXTRACT "IANA_ETC" IANA_ETC "core-pkg-iana-etc-install"
-
-
-## Zlib
-ZLIB () {
- ./configure \
- --prefix=/usr \
- --const \
- --shared
-
- make && make DESTDIR=${CLFS_SYSROOT} install
-}
-EXTRACT "ZLIB" ZLIB "core-pkg-zlib-install"
-
-
-### Making the system bootable
-## /etc/fstab file
-cat > ${CLFS_ROOT}/etc/fstab <<'EOF'
-# file-system mount-point type options dump fsck
-EOF
-
-
-## Linux kernel
-LINUX () {
- make mrproper
-
- cp ${CLFS_CONFIGS}/linux-kernel-config .config
-
- make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}- && \
- make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}- INSTALL_MOD_PATH=${CLFS_ROOT} modules_install
-
- cp arch/${CLFS_ARCH}/boot/zImage ${CLFS_BOOT_ROOT}
- for DTS in ${CLFS_ARCH_DTS_LIST[@]}
- do
- cp arch/${CLFS_ARCH}/boot/dts/$DTS ${CLFS_BOOT_ROOT}
- done
-}
-EXTRACT "LINUX" LINUX "linux-kernel-build"
-
-
-## Das U-Boot
-UBOOT () {
- make distclean
-
- cp ${CLFS_CONFIGS}/uboot-config .config
-
- make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}-
-
- cp u-boot.bin ${CLFS_BOOT_ROOT}
-}
-EXTRACT "UBOOT" UBOOT "uboot-bootloader-build"
-
-
-## Bootscripts
-BOOTSCRIPTS () {
- make DESTDIR=${CLFS_ROOT} install-bootscripts
- make DESTDIR=${CLFS_ROOT} install-dropbear
- make DESTDIR=${CLFS_ROOT} install-netplug
-}
-EXTRACT "BOOTSCRIPTS" BOOTSCRIPTS "core-pkg-bootscripts-install"
-
-
-## Configuring mdev
-cat > ${CLFS_ROOT}/etc/mdev.conf<<'EOF'
-# /etc/mdev/conf
-
-# Devices:
-# Syntax: %s %d:%d %s
-# devices user:group mode
-
-# null does already exist; therefore ownership has to be changed with command
-null root:root 0666 @chmod 666 $MDEV
-zero root:root 0666
-grsec root:root 0660
-full root:root 0666
-
-random root:root 0666
-urandom root:root 0444
-hwrandom root:root 0660
-
-# console does already exist; therefore ownership has to be changed with command
-#console root:tty 0600 @chmod 600 $MDEV && mkdir -p vc && ln -sf ../$MDEV vc/0
-console root:tty 0600 @mkdir -pm 755 fd && cd fd && for x in 0 1 2 3 ; do ln -sf /proc/self/fd/$x $x; done
-
-fd0 root:floppy 0660
-kmem root:root 0640
-mem root:root 0640
-port root:root 0640
-ptmx root:tty 0666
-
-# ram.*
-ram([0-9]*) root:disk 0660 >rd/%1
-loop([0-9]+) root:disk 0660 >loop/%1
-sd[a-z].* root:disk 0660 */lib/mdev/usbdisk_link
-hd[a-z][0-9]* root:disk 0660 */lib/mdev/ide_links
-md[0-9] root:disk 0660
-
-tty root:tty 0666
-tty[0-9] root:root 0600
-tty[0-9][0-9] root:tty 0660
-ttyS[0-9]* root:tty 0660
-pty.* root:tty 0660
-vcs[0-9]* root:tty 0660
-vcsa[0-9]* root:tty 0660
-
-ttyLTM[0-9] root:dialout 0660 @ln -sf $MDEV modem
-ttySHSF[0-9] root:dialout 0660 @ln -sf $MDEV modem
-slamr root:dialout 0660 @ln -sf $MDEV slamr0
-slusb root:dialout 0660 @ln -sf $MDEV slusb0
-fuse root:root 0666
-
-# dri device
-card[0-9] root:video 0660 =dri/
-
-# alsa sound devices and audio stuff
-pcm.* root:audio 0660 =snd/
-control.* root:audio 0660 =snd/
-midi.* root:audio 0660 =snd/
-seq root:audio 0660 =snd/
-timer root:audio 0660 =snd/
-
-adsp root:audio 0660 >sound/
-audio root:audio 0660 >sound/
-dsp root:audio 0660 >sound/
-mixer root:audio 0660 >sound/
-sequencer.* root:audio 0660 >sound/
-
-# misc stuff
-agpgart root:root 0660 >misc/
-psaux root:root 0660 >misc/
-rtc root:root 0664 >misc/
-
-# input stuff
-event[0-9]+ root:root 0640 =input/
-mice root:root 0640 =input/
-mouse[0-9] root:root 0640 =input/
-ts[0-9] root:root 0600 =input/
-
-# v4l stuff
-vbi[0-9] root:video 0660 >v4l/
-video[0-9] root:video 0660 >v4l/
-
-# dvb stuff
-dvb.* root:video 0660 */lib/mdev/dvbdev
-
-# load drivers for usb devices
-usbdev[0-9].[0-9] root:root 0660 */lib/mdev/usbdev
-usbdev[0-9].[0-9]_.* root:root 0660
-
-# net devices
-tun[0-9]* root:root 0600 =net/
-tap[0-9]* root:root 0600 =net/
-
-# zaptel devices
-zap(.*) root:dialout 0660 =zap/%1
-dahdi!(.*) root:dialout 0660 =dahdi/%1
-
-# raid controllers
-cciss!(.*) root:disk 0660 =cciss/%1
-ida!(.*) root:disk 0660 =ida/%1
-rd!(.*) root:disk 0660 =rd/%1
-
-sr[0-9] root:cdrom 0660 @ln -sf $MDEV cdrom
-
-# hpilo
-hpilo!(.*) root:root 0660 =hpilo/%1
-
-# xen stuff
-xvd[a-z] root:root 0660 */lib/mdev/xvd_links
-EOF
-
-## Creating /etc/profile
-cat > ${CLFS_ROOT}/etc/profile <<'EOF'
-# /etc/profile
-
-# Set the initial path
-export PATH=/bin:/usr/bin
-
-if [ `id -u` -eq 0 ] ; then
-PATH=/bin:/sbin:/usr/bin:/usr/sbin
-unset HISTFILE
-fi
-
-# Setup some environment variables.
-export USER=`id -un`
-export LOGNAME=$USER
-export HOSTNAME=`/bin/hostname`
-export HISTSIZE=1000
-export HISTFILESIZE=1000
-export PAGER='/bin/more '
-export EDITOR='/bin/vi'
-
-# End /etc/profile
-EOF
-
-## Creating /etc/inittab
-cat > ${CLFS_ROOT}/etc/inittab <<'EOF'
-# /etc/inittab
-
-::sysinit:/etc/rc.d/startup
-
-tty1::respawn:/sbin/getty 38400 tty1
-tty2::respawn:/sbin/getty 38400 tty2
-tty3::respawn:/sbin/getty 38400 tty3
-tty4::respawn:/sbin/getty 38400 tty4
-tty5::respawn:/sbin/getty 38400 tty5
-tty6::respawn:/sbin/getty 38400 tty6
-
-# Put a getty on the serial line (for a terminal). Uncomment this line if
-# you're using a serial console on ttyS0, or uncomment and adjust it if using a
-# serial console on a different serial port.
-#::respawn:/sbin/getty -L ttyS0 115200 vt100
-
-::shutdown:/etc/rc.d/shutdown
-::ctrlaltdel:/sbin/reboot
-EOF
-
-## Setting hostname
-echo ${CLFS_HOSTNAME} > ${CLFS_ROOT}/etc/HOSTNAME
-
-## Customising /etc/hosts
-cat > ${CLFS_ROOT}/etc/hosts <<'EOF'
-# Begin /etc/hosts (no network card version)
-
-127.0.0.1 localhost
-
-# End /etc/hosts (no network card version)
-EOF
-
-## Configuring the network script
-mkdir -pv ${CLFS_ROOT}/etc/network/if-{post-{up,down},pre-{up,down},up,down}.d
-mkdir -pv ${CLFS_ROOT}/usr/share/udhcpc
-
-cat > ${CLFS_ROOT}/etc/network/interfaces <<'EOF'
-auto eth0
-iface eth0 inet dhcp
-EOF
-
-cat > ${CLFS_ROOT}/usr/share/udhcpc/default.script <<'EOF'
-#!/bin/sh
-# udhcpc Interface Configuration
-# Based on http://lists.debian.org/debian-boot/2002/11/msg00500.html
-# udhcpc script edited by Tim Riker <Tim@Rikers.org>
-
-[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
-
-RESOLV_CONF="/etc/resolv.conf"
-[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
-[ -n "$subnet" ] && NETMASK="netmask $subnet"
-
-case "$1" in
-deconfig)
-/sbin/ifconfig $interface 0.0.0.0
-;;
-
-renew|bound)
-/sbin/ifconfig $interface $ip $BROADCAST $NETMASK
-
-if [ -n "$router" ] ; then
-while route del default gw 0.0.0.0 dev $interface ; do
-true
-done
-
-for i in $router ; do
-route add default gw $i dev $interface
-done
-fi
-
-echo -n > $RESOLV_CONF
-[ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
-for i in $dns ; do
-echo nameserver $i >> $RESOLV_CONF
-done
-;;
-esac
-
-exit 0
-EOF
-
-chmod +x ${CLFS_ROOT}/usr/share/udhcpc/default.script
-
-
-source ~/.bashrc
-
-
-################################################################################
-### VI) Building and installing additional system packages #####################
-################################################################################
-## Netplug
-NETPLUG () {
- patch -Np1 -i ../netplug-1.2.9.2-fixes-1.patch
-
- make && make DESTDIR=${CLFS_ROOT} install
-}
-EXTRACT "NETPLUG" NETPLUG "extra-pkg-netplug-install"
-
-
-## Dropbear
-DROPBEAR () {
- cp ${CLFS_CONFIGS}/dropbear_config.h localoptions.h
-
- ./configure \
- --prefix=/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET}
-
- make MULTI=1 PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" && \
- make MULTI=1 PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" DESTDIR=${CLFS_ROOT} install
-
- install -dv ${CLFS_ROOT}/etc/dropbear
-}
-EXTRACT "DROPBEAR" DROPBEAR "extra-pkg-dropbear-install"
-
-source ~/.bashrc
-
-
-CLFS_USER_EOF
-
-################################################################################
-### VII) Cleanup and packaging of finished system ##############################
-################################################################################
-chown -Rv root:root ${CLFS_ROOT}
-chgrp -v 13 ${CLFS_ROOT}/var/log/lastlog
-
-cd ${CLFS_ROOT}
-tar cfjv ${CLFS_BUILD}/clfs-rootfs.tar.xz *
-echo "Packaged CLFS rootfs: use \'tar -fpx ${CLFS_BUILD}/clfs-rootfs.tar.xz -C targetdir\' to unpack into a target directory"
-
-cd ${CLFS_BOOT_ROOT}
-tar cfjv ${CLFS_BUILD}/clfs-bootfs.tar.xz *
-echo "Packaged CLFS bootfs: use \'tar -fpx ${CLFS_BUILD}/clfs-bootfs.tar.xz -C targetdir\' to unpack into a target directory"
-
-echo "Finished and packaged CLFS system!"
diff --git a/build-clfs-test b/build-clfs-test
@@ -1,306 +0,0 @@
-#!/bin/sh
-
-
-################################################################################
-### 0) Parameters ##############################################################
-################################################################################
-export CLFS_HOSTNAME="raspi"
-export CLFS_TARGET="arm-linux-musleabihf"
-export CLFS_ARCH="arm"
-export CLFS_ARCH_DTS_LIST=("bcm2837-rpi-3-b.dtb")
-export CLFS_GCC_ARCH="armv8-a+crc+crypto"
-export CLFS_GCC_ARCH_HAS_FLOAT_AND_FPU='true'
-export CLFS_GCC_FLOAT="hard"
-export CLFS_GCC_FPU="crypto-neon-fp-armv8"
-export CLFS_GCC_TUNE="cortex-a53"
-
-export CLFS_CFLAGS="-O2 -pipe"
-export CLFS_CXXFLAGS="-O2 -pipe"
-
-
-################################################################################
-### I) Preparation for the build ###############################################
-################################################################################
-export CLFS=/mnt/clfs
-export CLFS_BUILD=${CLFS}/build
-export CLFS_CONFIGS=${CLFS}/configs
-export CLFS_LOGS=${CLFS}/logs
-export CLFS_SCRIPTS=${CLFS}/scripts
-export CLFS_SOURCES=${CLFS}/sources
-export CLFS_ROOT=${CLFS}/rootfs
-export CLFS_BOOT_ROOT=${CLFS}/bootfs
-export CLFS_CROSS_NAME=crossfs
-export CLFS_CROSS_ROOT=${CLFS}/${CLFS_CROSS_NAME}
-export CLFS_CROSS_SYSROOT=${CLFS_CROSS_ROOT} #### this assignment is temporary
-
-
-mkdir -pv ${CLFS}
-rm -rf ${CLFS_BUILD} ${CLFS_ROOT} ${CLFS_BOOT_ROOT} ${CLFS_CROSS_ROOT}
-chmod 777 ${CLFS}
-
-mkdir -pv ${CLFS_BUILD} ${CLFS_CONFIGS} ${CLFS_LOGS} ${CLFS_SCRIPTS} ${CLFS_SOURCES}
-chmod -v a+wt ${CLFS_BUILD} ${CLFS_CONFIGS} ${CLFS_LOGS} ${CLFS_SCRIPTS} ${CLFS_SOURCES}
-
-
-fetch_packages () {
- rm -rf ${CLFS_SOURCES}/{md5sums,wget-list}
-
- tr -d '\r' < wget-list.src > ${CLFS_SOURCES}/wget-list
- tr -d '\r' < md5sums.src > ${CLFS_SOURCES}/md5sums
-
- pushd ${CLFS_SOURCES} > /dev/null
- wget --input-file=wget-list --continue
- md5sum -c md5sums
- popd > /dev/null
-}
-
-fetch_packages
-
-
-## Copying over scripts and additional config files
-rm -rf ${CLFS_CONFIGS}/* ${CLFS_SCRIPTS}/*
-cp -rf configs/* ${CLFS_CONFIGS}
-cp -rf scripts/* ${CLFS_SCRIPTS}
-chmod +x ${CLFS_SCRIPTS}/*
-
-
-${CLFS_SCRIPTS}/host-check.sh
-echo "Press enter to continue..."
-read _
-
-
-## Creating the CLFS build user
-rm -rf /home/clfs
-userdel clfs
-
-sudo groupadd clfs
-sudo useradd -s /bin/bash -g clfs -m -k /dev/null clfs
-
-chown -Rv clfs ${CLFS}
-
-mkdir -p /home/clfs
-
-cat > /home/clfs/.bash_profile <<'EOF'
-exec env -i HOME=${HOME} TERM=${TERM} PS1='\u:\w\$ ' /bin/bash
-EOF
-
-cat > /home/clfs/.bashrc <<'EOF'
-set +h
-umask 022
-
-## Extracts a package source archive, and runs the given callback function.
-## $1 : Package definition variable group name (i.e. GCC, LINUX, ZLIB)
-## $2 : Processing callback function, run in source directory after unzipping
-## $3 : Log file name
-EXTRACT () {
- local PKG_VAR_GROUP_NAME=${1}
- local PROCESS_FUNC=${2}
- local PKG_VANITY_NAME=${3:-${PKG_VAR_GROUP_NAME}}
-
- local PKG_VER=${PKG_VAR_GROUP_NAME}_VER
- local PKG_VER=${!PKG_VER}
- local PKG_DIR=${PKG_VAR_GROUP_NAME}_DIR
- local PKG_DIR=${!PKG_DIR}
- local PKG_ARCHIVE=${PKG_VAR_GROUP_NAME}_ARCHIVE
- local PKG_ARCHIVE=${!PKG_ARCHIVE}
-
- echo "Extracting package ${PKG_VANITY_NAME} (ver. ${PKG_VER}) source: '${PKG_ARCHIVE}' -> '${PKG_DIR}'"
- pushd ${CLFS_SOURCES} > /dev/null
-
- local STDOUT_LOG="${PKG_VANITY_NAME}.stdout.log"
- local STDERR_LOG="${PKG_VANITY_NAME}.stderr.log"
-
- echo " stdout will be logged to '${STDOUT_LOG}'; stderr will be logged to '${STDERR_LOG}'"
-
- local TMP_OUT="${TMPDIR:-/tmp}/out.$$" TMP_ERR="${TMPDIR:-/tmp}/err.$$"
- mkfifo "${TMP_OUT}" "${TMP_ERR}"
-
- tar xf ${PKG_ARCHIVE} && cd ${PKG_DIR} && \
- $PROCESS_FUNC >"${TMP_OUT}" 2>"${TMP_ERR}" & \
- tee "${CLFS_LOGS}/${STDOUT_LOG}" < "${TMP_OUT}" & \
- tee "${CLFS_LOGS}/${STDERR_LOG}" < "${TMP_ERR}" && \
- echo "Successfully extracted and processed package ${PKG_VANITY_NAME}!" || \
- echo "Failed to extract or process package ${PKG_VANITY_NAME}!"
-
- cd ${CLFS_SOURCES}
- rm -rf ${PKG_DIR}
-
- rm "${TMP_OUT}" "${TMP_ERR}" > /dev/null
- popd > /dev/null
-}
-
-EOF
-
-cat >> /home/clfs/.bashrc <<EOF
-export CLFS="${CLFS}"
-export CLFS_BUILD="${CLFS_BUILD}"
-export CLFS_CONFIGS="${CLFS_CONFIGS}"
-export CLFS_LOGS="${CLFS_LOGS}"
-export CLFS_SCRIPTS="${CLFS_SCRIPTS}"
-export CLFS_SOURCES="${CLFS_SOURCES}"
-export CLFS_ROOT="${CLFS_ROOT}"
-export CLFS_BOOT_ROOT="${CLFS_BOOT_ROOT}"
-export CLFS_CROSS_NAME="${CLFS_CROSS_NAME}"
-export CLFS_CROSS_ROOT="${CLFS_CROSS_ROOT}"
-
-export CLFS_HOSTNAME="${CLFS_HOSTNAME}"
-export CLFS_TARGET="${CLFS_TARGET}"
-export CLFS_ARCH="${CLFS_ARCH}"
-export CLFS_ARCH_DTS_LIST=(${CLFS_ARCH_DTS_LIST[@]})
-export CLFS_GCC_ARCH="${CLFS_GCC_ARCH}"
-export CLFS_GCC_ARCH_HAS_FLOAT_AND_FPU="${CLFS_GCC_ARCH_HAS_FLOAT_AND_FPU}"
-export CLFS_GCC_FLOAT="${CLFS_GCC_FLOAT}"
-export CLFS_GCC_FPU="${CLFS_GCC_FPU}"
-export CLFS_GCC_TUNE="${CLFS_GCC_TUNE}"
-
-unset CFLAGS CXXFLAGS
-export CFLAGS="${CLFS_CFLAGS}"
-export CXXFLAGS="${CLFS_CXXFLAGS}"
-
-EOF
-
-cat >> /home/clfs/.bashrc <<'EOF'
-export CLFS_HOST="$(echo ${MACHTYPE} | sed "s/-[^-]*/-cross/")"
-
-[ "${CLFS_GCC_ARCH_HAS_FLOAT_AND_FPU}" = 'true' ] && \
- export CLFS_GCC_FLOAT_OPT="--with-float=${CLFS_GCC_FLOAT}" && \
- export CLFS_GCC_FPU_OPT="--with-fpu=${CLFS_GCC_FPU}"
-
-export CLFS_CROSS_SYSROOT=${CLFS_CROSS_ROOT}/${CLFS_TARGET}
-
-MAKEFLAGS="-j$(nproc --all)"
-LC_ALL=POSIX
-PATH=${CLFS_CROSS_ROOT}/bin:/bin:/usr/bin
-export MAKEFLAGS LC_ALL PATH
-EOF
-
-chown -Rf clfs /home/clfs
-
-
-su - clfs <<'CLFS_USER_EOF'
-
-source ~/.bashrc
-
-
-################################################################################
-### II) Setting package version variables ######################################
-################################################################################
-## Defines a package
-## $1 : The name of the package variable group (e.g. MUSL, LINUX, GCC)
-## $2 : The package source version
-## $3 : The package source archive compression (e.g. gz, bz2, xz)
-## $4 : The package source directory prefix
-## $5 : The package source archive prefix. Overrides the PKG_DIR_PREFIX if defined
-DEFINE () {
- local PKG_NAME=$1
- local PKG_VER=$2
- local PKG_COMPRESSION=$3
- local PKG_DIR_PREFIX=$4
- local PKG_ARCHIVE_PREFIX=$5
-
- local PKG_DIR=${PKG_DIR_PREFIX}${PKG_VER}
- local PKG_ARCHIVE=${PKG_ARCHIVE_PREFIX}${PKG_VER}.tar.${PKG_COMPRESSION}
-
- [ -n "${PKG_VER}" ] && printf -v ${PKG_NAME}_VER ${PKG_VER}
- printf -v ${PKG_NAME}_DIR ${PKG_DIR}
- printf -v ${PKG_NAME}_ARCHIVE ${PKG_ARCHIVE}
-
- export "${PKG_NAME}_VER" "${PKG_NAME}_DIR" "${PKG_NAME}_ARCHIVE"
-}
-
-###### "VAR_GROUP_NAME" "VERSION" "COMP" "DIR_PREFIX" "ARCHIVE_PREFIX"
-####################################################################################################
-DEFINE "BASH" "5.0" "gz" "bash-" "bash-"
-DEFINE "BINUTILS" "2.35" "xz" "binutils-" "binutils-"
-DEFINE "BOOTSCRIPTS" "" "gz" "bootscripts-embedded-master" "master"
-DEFINE "BUSYBOX" "1.32.0" "bz2" "busybox-" "busybox-"
-DEFINE "COREUTILS" "8.32" "xz" "coreutils-" "coreutils-"
-DEFINE "DROPBEAR" "2020.80" "bz2" "dropbear-" "dropbear-"
-DEFINE "DIFFUTILS" "3.7" "xz" "diffutils-" "diffutils-"
-DEFINE "FILE" "5.39" "gz" "file-" "file-"
-DEFINE "FINDUTILS" "4.7.0" "xz" "findutils-" "findutils-"
-DEFINE "GAWK" "5.1.0" "xz" "gawk-" "gawk-"
-DEFINE "GCC" "10.2.0" "xz" "gcc-" "gcc-"
-DEFINE "GMP" "6.2.0" "xz" "gmp-" "gmp-"
-DEFINE "GREP" "3.4" "xz" "grep-" "grep-"
-DEFINE "GZIP" "1.10" "xz" "gzip-" "gzip-"
-DEFINE "IANA_ETC" "20200910" "gz" "iana-etc-" "iana-etc-"
-DEFINE "LINUX" "5.8.9" "xz" "linux-" "linux-"
-DEFINE "MAKE" "4.3" "gz" "make-" "make-"
-DEFINE "MPC" "1.2.0" "gz" "mpc-" "mpc-"
-DEFINE "MPFR" "4.1.0" "xz" "mpfr-" "mpfr-"
-DEFINE "MUSL" "1.2.1" "gz" "musl-" "musl-"
-DEFINE "M4" "1.4.18" "xz" "m4-" "m4-"
-DEFINE "NCURSES" "6.2" "gz" "ncurses-" "ncurses-"
-DEFINE "PATCH" "2.7.6" "xz" "patch-" "patch-"
-DEFINE "SED" "4.8" "xz" "sed-" "sed-"
-DEFINE "TAR" "1.32" "xz" "tar-" "tar-"
-DEFINE "UBOOT" "2020.07" "bz2" "u-boot-" "u-boot-"
-DEFINE "XZ" "5.2.5" "xz" "xz-" "xz-"
-DEFINE "ZLIB" "1.2.11" "xz" "zlib-" "zlib-"
-
-
-################################################################################
-### III) Preparation for the build #############################################
-################################################################################
-## Creating a FSH-compliant directory structure in CLFS_ROOT
-mkdir -pv ${CLFS_ROOT}/{bin,boot,dev,etc,home,lib,media,mnt,opt,proc,root,run,sbin,srv,tmp}
-
-mkdir -pv ${CLFS_ROOT}/etc/{opt,}
-mkdir -pv ${CLFS_ROOT}/lib/{modules,}
-mkdir -pv ${CLFS_ROOT}/usr/{bin,include,lib,libexec,sbin,share,src}
-mkdir -pv ${CLFS_ROOT}/usr/local/{bin,etc,games,include,lib,man,sbin,share,src}
-mkdir -pv ${CLFS_ROOT}/usr/share/{man,misc}
-mkdir -pv ${CLFS_ROOT}/var/{cache,lib,local,lock,log,mail,opt,spool,tmp}
-
-ln -fsv ../proc/mounts ${CLFS_ROOT}/etc/mtab
-ln -fsv ../run ${CLFS_ROOT}/var/run
-ln -fsv ../mail ${CLFS_ROOT}/var/spool/mail
-
-chmod 0750 ${CLFS_ROOT}/root
-chmod 1777 ${CLFS_ROOT}/{var/,}tmp
-
-
-## Ensuring that ${CLFS_SYSROOT}, ${CLFS_BOOT_ROOT}, and ${CLFS_CROSS_(SYS)ROOT} exist
-mkdir -pv ${CLFS_SYSROOT} ${CLFS_BOOT_ROOT} ${CLFS_CROSS_SYSROOT}
-#### this allows us to treat ${CLFS_CROSS_SYSROOT} and ${CLFS_CROSS_SYSROOT}/usr identically
-ln -fsv . ${CLFS_CROSS_SYSROOT}/usr
-
-
-## Creating the group,passwd, and lastlog files
-cat > ${CLFS_ROOT}/etc/group << "EOF"
-root:x:0:
-bin:x:1:
-sys:x:2:
-kmem:x:3:
-tty:x:4:
-tape:x:5:
-daemon:x:6:
-floppy:x:7:
-disk:x:8:
-lp:x:9:
-dialout:x:10:
-audio:x:11:
-video:x:12:
-utmp:x:13:
-usb:x:14:
-cdrom:x:15:
-EOF
-
-cat > ${CLFS_ROOT}/etc/passwd << "EOF"
-root::0:0:root:/root:/bin/ash
-EOF
-
-touch ${CLFS_ROOT}/var/log/lastlog
-chmod -v 664 ${CLFS_ROOT}/var/log/lastlog
-
-
-cd ${CLFS_SOURCES}
-
-${CLFS_SCRIPTS}/build-cross-toolchain.sh
-
-source ~/.bashrc
-
-${CLFS_SCRIPTS}/build-test-packages.sh
-
-CLFS_USER_EOF
diff --git a/md5sums.src b/md5sums.src
@@ -1,6 +1,5 @@
fc8d55e2f6096de8ff8171173b6f5087 binutils-2.35.tar.xz
9576986f1a960da471d03b72a62f13c7 busybox-1.32.0.tar.bz2
-67e051268d0c475ea773822f7500d0e5 bzip2-1.0.8.tar.gz
63527580ca47706b70046f87bb9d14fe dropbear-2020.80.tar.bz2
e9fd9b1789155ad09bcf3ae747596b50 gcc-10.2.0.tar.xz
a325e3f09e6d91e62101e59f9bda3ec1 gmp-6.2.0.tar.xz
@@ -11,7 +10,4 @@ bdd3d5efba9c17da8d83a35ec552baef mpfr-4.1.0.tar.xz
2720bdbed739e94c4d7acdc91c0cd9d6 musl-1.2.1.tar.gz
1d6db99536bdf875ce441f2c0e45ebf2 netplug-1.2.9.2.tar.bz2
86e51eeccd15e658ad1df943a0edf622 u-boot-2020.07.tar.bz2
-e06c222e186f7cc013fd272d023710cb wireless_tools.29.tar.gz
-aa1621ec7013a19abab52a8aff04fe5b xz-5.2.5.tar.xz
85adef240c5f370b308da8c938951a68 zlib-1.2.11.tar.xz
-dd0b53631303b8f972dafa6fd34beb0c zstd-1.4.5.tar.gz
-\ No newline at end of file
diff --git a/md5sums.src.bak b/md5sums.src.bak
@@ -1,17 +0,0 @@
-fc8d55e2f6096de8ff8171173b6f5087 binutils-2.35.tar.xz
-9576986f1a960da471d03b72a62f13c7 busybox-1.32.0.tar.bz2
-67e051268d0c475ea773822f7500d0e5 bzip2-1.0.8.tar.gz
-63527580ca47706b70046f87bb9d14fe dropbear-2020.80.tar.bz2
-e9fd9b1789155ad09bcf3ae747596b50 gcc-10.2.0.tar.xz
-a325e3f09e6d91e62101e59f9bda3ec1 gmp-6.2.0.tar.xz
-e7f09d1c59f429d259fe941d9de6b421 iana-etc-20200910.tar.gz
-4d8b8af44c9d342624c036428da09ab6 linux-5.8.9.tar.xz
-2f1ce56ac775f2be090863f364931a03 mpc-1.2.0.tar.gz
-bdd3d5efba9c17da8d83a35ec552baef mpfr-4.1.0.tar.xz
-2720bdbed739e94c4d7acdc91c0cd9d6 musl-1.2.1.tar.gz
-1d6db99536bdf875ce441f2c0e45ebf2 netplug-1.2.9.2.tar.bz2
-86e51eeccd15e658ad1df943a0edf622 u-boot-2020.07.tar.bz2
-e06c222e186f7cc013fd272d023710cb wireless_tools.29.tar.gz
-aa1621ec7013a19abab52a8aff04fe5b xz-5.2.5.tar.xz
-85adef240c5f370b308da8c938951a68 zlib-1.2.11.tar.xz
-dd0b53631303b8f972dafa6fd34beb0c zstd-1.4.5.tar.gz
-\ No newline at end of file
diff --git a/scripts/build-core-packages.sh b/scripts/build-core-packages.sh
@@ -11,6 +11,7 @@
### ----------------------------------------------------------------------------
### - CLFS_ROOT : Root folder for cross-compiled system
### - CLFS_BOOT_ROOT : Root folder for boot-required binaries
+### - CLFS_CROSS_NAME : Name of cross-toolchain root
### - CLFS_CROSS_ROOT : Root folder for cross-toolchain
### - CLFS_CROSS_SYSROOT : Sysroot for cross-toolchain
################################################################################
@@ -18,12 +19,14 @@
source ~/.bashrc
## Creating passwd, group, and lastlog files
-ln -svf ../proc/mounts ${CLFS_ROOT}/etc/mtab
+ln -fsv ../proc/mounts ${CLFS_ROOT}/etc/mtab
+
cat > ${CLFS_ROOT}/etc/passwd <<'EOF'
root::0:0:root:/root:/bin/ash
EOF
+
cat > ${CLFS_ROOT}/etc/group <<'EOF'
root:x:0:
bin:x:1:
@@ -43,224 +46,154 @@ usb:x:14:
cdrom:x:15:
EOF
+
touch ${CLFS_ROOT}/var/log/lastlog
chmod -v 664 ${CLFS_ROOT}/var/log/lastlog
+
## Installing libgcc
cp -v ${CLFS_CROSS_SYSROOT}/lib/libgcc_s.so.1 ${CLFS_ROOT}/usr/lib/
+ln -fsv ../usr/lib/libgcc_s.so.1 ${CLFS_ROOT}/lib/libgcc_s.so.1
${CLFS_TARGET}-strip ${CLFS_ROOT}/lib/libgcc_s.so.1
-ln -sfv ../usr/lib/libgcc_s.so.1 ${CLFS_ROOT}/lib/libgcc_s.so.1
-
-## Linux API Headers
LINUX () {
- make mrproper
-
- make ARCH=${CLFS_ARCH} headers_check
- make ARCH=${CLFS_ARCH} headers
-
- find usr/include -name '.*' -delete
- rm usr/include/Makefile
- cp -r usr/include ${CLFS_ROOT}/usr
+ make mrproper
+
+ make ARCH=${CLFS_ARCH} headers_check
+ make ARCH=${CLFS_ARCH} headers
+
+ find usr/include -name '.*' -delete
+ rm usr/include/Makefile
+ cp -r usr/include ${CLFS_ROOT}/usr
}
EXTRACT "LINUX" LINUX "core-pkg-linux-headers"
-## Musl libc
MUSL () {
- ./configure \
- CROSS_COMPILE=${CLFS_TARGET}- \
- --prefix=/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET} \
- --target=${CLFS_TARGET} \
- --enable-optimize \
- --enable-warnings \
- --disable-static
-
- make && make DESTDIR=${CLFS_ROOT} install
-
- ln -fsv ../usr/lib/libc.so ${CLFS_ROOT}/lib/ld-musl-*.so.1
+ ./configure \
+ CROSS_COMPILE=${CLFS_TARGET}- \
+ --prefix=/usr \
+ --build=${CLFS_HOST} \
+ --host=${CLFS_TARGET} \
+ --target=${CLFS_TARGET} \
+ --enable-optimize \
+ --enable-warnings \
+ -disable-static
+
+ make && make DESTDIR=${CLFS_ROOT} install
+
+ ln -fsv ../usr/lib/libc.so ${CLFS_ROOT}/lib/ld-musl-*.so.1
}
EXTRACT "MUSL" MUSL "core-pkg-musl-libc"
-## Libstdc++
LIBSTDCXX () {
- ln -s gthr-posix.h libgcc/gthr-default.h
-
- mkdir -v libstdcxx-build
- cd libstdcxx-build
-
- ../libstdc++-v3/configure \
- CXXFLAGS="-g -O2 -D_GNU_SOURCE" \
- --prefix=/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET} \
- --target=${CLFS_TARGET} \
- --disable-multilib \
- --disable-nls \
- --disable-static
-
- make && make DESTDIR=${CLFS_ROOT} install
+ ln -s gthr-posix.h libgcc/gthr-default.h
+
+ mkdir -v libstdcxx-build
+ cd libstdcxx-build
+
+ ../libstdc++-v3/configure \
+ CXXFLAGS="-g -O2 -D_GNU_SOURCE" \
+ --prefix=/usr \
+ --build=${CLFS_HOST} \
+ --host=${CLFS_TARGET} \
+ --target=${CLFS_TARGET} \
+ --disable-multilib \
+ --disable-nls \
+ --disable-static
+
+ make && make DESTDIR=${CLFS_ROOT} install
}
EXTRACT "GCC" LIBSTDCXX "core-pkg-libstdc++"
-## Zlib
ZLIB () {
- ./configure \
- --prefix=/usr \
- --const \
- --shared
+ ./configure \
+ --prefix=/usr \
+ --const \
+ --shared
- make && make DESTDIR=${CLFS_ROOT} install
+ make && make DESTDIR=${CLFS_ROOT} install
- rm -v ${CLFS_ROOT}/usr/lib/libz.a
- mv -v ${CLFS_ROOT}/usr/lib/libz.so.* ${CLFS_ROOT}/lib
- ln -sfv ../../lib/$(readlink ${CLFS_ROOT}/usr/lib/libz.so) ${CLFS_ROOT}/usr/lib/libz.so
+ rm -v ${CLFS_ROOT}/usr/lib/libz.a
+ mv -v ${CLFS_ROOT}/usr/lib/libz.so.* ${CLFS_ROOT}/lib
+ ln -sfv ../../lib/$(readlink ${CLFS_ROOT}/usr/lib/libz.so) ${CLFS_ROOT}/usr/lib/libz.so
}
EXTRACT "ZLIB" ZLIB "core-pkg-zlib"
-## Bzpi2
-BZIP2 () {
- sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
- sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
-
- make -f Makefile-libbz2_so && make clean && \
- make && make PREFIX=${CLFS_ROOT}/usr install
-
- rm -v ${CLFS_ROOT}/usr/lib/libbz2.a
- cp -v bzip2-shared ${CLFS_ROOT}/bin/bzip2
- cp -av libbz2.so* ${CLFS_ROOT}/lib
- ln -fsv ../../lib/libbz2.so.1.0 ${CLFS_ROOT}/usr/lib/libbz2.so
- rm -v ${CLFS_ROOT}/usr/bin/{bunzip2,bzcat,bzip2}
- ln -sv bzip2 ${CLFS_ROOT}/bin/bunzip2
- ln -sv bzip2 ${CLFS_ROOT}/bin/bzcat
-}
-# EXTRACT "BZIP2" BZIP2 "core-pkg-bzip2"
-
-
-## Xz
-XZ () {
- ./configure \
- --prefix=${CLFS_ROOT}/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET} \
- --disable-static \
- --docdir=${CLFS_ROOT}/usr/share/doc/xz-5.2.5
-
- make && make install
-
- mv -v ${CLFS_ROOT}/usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} ${CLFS_ROOT}/bin
- mv -v ${CLFS_ROOT}/usr/lib/liblzma.so.* ${CLFS_ROOT}/lib
- ln -svf ../../lib/$(readlink ${CLFS_ROOT}/usr/lib/liblzma.so) ${CLFS_ROOT}/usr/lib/liblzma.so
-}
-# EXTRACT "XZ" XZ "core-pkg-xz"
-
-
-## Zstd
-ZSTD () {
- make && make prefix=${CLFS_ROOT}/usr install
-
- rm -v ${CLFS_ROOT}/usr/lib/libzstd.a
- mv -v ${CLFS_ROOT}/usr/lib/libzstd.so.* ${CLFS_ROOT}/lib
- ln -sfv ../../lib/$(readlink ${CLFS_ROOT}/usr/lib/libzstd.so) ${CLFS_ROOT}/usr/lib/libzstd.so
-}
-# EXTRACT "ZSTD" ZSTD "core-pkg-zstd"
-
-
-## Libressl
-LIBRESSL () {
- ./configure \
- --prefix=/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET} \
- --libdir=${CLFS_ROOT}/lib \
- --with-openssldir=/etc/ssl
-
- make && make DESTDIR=${CLFS_ROOT} install
-}
-# EXTRACT "LIBRESSL" LIBRESSL "core-pkg-libressl"
-
-
-## Installing busybox
BUSYBOX () {
- make distclean
+ make distclean
- make ARCH="${CLFS_ARCH}" defconfig
+ make ARCH="${CLFS_ARCH}" defconfig
- sed -i 's/\(CONFIG_\)\(.*\)\(INETD\)\(.*\)=y/# \1\2\3\4 is not set/g' .config
- sed -i 's/\(CONFIG_IFPLUGD\)=y/# \1 is not set/' .config
+ sed -i 's/\(CONFIG_\)\(.*\)\(INETD\)\(.*\)=y/# \1\2\3\4 is not set/g' .config
+ sed -i 's/\(CONFIG_IFPLUGD\)=y/# \1 is not set/' .config
- sed -i 's/\(CONFIG_FEATURE_WTMP\)=y/# \1 is not set/' .config
- sed -i 's/\(CONFIG_FEATURE_UTMP\)=y/# \1 is not set/' .config
+ sed -i 's/\(CONFIG_FEATURE_WTMP\)=y/# \1 is not set/' .config
+ sed -i 's/\(CONFIG_FEATURE_UTMP\)=y/# \1 is not set/' .config
- sed -i 's/\(CONFIG_UDPSVD\)=y/# \1 is not set/' .config
- sed -i 's/\(CONFIG_TCPSVD\)=y/# \1 is not set/' .config
+ sed -i 's/\(CONFIG_UDPSVD\)=y/# \1 is not set/' .config
+ sed -i 's/\(CONFIG_TCPSVD\)=y/# \1 is not set/' .config
- make ARCH="${CLFS_ARCH}" CROSS_COMPILE="${CLFS_TARGET}-" && \
- make ARCH="${CLFS_ARCH}" CROSS_COMPILE="${CLFS_TARGET}-" CONFIG_PREFIX="${CLFS_ROOT}" install
+ make ARCH="${CLFS_ARCH}" CROSS_COMPILE="${CLFS_TARGET}-" && \
+ make ARCH="${CLFS_ARCH}" CROSS_COMPILE="${CLFS_TARGET}-" CONFIG_PREFIX="${CLFS_ROOT}" install
- #### For building the linux kernel with modules
- cp -v examples/depmod.pl ${CLFS_ROOT}/bin
- chmod -v 755 ${CLFS_ROOT}/bin/depmod.pl
+ #### For building the linux kernel with modules
+ cp -v examples/depmod.pl ${CLFS_ROOT}/bin
+ chmod -v 755 ${CLFS_ROOT}/bin/depmod.pl
}
EXTRACT "BUSYBOX" BUSYBOX "core-pkg-busybox"
-## Installing iana-etc
IANA_ETC () {
- cp protocols services ${CLFS_ROOT}/etc
+ cp protocols services ${CLFS_ROOT}/etc
}
EXTRACT "IANA_ETC" IANA_ETC "core-pkg-iana-etc"
### Making the system bootable
+
## /etc/fstab file
cat > ${CLFS_ROOT}/etc/fstab <<'EOF'
# file-system mount-point type options dump fsck
EOF
-## Linux kernel
LINUX () {
- make mrproper
+ make mrproper
- cp ${CLFS_CONFIGS}/linux-kernel-config .config
+ cp ${CLFS_CONFIGS}/linux-kernel-config .config
- make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}- && \
- make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}- INSTALL_MOD_PATH=${CLFS_ROOT} modules_install
+ make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}- && \
+ make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}- INSTALL_MOD_PATH=${CLFS_ROOT} modules_install
- cp arch/${CLFS_ARCH}/boot/zImage ${CLFS_BOOT_ROOT}
- for DTS in ${CLFS_ARCH_DTS_LIST[@]}
- do
- cp arch/${CLFS_ARCH}/boot/dts/$DTS ${CLFS_BOOT_ROOT}
- done
+ cp arch/${CLFS_ARCH}/boot/zImage ${CLFS_BOOT_ROOT}
+ for DTS in ${CLFS_ARCH_DTS_LIST[@]}; do
+ cp arch/${CLFS_ARCH}/boot/dts/$DTS ${CLFS_BOOT_ROOT}
+ done
}
EXTRACT "LINUX" LINUX "linux-kernel"
-## Das U-Boot
UBOOT () {
- make distclean
+ make distclean
- cp ${CLFS_CONFIGS}/uboot-config .config
+ cp ${CLFS_CONFIGS}/uboot-config .config
- make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}-
+ make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}-
- cp u-boot.bin ${CLFS_BOOT_ROOT}
+ cp u-boot.bin ${CLFS_BOOT_ROOT}
}
EXTRACT "UBOOT" UBOOT "uboot-bootloader"
-## Bootscripts
BOOTSCRIPTS () {
- make DESTDIR=${CLFS_ROOT} install-bootscripts
- make DESTDIR=${CLFS_ROOT} install-dropbear
- make DESTDIR=${CLFS_ROOT} install-netplug
+ make DESTDIR=${CLFS_ROOT} install-bootscripts
+ make DESTDIR=${CLFS_ROOT} install-dropbear
+ make DESTDIR=${CLFS_ROOT} install-netplug
}
EXTRACT "BOOTSCRIPTS" BOOTSCRIPTS "core-pkg-bootscripts"
@@ -374,6 +307,7 @@ hpilo!(.*) root:root 0660 =hpilo/%1
xvd[a-z] root:root 0660 */lib/mdev/xvd_links
EOF
+
## Creating /etc/profile
cat > ${CLFS_ROOT}/etc/profile <<'EOF'
# /etc/profile
@@ -398,6 +332,7 @@ export EDITOR='/bin/vi'
# End /etc/profile
EOF
+
## Creating /etc/inittab
cat > ${CLFS_ROOT}/etc/inittab <<'EOF'
# /etc/inittab
@@ -420,8 +355,10 @@ tty6::respawn:/sbin/getty 38400 tty6
::ctrlaltdel:/sbin/reboot
EOF
+
## Setting hostname
-echo ${CLFS_HOSTNAME} > ${CLFS_ROOT}/etc/HOSTNAME
+echo ${CLFS_HOSTNAME} > ${CLFS_ROOT}/etc/hostname
+
## Customising /etc/hosts
cat > ${CLFS_ROOT}/etc/hosts <<'EOF'
@@ -432,6 +369,7 @@ cat > ${CLFS_ROOT}/etc/hosts <<'EOF'
# End /etc/hosts (no network card version)
EOF
+
## Configuring the network script
mkdir -pv ${CLFS_ROOT}/etc/network/if-{post-{up,down},pre-{up,down},up,down}.d
mkdir -pv ${CLFS_ROOT}/usr/share/udhcpc
@@ -483,3 +421,4 @@ exit 0
EOF
chmod +x ${CLFS_ROOT}/usr/share/udhcpc/default.script
+
diff --git a/scripts/build-cross-toolchain.sh b/scripts/build-cross-toolchain.sh
@@ -19,6 +19,23 @@
source ~/.bashrc
+COMMON_BINUTILS_OPTS=(\
+ --enable-deterministic-archives \
+ --disable-separate-code \
+)
+
+
+COMMON_GCC_OPTS=(\
+ --enable-libstdcxx-time=rt \
+ --disable-assembly \
+ --disable-bootstrap \
+ --disable-gnu-indirect-function \
+ --disable-libmpx \
+ --disable-libmudflap \
+ --disable-libsanitizer \
+)
+
+
BINUTILS_PASS1 () {
mkdir -v binutils-build
cd binutils-build
@@ -29,10 +46,11 @@ BINUTILS_PASS1 () {
--build=${CLFS_HOST} \
--host=${CLFS_HOST} \
--target=${CLFS_TARGET} \
+ --disable-multilib \
--disable-nls \
--disable-shared \
- --disable-multilib \
- --disable-werror
+ --disable-werror \
+ ${COMMON_BINUTILS_OPTS[@]}
make && make install
}
@@ -56,24 +74,24 @@ GCC_PASS1 () {
--build=${CLFS_HOST} \
--host=${CLFS_HOST} \
--target=${CLFS_TARGET} \
+ --with-arch=${CLFS_GCC_ARCH} \
+ --with-tune=${CLFS_GCC_TUNE} \
--with-newlib \
--without-headers \
--enable-initfini-array \
- --disable-nls \
- --disable-shared \
- --disable-multilib \
+ --enable-languages=c,c++ \
--disable-decimal-float \
- --disable-threads \
--disable-libatomic \
--disable-libgomp \
--disable-libquadmath \
- --disable-libsanitizer \
--disable-libssp \
- --disable-libvtv \
--disable-libstdcxx \
- --enable-languages=c,c++ \
- --with-arch=${CLFS_ARM_ARCH} \
- --with-tune=${CLFS_GCC_TUNE} \
+ --disable-libvtv \
+ --disable-multilib \
+ --disable-nls \
+ --disable-shared \
+ --disable-threads \
+ ${COMMON_GCC_OPTS[@]} \
${CLFS_GCC_FLOAT_OPT} ${CLFS_GCC_FPU_OPT}
make all-gcc all-target-libgcc && make install-gcc install-target-libgcc
@@ -101,14 +119,15 @@ EXTRACT "LINUX" LINUX "toolchain-linux-headers"
MUSL () {
./configure \
CROSS_COMPILE=${CLFS_TARGET}- \
- --prefix=${CLFS_CROSS_SYSROOT} \
+ --prefix=/ \
--build=${CLFS_HOST} \
--host=${CLFS_HOST} \
- --target=${CLFS_TARGET} \
- --syslibdir=${CLFS_CROSS_SYSROOT}/lib
+ --target=${CLFS_TARGET}
make && make DESTDIR=${CLFS_CROSS_SYSROOT} install
+ ln -fsv libc.so ${CLFS_CROSS_SYSROOT}/lib/ld-musl-*.so.1
+
${CLFS_CROSS_ROOT}/libexec/gcc/${CLFS_TARGET}/${GCC_VER}/install-tools/mkheaders
}
EXTRACT "MUSL" MUSL "toolchain-musl-libc"
@@ -119,215 +138,20 @@ LIBSTDCXX_PASS1 () {
cd libstdcxx-build
../libstdc++-v3/configure \
- --prefix=${CLFS_CROSS_SYSROOT} \
+ --prefix=/ \
--build=${CLFS_HOST} \
--host=${CLFS_HOST} \
--target=${CLFS_TARGET} \
- --disable-nls \
- --disable-multilib \
+ --with-gxx-include-dir=${CLFS_CROSS_SYSROOT}/include/c++/${GCC_VER} \
--disable-libstdcxx-pch \
- --with-gxx-include-dir=${CLFS_CROSS_SYSROOT}/include/c++/${GCC_VER}
+ --disable-multilib \
+ --disable-nls
- make && make install
+ make && make DESTDIR=${CLFS_CROSS_SYSROOT} install
}
EXTRACT "GCC" LIBSTDCXX_PASS1 "toolchain-libstdc++-pass1"
-M4 () {
- sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
- echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
-
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST}
-
- make && make install
-}
-#EXTRACT "M4" M4 "toolchain-m4"
-
-
-NCURSES () {
- sed -i s/mawk// configure
-
- mkdir ncurses-build
- pushd ncurses-build > /dev/null
- ../configure
- make -C include
- make -C progs tic
- popd > /dev/null
-
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- --with-manpage-format=normal \
- --with-shared \
- --without-debuf \
- --without-ada \
- --without-normal \
- --with-widec
-
- make && make TIC_PATH=$(pwd)/ncurses-build/progs/tic install
- echo "INPUT(-lncursesw)" > ${CLFS_CROSS_ROOT}/lib/libncurses.so
-
- ln -sfv ../lib/$(readlink ${CLFS_CROSS_ROOT}/lib/libncursesw.so) ${CLFS_CROSS_ROOT}/lib/libncursesw.so
-}
-#EXTRACT "NCURSES" NCURSES "toolchain-ncurses"
-
-
-BASH () {
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- --without-bash-malloc
-
- make && make install
-
- ln -fsv bash ${CLFS_CROSS_ROOT}/bin/sh
-}
-#EXTRACT "BASH" BASH "toolchain-bash"
-
-
-COREUTILS () {
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- --enable-install-program=hostname \
- --enable-no-install-program=kill,uptime
-
- make && make install
-
- mv -v ${CLFS_CROSS_ROOT}/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} ${CLFS_CROSS_ROOT}/bin
- mv -v ${CLFS_CROSS_ROOT}/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} ${CLFS_CROSS_ROOT}/bin
- mv -v ${CLFS_CROSS_ROOT}/bin/{rmdir,stty,sync,true,uname} ${CLFS_CROSS_ROOT}/bin
- mv -v ${CLFS_CROSS_ROOT}/bin/{head,nice,sleep,touch} ${CLFS_CROSS_ROOT}/bin
- mv -v ${CLFS_CROSS_ROOT}/bin/chroot ${CLFS_CROSS_ROOT}/sbin
- mkdir -pv ${CLFS_CROSS_ROOT}/share/man/man8
- mv -v ${CLFS_CROSS_ROOT}/share/man/man1/chroot.1 ${CLFS_CROSS_ROOT}/share/man/man8/chroot.8
- sed -i 's/"1"/"8"/' ${CLFS_CROSS_ROOT}/share/man/man8/chroot.8
-}
-#EXTRACT "COREUTILS" COREUTILS "toolchain-coreutils"
-
-
-DIFFUTILS () {
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST}
-
- make && make install
-}
-#EXTRACT "DIFFUTILS" DIFFUTILS "toolchain-diffutils"
-
-
-FILE () {
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST}
-
- make && make install
-}
-#EXTRACT "FILE" FILE "toolchain-file"
-
-
-FINDUTILS () {
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST}
-
- make && make install
-
- sed -i 's|find:=${BINDIR}|find:=/${CLFS_CROSS_NAME}/bin|' ${CLFS_CROSS_ROOT}/bin/updatedb
-}
-#EXTRACT "FINDUTILS" FINDUTILS "toolchain-findutils"
-
-
-GAWK () {
- sed -i 's/extras//' Makefile.in
-
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST}
-
- make && make install
-}
-#EXTRACT "GAWK" GAWK "toolchain-gawk"
-
-
-GZIP () {
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST}
-
- make && make install
-}
-#EXTRACT "GZIP" GZIP "toolchain-gzip"
-
-
-MAKE () {
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- --without-guile
-
- make && make install
-}
-#EXTRACT "MAKE" MAKE "toolchain-make"
-
-
-PATCH () {
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST}
-
- make && make install
-}
-#EXTRACT "PATCH" PATCH "toolchain-patch"
-
-
-SED () {
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST}
-
- make && make install
-}
-#EXTRACT "SED" SED "toolchain-sed"
-
-
-TAR () {
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST}
-
- make && make install
-}
-#EXTRACT "TAR" TAR "toolchain-tar"
-
-
-XZ () {
- ./configure \
- --prefix=${CLFS_CROSS_ROOT} \
- --build=${CLFS_HOST} \
- --host=${CLFS_HOST} \
- --disable-static
-
- make && make install
-}
-#EXTRACT "XZ" XZ "toolchain-xz"
-
-
BINUTILS_PASS2 () {
mkdir -v binutils-build
cd binutils-build
@@ -339,10 +163,11 @@ BINUTILS_PASS2 () {
--build=${CLFS_HOST} \
--host=${CLFS_HOST} \
--target=${CLFS_TARGET} \
- --disable-nls \
--enable-shared \
--disable-multilib \
- --disable-werror
+ --disable-nls \
+ --disable-werror \
+ ${COMMON_BINUTILS_OPTS[@]}
make && make install
}
@@ -371,13 +196,15 @@ GCC_PASS2 () {
--host=${CLFS_HOST} \
CC_FOR_TARGET=${CLFS_TARGET}-gcc \
--target=${CLFS_TARGET} \
+ --with-arch=${CLFS_GCC_ARCH} \
+ --with-tune=${CLFS_GCC_TUNE} \
--enable-initfini-array \
- --disable-nls \
- --disable-multilib \
- --disable-libsanitizer \
--enable-languages=c,c++ \
- --with-arch=${CLFS_ARM_ARCH} \
- --with-tune=${CLFS_GCC_TUNE} \
+ --enable-shared \
+ --enable-tls \
+ --disable-multilib \
+ --disable-nls \
+ ${COMMON_GCC_OPTS[@]} \
${CLFS_GCC_FLOAT_OPT} ${CLFS_GCC_FPU_OPT}
make && make install
@@ -394,3 +221,4 @@ echo export LD=\""${CLFS_TARGET}-ld\"" >> ~/.bashrc
echo export RANLIB=\""${CLFS_TARGET}-ranlib\"" >> ~/.bashrc
echo export READELF=\""${CLFS_TARGET}-readelf\"" >> ~/.bashrc
echo export STRIP=\""${CLFS_TARGET}-strip\"" >> ~/.bashrc
+
diff --git a/scripts/build-extra-packages.sh b/scripts/build-extra-packages.sh
@@ -11,45 +11,44 @@
### ----------------------------------------------------------------------------
### - CLFS_ROOT : Root folder for cross-compiled system
### - CLFS_BOOT_ROOT : Root folder for boot-required binaries
+### - CLFS_CROSS_NAME : Name of cross-toolchain root
### - CLFS_CROSS_ROOT : Root folder for cross-toolchain
### - CLFS_CROSS_SYSROOT : Sysroot for cross-toolchain
################################################################################
source ~/.bashrc
-## Netplug
+
NETPLUG () {
- patch -Np1 -i ../netplug-1.2.9.2-fixes-1.patch
+ patch -Np1 -i ../netplug-1.2.9.2-fixes-1.patch
- make && make DESTDIR=${CLFS_ROOT} install
+ make && make DESTDIR=${CLFS_ROOT} install
}
-#EXTRACT "NETPLUG" NETPLUG "extra-pkg-netplug"
+EXTRACT "NETPLUG" NETPLUG "extra-pkg-netplug"
-## Wireless Tools
WIRELESS_TOOLS () {
- sed -i s/gcc/\$\{CLFS\_TARGET\}\-gcc/g Makefile
- sed -i s/\ ar/\ \$\{CLFS\_TARGET\}\-ar/g Makefile
- sed -i s/ranlib/\$\{CLFS\_TARGET\}\-ranlib/g Makefile
+ sed -i s/gcc/\$\{CLFS\_TARGET\}\-gcc/g Makefile
+ sed -i s/\ ar/\ \$\{CLFS\_TARGET\}\-ar/g Makefile
+ sed -i s/ranlib/\$\{CLFS\_TARGET\}\-ranlib/g Makefile
- make PREFIX=${CLFS_ROOT}/usr && make PREFIX=${CLFS_ROOT}/usr install
+ make PREFIX=${CLFS_ROOT}/usr && make PREFIX=${CLFS_ROOT}/usr install
}
-# EXTRACT "WIRELESS_TOOLS" WIRELESS_TOOLS "extra-pkg-wireless-tools"
+EXTRACT "WIRELESS_TOOLS" WIRELESS_TOOLS "extra-pkg-wireless-tools"
-## Dropbear
DROPBEAR () {
-# cp ${CLFS_CONFIGS}/dropbear_config.h localoptions.h
+ ./configure \
+ --prefix=/usr \
+ --build=${CLFS_HOST} \
+ --host=${CLFS_TARGET}
- ./configure \
- --prefix=/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET}
+ cp ${CLFS_CONFIGS}/dropbear_config.h localoptions.h
- make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" && \
- make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" DESTDIR=${CLFS_ROOT} install
+ make MULTI=1 PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" && \
+ make MULTI=1 PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" DESTDIR=${CLFS_ROOT} install
- install -dv ${CLFS_ROOT}/etc/dropbear
+ install -dv ${CLFS_ROOT}/etc/dropbear
}
EXTRACT "DROPBEAR" DROPBEAR "extra-pkg-dropbear"
diff --git a/scripts/build-test-packages.sh b/scripts/build-test-packages.sh
@@ -1,116 +0,0 @@
-#!/bin/sh
-
-################################################################################
-### Defined Variables:
-### - CLFS : Root folder for entire CLFS build
-### - CLFS_BUILD : Final tarball output directory
-### - CLFS_CONFIGS : Additional configuration files for CLFS packages
-### - CLFS_LOGS : Package build log root
-### - CLFS_SCRIPTS : Build script root
-### - CLFS_SOURCES : Package source root
-### ----------------------------------------------------------------------------
-### - CLFS_ROOT : Root folder for cross-compiled system
-### - CLFS_BOOT_ROOT : Root folder for boot-required binaries
-### - CLFS_CROSS_ROOT : Root folder for cross-toolchain
-### - CLFS_CROSS_SYSROOT : Sysroot for cross-toolchain
-################################################################################
-
-source ~/.bashrc
-
-## Installing libgcc
-cp -v ${CLFS_CROSS_SYSROOT}/lib/libgcc_s.so.1 ${CLFS_ROOT}/usr/lib/
-${CLFS_TARGET}-strip ${CLFS_ROOT}/lib/libgcc_s.so.1
-
-ln -sfv ../usr/lib/libgcc_s.so.1 ${CLFS_ROOT}/lib/libgcc_s.so.1
-
-
-## Linux API Headers
-LINUX () {
- make mrproper
-
- make ARCH=${CLFS_ARCH} headers_check
- make ARCH=${CLFS_ARCH} headers
-
- find usr/include -name '.*' -delete
- rm usr/include/Makefile
- cp -r usr/include ${CLFS_ROOT}/usr
-}
-EXTRACT "LINUX" LINUX "test-pkg-linux-headers"
-
-
-## Musl libc
-MUSL () {
- ./configure \
- CROSS_COMPILE=${CLFS_TARGET}- \
- --prefix=${CLFS_ROOT}/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET} \
- --target=${CLFS_TARGET} \
- --syslibdir=${CLFS_ROOT}/lib \
- --enable-optimize \
- --enable-warnings \
- --disable-static
-
- make && make install
-
- ln -fsv ../usr/lib/libc.so ${CLFS_ROOT}/lib/ld-musl-*.so.1
-}
-EXTRACT "MUSL" MUSL "test-pkg-musl-libc"
-
-
-## Libstdc++
-LIBSTDCXX () {
- ln -s gthr-posix.h libgcc/gthr-default.h
-
- mkdir -v libstdcxx-build
- cd libstdcxx-build
-
- ../libstdc++-v3/configure \
- CXXFLAGS="-g -O2 -D_GNU_SOURCE" \
- --prefix=${CLFS_ROOT}/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET} \
- --target=${CLFS_TARGET} \
- --disable-nls \
- --disable-multilib \
- --disable-static
-
- make && make install
-}
-EXTRACT "GCC" LIBSTDCXX "test-pkg-libstdc++"
-
-
-## Zlib
-ZLIB () {
- ./configure \
- --prefix=${CLFS_ROOT}/usr \
- --const \
- --shared
-
- make && make install
-
- rm -v ${CLFS_ROOT}/usr/lib/libz.a
- mv -v ${CLFS_ROOT}/usr/lib/libz.so.* ${CLFS_ROOT}/lib
- ln -sfv ../../lib/$(readlink ${CLFS_ROOT}/usr/lib/libz.so) ${CLFS_ROOT}/usr/lib/libz.so
-}
-EXTRACT "ZLIB" ZLIB "test-pkg-zlib"
-
-
-## Dropbear
-DROPBEAR () {
- sed -i 's/.*mandir.*//g' Makefile.in
-
- ./configure \
- --prefix=${CLFS_ROOT}/usr \
- --build=${CLFS_HOST} \
- --host=${CLFS_TARGET}
-
- cp ${CLFS_CONFIGS}/dropbear_config.h localoptions.h
-
- make MULTI=1 PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" && \
- make MULTI=1 PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
-
- install -dv ${CLFS_ROOT}/etc/dropbear
-}
-EXTRACT "DROPBEAR" DROPBEAR "test-pkg-dropbear"
-
diff --git a/scripts/host-check.sh b/scripts/host-check.sh
@@ -23,4 +23,5 @@ sudo -V | head -n1
tar --version | head -n1
makeinfo --version | head -n1
-echo "Finished checking host system capabilities!"
-\ No newline at end of file
+echo "Finished checking host system capabilities!"
+
diff --git a/scripts/skeleton.sh b/scripts/skeleton.sh
@@ -11,8 +11,10 @@
### ----------------------------------------------------------------------------
### - CLFS_ROOT : Root folder for cross-compiled system
### - CLFS_BOOT_ROOT : Root folder for boot-required binaries
+### - CLFS_CROSS_NAME : Name of the cross-toolchain root
### - CLFS_CROSS_ROOT : Root folder for cross-toolchain
### - CLFS_CROSS_SYSROOT : Sysroot for cross-toolchain
################################################################################
source ~/.bashrc
+
diff --git a/wget-list.src b/wget-list.src
@@ -1,29 +1,15 @@
-http://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz
http://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.xz
https://www.busybox.net/downloads/busybox-1.32.0.tar.bz2
-http://ftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.xz
https://matt.ucc.asn.au/dropbear/releases/dropbear-2020.80.tar.bz2
-http://ftp.gnu.org/gnu/diffutils/diffutils-3.7.tar.xz
-ftp://ftp.astron.com/pub/file/file-5.39.tar.gz
-http://ftp.gnu.org/gnu/findutils/findutils-4.7.0.tar.xz
-http://ftp.gnu.org/gnu/gawk/gawk-5.1.0.tar.xz
http://gcc.gnu.org/pub/gcc/releases/gcc-10.2.0/gcc-10.2.0.tar.xz
http://ftp.gnu.org/gnu/gmp/gmp-6.2.0.tar.xz
-http://ftp.gnu.org/gnu/grep/grep-3.4.tar.xz
-http://ftp.gnu.org/gnu/gzip/gzip-1.10.tar.xz
https://github.com/Mic92/iana-etc/releases/download/20200910/iana-etc-20200910.tar.gz
-https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.2.1.tar.gz
http://www.kernel.org/pub/linux/kernel/v5.x/linux-5.8.9.tar.xz
-http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
https://github.com/cross-lfs/bootscripts-embedded/archive/master.tar.gz
http://ftp.gnu.org/gnu/mpc/mpc-1.2.0.tar.gz
http://ftp.gnu.org/gnu/mpfr/mpfr-4.1.0.tar.xz
http://www.musl-libc.org/releases/musl-1.2.1.tar.gz
-http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.xz
-http://ftp.gnu.org/gnu/ncurses/ncurses-6.2.tar.gz
-http://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz
-http://ftp.gnu.org/gnu/sed/sed-4.8.tar.xz
-http://ftp.gnu.org/gnu/tar/tar-1.32.tar.xz
+http://www.red-bean.com/~bos/netplug/netplug-1.2.9.2.tar.bz2
+http://patches.clfs.org/embedded-dev/netplug-1.2.9.2-fixes-1.patch
https://ftp.denx.de/pub/u-boot/u-boot-2020.07.tar.bz2
-https://tukaani.org/xz/xz-5.2.5.tar.xz
http://downloads.sourceforge.net/libpng/zlib-1.2.11.tar.xz
diff --git a/wget-list.src.bak b/wget-list.src.bak
@@ -1,21 +0,0 @@
-http://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.xz
-https://www.busybox.net/downloads/busybox-1.32.0.tar.bz2
-https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz
-https://matt.ucc.asn.au/dropbear/releases/dropbear-2020.80.tar.bz2
-http://gcc.gnu.org/pub/gcc/releases/gcc-10.2.0/gcc-10.2.0.tar.xz
-http://ftp.gnu.org/gnu/gmp/gmp-6.2.0.tar.xz
-https://github.com/Mic92/iana-etc/releases/download/20200910/iana-etc-20200910.tar.gz
-https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.2.1.tar.gz
-http://www.kernel.org/pub/linux/kernel/v5.x/linux-5.8.9.tar.xz
-https://github.com/cross-lfs/bootscripts-embedded/archive/master.tar.gz
-http://ftp.gnu.org/gnu/mpc/mpc-1.2.0.tar.gz
-http://ftp.gnu.org/gnu/mpfr/mpfr-4.1.0.tar.xz
-http://www.musl-libc.org/releases/musl-1.2.1.tar.gz
-http://www.red-bean.com/~bos/netplug/netplug-1.2.9.2.tar.bz2
-http://patches.clfs.org/embedded-dev/netplug-1.2.9.2-fixes-1.patch
-https://cloudflare.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.3p1.tar.gz
-https://ftp.denx.de/pub/u-boot/u-boot-2020.07.tar.bz2
-http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz
-https://tukaani.org/xz/xz-5.2.5.tar.xz
-http://downloads.sourceforge.net/libpng/zlib-1.2.11.tar.xz
-https://github.com/facebook/zstd/releases/download/v1.4.5/zstd-1.4.5.tar.gz
-\ No newline at end of file