clfs-bootstrap

clfs-bootstrap.git
git clone git://git.lenczewski.org/clfs-bootstrap.git
Log | Files | Refs | README | LICENSE

commit 3b39835c88629c93dc75da9b59dac7f661636190
parent 4611f3cac1fab7b160d0b5c5f447515369bf2fc6
Author: w79958ml <mikolaj.lenczewski@student.manchester.ac.uk>
Date:   Fri,  9 Oct 2020 18:48:39 +0100

Moved CLFS params to top of build scripts.

Diffstat:
Mbuild-clfs | 47+++++++++++++++++++++++++++++++----------------
Abuild-clfs-test | 306+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dbuild-test-clfs | 278-------------------------------------------------------------------------------
Amd5sums.src.bak | 18++++++++++++++++++
Mscripts/build-core-packages.sh | 36+++++++++++++++++++-----------------
Mscripts/build-cross-toolchain.sh | 473+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
Mscripts/build-extra-packages.sh | 10+++++-----
Mscripts/build-test-packages.sh | 47+++++++++++++++++------------------------------
Mwget-list.src | 21++++++++++++++-------
Cwget-list.src -> wget-list.src.bak | 0
10 files changed, 742 insertions(+), 494 deletions(-)

diff --git a/build-clfs b/build-clfs @@ -2,6 +2,23 @@ ################################################################################ +### 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 @@ -124,19 +141,24 @@ export CLFS_ROOT=${CLFS_ROOT} export CLFS_BOOT_ROOT=${CLFS_BOOT_ROOT} 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_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}" @@ -149,7 +171,6 @@ 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 @@ -196,13 +217,11 @@ DEFINE "DROPBEAR" "2020.80" "bz2" "dropbear-" DEFINE "GCC" "10.2.0" "xz" "gcc-" "gcc-" DEFINE "GMP" "6.2.0" "xz" "gmp-" "gmp-" DEFINE "IANA_ETC" "20200910" "gz" "iana-etc-" "iana-etc-" -DEFINE "LIBRESSL" "3.2.1" "gz" "libressl-" "libressl-" DEFINE "LINUX" "5.8.9" "xz" "linux-" "linux-" 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 "NETPLUG" "1.2.9.2" "bz2" "netplug-" "netplug-" -DEFINE "OPENSSH" "8.3p1" "gz" "openssh-" "openssh-" DEFINE "UBOOT" "2020.07" "bz2" "u-boot-" "u-boot-" DEFINE "WIRELESS_TOOLS" "29" "gz" "wireless_tools." "wireless_tools." DEFINE "XZ" "5.2.5" "xz" "xz-" "xz-" @@ -299,10 +318,6 @@ CLFS_USER_EOF chown -R root:root ${CLFS_ROOT} ${CLFS_BOOT_ROOT} chgrp 13 ${CLFS_ROOT}/var/log/lastlog -chown root:sys ${CLFS_ROOT}/var/lib/sshd -echo "Run command on target system: 'groupadd -g 50 sshd'" -echo "Run command on target system: 'useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd'" - cd ${CLFS_ROOT} tar cfj ${CLFS_BUILD}/clfs-rootfs.tar.xz * echo "Packaged CLFS rootfs: use 'tar pxf ${CLFS_BUILD}/clfs-rootfs.tar.xz -C targetdir' to unpack into a target directory" diff --git a/build-clfs-test b/build-clfs-test @@ -0,0 +1,306 @@ +#!/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/build-test-clfs b/build-test-clfs @@ -1,278 +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_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" "COMPRESSION" "DIR_PREFIX" "ARCHIVE_PREFIX" -#################################################################################################### -DEFINE "BINUTILS" "2.35" "xz" "binutils-" "binutils-" -DEFINE "BOOTSCRIPTS" "" "gz" "bootscripts-embedded-master" "master" -DEFINE "BUSYBOX" "1.32.0" "bz2" "busybox-" "busybox-" -DEFINE "BZIP2" "1.0.8" "gz" "bzip2-" "bzip2-" -DEFINE "DROPBEAR" "2020.80" "bz2" "dropbear-" "dropbear-" -DEFINE "GCC" "10.2.0" "xz" "gcc-" "gcc-" -DEFINE "GMP" "6.2.0" "xz" "gmp-" "gmp-" -DEFINE "IANA_ETC" "20200910" "gz" "iana-etc-" "iana-etc-" -DEFINE "LIBRESSL" "3.2.1" "gz" "libressl-" "libressl-" -DEFINE "LINUX" "5.8.9" "xz" "linux-" "linux-" -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 "NETPLUG" "1.2.9.2" "bz2" "netplug-" "netplug-" -DEFINE "OPENSSH" "8.3p1" "gz" "openssh-" "openssh-" -DEFINE "UBOOT" "2020.07" "bz2" "u-boot-" "u-boot-" -DEFINE "WIRELESS_TOOLS" "29" "gz" "wireless_tools." "wireless_tools." -DEFINE "XZ" "5.2.5" "xz" "xz-" "xz-" -DEFINE "ZLIB" "1.2.11" "xz" "zlib-" "zlib-" -DEFINE "ZSTD" "1.4.5" "gz" "zstd-" "zstd-" - - -################################################################################ -### 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.bak b/md5sums.src.bak @@ -0,0 +1,17 @@ +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 @@ -71,14 +71,15 @@ EXTRACT "LINUX" LINUX "core-pkg-linux-headers" MUSL () { ./configure \ CROSS_COMPILE=${CLFS_TARGET}- \ - --prefix=${CLFS_ROOT}/usr \ + --prefix=/usr \ --build=${CLFS_HOST} \ --host=${CLFS_TARGET} \ --target=${CLFS_TARGET} \ - --syslibdir=${CLFS_ROOT}/lib \ - --enable-warnings + --enable-optimize \ + --enable-warnings \ + --disable-static - make && make install + make && make DESTDIR=${CLFS_ROOT} install ln -fsv ../usr/lib/libc.so ${CLFS_ROOT}/lib/ld-musl-*.so.1 } @@ -94,14 +95,15 @@ LIBSTDCXX () { ../libstdc++-v3/configure \ CXXFLAGS="-g -O2 -D_GNU_SOURCE" \ - --prefix=${CLFS_ROOT}/usr \ + --prefix=/usr \ --build=${CLFS_HOST} \ --host=${CLFS_TARGET} \ --target=${CLFS_TARGET} \ - --disable-nls \ - --disable-multilib + --disable-multilib \ + --disable-nls \ + --disable-static - make && make install + make && make DESTDIR=${CLFS_ROOT} install } EXTRACT "GCC" LIBSTDCXX "core-pkg-libstdc++" @@ -109,11 +111,11 @@ EXTRACT "GCC" LIBSTDCXX "core-pkg-libstdc++" ## Zlib ZLIB () { ./configure \ - --prefix=${CLFS_ROOT}/usr \ + --prefix=/usr \ --const \ --shared - make && make 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 @@ -138,7 +140,7 @@ BZIP2 () { ln -sv bzip2 ${CLFS_ROOT}/bin/bunzip2 ln -sv bzip2 ${CLFS_ROOT}/bin/bzcat } -EXTRACT "BZIP2" BZIP2 "core-pkg-bzip2" +# EXTRACT "BZIP2" BZIP2 "core-pkg-bzip2" ## Xz @@ -156,7 +158,7 @@ XZ () { 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" +# EXTRACT "XZ" XZ "core-pkg-xz" ## Zstd @@ -167,21 +169,21 @@ ZSTD () { 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" +# EXTRACT "ZSTD" ZSTD "core-pkg-zstd" ## Libressl LIBRESSL () { ./configure \ - --prefix=${CLFS_ROOT}/usr \ + --prefix=/usr \ --build=${CLFS_HOST} \ --host=${CLFS_TARGET} \ --libdir=${CLFS_ROOT}/lib \ - --with-openssldir=${CLFS_ROOT}/etc/ssl + --with-openssldir=/etc/ssl - make && make install + make && make DESTDIR=${CLFS_ROOT} install } -EXTRACT "LIBRESSL" LIBRESSL "core-pkg-libressl" +# EXTRACT "LIBRESSL" LIBRESSL "core-pkg-libressl" ## Installing busybox diff --git a/scripts/build-cross-toolchain.sh b/scripts/build-cross-toolchain.sh @@ -11,195 +11,386 @@ ### ---------------------------------------------------------------------------- ### - 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 -## 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 + 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" -## 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 + 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" -## 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} + 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" -## Musl libc MUSL () { - ./configure \ - CROSS_COMPILE=${CLFS_TARGET}- \ - --prefix=/ \ - --build=${CLFS_HOST} \ - --host=${CLFS_HOST} \ - --target=${CLFS_TARGET} + ./configure \ + CROSS_COMPILE=${CLFS_TARGET}- \ + --prefix=${CLFS_CROSS_SYSROOT} \ + --build=${CLFS_HOST} \ + --host=${CLFS_HOST} \ + --target=${CLFS_TARGET} \ + --syslibdir=${CLFS_CROSS_SYSROOT}/lib - make && make DESTDIR=${CLFS_CROSS_SYSROOT} install + make && make DESTDIR=${CLFS_CROSS_SYSROOT} install - ${CLFS_CROSS_ROOT}/libexec/gcc/${CLFS_TARGET}/${GCC_VER}/install-tools/mkheaders + ${CLFS_CROSS_ROOT}/libexec/gcc/${CLFS_TARGET}/${GCC_VER}/install-tools/mkheaders } EXTRACT "MUSL" MUSL "toolchain-musl-libc" -## Libstdc++ - Pass 1 LIBSTDCXX_PASS1 () { - mkdir -v libstdcxx-build - cd libstdcxx-build + 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} + ../libstdc++-v3/configure \ + --prefix=${CLFS_CROSS_SYSROOT} \ + --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 + make && make install } EXTRACT "GCC" LIBSTDCXX_PASS1 "toolchain-libstdc++-pass1" -## Binutils - Pass 2 +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 - - ../configure \ - --prefix=${CLFS_CROSS_ROOT} \ - --with-sysroot=${CLFS_ROOT} \ - --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 + mkdir -v binutils-build + cd binutils-build + + ../configure \ + --prefix=${CLFS_CROSS_ROOT} \ + --with-sysroot=${CLFS_ROOT} \ + --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" -## 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_ROOT} \ - --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 \ - --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 + 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_ROOT} \ + --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 \ + --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" ## Setting toolchain variables -echo export CC=\""${CLFS_TARGET}-gcc sysroot=${CLFS_ROOT}\"" >> ~/.bashrc -echo export CXX=\""${CLFS_TARGET}-g++ sysroot=${CLFS_ROOT}\"" >> ~/.bashrc +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 sysroot=${CLFS_ROOT}\"" >> ~/.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 diff --git a/scripts/build-extra-packages.sh b/scripts/build-extra-packages.sh @@ -23,7 +23,7 @@ NETPLUG () { make && make DESTDIR=${CLFS_ROOT} install } -EXTRACT "NETPLUG" NETPLUG "extra-pkg-netplug" +#EXTRACT "NETPLUG" NETPLUG "extra-pkg-netplug" ## Wireless Tools @@ -34,20 +34,20 @@ WIRELESS_TOOLS () { 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 +# cp ${CLFS_CONFIGS}/dropbear_config.h localoptions.h ./configure \ - --prefix=${CLFS_ROOT}/usr \ + --prefix=/usr \ --build=${CLFS_HOST} \ --host=${CLFS_TARGET} make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" && \ - make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install + make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" DESTDIR=${CLFS_ROOT} install install -dv ${CLFS_ROOT}/etc/dropbear } diff --git a/scripts/build-test-packages.sh b/scripts/build-test-packages.sh @@ -46,8 +46,10 @@ MUSL () { --build=${CLFS_HOST} \ --host=${CLFS_TARGET} \ --target=${CLFS_TARGET} \ - --syslibdir=${CLFS_ROOT}/lib \ - --enable-warnings + --syslibdir=${CLFS_ROOT}/lib \ + --enable-optimize \ + --enable-warnings \ + --disable-static make && make install @@ -70,7 +72,8 @@ LIBSTDCXX () { --host=${CLFS_TARGET} \ --target=${CLFS_TARGET} \ --disable-nls \ - --disable-multilib + --disable-multilib \ + --disable-static make && make install } @@ -93,37 +96,21 @@ ZLIB () { EXTRACT "ZLIB" ZLIB "test-pkg-zlib" -## Libressl -LIBRESSL () { - ./configure \ - --prefix=${CLFS_ROOT}/usr \ - --build=${CLFS_HOST} \ - --host=${CLFS_TARGET} \ - --libdir=${CLFS_ROOT}/lib \ - --with-openssldir=${CLFS_ROOT}/etc/ssl - - make && make install -} -EXTRACT "LIBRESSL" LIBRESSL "test-pkg-libressl" - - -## Openssh -OPENSSH () { - install -v -m700 -d ${CLFS_ROOT}/var/lib/sshd +## Dropbear +DROPBEAR () { + sed -i 's/.*mandir.*//g' Makefile.in ./configure \ --prefix=${CLFS_ROOT}/usr \ --build=${CLFS_HOST} \ - --host=${CLFS_TARGET} \ - --sysconfdir=/etc/ssh \ - --with-md5-passwords \ - --with-privsep-path=/var/lib/sshd + --host=${CLFS_TARGET} - make && make install + 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 -v -m755 contrib/ssh-copy-id ${CLFS_ROOT}/usr/bin - install -v -m644 contrib/ssh-copy-id.1 ${CLFS_ROOT}/usr/share/man/man1 - install -v -m755 -d ${CLFS_ROOT}/usr/share/doc/openssh-${OPENSSH_VER} - install -v -m644 INSTALL LICENCE OVERVIEW README* ${CLFS_ROOT}/usr/share/doc/openssh-${OPENSSH_VER} + install -dv ${CLFS_ROOT}/etc/dropbear } -EXTRACT "OPENSSH" OPENSSH "test-pkg-openssh" +EXTRACT "DROPBEAR" DROPBEAR "test-pkg-dropbear" + diff --git a/wget-list.src b/wget-list.src @@ -1,21 +1,29 @@ +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 -https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz +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://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 +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 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 diff --git a/wget-list.src b/wget-list.src.bak