mirror of
https://github.com/krglaws/MyLFS.git
synced 2025-07-26 15:46:59 +00:00
working on massive rewrite
This commit is contained in:
14
clean_img.sh
14
clean_img.sh
@ -9,10 +9,8 @@ then
|
||||
exit -1
|
||||
fi
|
||||
|
||||
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)"
|
||||
source $SCRIPT_DIR/config/global.sh
|
||||
|
||||
echo "Cleaning LFS image..."
|
||||
cd $(dirname $0)
|
||||
source ./config.sh
|
||||
|
||||
# unmount $LFS
|
||||
if [ -n "$(mount | grep $LFS)" ]
|
||||
@ -32,10 +30,14 @@ fi
|
||||
if [ -f $LFS_IMG ]
|
||||
then
|
||||
read -p "WARNING: This will delete ${LFS_IMG}. Continue? (Y/N): " CONFIRM
|
||||
[[ $CONFIRM == [yY] || $CONFIRM == [yY][eE][sS] ]] || exit
|
||||
[[ $CONFIRM == [yY] || $CONFIRM == [yY][eE][sS] ]] || { echo "Cancelled." && exit -1; }
|
||||
echo "Deleting ${LFS_IMG}..."
|
||||
rm $LFS_IMG
|
||||
fi
|
||||
|
||||
echo "Done."
|
||||
# delete logs
|
||||
if [ -n "$(ls ./logs)" ]
|
||||
then
|
||||
rm -rf ./logs/*log ./logs/*gz
|
||||
fi
|
||||
|
||||
|
37
config.sh
Normal file
37
config.sh
Normal file
@ -0,0 +1,37 @@
|
||||
# #######################
|
||||
# LFS Build Configuration
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
FULLPATH=$(cd $(dirname $0) && pwd)
|
||||
|
||||
export MAKEFLAGS=-j8
|
||||
export PACKAGE_LIST=$FULLPATH/pkgs.sh
|
||||
export PACKAGE_DIR=$FULLPATH/pkgs
|
||||
export LOG_DIR=$FULLPATH/logs
|
||||
export LFS=/mnt/lfs
|
||||
export LFS_TGT=$(uname -m)-lfs-linux-gnu
|
||||
export LFS_FS=ext4
|
||||
export LFS_IMG=$FULLPATH/lfs.img
|
||||
export LFS_IMG_SIZE=$((10*1024*1024*1024)) # 10 GiB
|
||||
export ROOT_PASSWD=password
|
||||
export RUN_TESTS=false
|
||||
export BUILDLOG_DIR=$FULLPATH/buildlogs
|
||||
export TESTLOG_DIR=$FULLPATH/testlogs
|
||||
export LFSHOSTNAME=lfs
|
||||
export LFSROOTLABEL=LFSROOT
|
||||
export LFSEFILABEL=LFSEFI
|
||||
export LFSFSTYPE=ext4
|
||||
|
||||
KEYS="MAKEFLAGS PACKAGE_LIST PACKAGE_DIR LOG_DIR"\
|
||||
" LFS LFS_TGT LFS_FS LFS_IMG LFS_IMG_SIZE ROOT_PASSWD RUN_TESTS TESTLOG_DIR"\
|
||||
" LFSHOSTNAME LFSROOTLABEL LFSEFILABEL LFSFSTYPE"
|
||||
|
||||
for KEY in $KEYS
|
||||
do
|
||||
if [ -z ${!KEY} ]
|
||||
then
|
||||
echo "ERROR: '$KEY' config is not set."
|
||||
exit -1
|
||||
fi
|
||||
done
|
||||
|
@ -1,38 +0,0 @@
|
||||
# LFS Build Configuration
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# This file should be sourced by the other scripts
|
||||
# that need these variables.
|
||||
|
||||
export CONF_DIR=$(cd $(dirname $BASH_SOURCE) && pwd)
|
||||
export MAIN_DIR=$(dirname $CONF_DIR)
|
||||
export GLOBAL_CONF=$CONF_DIR/global.sh
|
||||
export USER_CONF=$CONF_DIR/user.sh
|
||||
export MAKEFLAGS=-j4
|
||||
export PACKAGE_LIST=$CONF_DIR/pkgs.sh
|
||||
export LFS=/mnt/lfs
|
||||
export LFS_TGT=$(uname -m)-lfs-linux-gnu
|
||||
export LFS_FS=ext4
|
||||
export LFS_IMG=$MAIN_DIR/lfs.img
|
||||
export LFS_IMG_SIZE=$((10*1024*1024*1024)) # 10 GiB
|
||||
export LFS_USER=lfs
|
||||
export ROOT_PASSWD=password
|
||||
export RUN_TESTS=false
|
||||
export TESTLOG_DIR=/sources/tests
|
||||
export HOSTNAME=lfs
|
||||
export LFSROOTLABEL=lfsroot
|
||||
export LFSEFILABEL=lfsefi
|
||||
export LFSFSTYPE=ext4
|
||||
|
||||
KEYS="CONF_DIR MAIN_DIR GLOBAL_CONF USER_CONF MAKEFLAGS PACKAGE_LIST"\
|
||||
" LFS LFS_TGT LFS_FS LFS_IMG LFS_IMG_SIZE LFS_USER ROOT_PASSWD RUN_TESTS TESTLOG_DIR"\
|
||||
" HOSTNAME LFSROOTLABEL LFSEFILABEL LFSFSTYPE"
|
||||
|
||||
for KEY in $KEYS
|
||||
do
|
||||
if [ -z ${!KEY} ]
|
||||
then
|
||||
echo "ERROR: '$KEY' config is not set."
|
||||
exit -1
|
||||
fi
|
||||
done
|
||||
|
@ -1,31 +0,0 @@
|
||||
# LFS User shell configuration file.
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
set +h
|
||||
umask 022
|
||||
|
||||
PATH=/usr/bin
|
||||
if [ ! -L /bin ]
|
||||
then
|
||||
PATH=/bin:$PATH
|
||||
fi
|
||||
PATH=$LFS/tools/bin:$PATH
|
||||
|
||||
CONFIG_SITE=$LFS/usr/share/config.site
|
||||
LC_ALL=POSIX
|
||||
|
||||
function build_package {
|
||||
PACKAGE_NAME=$1
|
||||
BUILD_SCRIPT=$2
|
||||
BUILD_LOG=$3
|
||||
|
||||
echo -n "Building ${PACKAGE_NAME}... "
|
||||
if ! { $BUILD_SCRIPT &> $BUILD_LOG && rm $BUILD_LOG && echo "done."; }
|
||||
then
|
||||
echo "failed. Check $BUILD_LOG for more information."
|
||||
exit -1
|
||||
fi
|
||||
}
|
||||
|
||||
export -f build_package
|
||||
export LC_ALL PATH CONFIG_SITE
|
||||
|
2
logs/.gitignore
vendored
Normal file
2
logs/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
546
main.sh
546
main.sh
@ -1,30 +1,540 @@
|
||||
#!/usr/bin/env bash
|
||||
# main.sh
|
||||
# ~~~~~~~
|
||||
# This is the main entry point for this project.
|
||||
set -e
|
||||
|
||||
if [ "$UID" != "0" ]
|
||||
then
|
||||
echo "ERROR: $0 must be run as root."
|
||||
exit -1
|
||||
fi
|
||||
|
||||
cd $(dirname $0)
|
||||
|
||||
source ./config/global.sh
|
||||
source ./config.sh
|
||||
|
||||
function build_stage {
|
||||
local STAGE_NO=$1
|
||||
while read pkg;
|
||||
do
|
||||
eval $pkg
|
||||
export $(echo $pkg | cut -d"=" -f1)
|
||||
done < ./pkgs.sh
|
||||
|
||||
echo "Starting stage $STAGE_NO... "
|
||||
./clean_img.sh
|
||||
|
||||
{ ./stage$STAGE_NO/main.sh && echo "Completed stage $STAGE_NO."; } ||
|
||||
{ echo "Stage $STAGE_NO failed." && exit -1; }
|
||||
|
||||
# #########
|
||||
# Functions
|
||||
# ~~~~~~~~~
|
||||
|
||||
function compare_version {
|
||||
local MINVERS=$1
|
||||
local CURRVERS=$2
|
||||
local NDIGS=$(echo $MINVERS | tr . ' ' | wc -w)
|
||||
|
||||
for ((FIELD=1; FIELD < NDIGS; FIELD++))
|
||||
do
|
||||
MINDIGIT=$(echo $MINVERS | cut -d"." -f$FIELD)
|
||||
CURRDIGIT=$(echo $CURRVERS | cut -d"." -f$FIELD)
|
||||
if [[ "0x$CURRDIGIT" -gt "0x$MINDIGIT" ]]
|
||||
then
|
||||
return 0
|
||||
elif [[ "0x$CURRDIGIT" -eq "0x$MINDIGIT" ]]
|
||||
then
|
||||
continue
|
||||
else
|
||||
return -1
|
||||
fi
|
||||
done
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
for ((STAGE = 1; STAGE <= 6; STAGE++))
|
||||
function check_dependency {
|
||||
local PROG=$1
|
||||
local MINVERS=$2
|
||||
local CURRVERSFIELD=$3
|
||||
|
||||
if ! command -v $PROG 1 > /dev/null
|
||||
then
|
||||
echo "ERROR: '$PROG' not found"
|
||||
return -1
|
||||
fi
|
||||
|
||||
CURRVERS=$($PROG --version 2>&1 | head -n1 | cut -d" " -f$CURRVERSFIELD | cut -d"(" -f1 | cut -d"," -f1 | cut -d"-" -f1)
|
||||
CURRVERS=${CURRVERS%"${CURRVERS##*[0-9]}"}
|
||||
|
||||
if ! compare_version "$MINVERS" "$CURRVERS"
|
||||
then
|
||||
echo "ERROR: $PROG $CURRVERS does not satisfy minimum version $MINVERS"
|
||||
fi
|
||||
}
|
||||
|
||||
function get_packages {
|
||||
PACKAGE_URLS=$(cat $PACKAGE_LIST | cut -d"=" -f2)
|
||||
PACKAGES=$(ls ./pkgs)
|
||||
|
||||
# check if packages have already been downloaded
|
||||
if [ -z "$PACKAGES" ]
|
||||
then
|
||||
# no indent because here-doc
|
||||
wget --quiet --directory-prefix $PACKAGE_DIR --input-file - <<EOF
|
||||
$PACKAGE_URLS
|
||||
EOF
|
||||
fi
|
||||
|
||||
cp $PACKAGE_DIR/* $LFS/sources
|
||||
}
|
||||
|
||||
function install_static {
|
||||
FILENAME=$1
|
||||
FULLPATH="$LFS/$(basename $FILENAME | sed 's/__/\//g')"
|
||||
mkdir -p $(dirname $FULLPATH)
|
||||
cp $FILENAME $FULLPATH
|
||||
}
|
||||
|
||||
function install_template {
|
||||
FILENAME=$1
|
||||
FULLPATH="$LFS/$(basename $FILENAME | sed 's/__/\//g')"
|
||||
mkdir -p $(dirname $FULLPATH)
|
||||
cp $FILENAME $FULLPATH
|
||||
shift
|
||||
for var in $@
|
||||
do
|
||||
sed -i "s/$var/${!var}/g" $FULLPATH
|
||||
done
|
||||
}
|
||||
|
||||
function build_package {
|
||||
NAME=$1
|
||||
OVERRIDE=$2
|
||||
|
||||
echo -n "Building $NAME phase $PHASE... "
|
||||
|
||||
PKG_NAME=PKG_$([ -n "$OVERRIDE" ] && echo $OVERRIDE || echo $NAME | tr a-z A-Z)
|
||||
PKG_NAME=$(basename ${!PKG_NAME})
|
||||
|
||||
PATCH_NAME=PATCH_$([ -n "$OVERRIDE" ] && echo $OVERRIDE || echo $NAME | tr a-z A-Z)
|
||||
PATCH_NAME=$([ -n "${!PATCH_NAME}" ] && basename ${!PATCH_NAME} || echo "")
|
||||
|
||||
DIR_NAME=${PKG_NAME%.tar*}
|
||||
LOG_FILE=$LOG_DIR/${NAME}_phase${PHASE}.log
|
||||
|
||||
BUILD_INSTR="
|
||||
set -e
|
||||
pushd sources > /dev/null
|
||||
tar -xf $PKG_NAME
|
||||
cd $DIR_NAME
|
||||
$(cat ./phase${PHASE}/${NAME}.sh)
|
||||
popd
|
||||
rm -r sources/$DIR_NAME
|
||||
"
|
||||
|
||||
pushd $LFS > /dev/null
|
||||
if $CHROOT
|
||||
then
|
||||
if ! chroot "$LFS" /usr/bin/env -i \
|
||||
HOME=/root \
|
||||
TERM=$TERM \
|
||||
PATH=/usr/bin:/usr/sbin &> $LOG_FILE \
|
||||
LFS_TGT=$LFS_TGT \
|
||||
ROOT_PASSWD=$ROOT_PASSWD \
|
||||
RUN_TESTS=$RUN_TESTS \
|
||||
"$(cat $PACKAGE_LIST)" \
|
||||
/bin/bash +h -c "$BUILD_INSTR" &> $LOG_FILE
|
||||
then
|
||||
echo -e "\nERROR: $NAME Phase $PHASE failed:"
|
||||
tail $LOG_FILE
|
||||
return -1
|
||||
fi
|
||||
elif ! (eval "$BUILD_INSTR") &> $LOG_FILE
|
||||
then
|
||||
echo -e "\nERROR: $NAME Phase $PHASE failed:"
|
||||
tail $LOG_FILE
|
||||
return -1
|
||||
fi
|
||||
popd > /dev/null
|
||||
|
||||
(cd $LOG_DIR && gzip $LOG_FILE)
|
||||
|
||||
echo "done."
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
# #########################
|
||||
# Check system dependencies
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
EXIT_STATUS=0
|
||||
|
||||
echo -n "Checking system dependencies... "
|
||||
|
||||
if ! check_dependency bash 3.2 4; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency ld 2.13.1 7; then EXIT_STATUS=-1; fi # binutils
|
||||
if ! check_dependency bison 2.7 4; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency chown 6.9 4; then EXIT_STATUS=-1; fi # coreutils
|
||||
if ! check_dependency diff 2.8.1 4; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency find 4.2.31 4; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency gawk 4.0.1 3; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency gcc 4.8 4; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency g++ 4.8 4; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency grep 2.5.1a 4; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency gzip 1.3.12 2; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency m4 1.4.10 4; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency make 4.0 3; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency patch 2.5.4 3; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency python3 3.4 2; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency sed 4.1.5 4; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency tar 1.22 4; then EXIT_STATUS=-1; fi
|
||||
if ! check_dependency makeinfo 4.7 4; then EXIT_STATUS=-1; fi # texinfo
|
||||
if ! check_dependency xz 5.0.0 4; then EXIT_STATUS=-1; fi
|
||||
|
||||
# check that yacc is a link to bison
|
||||
if [ ! -h /usr/bin/yacc -a "$(readlink -f /usr/bin/yacc)"="/usr/bin/bison.yacc" ]
|
||||
then
|
||||
echo "ERROR: /usr/bin/yacc needs to be a link to /usr/bin/bison.yacc"
|
||||
EXIT_STATUS=-1
|
||||
fi
|
||||
|
||||
# check that awk is a link to gawk
|
||||
if [ ! -h /usr/bin/awk -a "$(readlink -f /usr/bin/awk)"="/usr/bin/gawk" ]
|
||||
then
|
||||
echo "ERROR: /usr/bin/awk needs to be a link to /usr/bin/gawk"
|
||||
EXIT_STATUS=-1
|
||||
fi
|
||||
|
||||
# check linux version
|
||||
MIN_LINUX_VERS=3.2
|
||||
LINUX_VERS=$(cat /proc/version | head -n1 | cut -d" " -f3 | cut -d"-" -f1)
|
||||
if ! compare_version "$MIN_LINUX_VERSION" "$LINUX_VERS"
|
||||
then
|
||||
echo "ERROR: Linux kernel version '$LINUX_VERS' does not satisfy minium version $MIN_LINUX_VERS"
|
||||
EXIT_STATUS=-1
|
||||
fi
|
||||
|
||||
# check perl version
|
||||
MIN_PERL_VERS=5.8.8
|
||||
PERL_VERS=$(perl -V:version | cut -d"'" -f2)
|
||||
if ! compare_version "$MIN_PERL_VERS" "$PERL_VERS"
|
||||
then
|
||||
echo "ERROR: Perl version '$PERL_VERS' does not satisfy minium version $MIN_PERL_VERS"
|
||||
EXIT_STATUS=-1
|
||||
fi
|
||||
|
||||
# check G++ compilation
|
||||
echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
|
||||
if [ ! -x dummy ]
|
||||
then
|
||||
echo "ERROR: g++ compilation failed"
|
||||
EXIT_STATUS=-1
|
||||
fi
|
||||
rm -f dummy.c dummy
|
||||
|
||||
echo "done."
|
||||
|
||||
[ "$EXIT_STATUS" == "0" ] || exit $EXIT_STATUS
|
||||
|
||||
|
||||
# ####################
|
||||
# Create OS image file
|
||||
# ~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
echo -n "Creating image file... "
|
||||
|
||||
# create image file
|
||||
fallocate -l$LFS_IMG_SIZE $LFS_IMG
|
||||
|
||||
# attach loop device
|
||||
LOOP=$(losetup -f)
|
||||
losetup $LOOP $LFS_IMG
|
||||
|
||||
# partition the device
|
||||
FDISK_STR="
|
||||
g # create GPT
|
||||
n # new partition
|
||||
# default 1st partition
|
||||
# default start sector (2048)
|
||||
+512M # 512 MiB
|
||||
t # modify parition type
|
||||
uefi # EFI type
|
||||
n # new partition
|
||||
# default 2nd partition
|
||||
# default start sector
|
||||
# default end sector
|
||||
w # write to device and quit
|
||||
"
|
||||
FDISK_STR=$(echo "$FDISK_STR" | sed 's/ *#.*//g')
|
||||
# fdisk fails to get kernel to re-read the partition table
|
||||
# so ignore non-zero exit code, and manually re-read
|
||||
set +e
|
||||
fdisk $LOOP &>> /dev/null <<EOF
|
||||
$FDISK_STR
|
||||
EOF
|
||||
set -e
|
||||
|
||||
# reattach loop device to re-read partition table
|
||||
losetup -d $LOOP
|
||||
sleep 1 # give the kernel a sec
|
||||
losetup -P $LOOP $LFS_IMG
|
||||
LOOP_P1=${LOOP}p1
|
||||
LOOP_P2=${LOOP}p2
|
||||
|
||||
# setup root partition
|
||||
mkfs -t $LFS_FS $LOOP_P2 &> /dev/null
|
||||
mkdir -p $LFS
|
||||
mount $LOOP_P2 $LFS
|
||||
|
||||
# setup EFI partition
|
||||
mkfs.vfat $LOOP_P1 &> /dev/null
|
||||
mkdir -p $LFS/boot/efi
|
||||
mount -t vfat $LOOP_P1 $LFS/boot/efi
|
||||
|
||||
# label the partitions
|
||||
dosfslabel $LOOP_P1 $LFSEFILABEL &> /dev/null
|
||||
e2label $LOOP_P2 $LFSROOTLABEL
|
||||
|
||||
echo "done."
|
||||
|
||||
|
||||
# #######################
|
||||
# Basic file system setup
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
echo -n "Creating basic directory layout... "
|
||||
|
||||
mkdir -p $LFS/{bin,boot,dev,etc,home,lib64,media,mnt,opt,proc,run,srv,sys,tools,usr,var}
|
||||
mkdir -p $LFS/boot/grub
|
||||
mkdir -p $LFS/etc/{modprobe.d,opt,sysconfig}
|
||||
mkdir -p $LFS/media/{cdrom,floppy}
|
||||
mkdir -p $LFS/usr/{bin,lib/{,firmware},sbin}
|
||||
mkdir -p $LFS/usr/local/{bin,include,lib,sbin,share,src}
|
||||
mkdir -p $LFS/usr/local/share/{color,dict,doc,info,locale,man,misc,terminfo,zoneinfo}
|
||||
mkdir -p $LFS/usr/local/share/man/{1..8}
|
||||
mkdir -p $LFS/var/{cache,lib,local,log,mail,opt,spool}
|
||||
mkdir -p $LFS/var/lib/{color,misc,locate}
|
||||
|
||||
install -d -m 0750 $LFS/root
|
||||
install -d -m 1777 $LFS/tmp $LFS/var/tmp
|
||||
|
||||
# removed at end of build
|
||||
mkdir -p $LFS/home/tester
|
||||
chown 101:101 $LFS/home/tester
|
||||
mkdir -p $LFS/sources
|
||||
|
||||
# create symlinks
|
||||
for i in bin lib sbin
|
||||
do
|
||||
build_stage $STAGE
|
||||
ln -s usr/$i $LFS/$i
|
||||
done
|
||||
ln -s /run $LFS/var/run
|
||||
ln -s /run/lock $LFS/var/lock
|
||||
ln -s /proc/self/mounts $LFS/etc/mtab
|
||||
|
||||
# install static files
|
||||
echo $LFSHOSTNAME > $LFS/etc/hostname
|
||||
for file in ./static/*
|
||||
do
|
||||
install_static $file
|
||||
done
|
||||
|
||||
# install templates
|
||||
install_template ./templates/boot__grub__grub.cfg LFSROOTLABEL
|
||||
install_template ./templates/etc__fstab LFSROOTLABEL LFSEFILABEL LFSFSTYPE
|
||||
install_template ./templates/etc__hosts LFSHOSTNAME
|
||||
|
||||
# make special device files
|
||||
mknod -m 600 $LFS/dev/console c 5 1
|
||||
mknod -m 666 $LFS/dev/null c 1 3
|
||||
|
||||
# create login log files
|
||||
touch $LFS/var/log/{btmp,lastlog,faillog,wtmp}
|
||||
chgrp 13 $LFS/var/log/lastlog
|
||||
chmod 664 $LFS/var/log/lastlog
|
||||
chmod 600 $LFS/var/log/btmp
|
||||
|
||||
# mount stuff from the host onto the target disk
|
||||
mount --bind /dev $LFS/dev
|
||||
mount --bind /dev/pts $LFS/dev/pts
|
||||
mount -t proc proc $LFS/proc
|
||||
mount -t sysfs sysfs $LFS/sys
|
||||
mount -t tmpfs tmpfs $LFS/run
|
||||
|
||||
if [ -h $LFS/dev/shm ]; then
|
||||
mkdir -p $LFS/$(readlink $LFS/dev/shm)
|
||||
fi
|
||||
|
||||
echo "done."
|
||||
|
||||
echo -n "Downloading packages to $LFS/sources... "
|
||||
get_packages
|
||||
echo "done."
|
||||
|
||||
|
||||
# ######################
|
||||
# Setup environment vars
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
TMP_PATH=$PATH
|
||||
PATH=/usr/bin
|
||||
if [ ! -L /bin ];
|
||||
then
|
||||
PATH=/bin:$PATH;
|
||||
fi
|
||||
PATH=$LFS/tools/bin:$PATH
|
||||
CONFIG_SITE=$LFS/usr/share/config.site
|
||||
LC_ALL=POSIX
|
||||
export LC_ALL PATH CONFIG_SITE
|
||||
|
||||
echo -e \
|
||||
"# #######\n"\
|
||||
"# Phase 1\n"\
|
||||
"# ~~~~~~~"
|
||||
|
||||
CHROOT=false
|
||||
PHASE=1
|
||||
build_package binutils
|
||||
build_package gcc
|
||||
build_package linux_headers LINUX
|
||||
build_package glibc
|
||||
build_package libstdcpp GCC
|
||||
|
||||
echo -e \
|
||||
"# #######\n"\
|
||||
"# Phase 2\n"\
|
||||
"# ~~~~~~~"
|
||||
|
||||
PHASE=2
|
||||
build_package m4
|
||||
build_package ncurses
|
||||
build_package bash
|
||||
build_package coreutils
|
||||
build_package diffutils
|
||||
build_package file
|
||||
build_package findutils
|
||||
build_package gawk
|
||||
build_package grep
|
||||
build_package gzip
|
||||
build_package make
|
||||
build_package patch
|
||||
build_package sed
|
||||
build_package tar
|
||||
build_package xz
|
||||
build_package binutils
|
||||
build_package gcc
|
||||
|
||||
echo -e \
|
||||
"# #######\n"\
|
||||
"# Phase 3\n"\
|
||||
"# ~~~~~~~"
|
||||
|
||||
PATH=$TMP_PATH
|
||||
CHROOT=true
|
||||
PHASE=3
|
||||
build_package libstdcpp GCC
|
||||
build_package gettext
|
||||
build_package bison
|
||||
build_package perl
|
||||
build_package python
|
||||
build_package texinfo
|
||||
build_package utillinux
|
||||
|
||||
# Cleanup
|
||||
rm -rf $LFS/usr/share/{info,man,doc}/*
|
||||
find $LFS/usr/{lib,libexec} -name \*.la -delete
|
||||
rm -rf $LFS/tools
|
||||
|
||||
echo -e \
|
||||
"# #######\n"\
|
||||
"# Phase 4\n"\
|
||||
"# ~~~~~~~"
|
||||
|
||||
exit
|
||||
|
||||
PHASE=4
|
||||
build_package manpages
|
||||
build_package ianaetc
|
||||
build_package glibc
|
||||
build_package zlib
|
||||
build_package bzip2
|
||||
build_package xz
|
||||
build_package zstd
|
||||
build_package file
|
||||
build_package readline
|
||||
build_package m4
|
||||
build_package bc
|
||||
build_package flex
|
||||
build_package tcl
|
||||
build_package expect
|
||||
build_package dejagnu
|
||||
build_package binutils
|
||||
build_package gmp
|
||||
build_package mpfr
|
||||
build_package mpc
|
||||
build_package attr
|
||||
build_package acl
|
||||
build_package libcap
|
||||
build_package shadow
|
||||
build_package gcc
|
||||
build_package pkgconfig
|
||||
build_package ncurses
|
||||
build_package sed
|
||||
build_package psmisc
|
||||
build_package gettext
|
||||
build_package bison
|
||||
build_package grep
|
||||
build_package bash
|
||||
build_package libtool
|
||||
build_package gdbm
|
||||
build_package gperf
|
||||
build_package expat
|
||||
build_package inetutils
|
||||
build_package less
|
||||
build_package perl
|
||||
build_package xmlparser
|
||||
build_package intltool
|
||||
build_package autoconf
|
||||
build_package automake
|
||||
build_package openssl
|
||||
build_package kmod
|
||||
build_package elfutils
|
||||
build_package libffi
|
||||
build_package python
|
||||
build_package ninja
|
||||
build_package meson
|
||||
build_package coreutils
|
||||
build_package check
|
||||
build_package diffutils
|
||||
build_package gawk
|
||||
build_package findutils
|
||||
build_package groff
|
||||
# Skipping GRUB MBR build since we are using UEFI
|
||||
build_package gzip
|
||||
build_package iproute2
|
||||
build_package kbd
|
||||
build_package libpipeline
|
||||
build_package make
|
||||
build_package patch
|
||||
build_package tar
|
||||
build_package texinfo
|
||||
build_package vim
|
||||
build_package eudev
|
||||
build_package mandb
|
||||
build_package procps
|
||||
build_package utillinux
|
||||
build_package e2fsprogs
|
||||
build_package sysklogd
|
||||
build_package sysvinit
|
||||
build_package lfsbootscripts
|
||||
|
||||
# UEFI Boot Dependencies
|
||||
build_pakcage popt
|
||||
build_package mandoc
|
||||
build_package efivar
|
||||
build_package efibootmgr
|
||||
build_package grub
|
||||
|
||||
# delete tmp files created during builds
|
||||
rm -rf $LFS/tmp/*
|
||||
|
||||
# delete libtool archives (only useful when linking to static libs)
|
||||
find $LFS/usr/lib $LFS/usr/libexec -name \*.la -delete
|
||||
|
||||
# delete cross compiler tools from previous stages
|
||||
find $LFS/usr -depth -name $LFS_TGT\* | xargs rm -rf
|
||||
|
||||
# remove 'tester' user account
|
||||
rm -r $LFS/home/tester
|
||||
sed -i 's/^.*tester.*$//' $LFS/etc/{passwd,group}
|
||||
|
||||
|
15
phase1/binutils.sh
Normal file
15
phase1/binutils.sh
Normal file
@ -0,0 +1,15 @@
|
||||
# Bintuils Phase 1
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
../configure \
|
||||
--prefix=$LFS/tools \
|
||||
--with-sysroot=$LFS \
|
||||
--target=$LFS_TGT \
|
||||
--disable-nls \
|
||||
--disable-werror
|
||||
|
||||
make
|
||||
|
||||
make install
|
||||
|
25
stage3/gcc.sh → phase1/gcc.sh
Executable file → Normal file
25
stage3/gcc.sh → phase1/gcc.sh
Executable file → Normal file
@ -1,19 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
# GCC Stage 3
|
||||
# ~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd $LFS/sources
|
||||
|
||||
eval "$(grep "PKG_GCC\|PKG_MPFR\|PKG_GMP\|PKG_MPC" $PACKAGE_LIST)"
|
||||
PKG_GCC=$(basename $PKG_GCC)
|
||||
# GCC Phase 1
|
||||
PKG_MPFR=$(basename $PKG_MPFR)
|
||||
PKG_GMP=$(basename $PKG_GMP)
|
||||
PKG_MPC=$(basename $PKG_MPC)
|
||||
|
||||
tar -xf $PKG_GCC
|
||||
cd ${PKG_GCC%.tar*}
|
||||
|
||||
tar -xf ../$PKG_MPFR
|
||||
mv ${PKG_MPFR%.tar*} mpfr
|
||||
|
||||
@ -24,9 +13,9 @@ tar -xf ../$PKG_MPC
|
||||
mv ${PKG_MPC%.tar*} mpc
|
||||
|
||||
case $(uname -m) in
|
||||
x86_64)
|
||||
sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
|
||||
;;
|
||||
x86_64)
|
||||
sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
|
||||
;;
|
||||
esac
|
||||
|
||||
mkdir build
|
||||
@ -57,9 +46,7 @@ make
|
||||
make install
|
||||
|
||||
cd ..
|
||||
|
||||
cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
|
||||
`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/install-tools/include/limits.h
|
||||
|
||||
cd $LFS/sources
|
||||
rm -rf ${PKG_GCC%.tar*}
|
||||
$(dirname $($LFS_TGT-gcc -print-libgcc-file-name))/install-tools/include/limits.h
|
||||
|
20
stage3/glibc.sh → phase1/glibc.sh
Executable file → Normal file
20
stage3/glibc.sh → phase1/glibc.sh
Executable file → Normal file
@ -1,17 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Glibc Stage 3
|
||||
# ~~~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd $LFS/sources
|
||||
|
||||
eval "$(grep "PKG_GLIBC\|PATCH_GLIBC" $PACKAGE_LIST)"
|
||||
PKG_GLIBC=$(basename $PKG_GLIBC)
|
||||
PATCH_GLIBC=$(basename $PATCH_GLIBC)
|
||||
|
||||
tar -xf $PKG_GLIBC
|
||||
cd ${PKG_GLIBC%.tar*}
|
||||
|
||||
# Glibc Phase 1
|
||||
case $(uname -m) in
|
||||
i?86)
|
||||
ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
|
||||
@ -45,7 +32,7 @@ sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd
|
||||
# check that everything is good
|
||||
echo 'int main(){}' > dummy.c
|
||||
$LFS_TGT-gcc dummy.c
|
||||
OUTPUT=$(readelf -l a.out | grep '/ld-linux')
|
||||
OUTPUT=$(readelf -l a.out | grep '/ld-linux')
|
||||
EXPECTED='[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]'
|
||||
if [[ "$OUTPUT" != *"${EXPECTED}"* ]]
|
||||
then
|
||||
@ -58,6 +45,3 @@ rm dummy.c a.out
|
||||
|
||||
$LFS/tools/libexec/gcc/$LFS_TGT/11.2.0/install-tools/mkheaders
|
||||
|
||||
cd $LFS/sources
|
||||
rm -rf ${PKG_GLIBC%.tar*}
|
||||
|
17
stage3/libstdcpp.sh → phase1/libstdcpp.sh
Executable file → Normal file
17
stage3/libstdcpp.sh → phase1/libstdcpp.sh
Executable file → Normal file
@ -1,16 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Libstdc++ Stage 3
|
||||
# ~~~~~~~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd $LFS/sources
|
||||
|
||||
eval "$(grep PKG_GCC $PACKAGE_LIST)"
|
||||
PKG_GCC=$(basename $PKG_GCC)
|
||||
|
||||
tar -xf $PKG_GCC
|
||||
cd ${PKG_GCC%.tar*}
|
||||
|
||||
# Libstdc++ Phase 1
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
@ -26,6 +14,3 @@ cd build
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
||||
cd $LFS/sources
|
||||
rm -rf ${PKG_GCC%.tar*}
|
||||
|
8
phase1/linux_headers.sh
Normal file
8
phase1/linux_headers.sh
Normal file
@ -0,0 +1,8 @@
|
||||
# Linux API headers Phase 1
|
||||
make mrproper
|
||||
make headers
|
||||
|
||||
find usr/include -name '.*' -delete
|
||||
rm usr/include/Makefile
|
||||
cp -r usr/include $LFS/usr
|
||||
|
17
stage4/bash.sh → phase2/bash.sh
Executable file → Normal file
17
stage4/bash.sh → phase2/bash.sh
Executable file → Normal file
@ -1,16 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Bash Stage 4
|
||||
# ~~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd $LFS/sources
|
||||
|
||||
eval "$(grep BASH $PACKAGE_LIST)"
|
||||
PKG_BASH=$(basename $PKG_BASH)
|
||||
|
||||
tar -xf $PKG_BASH
|
||||
cd ${PKG_BASH%.tar*}
|
||||
|
||||
# Bash Phase 2
|
||||
./configure --prefix=/usr \
|
||||
--build=$(support/config.guess) \
|
||||
--host=$LFS_TGT \
|
||||
@ -20,6 +8,3 @@ make
|
||||
make DESTDIR=$LFS install
|
||||
ln -sv bash $LFS/bin/sh
|
||||
|
||||
cd $LFS/sources
|
||||
rm -rf ${PKG_BASH%.tar*}
|
||||
|
17
stage4/binutils.sh → phase2/binutils.sh
Executable file → Normal file
17
stage4/binutils.sh → phase2/binutils.sh
Executable file → Normal file
@ -1,16 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Binutils Stage 4
|
||||
# ~~~~~~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd $LFS/sources
|
||||
|
||||
eval "$(grep BINUTILS $PACKAGE_LIST)"
|
||||
PKG_BINUTILS=$(basename $PKG_BINUTILS)
|
||||
|
||||
tar -xf $PKG_BINUTILS
|
||||
cd ${PKG_BINUTILS%.tar*}
|
||||
|
||||
# Binutils Phase 2
|
||||
sed '6009s/$add_dir//' -i ltmain.sh
|
||||
|
||||
mkdir build
|
||||
@ -28,6 +16,3 @@ cd build
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
||||
cd $LFS/sources
|
||||
rm -rf ${PKG_BINUTILS%.tar*}
|
||||
|
15
phase2/coreutils.sh
Normal file
15
phase2/coreutils.sh
Normal file
@ -0,0 +1,15 @@
|
||||
# Coreutils Phase 2
|
||||
./configure --prefix=/usr \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(build-aux/config.guess) \
|
||||
--enable-install-program=hostname \
|
||||
--enable-no-install-program=kill,uptime
|
||||
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
||||
mv $LFS/usr/bin/chroot $LFS/usr/sbin
|
||||
mkdir -p $LFS/usr/share/man/man8
|
||||
mv $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8
|
||||
sed -i 's/"1"/"8"/' $LFS/usr/share/man/man8/chroot.8
|
||||
|
6
phase2/diffutils.sh
Normal file
6
phase2/diffutils.sh
Normal file
@ -0,0 +1,6 @@
|
||||
# Diffutils Phase 2
|
||||
./configure --prefix=/usr --host=$LFS_TGT
|
||||
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
16
stage4/file.sh → phase2/file.sh
Executable file → Normal file
16
stage4/file.sh → phase2/file.sh
Executable file → Normal file
@ -1,16 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# File Stage 4
|
||||
# ~~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd $LFS/sources
|
||||
|
||||
eval "$(grep FILE $PACKAGE_LIST)"
|
||||
PKG_FILE=$(basename $PKG_FILE)
|
||||
|
||||
tar -xf $PKG_FILE
|
||||
cd ${PKG_FILE%.tar*}
|
||||
|
||||
# File Phase 2
|
||||
mkdir build
|
||||
pushd build
|
||||
../configure --disable-bzlib \
|
||||
@ -24,5 +12,3 @@ popd
|
||||
make FILE_COMPILE=$(pwd)/build/src/file
|
||||
make DESTDIR=$LFS install
|
||||
|
||||
cd $LFS/sources
|
||||
rm -rf ${PKG_FILE%.tar*}
|
9
phase2/findutils.sh
Normal file
9
phase2/findutils.sh
Normal file
@ -0,0 +1,9 @@
|
||||
# Findutils Phase 2
|
||||
./configure --prefix=/usr \
|
||||
--localstatedir=/var/lib/locate \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(build-aux/config.guess)
|
||||
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
10
phase2/gawk.sh
Normal file
10
phase2/gawk.sh
Normal file
@ -0,0 +1,10 @@
|
||||
# Gawk Phase 2
|
||||
sed -i 's/extras//' Makefile.in
|
||||
|
||||
./configure --prefix=/usr \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(build-aux/config.guess)
|
||||
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
16
stage4/gcc.sh → phase2/gcc.sh
Executable file → Normal file
16
stage4/gcc.sh → phase2/gcc.sh
Executable file → Normal file
@ -1,19 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
# GCC Stage 4
|
||||
# ~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd $LFS/sources
|
||||
|
||||
eval "$(grep "PKG_GCC\|PKG_MPFR\|PKG_GMP\|PKG_MPC" $PACKAGE_LIST)"
|
||||
PKG_GCC=$(basename $PKG_GCC)
|
||||
# GCC Phase 2
|
||||
PKG_MPFR=$(basename $PKG_MPFR)
|
||||
PKG_GMP=$(basename $PKG_GMP)
|
||||
PKG_MPC=$(basename $PKG_MPC)
|
||||
|
||||
tar -xf $PKG_GCC
|
||||
cd ${PKG_GCC%.tar*}
|
||||
|
||||
tar -xf ../$PKG_MPFR
|
||||
mv ${PKG_MPFR%.tar*} mpfr
|
||||
|
||||
@ -58,6 +47,3 @@ make DESTDIR=$LFS install
|
||||
|
||||
ln -s gcc $LFS/usr/bin/cc
|
||||
|
||||
cd $LFS/sources
|
||||
rm -rf ${PKG_GCC%.tar*}
|
||||
|
6
phase2/grep.sh
Normal file
6
phase2/grep.sh
Normal file
@ -0,0 +1,6 @@
|
||||
# Grep Phase 2
|
||||
./configure --prefix=/usr \
|
||||
--host=$LFS_TGT
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
6
phase2/gzip.sh
Normal file
6
phase2/gzip.sh
Normal file
@ -0,0 +1,6 @@
|
||||
# Gzip Phase 2
|
||||
./configure --prefix=/usr --host=$LFS_TGT
|
||||
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
8
phase2/m4.sh
Normal file
8
phase2/m4.sh
Normal file
@ -0,0 +1,8 @@
|
||||
# M4 Phase 2
|
||||
./configure --prefix=/usr \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(build-aux/config.guess)
|
||||
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
9
phase2/make.sh
Normal file
9
phase2/make.sh
Normal file
@ -0,0 +1,9 @@
|
||||
# Make Phase 2
|
||||
./configure --prefix=/usr \
|
||||
--without-guile \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(build-aux/config.guess)
|
||||
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
17
stage4/ncurses.sh → phase2/ncurses.sh
Executable file → Normal file
17
stage4/ncurses.sh → phase2/ncurses.sh
Executable file → Normal file
@ -1,16 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# ncurses Stage 4
|
||||
# ~~~~~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd $LFS/sources
|
||||
|
||||
eval "$(grep NCURSES $PACKAGE_LIST)"
|
||||
PKG_NCURSES=$(basename $PKG_NCURSES)
|
||||
|
||||
tar -xf $PKG_NCURSES
|
||||
cd ${PKG_NCURSES%.tar*}
|
||||
|
||||
# ncurses Phase 2
|
||||
sed -i s/mawk// configure
|
||||
|
||||
mkdir build
|
||||
@ -36,6 +24,3 @@ make
|
||||
make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
|
||||
echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so
|
||||
|
||||
cd $LFS/sources
|
||||
rm -rf ${PKG_NCURSES%.tar*}
|
||||
|
8
phase2/patch.sh
Normal file
8
phase2/patch.sh
Normal file
@ -0,0 +1,8 @@
|
||||
# Patch Phase 2
|
||||
./configure --prefix=/usr \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(build-aux/config.guess)
|
||||
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
7
phase2/sed.sh
Normal file
7
phase2/sed.sh
Normal file
@ -0,0 +1,7 @@
|
||||
# Sed Phase 2
|
||||
./configure --prefix=/usr \
|
||||
--host=$LFS_TGT
|
||||
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
8
phase2/tar.sh
Normal file
8
phase2/tar.sh
Normal file
@ -0,0 +1,8 @@
|
||||
# Tar Phase 2
|
||||
./configure --prefix=/usr \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(build-aux/config.guess)
|
||||
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
17
stage4/xz.sh → phase2/xz.sh
Executable file → Normal file
17
stage4/xz.sh → phase2/xz.sh
Executable file → Normal file
@ -1,16 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Xz Stage 4
|
||||
# ~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd $LFS/sources
|
||||
|
||||
eval "$(grep XZ $PACKAGE_LIST)"
|
||||
PKG_XZ=$(basename $PKG_XZ)
|
||||
|
||||
tar -xf $PKG_XZ
|
||||
cd ${PKG_XZ%.tar*}
|
||||
|
||||
# Xz Phase 2
|
||||
./configure --prefix=/usr \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(build-aux/config.guess) \
|
||||
@ -20,6 +8,3 @@ cd ${PKG_XZ%.tar*}
|
||||
make
|
||||
make DESTDIR=$LFS install
|
||||
|
||||
cd $LFS/sources
|
||||
rm -rf ${PKG_XZ%.tar*}
|
||||
|
7
phase3/bison.sh
Normal file
7
phase3/bison.sh
Normal file
@ -0,0 +1,7 @@
|
||||
# Bison Phase 3
|
||||
./configure --prefix=/usr \
|
||||
--docdir=/usr/share/doc/${PKG_BISON%.tar*}
|
||||
|
||||
make
|
||||
make install
|
||||
|
7
phase3/gettext.sh
Normal file
7
phase3/gettext.sh
Normal file
@ -0,0 +1,7 @@
|
||||
# Gettext Phase 3
|
||||
./configure --disable-shared
|
||||
|
||||
make
|
||||
|
||||
cp gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin
|
||||
|
@ -1,16 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Libstdc++ Stage 5
|
||||
# ~~~~~~~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd /sources
|
||||
|
||||
eval "$(grep PKG_GCC $PACKAGE_LIST)"
|
||||
PKG_GCC=$(basename $PKG_GCC)
|
||||
|
||||
tar -xf $PKG_GCC
|
||||
cd ${PKG_GCC%.tar*}
|
||||
|
||||
# Libstdc++ Phase 3
|
||||
ln -s gthr-posix.h libgcc/gthr-default.h
|
||||
|
||||
mkdir build
|
||||
@ -18,15 +6,12 @@ cd build
|
||||
|
||||
../libstdc++-v3/configure \
|
||||
CXXFLAGS="-g -O2 -D_GNU_SOURCE" \
|
||||
--host=$LFS_TGT \
|
||||
--prefix=/usr \
|
||||
--disable-multilib \
|
||||
--disable-nls \
|
||||
--disable-libstdcxx-pch \
|
||||
--host=$LFS_TGT \
|
||||
--disable-libstdcxx-pch
|
||||
|
||||
make
|
||||
make install
|
||||
|
||||
cd /sources
|
||||
rm -rf ${PKG_GCC%.tar*}
|
||||
|
@ -1,16 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Perl Stage 5
|
||||
# ~~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd /sources
|
||||
|
||||
eval "$(grep PERL $PACKAGE_LIST)"
|
||||
PKG_PERL=$(basename $PKG_PERL)
|
||||
|
||||
tar -xf $PKG_PERL
|
||||
cd ${PKG_PERL%.tar*}
|
||||
|
||||
# Perl Phase 3
|
||||
sh Configure -des \
|
||||
-Dprefix=/usr \
|
||||
-Dvendorprefix=/usr \
|
||||
@ -24,6 +12,3 @@ sh Configure -des \
|
||||
make
|
||||
make install
|
||||
|
||||
cd /sources
|
||||
rm -rf ${PKG_PERL%.tar*}
|
||||
|
8
phase3/python.sh
Normal file
8
phase3/python.sh
Normal file
@ -0,0 +1,8 @@
|
||||
# Python Phase 3
|
||||
./configure --prefix=/usr \
|
||||
--enable-shared \
|
||||
--without-ensurepip
|
||||
|
||||
make
|
||||
make install
|
||||
|
9
phase3/texinfo.sh
Normal file
9
phase3/texinfo.sh
Normal file
@ -0,0 +1,9 @@
|
||||
# Texinfo Phase 3
|
||||
sed -e 's/__attribute_nonnull__/__nonnull/' \
|
||||
-i gnulib/lib/malloc/dynarray-skeleton.c
|
||||
|
||||
./configure --prefix=/usr
|
||||
|
||||
make
|
||||
make install
|
||||
|
@ -1,16 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Util Linux Stage 5
|
||||
# ~~~~~~~~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd /sources
|
||||
|
||||
eval "$(grep UTILLINUX $PACKAGE_LIST)"
|
||||
PKG_UTILLINUX=$(basename $PKG_UTILLINUX)
|
||||
|
||||
tar -xf $PKG_UTILLINUX
|
||||
cd ${PKG_UTILLINUX%.tar*}
|
||||
|
||||
# Util Linux Phase 3
|
||||
mkdir -p /var/lib/hwclock
|
||||
|
||||
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
|
||||
@ -30,6 +18,3 @@ mkdir -p /var/lib/hwclock
|
||||
make
|
||||
make install
|
||||
|
||||
cd /sources
|
||||
rm -rf ${PKG_UTILLINUX%.tar*}
|
||||
|
@ -1,17 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Bzip2 Stage 6
|
||||
# ~~~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd /sources
|
||||
|
||||
eval "$(grep BZIP2 $PACKAGE_LIST)"
|
||||
PKG_BZIP2=$(basename $PKG_BZIP2)
|
||||
PATCH_BZIP2=$(basename $PATCH_BZIP2)
|
||||
|
||||
tar -xf $PKG_BZIP2
|
||||
cd ${PKG_BZIP2%.tar*}
|
||||
|
||||
# Bzip2 Phase 4
|
||||
patch -Np1 -i ../$PATCH_BZIP2
|
||||
|
||||
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
|
||||
@ -30,6 +17,3 @@ for i in /usr/bin/{bzcat,bunzip2}; do
|
||||
done
|
||||
rm -f /usr/lib/libbz2.a
|
||||
|
||||
cd /sources
|
||||
rm -rf ${PKG_BZIP2%.tar*}
|
||||
|
14
phase4/file.sh
Normal file
14
phase4/file.sh
Normal file
@ -0,0 +1,14 @@
|
||||
# File Phase 4
|
||||
./configure --prefix=/usr
|
||||
|
||||
make
|
||||
|
||||
if $RUN_TESTS
|
||||
then
|
||||
set +e
|
||||
make check
|
||||
set -e
|
||||
fi
|
||||
|
||||
make install
|
||||
|
@ -1,17 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# Glibc Stage6
|
||||
# ~~~~~~~~~~~~
|
||||
set -e
|
||||
|
||||
cd /sources
|
||||
|
||||
eval "$(grep GLIBC $PACKAGE_LIST)"
|
||||
PKG_GLIBC=$(basename $PKG_GLIBC)
|
||||
|
||||
tar -xf $PKG_GLIBC
|
||||
cd ${PKG_GLIBC%.tar*}
|
||||
|
||||
patch -Np1 -i ../glibc-2.35-fhs-1.patch
|
||||
# Glibc Phase 4
|
||||
patch -Np1 -i ../$PATCH_GLIBC
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
@ -30,7 +18,7 @@ make
|
||||
if $RUN_TESTS
|
||||
then
|
||||
set +e
|
||||
make check &> $TESTLOG_DIR/glibc.log
|
||||
make check
|
||||
set -e
|
||||
fi
|
||||
|
||||
@ -79,8 +67,6 @@ localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS
|
||||
localedef -i zh_TW -f UTF-8 zh_TW.UTF-8
|
||||
|
||||
cat > /etc/nsswitch.conf << "EOF"
|
||||
# Begin /etc/nsswitch.conf
|
||||
|
||||
passwd: files
|
||||
group: files
|
||||
shadow: files
|
||||
@ -92,8 +78,6 @@ protocols: files
|
||||
services: files
|
||||
ethers: files
|
||||
rpc: files
|
||||
|
||||
# End /etc/nsswitch.conf
|
||||
EOF
|
||||
|
||||
tar -xf ../../tzdata2021e.tar.gz
|
||||
@ -115,12 +99,7 @@ unset ZONEINFO
|
||||
ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
|
||||
|
||||
cat > /etc/ld.so.conf << "EOF"
|
||||
# Begin /etc/ld.so.conf
|
||||
/usr/local/lib
|
||||
/opt/lib
|
||||
|
||||
EOF
|
||||
|
||||
cd /sources
|
||||
rm -rf ${PKG_GLIBC%.tar*}
|
||||
|
3
phase4/ianaetc.sh
Normal file
3
phase4/ianaetc.sh
Normal file
@ -0,0 +1,3 @@
|
||||
# Iana-Etc Phase 4
|
||||
cp services protocols /etc
|
||||
|
3
phase4/manpages.sh
Normal file
3
phase4/manpages.sh
Normal file
@ -0,0 +1,3 @@
|
||||
# Man Pages Phase 4
|
||||
make prefix=/usr install
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user