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:
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