This commit is contained in:
emmett1 2018-12-01 00:12:45 +08:00
parent 54cc3bca2b
commit a28eebe0d8
144 changed files with 5984 additions and 0 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
*.iso
toolchain/log
toolchain/src

25
01-toolchain Executable file
View file

@ -0,0 +1,25 @@
#!/bin/bash -e
source $(dirname $0)/toolchain/functions
for script in $(ls toolchain | grep ^[0-9]); do
if [ "$1" = "fetch" ]; then
$(dirname $0)/toolchain/$script "$1"
elif [ -f /tools/"$script" ]; then
echo "--- $script skipped ---"
else
echo "*** $script ***"
$(dirname $0)/toolchain/$script
echo; echo "*** $script done ***"; echo
[ "$1" = $(echo $script | cut -d - -f1) ] && exit
fi
done
[ "$1" = "fetch" ] && exit 0
sudo chown -Rv 0:0 $LFS
echo
echo "**************************************************"
echo "********* Toolchain build complete *********"
echo "**************************************************"

194
02-lfs-base Executable file
View file

@ -0,0 +1,194 @@
#!/bin/bash
LFS=/mnt/lfs
lfs_dirs() {
mkdir -pv $LFS/{dev,proc,sys,run}
mknod -m 600 $LFS/dev/console c 5 1
mknod -m 666 $LFS/dev/null c 1 3
mkdir -pv $LFS/{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt}
mkdir -pv $LFS/{media/{floppy,cdrom},sbin,srv,var}
install -dv -m 0750 $LFS/root
install -dv -m 1777 $LFS/tmp $LFS/var/tmp
mkdir -pv $LFS/usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv $LFS/usr/{,local/}share/{color,dict,doc,info,locale,man}
mkdir -v $LFS/usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -v $LFS/usr/libexec
mkdir -pv $LFS/usr/{,local/}share/man/man{1..8}
case $(uname -m) in
x86_64) mkdir -v $LFS/lib64 ;;
esac
mkdir -v $LFS/var/{log,mail,spool}
ln -sv /run $LFS/var/run
ln -sv /run/lock $LFS/var/lock
mkdir -pv $LFS/var/{opt,cache,lib/{color,misc,locate},local}
ln -sv /tools/bin/{bash,cat,dd,echo,ln,pwd,rm,stty} $LFS/bin
ln -sv /tools/bin/{env,install,perl} $LFS/usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} $LFS/usr/lib
ln -sv /tools/lib/libstdc++.{a,so{,.6}} $LFS/usr/lib
for lib in blkid lzma mount uuid
do
ln -sv /tools/lib/lib$lib.so* $LFS/usr/lib
done
ln -svf /tools/include/blkid $LFS/usr/include
ln -svf /tools/include/libmount $LFS/usr/include
ln -svf /tools/include/uuid $LFS/usr/include
install -vdm755 $LFS/usr/lib/pkgconfig
for pc in blkid mount uuid
do
sed 's@tools@usr@g' /tools/lib/pkgconfig/${pc}.pc \
> $LFS/usr/lib/pkgconfig/${pc}.pc
done
ln -sv bash $LFS/bin/sh
ln -sv /proc/self/mounts $LFS/etc/mtab
cat > $LFS/etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF
cat > $LFS/etc/group << "EOF"
root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty: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:
adm:x:16:
messagebus:x:18:
systemd-journal:x:23:
input:x:24:
mail:x:34:
nogroup:x:99:
users:x:999:
EOF
touch $LFS/var/log/{btmp,lastlog,faillog,wtmp}
chgrp -v utmp $LFS/var/log/lastlog
chmod -v 664 $LFS/var/log/lastlog
chmod -v 600 $LFS/var/log/btmp
mkdir -p $LFS/etc/pkg $LFS/var/lib/pkg $LFS/var/lib/pkg/sources $LFS/usr/pkgscripts
touch $LFS/var/lib/pkg/db
[ -d toolchain/src ] && cp -Rv toolchain/src/* $LFS/var/lib/pkg/sources
}
mount_pseudo() {
mount --bind /dev $LFS/dev
mount -t devpts devpts $LFS/dev/pts -o gid=5,mode=620
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
}
umount_pseudo() {
umount $LFS/dev/pts
umount $LFS/dev
umount $LFS/run
umount $LFS/proc
umount $LFS/sys
}
runchroot() {
pushd $LFS &>/dev/null
mount_pseudo
cp -L /etc/resolv.conf $LFS/etc/
chroot "$LFS" /usr/bin/env -i \
HOME=/root TERM="$TERM" \
PS1='(lfs chroot) \u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/bin/bash $@
retval=$?
umount_pseudo
popd &>/dev/null
return $retval
}
runinchroot() {
pushd $LFS &>/dev/null
mount_pseudo
cp -L /etc/resolv.conf $LFS/etc/
chroot "$LFS" /tools/bin/env -i \
HOME=/root \
TERM="$TERM" \
PS1='(lfs chroot) \u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash $@
retval=$?
umount_pseudo
popd &>/dev/null
return $retval
}
interrupted() {
die "Abort by user."
}
die() {
[ "$@" ] && printerror $@
umount_pseudo
exit 1
}
printerror() {
echo -e "ERROR: $@"
}
trap "interrupted" SIGHUP SIGINT SIGQUIT SIGTERM
PKGS="linux-api-headers man-pages glibc zlib file readline m4 bc binutils gmp mpfr mpc shadow gcc bzip2
pkg-config ncurses attr acl libcap sed psmisc iana-etc bison flex grep bash libtool gdbm gperf expat inetutils perl perl-xml-parser
intltool autoconf automake xz kmod gettext libelf libffi openssl python3 ninja meson procps-ng e2fsprogs coreutils check diffutils
gawk findutils groff grub less gzip iproute2 kbd libpipeline make patch sysklogd sysvinit eudev util-linux man-db tar texinfo vim
cpio mkinitramfs linux lfs-bootscripts lfs-files libtasn1 p11-kit make-ca wget"
EXTRA_PKGS="dhcpcd libnl wpa_supplicant"
if [ ! -f $LFS/var/lib/pkg/db ]; then
lfs_dirs
fi
cp lfs/pkgscripts/* $LFS/usr/pkgscripts/
cp lfs/functions $LFS/var/lib/pkg/
cp lfs/pkg.conf $LFS/etc/pkg/
for i in $PKGS; do
if [[ $(grep "^$i " $LFS/var/lib/pkg/db) ]]; then
echo "--- $i skipped ---"
else
echo "*** $i ***"
runinchroot /usr/pkgscripts/$i || die "$i build error!"
fi
done
for i in $EXTRA_PKGS; do
if [[ $(grep "^$i " $LFS/var/lib/pkg/db) ]]; then
echo "--- $i skipped ---"
else
echo "*** $i ***"
runchroot /usr/pkgscripts/$i || die "$i build error!"
fi
done
exit 0

54
03-mklfsiso Executable file
View file

@ -0,0 +1,54 @@
#!/bin/bash
trap "exit 1" SIGHUP SIGINT SIGQUIT SIGTERM
LFSVERSIOM=8.3
CWD=$PWD
WDIR=/tmp/lfsiso
ISOLINUXDIR=$CWD/livecd/isolinux
DISTRONAME="LFS"
LABEL=LfsLiveCD
LFS=/mnt/lfs
OUTPUT=lfs-$LFSVERSIOM-livecd.iso
isolinux_files="chain.c32 isolinux.bin ldlinux.c32 libutil.c32 reboot.c32 menu.c32
isohdpfx.bin isolinux.cfg libcom32.c32 poweroff.c32"
rm -fr $WDIR
mkdir -p $WDIR
# prepare isolinux in working dir
mkdir -p $WDIR/{filesystem,isolinux,boot}
for file in $isolinux_files; do
cp $ISOLINUXDIR/$file $WDIR/isolinux
done
echo "$DISTRONAME" > $WDIR/isolinux/venomlive
[ -d livecd/virootfs ] && cp -aR livecd/virootfs $WDIR
cp $LFS/boot/vmlinuz-*-lfs $WDIR/boot/vmlinuz
cp $LFS/boot/initrd-*-lfs.img $WDIR/boot/initrd
mksquashfs $LFS $WDIR/filesystem/root.sfs \
-b 1048576 -comp xz -Xdict-size 100% \
-e $LFS/tools/ \
-e $LFS/var/lib/pkg/sources/* \
-e $LFS/var/lib/pkg/work/* \
-e $LFS/tmp/*
rm -f $OUTPUT
xorriso -as mkisofs \
-r -J -joliet-long \
-l -cache-inodes \
-isohybrid-mbr $ISOLINUXDIR/isohdpfx.bin \
-partition_offset 16 \
-volid "$LABEL" \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-o $OUTPUT \
$WDIR
rm -fr $WDIR

30
lfs/functions Executable file
View file

@ -0,0 +1,30 @@
#!/bin/bash
mkdir -p $SOURCE_DIR $WORK_DIR $LOG_DIR
touch /var/lib/pkg/db
export CFLAGS CXXFLAGS MAKEFLAGS
fetch() {
filename=$(basename $1)
if [ -f $SOURCE_DIR/$filename ]; then
return 0
else
if [ -f $SOURCE_DIR/$filename.part ]; then
wget -c --output-document=$SOURCE_DIR/$filename.part $1
else
wget --output-document=$SOURCE_DIR/$filename.part $1
fi
if [ $? = 0 ]; then
mv $SOURCE_DIR/$filename.part $SOURCE_DIR/$filename
else
return 1
fi
fi
}
registerpkg() {
sed "/^$1 /d" -i /var/lib/pkg/db
echo "$1 $2" >> /var/lib/pkg/db
echo "::: $1 $2 installed :::"
}

7
lfs/pkg.conf Executable file
View file

@ -0,0 +1,7 @@
CFLAGS="-O2 -march=x86-64 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEFLAGS="-j$(nproc)"
SOURCE_DIR="/var/lib/pkg/sources"
WORK_DIR="/var/lib/pkg/work"
LOG_DIR="/var/lib/pkg/log"

38
lfs/pkgscripts/acl Executable file
View file

@ -0,0 +1,38 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.2.53
url=http://download.savannah.gnu.org/releases/acl/acl-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--bindir=/bin \
--disable-static \
--libexecdir=/usr/lib \
--docdir=/usr/share/doc/acl-$version
make
make install
mv -v /usr/lib/libacl.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

38
lfs/pkgscripts/attr Executable file
View file

@ -0,0 +1,38 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.4.48
url=http://download.savannah.gnu.org/releases/attr/attr-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--bindir=/bin \
--disable-static \
--sysconfdir=/etc \
--docdir=/usr/share/doc/attr-$version
make
make install
mv -v /usr/lib/libattr.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/autoconf Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.69
url=http://ftp.gnu.org/gnu/autoconf/autoconf-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/automake Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.16.1
url=http://ftp.gnu.org/gnu/automake/automake-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr --docdir=/usr/share/doc/automake-$version
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

87
lfs/pkgscripts/base-lfs Executable file
View file

@ -0,0 +1,87 @@
#!/tools/bin/bash -e
#. /etc/pkg/pkg.conf
#. /var/lib/pkg/functions
mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt}
mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp
mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -v /usr/libexec
mkdir -pv /usr/{,local/}share/man/man{1..8}
case $(uname -m) in
x86_64) mkdir -v /lib64 ;;
esac
mkdir -v /var/{log,mail,spool}
ln -sv /run /var/run
ln -sv /run/lock /var/lock
mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}
ln -sv /tools/bin/{bash,cat,dd,echo,ln,pwd,rm,stty} /bin
ln -sv /tools/bin/{env,install,perl} /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv /tools/lib/libstdc++.{a,so{,.6}} /usr/lib
for lib in blkid lzma mount uuid
do
ln -sv /tools/lib/lib$lib.so* /usr/lib
done
ln -svf /tools/include/blkid /usr/include
ln -svf /tools/include/libmount /usr/include
ln -svf /tools/include/uuid /usr/include
install -vdm755 /usr/lib/pkgconfig
for pc in blkid mount uuid
do
sed 's@tools@usr@g' /tools/lib/pkgconfig/${pc}.pc \
> /usr/lib/pkgconfig/${pc}.pc
done
ln -sv bash /bin/sh
ln -sv /proc/self/mounts /etc/mtab
cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF
cat > /etc/group << "EOF"
root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty: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:
adm:x:16:
messagebus:x:18:
systemd-journal:x:23:
input:x:24:
mail:x:34:
nogroup:x:99:
users:x:999:
EOF
exec /tools/bin/bash --login +h
touch /var/log/{btmp,lastlog,faillog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664 /var/log/lastlog
chmod -v 600 /var/log/btmp

36
lfs/pkgscripts/bash Executable file
View file

@ -0,0 +1,36 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=4.4.18
url=http://ftp.gnu.org/gnu/bash/bash-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--docdir=/usr/share/doc/bash-$version \
--without-bash-malloc \
--with-installed-readline
make
make install
mv -vf /usr/bin/bash /bin
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

52
lfs/pkgscripts/bc Executable file
View file

@ -0,0 +1,52 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.07.1
url=http://ftp.gnu.org/gnu/bc/bc-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
cat > bc/fix-libmath_h << "EOF"
#! /bin/bash
sed -e '1 s/^/{"/' \
-e 's/$/",/' \
-e '2,$ s/^/"/' \
-e '$ d' \
-i libmath.h
sed -e '$ s/$/0}/' \
-i libmath.h
EOF
ln -sv /tools/lib/libncursesw.so.6 /usr/lib/libncursesw.so.6
ln -sfv libncurses.so.6 /usr/lib/libncurses.so
sed -i -e '/flex/s/as_fn_error/: ;; # &/' configure
./configure --prefix=/usr \
--with-readline \
--mandir=/usr/share/man \
--infodir=/usr/share/info
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

42
lfs/pkgscripts/binutils Executable file
View file

@ -0,0 +1,42 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.31.1
url=http://ftp.gnu.org/gnu/binutils/binutils-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
mkdir -v build
cd build
../configure --prefix=/usr \
--enable-gold \
--enable-ld=default \
--enable-plugins \
--enable-shared \
--disable-werror \
--enable-64-bit-bfd \
--with-system-zlib
make tooldir=/usr
make tooldir=/usr install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/bison Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=3.0.5
url=http://ftp.gnu.org/gnu/bison/bison-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr --docdir=/usr/share/doc/bison-$version
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

47
lfs/pkgscripts/bzip2 Executable file
View file

@ -0,0 +1,47 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.0.6
url=http://anduin.linuxfromscratch.org/LFS/bzip2-$version.tar.gz
fetch $url
fetch http://www.linuxfromscratch.org/patches/lfs/8.3/bzip2-$version-install_docs-1.patch
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
patch -Np1 -i $SOURCE_DIR/bzip2-$version-install_docs-1.patch
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
make -f Makefile-libbz2_so
make clean
make
make PREFIX=/usr install
cp -v bzip2-shared /bin/bzip2
cp -av libbz2.so* /lib
ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
rm -v /usr/bin/{bunzip2,bzcat,bzip2}
ln -sv bzip2 /bin/bunzip2
ln -sv bzip2 /bin/bzcat
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

33
lfs/pkgscripts/check Executable file
View file

@ -0,0 +1,33 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=0.12.0
url=https://github.com/libcheck/check/releases/download/$version/check-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr
make
make install
sed -i '1 s/tools/usr/' /usr/bin/checkmk
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

46
lfs/pkgscripts/coreutils Executable file
View file

@ -0,0 +1,46 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=8.30
url=http://ftp.gnu.org/gnu/coreutils/coreutils-$version.tar.xz
fetch $url
fetch http://www.linuxfromscratch.org/patches/lfs/8.3/coreutils-$version-i18n-1.patch
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
patch -Np1 -i $SOURCE_DIR/coreutils-8.30-i18n-1.patch
sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
autoreconf -fiv
FORCE_UNSAFE_CONFIGURE=1 ./configure \
--prefix=/usr \
--enable-no-install-program=kill,uptime
FORCE_UNSAFE_CONFIGURE=1 make
make install
mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv -v /usr/bin/{false,ln,ls,mkdir,mknod,pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
mv -v /usr/bin/chroot /usr/sbin
mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8
sed -i s/\"1\"/\"8\"/1 /usr/share/man/man8/chroot.8
mv -v /usr/bin/{head,sleep,nice,mv} /bin
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

35
lfs/pkgscripts/cpio Executable file
View file

@ -0,0 +1,35 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.12
url=https://ftp.gnu.org/gnu/cpio/cpio-$version.tar.bz2
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--bindir=/bin \
--enable-mt \
--with-rmt=/usr/libexec/rmt
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

37
lfs/pkgscripts/dhcpcd Executable file
View file

@ -0,0 +1,37 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=7.0.7
url=http://roy.marples.name/downloads/dhcpcd/dhcpcd-$version.tar.xz
fetch $url
fetch http://anduin.linuxfromscratch.org/BLFS/blfs-bootscripts/blfs-bootscripts-20180105.tar.xz
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --libexecdir=/lib/dhcpcd \
--dbdir=/var/lib/dhcpcd
make
make install
tar -xvf $SOURCE_DIR/blfs-bootscripts-20180105.tar.xz
cd blfs-bootscripts-20180105
make install-service-dhcpcd
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/diffutils Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=3.6
url=http://ftp.gnu.org/gnu/diffutils/diffutils-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

46
lfs/pkgscripts/e2fsprogs Executable file
View file

@ -0,0 +1,46 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.44.3
url=https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v$version/e2fsprogs-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
mkdir -v build
cd build
../configure --prefix=/usr \
--bindir=/bin \
--with-root-prefix="" \
--enable-elf-shlibs \
--disable-libblkid \
--disable-libuuid \
--disable-uuidd \
--disable-fsck
make
make install
make install-libs
chmod -v u+w /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
gunzip -v /usr/share/info/libext2fs.info.gz
install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

56
lfs/pkgscripts/eudev Executable file
View file

@ -0,0 +1,56 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=3.2.5
url=https://dev.gentoo.org/~blueness/eudev/eudev-$version.tar.gz
fetch $url
fetch http://anduin.linuxfromscratch.org/LFS/udev-lfs-20171102.tar.bz2
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
cat > config.cache << "EOF"
HAVE_BLKID=1
BLKID_LIBS="-lblkid"
BLKID_CFLAGS="-I/tools/include"
EOF
./configure --prefix=/usr \
--bindir=/sbin \
--sbindir=/sbin \
--libdir=/usr/lib \
--sysconfdir=/etc \
--libexecdir=/lib \
--with-rootprefix= \
--with-rootlibdir=/lib \
--enable-manpages \
--disable-static \
--config-cache
LIBRARY_PATH=/tools/lib make
mkdir -pv /lib/udev/rules.d
mkdir -pv /etc/udev/rules.d
make LD_LIBRARY_PATH=/tools/lib install
tar -xvf $SOURCE_DIR/udev-lfs-20171102.tar.bz2
make -f udev-lfs-20171102/Makefile.lfs install
LD_LIBRARY_PATH=/tools/lib udevadm hwdb --update
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

36
lfs/pkgscripts/expat Executable file
View file

@ -0,0 +1,36 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.2.6
url=https://prdownloads.sourceforge.net/expat/expat-$version.tar.bz2
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i 's|usr/bin/env |bin/|' run.sh.in
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/expat-$version
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/file Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=file
version=5.34
url=ftp://ftp.astron.com/pub/file/file-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$name-$version.tar.gz -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

39
lfs/pkgscripts/findutils Executable file
View file

@ -0,0 +1,39 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=4.6.0
url=http://ftp.gnu.org/gnu/findutils/findutils-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i 's/test-lock..EXEEXT.//' tests/Makefile.in
sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.c
sed -i '/unistd/a #include <sys/sysmacros.h>' gl/lib/mountlist.c
echo "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h
./configure --prefix=/usr --localstatedir=/var/lib/locate
make
make install
mv -v /usr/bin/find /bin
sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

36
lfs/pkgscripts/flex Executable file
View file

@ -0,0 +1,36 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.6.4
url=https://github.com/westes/flex/releases/download/v$version/flex-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i "/math.h/a #include <malloc.h>" src/flexdef.h
HELP2MAN=/tools/bin/true \
./configure --prefix=/usr --docdir=/usr/share/doc/flex-$version
make
make install
ln -sv flex /usr/bin/lex
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

33
lfs/pkgscripts/gawk Executable file
View file

@ -0,0 +1,33 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=4.2.1
url=http://ftp.gnu.org/gnu/gawk/gawk-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i 's/extras//' Makefile.in
./configure --prefix=/usr
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

68
lfs/pkgscripts/gcc Executable file
View file

@ -0,0 +1,68 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=8.2.0
url=http://ftp.gnu.org/gnu/gcc/gcc-$version/gcc-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
case $(uname -m) in
x86_64)
sed -e '/m64=/s/lib64/lib/' \
-i.orig gcc/config/i386/t-linux64
;;
esac
rm -f /usr/lib/gcc
mkdir -v build
cd build
SED=sed \
../configure --prefix=/usr \
--enable-languages=c,c++ \
--disable-multilib \
--disable-bootstrap \
--disable-libmpx \
--with-system-zlib
make
make install
ln -svf ../usr/bin/cpp /lib
ln -svf gcc /usr/bin/cc
install -v -dm755 /usr/lib/bfd-plugins
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/8.2.0/liblto_plugin.so \
/usr/lib/bfd-plugins/
echo 'int main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'
grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
grep -B4 '^ /usr/include' dummy.log
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
grep "/lib.*/libc.so.6 " dummy.log
grep found dummy.log
rm -v dummy.c a.out dummy.log
mkdir -pv /usr/share/gdb/auto-load/usr/lib
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

34
lfs/pkgscripts/gdbm Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.17
url=http://ftp.gnu.org/gnu/gdbm/gdbm-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--disable-static \
--enable-libgdbm-compat
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

41
lfs/pkgscripts/gettext Executable file
View file

@ -0,0 +1,41 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=0.19.8.1
url=http://ftp.gnu.org/gnu/gettext/gettext-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i '/^TESTS =/d' gettext-runtime/tests/Makefile.in &&
sed -i 's/test-lock..EXEEXT.//' gettext-tools/gnulib-tests/Makefile.in
sed -e '/AppData/{N;N;p;s/\.appdata\./.metainfo./}' \
-i gettext-tools/its/appdata.loc
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/gettext-$version
make
make install
chmod -v 0755 /usr/lib/preloadable_libintl.so
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

139
lfs/pkgscripts/glibc Executable file
View file

@ -0,0 +1,139 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=glibc
version=2.28
url=http://ftp.gnu.org/gnu/glibc/glibc-$version.tar.xz
fetch $url
fetch http://www.linuxfromscratch.org/patches/lfs/8.3/glibc-$version-fhs-1.patch
fetch https://www.iana.org/time-zones/repository/releases/tzdata2018e.tar.gz
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$name-$version.tar.xz -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
patch -Np1 -i $SOURCE_DIR/glibc-$version-fhs-1.patch
ln -sfv /tools/lib/gcc /usr/lib
case $(uname -m) in
i?86) GCC_INCDIR=/usr/lib/gcc/$(uname -m)-pc-linux-gnu/8.2.0/include
ln -sfv ld-linux.so.2 /lib/ld-lsb.so.3
;;
x86_64) GCC_INCDIR=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include
ln -sfv ../lib/ld-linux-x86-64.so.2 /lib64
ln -sfv ../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
;;
esac
rm -f /usr/include/limits.h
mkdir -v build
cd build
CC="gcc -isystem $GCC_INCDIR -isystem /usr/include" \
../configure --prefix=/usr \
--disable-werror \
--enable-kernel=3.2 \
--enable-stack-protector=strong \
libc_cv_slibdir=/lib
unset GCC_INCDIR
make
touch /etc/ld.so.conf
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
make install
cp -v ../nscd/nscd.conf /etc/nscd.conf
mkdir -pv /var/cache/nscd
mkdir -pv /usr/lib/locale
make localedata/install-locales
cat > /etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf
passwd: files
group: files
shadow: files
hosts: files dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
# End /etc/nsswitch.conf
EOF
tar -xf $SOURCE_DIR/tzdata2018e.tar.gz
ZONEINFO=/usr/share/zoneinfo
mkdir -pv $ZONEINFO/{posix,right}
for tz in etcetera southamerica northamerica europe africa antarctica \
asia australasia backward pacificnew systemv; do
zic -L /dev/null -d $ZONEINFO -y "sh yearistype.sh" ${tz}
zic -L /dev/null -d $ZONEINFO/posix -y "sh yearistype.sh" ${tz}
zic -L leapseconds -d $ZONEINFO/right -y "sh yearistype.sh" ${tz}
done
cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO
zic -d $ZONEINFO -p America/New_York
unset ZONEINFO
ln -svf /usr/share/zoneinfo/UTC /etc/localtime
cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib
EOF
cat >> /etc/ld.so.conf << "EOF"
# Add an include directory
include /etc/ld.so.conf.d/*.conf
EOF
mkdir -pv /etc/ld.so.conf.d
if [ ! -f /tools/bin/ld-old ]; then
mv -v /tools/bin/{ld,ld-old}
mv -v /tools/$(uname -m)-pc-linux-gnu/bin/{ld,ld-old}
mv -v /tools/bin/{ld-new,ld}
ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld
gcc -dumpspecs | sed -e 's@/tools@@g' \
-e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
-e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > \
`dirname $(gcc --print-libgcc-file-name)`/specs
echo 'int main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'
grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
grep -B1 '^ /usr/include' dummy.log
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
grep "/lib.*/libc.so.6 " dummy.log
grep found dummy.log
rm -v dummy.c a.out dummy.log
fi
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

35
lfs/pkgscripts/gmp Executable file
View file

@ -0,0 +1,35 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=6.1.2
url=http://ftp.gnu.org/gnu/gmp/gmp-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--enable-cxx \
--disable-static \
--docdir=/usr/share/doc/gmp-$version
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/gperf Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=3.1
url=http://ftp.gnu.org/gnu/gperf/gperf-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr --docdir=/usr/share/doc/gperf-$version
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/grep Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=3.1
url=http://ftp.gnu.org/gnu/grep/grep-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr --bindir=/bin
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/groff Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.22.3
url=http://ftp.gnu.org/gnu/groff/groff-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
PAGE=A4 ./configure --prefix=/usr
make -j1
make -j1 install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

36
lfs/pkgscripts/grub Executable file
View file

@ -0,0 +1,36 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.02
url=https://ftp.gnu.org/gnu/grub/grub-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--sbindir=/sbin \
--sysconfdir=/etc \
--disable-efiemu \
--disable-werror
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

36
lfs/pkgscripts/gzip Executable file
View file

@ -0,0 +1,36 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.9
url=http://ftp.gnu.org/gnu/gzip/gzip-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
./configure --prefix=/usr
make
make install
mv -v /usr/bin/gzip /bin
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

31
lfs/pkgscripts/iana-etc Executable file
View file

@ -0,0 +1,31 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.30
url=http://anduin.linuxfromscratch.org/LFS/iana-etc-$version.tar.bz2
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

42
lfs/pkgscripts/inetutils Executable file
View file

@ -0,0 +1,42 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.9.4
url=http://ftp.gnu.org/gnu/inetutils/inetutils-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--localstatedir=/var \
--disable-logger \
--disable-whois \
--disable-rcp \
--disable-rexec \
--disable-rlogin \
--disable-rsh \
--disable-servers
make
make install
mv -v /usr/bin/{hostname,ping,ping6,traceroute} /bin
mv -v /usr/bin/ifconfig /sbin
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

34
lfs/pkgscripts/intltool Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=0.51.0
url=https://launchpad.net/intltool/trunk/$version/+download/intltool-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i 's:\\\${:\\\$\\{:' intltool-update.in
./configure --prefix=/usr
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

36
lfs/pkgscripts/iproute2 Executable file
View file

@ -0,0 +1,36 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=4.18.0
url=https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.18.0.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i /ARPD/d Makefile
rm -fv man/man8/arpd.8
sed -i 's/.m_ipt.o//' tc/Makefile
make
make DOCDIR=/usr/share/doc/iproute2-$version install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

38
lfs/pkgscripts/kbd Executable file
View file

@ -0,0 +1,38 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.0.4
url=https://www.kernel.org/pub/linux/utils/kbd/kbd-$version.tar.xz
fetch $url
fetch http://www.linuxfromscratch.org/patches/lfs/8.3/kbd-$version-backspace-1.patch
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
patch -Np1 -i $SOURCE_DIR/kbd-2.0.4-backspace-1.patch
sed -i 's/\(RESIZECONS_PROGS=\)yes/\1no/g' configure
sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr --disable-vlock
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

41
lfs/pkgscripts/kmod Executable file
View file

@ -0,0 +1,41 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=25
url=https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--bindir=/bin \
--sysconfdir=/etc \
--with-rootlibdir=/lib \
--with-xz \
--with-zlib
make
make install
for target in depmod insmod lsmod modinfo modprobe rmmod; do
ln -sfv ../bin/kmod /sbin/$target
done
ln -sfv kmod /bin/lsmod
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/less Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=530
url=http://www.greenwoodsoftware.com/less/less-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr --sysconfdir=/etc
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

30
lfs/pkgscripts/lfs-bootscripts Executable file
View file

@ -0,0 +1,30 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=20180820
url=http://www.linuxfromscratch.org/lfs/downloads/8.3/lfs-bootscripts-$version.tar.bz2
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

431
lfs/pkgscripts/lfs-files Executable file
View file

@ -0,0 +1,431 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=8.3
{ time \
{
echo "$version" > /etc/lfs-release
cat > /etc/lsb-release << "EOF"
DISTRIB_ID="Linux From Scratch"
DISTRIB_RELEASE="8.3"
DISTRIB_CODENAME="Emmett1"
DISTRIB_DESCRIPTION="Linux From Scratch"
EOF
cat > /etc/inittab << "EOF"
# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc S
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty --noclear tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
# End /etc/inittab
EOF
cat > /etc/inputrc << "EOF"
# Begin /etc/inputrc
# Modified by Chris Lynn <roryo@roryo.dynup.net>
# Allow the command prompt to wrap to the next line
set horizontal-scroll-mode Off
# Enable 8bit input
set meta-flag On
set input-meta On
# Turns off 8th bit stripping
set convert-meta Off
# Keep the 8th bit for display
set output-meta On
# none, visible or audible
set bell-style none
# All of the following map the escape sequence of the value
# contained in the 1st argument to the readline specific functions
"\eOd": backward-word
"\eOc": forward-word
# for linux console
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert
# for xterm
"\eOH": beginning-of-line
"\eOF": end-of-line
# for Konsole
"\e[H": beginning-of-line
"\e[F": end-of-line
# End /etc/inputrc
EOF
cat > /etc/shells << "EOF"
# Begin /etc/shells
/bin/sh
/bin/bash
# End /etc/shells
EOF
cat > /etc/fstab << "EOF"
# Begin /etc/fstab
# file system mount-point type options dump fsck
# order
#/dev/<xxx> / <fff> defaults 1 1
#/dev/<yyy> swap swap pri=1 0 0
proc /proc proc nosuid,noexec,nodev 0 0
sysfs /sys sysfs nosuid,noexec,nodev 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /run tmpfs defaults 0 0
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
# End /etc/fstab
EOF
install -v -m755 -d /etc/modprobe.d
cat > /etc/modprobe.d/usb.conf << "EOF"
# Begin /etc/modprobe.d/usb.conf
install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true
# End /etc/modprobe.d/usb.conf
EOF
cat > /etc/sysconfig/ifconfig.wired << "EOF"
ONBOOT="no"
IFACE="eth0"
SERVICE="dhcpcd"
#DHCP_START="-b -q <insert appropriate start options here>"
#DHCP_STOP="-k <insert additional stop options here>"
EOF
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
# End /etc/resolv.conf
EOF
echo "lfs" > /etc/hostname
cat > /etc/hosts << "EOF"
# Begin /etc/hosts
127.0.0.1 localhost lfs
::1 localhost lfs
# End /etc/hosts
EOF
cat > /etc/profile << "EOF"
# Begin /etc/profile
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# modifications by Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg>
# System wide environment variables and startup programs.
# System wide aliases and functions should go in /etc/bashrc. Personal
# environment variables and startup programs should go into
# ~/.bash_profile. Personal aliases and functions should go into
# ~/.bashrc.
# Functions to help us manage paths. Second argument is the name of the
# path variable to be modified (default: PATH)
pathremove () {
local IFS=':'
local NEWPATH
local DIR
local PATHVARIABLE=${2:-PATH}
for DIR in ${!PATHVARIABLE} ; do
if [ "$DIR" != "$1" ] ; then
NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
fi
done
export $PATHVARIABLE="$NEWPATH"
}
pathprepend () {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
}
pathappend () {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
}
export -f pathremove pathprepend pathappend
# Set the initial path
export PATH=/bin:/usr/bin
if [ $EUID -eq 0 ] ; then
pathappend /sbin:/usr/sbin
unset HISTFILE
fi
# Setup some environment variables.
export HISTSIZE=1000
export HISTIGNORE="&:[bf]g:exit"
# Set some defaults for graphical systems
export XDG_DATA_DIRS=${XDG_DATA_DIRS:-/usr/share/}
export XDG_CONFIG_DIRS=${XDG_CONFIG_DIRS:-/etc/xdg/}
export XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/tmp/xdg-$USER}
# Setup a red prompt for root and a green one for users.
NORMAL="\[\e[0m\]"
RED="\[\e[1;31m\]"
GREEN="\[\e[1;32m\]"
if [[ $EUID == 0 ]] ; then
PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
else
PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
fi
for script in /etc/profile.d/*.sh ; do
if [ -r $script ] ; then
. $script
fi
done
unset script RED GREEN NORMAL
# End /etc/profile
EOF
install --directory --mode=0755 --owner=root --group=root /etc/profile.d
cat > /etc/profile.d/bash_completion.sh << "EOF"
# Begin /etc/profile.d/bash_completion.sh
# Import bash completion scripts
for script in /etc/bash_completion.d/*.sh ; do
if [ -r $script ] ; then
. $script
fi
done
# End /etc/profile.d/bash_completion.sh
EOF
install --directory --mode=0755 --owner=root --group=root /etc/bash_completion.d
cat > /etc/profile.d/dircolors.sh << "EOF"
# Setup for /bin/ls and /bin/grep to support color, the alias is in /etc/bashrc.
if [ -f "/etc/dircolors" ] ; then
eval $(dircolors -b /etc/dircolors)
fi
if [ -f "$HOME/.dircolors" ] ; then
eval $(dircolors -b $HOME/.dircolors)
fi
alias ls='ls --color=auto'
alias grep='grep --color=auto'
EOF
cat > /etc/profile.d/extrapaths.sh << "EOF"
if [ -d /usr/local/lib/pkgconfig ] ; then
pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
fi
if [ -d /usr/local/bin ]; then
pathprepend /usr/local/bin
fi
if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
pathprepend /usr/local/sbin
fi
# Set some defaults before other applications add to these paths.
pathappend /usr/share/man MANPATH
pathappend /usr/share/info INFOPATH
EOF
cat > /etc/profile.d/readline.sh << "EOF"
# Setup the INPUTRC environment variable.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
INPUTRC=/etc/inputrc
fi
export INPUTRC
EOF
cat > /etc/profile.d/umask.sh << "EOF"
# By default, the umask should be set.
if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then
umask 002
else
umask 022
fi
EOF
cat > /etc/profile.d/i18n.sh << "EOF"
# Set up i18n variables
export LANG=en_US.UTF-8
EOF
cat > /etc/bashrc << "EOF"
# Begin /etc/bashrc
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>
# System wide aliases and functions.
# System wide environment variables and startup programs should go into
# /etc/profile. Personal environment variables and startup programs
# should go into ~/.bash_profile. Personal aliases and functions should
# go into ~/.bashrc
# Provides colored /bin/ls and /bin/grep commands. Used in conjunction
# with code in /etc/profile.
alias ls='ls --color=auto'
alias grep='grep --color=auto'
# Provides prompt for non-login shells, specifically shells started
# in the X environment. [Review the LFS archive thread titled
# PS1 Environment Variable for a great case study behind this script
# addendum.]
NORMAL="\[\e[0m\]"
RED="\[\e[1;31m\]"
GREEN="\[\e[1;32m\]"
if [[ $EUID == 0 ]] ; then
PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
else
PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
fi
unset RED GREEN NORMAL
# End /etc/bashrc
EOF
cat > ~/.bash_profile << "EOF"
# Begin ~/.bash_profile
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>
# Personal environment variables and startup programs.
# Personal aliases and functions should go in ~/.bashrc. System wide
# environment variables and startup programs are in /etc/profile.
# System wide aliases and functions are in /etc/bashrc.
if [ -f "$HOME/.bashrc" ] ; then
source $HOME/.bashrc
fi
if [ -d "$HOME/bin" ] ; then
pathprepend $HOME/bin
fi
# Having . in the PATH is dangerous
#if [ $EUID -gt 99 ]; then
# pathappend .
#fi
# End ~/.bash_profile
EOF
cat > ~/.profile << "EOF"
# Begin ~/.profile
# Personal environment variables and startup programs.
if [ -d "$HOME/bin" ] ; then
pathprepend $HOME/bin
fi
# Set up user specific i18n variables
#export LANG=<ll>_<CC>.<charmap><@modifiers>
# End ~/.profile
EOF
cat > ~/.bashrc << "EOF"
# Begin ~/.bashrc
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# Personal aliases and functions.
# Personal environment variables and startup programs should go in
# ~/.bash_profile. System wide environment variables and startup
# programs are in /etc/profile. System wide aliases and functions are
# in /etc/bashrc.
if [ -f "/etc/bashrc" ] ; then
source /etc/bashrc
fi
# Set up user specific i18n variables
#export LANG=<ll>_<CC>.<charmap><@modifiers>
# End ~/.bashrc
EOF
cat > ~/.bash_logout << "EOF"
# Begin ~/.bash_logout
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# Personal items to perform on logout.
# End ~/.bash_logout
EOF
dircolors -p > /etc/dircolors
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
#rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

36
lfs/pkgscripts/libcap Executable file
View file

@ -0,0 +1,36 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.25
url=https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i '/install.*STALIBNAME/d' libcap/Makefile
make
make RAISE_SETFCAP=no lib=lib prefix=/usr install
chmod -v 755 /usr/lib/libcap.so
mv -v /usr/lib/libcap.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libcap.so) /usr/lib/libcap.so
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

33
lfs/pkgscripts/libelf Executable file
View file

@ -0,0 +1,33 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=elfutils
version=0.173
url=https://sourceware.org/ftp/elfutils/$version/elfutils-$version.tar.bz2
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr
make
make -C libelf install
install -vm644 config/libelf.pc /usr/lib/pkgconfig
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

39
lfs/pkgscripts/libffi Executable file
View file

@ -0,0 +1,39 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=3.2.1
url=ftp://sourceware.org/pub/libffi/libffi-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -e '/^includesdir/ s/$(libdir).*$/$(includedir)/' \
-i include/Makefile.in
sed -e '/^includedir/ s/=.*$/=@includedir@/' \
-e 's/^Cflags: -I${includedir}/Cflags:/' \
-i libffi.pc.in
./configure --prefix=/usr --disable-static --with-gcc-arch=native
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

34
lfs/pkgscripts/libnl Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=3.4.0
url=https://github.com/thom311/libnl/releases/download/libnl${version//./_}/libnl-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--sysconfdir=/etc \
--disable-static
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/libpipeline Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.5.0
url=http://download.savannah.gnu.org/releases/libpipeline/libpipeline-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/libtasn1 Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=4.13
url=ftp://ftp.gnu.org/gnu/libtasn1/libtasn1-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr --disable-static
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/libtool Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.4.6
url=http://ftp.gnu.org/gnu/libtool/libtool-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

46
lfs/pkgscripts/linux Executable file
View file

@ -0,0 +1,46 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=4.19.2
url=https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-$version.tar.xz
fetch $url
fetch https://raw.githubusercontent.com/emmett1/ports/1.0/extra/linux/config-$version
rm -fr /usr/src/$name-$version-old
[ -d /usr/src/$name-$version ] && mv /usr/src/$name-$version /usr/src/$name-$version-old
tar -xvf $SOURCE_DIR/$(basename $url) -C /usr/src
#ln -svf /usr/src/$name-$version /usr/src/linux
cd /usr/src/$name-$version
{ time \
{
make mrproper
cp $SOURCE_DIR/config-$version .config
sed '/^CONFIG_LOCALVERSION=/d' -i .config
echo 'CONFIG_LOCALVERSION="-lfs"' >> .config
make
make modules_install
cp arch/x86/boot/bzImage /boot/vmlinuz-$version-lfs
if [ $(type -p mkinitramfs) ]; then
kernver=$(file /boot/vmlinuz-$version-lfs | cut -d ' ' -f9)
mkinitramfs -k $kernver -o /boot/initrd-$version-lfs.img
fi
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
#rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=linux
version=4.19.2
fetch https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-$version.tar.xz
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/linux-$version.tar.xz -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
make mrproper
make INSTALL_HDR_PATH=dest headers_install
find dest/include \( -name .install -o -name ..install.cmd \) -delete
cp -rv dest/include/* /usr/include
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

35
lfs/pkgscripts/m4 Executable file
View file

@ -0,0 +1,35 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=m4
version=1.4.18
url=http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
./configure --prefix=/usr
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

34
lfs/pkgscripts/make Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=4.2.1
url=http://ftp.gnu.org/gnu/make/make-$version.tar.bz2
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i '211,217 d; 219,229 d; 232 d' glob/glob.c
./configure --prefix=/usr
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

43
lfs/pkgscripts/make-ca Executable file
View file

@ -0,0 +1,43 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=0.9
url=https://github.com/djlucas/make-ca/archive/v$version/make-ca-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
install -vdm755 /etc/ssl/local
wget http://www.cacert.org/certs/root.crt
wget http://www.cacert.org/certs/class3.crt
openssl x509 -in root.crt -text -fingerprint -setalias "CAcert Class 1 root" \
-addtrust serverAuth -addtrust emailProtection -addtrust codeSigning \
> /etc/ssl/local/CAcert_Class_1_root.pem
openssl x509 -in class3.crt -text -fingerprint -setalias "CAcert Class 3 root" \
-addtrust serverAuth -addtrust emailProtection -addtrust codeSigning \
> /etc/ssl/local/CAcert_Class_3_root.pem
make install
mkdir -pv /etc/pki/tls/certs
ln -svf /etc/ssl/ca-bundle.crt \
/etc/pki/tls/certs/ca-bundle.crt
/usr/sbin/make-ca -g
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

40
lfs/pkgscripts/man-db Executable file
View file

@ -0,0 +1,40 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.8.4
url=http://download.savannah.gnu.org/releases/man-db/man-db-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--docdir=/usr/share/doc/man-db-$version \
--sysconfdir=/etc \
--disable-setuid \
--enable-cache-owner=bin \
--with-browser=/usr/bin/lynx \
--with-vgrind=/usr/bin/vgrind \
--with-grap=/usr/bin/grap \
--with-systemdtmpfilesdir=
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

29
lfs/pkgscripts/man-pages Executable file
View file

@ -0,0 +1,29 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=man-pages
version=4.16
fetch https://www.kernel.org/pub/linux/docs/man-pages/man-pages-$version.tar.xz
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$name-$version.tar.xz -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/meson Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=0.47.1
url=https://github.com/mesonbuild/meson/releases/download/$version/meson-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
python3 setup.py build
python3 setup.py install --root=dest
cp -rv dest/* /
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

35
lfs/pkgscripts/mkinitramfs Executable file
View file

@ -0,0 +1,35 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=72992208c32e3aac22a086659b00c034960992cd
url=https://github.com/emmett1/mkinitramfs/archive/$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./INSTALL.sh
#if [ $(type -p mkinitramfs) ]; then
# kernver=$(file /boot/vmlinuz-4.19.2-lfs | cut -d ' ' -f9)
# mkinitramfs -k $kernver -o /boot/initrd-4.19.2-lfs.img
#fi
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

34
lfs/pkgscripts/mpc Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.1.0
url=https://ftp.gnu.org/gnu/mpc/mpc-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/mpc-$version
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

35
lfs/pkgscripts/mpfr Executable file
View file

@ -0,0 +1,35 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=4.0.1
url=http://www.mpfr.org/mpfr-$version/mpfr-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--disable-static \
--enable-thread-safe \
--docdir=/usr/share/doc/mpfr-$version
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

50
lfs/pkgscripts/ncurses Executable file
View file

@ -0,0 +1,50 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=6.1
url=http://ftp.gnu.org/gnu/ncurses/ncurses-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in
./configure --prefix=/usr \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--enable-pc-files \
--enable-widec
make
make install
mv -v /usr/lib/libncursesw.so.6* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so
for lib in ncurses form panel menu ; do
rm -vf /usr/lib/lib${lib}.so
echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc
done
rm -vf /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
ln -sfv libncurses.so /usr/lib/libcurses.so
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

41
lfs/pkgscripts/ninja Executable file
View file

@ -0,0 +1,41 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.8.2
url=https://github.com/ninja-build/ninja/archive/v$version/ninja-$version.tar.gz
fetch $url
fetch http://www.linuxfromscratch.org/patches/lfs/8.3/ninja-$version-add_NINJAJOBS_var-1.patch
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
export NINJAJOBS=4
patch -Np1 -i $SOURCE_DIR/ninja-$version-add_NINJAJOBS_var-1.patch
python3 configure.py --bootstrap
python3 configure.py
./ninja ninja_test
./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
install -vm755 ninja /usr/bin/
install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja
install -vDm644 misc/zsh-completion /usr/share/zsh/site-functions/_ninja
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

37
lfs/pkgscripts/openssl Executable file
View file

@ -0,0 +1,37 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.1.0i
url=https://openssl.org/source/openssl-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./config --prefix=/usr \
--openssldir=/etc/ssl \
--libdir=lib \
shared \
zlib-dynamic
make
sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
make MANSUFFIX=ssl install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

42
lfs/pkgscripts/p11-kit Executable file
View file

@ -0,0 +1,42 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=0.23.14
url=https://github.com/p11-glue/p11-kit/releases/download/$version/p11-kit-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed '20,$ d' -i trust/trust-extract-compat.in &&
cat >> trust/trust-extract-compat.in << "EOF"
echo "Please create an OpenSSL Trusted Certificate with appropriate"
echo "trust arguments in /etc/ssl/local/ and run '/usr/sbin/make-ca -f'"
echo "as the root user."
exit 1
EOF
./configure --prefix=/usr \
--sysconfdir=/etc \
--with-trust-paths=/etc/pki/anchors
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/patch Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.7.6
url=http://ftp.gnu.org/gnu/patch/patch-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

44
lfs/pkgscripts/perl Executable file
View file

@ -0,0 +1,44 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=5.28.0
url=https://www.cpan.org/src/5.0/perl-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
echo "127.0.0.1 localhost lfs" > /etc/hosts
export BUILD_ZLIB=False
export BUILD_BZIP2=0
sh Configure -des -Dprefix=/usr \
-Dvendorprefix=/usr \
-Dman1dir=/usr/share/man/man1 \
-Dman3dir=/usr/share/man/man3 \
-Dpager="/usr/bin/less -isR" \
-Duseshrplib \
-Dusethreads
make
make install
unset BUILD_ZLIB BUILD_BZIP2
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/perl-xml-parser Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=XML-Parser
version=2.44
url=https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
perl Makefile.PL
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

35
lfs/pkgscripts/pkg-config Executable file
View file

@ -0,0 +1,35 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=0.29.2
url=https://pkg-config.freedesktop.org/releases/pkg-config-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--with-internal-glib \
--disable-host-tool \
--docdir=/usr/share/doc/pkg-config-$version
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

39
lfs/pkgscripts/procps-ng Executable file
View file

@ -0,0 +1,39 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=3.3.15
url=https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--exec-prefix= \
--libdir=/usr/lib \
--docdir=/usr/share/doc/procps-ng-3.3.15 \
--disable-static \
--disable-kill
make
make install
mv -v /usr/lib/libprocps.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libprocps.so) /usr/lib/libprocps.so
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

34
lfs/pkgscripts/psmisc Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=23.1
url=https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr
make
make install
mv -v /usr/bin/fuser /bin
mv -v /usr/bin/killall /bin
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

38
lfs/pkgscripts/python3 Executable file
View file

@ -0,0 +1,38 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=Python
version=3.7.0
url=https://www.python.org/ftp/python/$version/Python-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--enable-shared \
--with-system-expat \
--with-system-ffi \
--with-ensurepip=yes
make
make install
chmod -v 755 /usr/lib/libpython3.7m.so
chmod -v 755 /usr/lib/libpython3.so
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

42
lfs/pkgscripts/readline Executable file
View file

@ -0,0 +1,42 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=readline
version=7.0
url=http://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i '/MV.*old/d' Makefile.in
sed -i '/{OLDSUFF}/c:' support/shlib-install
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/readline-$version
make SHLIB_LIBS="-L/tools/lib -lncursesw"
make SHLIB_LIBS="-L/tools/lib -lncurses" install
mv -v /usr/lib/lib{readline,history}.so.* /lib
chmod -v u+w /lib/lib{readline,history}.so.*
ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) /usr/lib/libreadline.so
ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) /usr/lib/libhistory.so
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

35
lfs/pkgscripts/sed Executable file
View file

@ -0,0 +1,35 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=4.5
url=http://ftp.gnu.org/gnu/sed/sed-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i 's/usr/tools/' build-aux/help2man
sed -i 's/testsuite.panic-tests.sh//' Makefile.in
./configure --prefix=/usr --bindir=/bin
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

43
lfs/pkgscripts/shadow Executable file
View file

@ -0,0 +1,43 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=4.6
url=https://github.com/shadow-maint/shadow/releases/download/$version/shadow-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \;
find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;
sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
-e 's@/var/spool/mail@/var/mail@' etc/login.defs
sed -i 's/1000/999/' etc/useradd
./configure --sysconfdir=/etc --with-group-name-max-length=32
make
make install
mv -v /usr/bin/passwd /bin
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

34
lfs/pkgscripts/sysklogd Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.5.1
url=http://www.infodrom.org/projects/sysklogd/download/sysklogd-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c
sed -i 's/union wait/int/' syslogd.c
make
make BINDIR=/sbin install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

33
lfs/pkgscripts/sysvinit Executable file
View file

@ -0,0 +1,33 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.90
url=http://download.savannah.gnu.org/releases/sysvinit/sysvinit-$version.tar.xz
fetch $url
fetch http://www.linuxfromscratch.org/patches/lfs/8.3/sysvinit-$version-consolidated-1.patch
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
patch -Np1 -i $SOURCE_DIR/sysvinit-$version-consolidated-1.patch
make -C src
make -C src install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

34
lfs/pkgscripts/tar Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.30
url=http://ftp.gnu.org/gnu/tar/tar-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
FORCE_UNSAFE_CONFIGURE=1 \
./configure --prefix=/usr \
--bindir=/bin
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

32
lfs/pkgscripts/template Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=
url=
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

40
lfs/pkgscripts/texinfo Executable file
View file

@ -0,0 +1,40 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=6.5
url=http://ftp.gnu.org/gnu/texinfo/texinfo-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
sed -i '5481,5485 s/({/(\\{/' tp/Texinfo/Parser.pm
./configure --prefix=/usr --disable-static
make
make install
pushd /usr/share/info
rm -v dir
for f in *
do install-info $f dir 2>/dev/null
done
popd
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

48
lfs/pkgscripts/util-linux Executable file
View file

@ -0,0 +1,48 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.32.1
url=https://www.kernel.org/pub/linux/utils/util-linux/v${version::4}/util-linux-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
mkdir -pv /var/lib/hwclock
rm -vf /usr/include/{blkid,libmount,uuid}
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
--docdir=/usr/share/doc/util-linux-$version \
--disable-chfn-chsh \
--disable-login \
--disable-nologin \
--disable-su \
--disable-setpriv \
--disable-runuser \
--disable-pylibmount \
--disable-static \
--without-python \
--without-systemd \
--without-systemdsystemunitdir
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

57
lfs/pkgscripts/vim Executable file
View file

@ -0,0 +1,57 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=8.1
url=ftp://ftp.vim.org/pub/vim/unix/vim-$version.tar.bz2
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/vim81
{ time \
{
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
./configure --prefix=/usr
make
make install
ln -svf vim /usr/bin/vi
for L in /usr/share/man/{,*/}man1/vim.1; do
ln -svf vim.1 $(dirname $L)/vi.1
done
ln -sfv ../vim/vim81/doc /usr/share/doc/vim-$version
cat > /etc/vimrc << "EOF"
" Begin /etc/vimrc
" Ensure defaults are set before customizing settings, not after
source $VIMRUNTIME/defaults.vim
let skip_defaults_vim=1
set nocompatible
set backspace=2
set mouse=
syntax on
if (&term == "xterm") || (&term == "putty")
set background=dark
endif
" End /etc/vimrc
EOF
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/vim81
registerpkg $(basename $0) $version
exit 0

34
lfs/pkgscripts/wget Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=1.19.5
url=https://ftp.gnu.org/gnu/wget/wget-$version.tar.gz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--sysconfdir=/etc \
--with-ssl=openssl
make
make install
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

81
lfs/pkgscripts/wpa_supplicant Executable file
View file

@ -0,0 +1,81 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=2.6
url=https://w1.fi/releases/wpa_supplicant-$version.tar.gz
fetch $url
fetch http://www.linuxfromscratch.org/patches/blfs/8.3/wpa_supplicant-$version-upstream_fixes-2.patch
fetch http://anduin.linuxfromscratch.org/BLFS/blfs-bootscripts/blfs-bootscripts-20180105.tar.xz
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
cat > wpa_supplicant/.config << "EOF"
CONFIG_BACKEND=file
CONFIG_CTRL_IFACE=y
CONFIG_DEBUG_FILE=y
CONFIG_DEBUG_SYSLOG=y
CONFIG_DEBUG_SYSLOG_FACILITY=LOG_DAEMON
CONFIG_DRIVER_NL80211=y
CONFIG_DRIVER_WEXT=y
CONFIG_DRIVER_WIRED=y
CONFIG_EAP_GTC=y
CONFIG_EAP_LEAP=y
CONFIG_EAP_MD5=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_OTP=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_TLS=y
CONFIG_EAP_TTLS=y
CONFIG_IEEE8021X_EAPOL=y
CONFIG_IPV6=y
CONFIG_LIBNL32=y
CONFIG_PEERKEY=y
CONFIG_PKCS12=y
CONFIG_READLINE=y
CONFIG_SMARTCARD=y
CONFIG_WPS=y
CFLAGS += -I/usr/include/libnl3
EOF
patch -p1 -i $SOURCE_DIR/wpa_supplicant-$version-upstream_fixes-2.patch
cd wpa_supplicant
make BINDIR=/sbin LIBDIR=/lib
install -v -m755 wpa_{cli,passphrase,supplicant} /sbin/
install -v -m644 doc/docbook/wpa_supplicant.conf.5 /usr/share/man/man5/
install -v -m644 doc/docbook/wpa_{cli,passphrase,supplicant}.8 /usr/share/man/man8/
tar -xvf $SOURCE_DIR/blfs-bootscripts-20180105.tar.xz
cd blfs-bootscripts-20180105
make install-service-wpa
cat > /etc/sysconfig/ifconfig.wifi << "EOF"
ONBOOT="no"
IFACE="wlan0"
SERVICE="wpa"
# Additional arguments to wpa_supplicant
WPA_ARGS=""
WPA_SERVICE="dhcpcd"
#DHCP_START="-b -q <insert appropriate start options here>"
#DHCP_STOP="-k <insert additional stop options here>"
EOF
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

37
lfs/pkgscripts/xz Executable file
View file

@ -0,0 +1,37 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=$(basename $0)
version=5.2.4
url=https://tukaani.org/xz/xz-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$(basename $url) -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr \
--disable-static \
--docdir=/usr/share/doc/xz-$version
make
make install
mv -v /usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} /bin
mv -v /usr/lib/liblzma.so.* /lib
ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.so
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

34
lfs/pkgscripts/zlib Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
set -e
. /etc/pkg/pkg.conf
. /var/lib/pkg/functions
name=zlib
version=1.2.11
url=https://zlib.net/zlib-$version.tar.xz
fetch $url
rm -fr $WORK_DIR/$name-$version
tar -xvf $SOURCE_DIR/$name-$version.tar.xz -C $WORK_DIR
cd $WORK_DIR/$name-$version
{ time \
{
./configure --prefix=/usr
make
make install
mv -v /usr/lib/libz.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so
}
} 2>&1 | tee -a $LOG_DIR/$(basename $0).log
if [ $PIPESTATUS -ne 0 ]; then exit 1; fi;
rm -fr $WORK_DIR/$name-$version
registerpkg $(basename $0) $version
exit 0

BIN
livecd/isolinux/chain.c32 Executable file

Binary file not shown.

BIN
livecd/isolinux/isohdpfx.bin Executable file

Binary file not shown.

BIN
livecd/isolinux/isolinux.bin Executable file

Binary file not shown.

43
livecd/isolinux/isolinux.cfg Executable file
View file

@ -0,0 +1,43 @@
UI /isolinux/menu.c32
DEFAULT silent
TIMEOUT 100
#MENU RESOLUTION 1024 768
MENU VSHIFT 3
#MENU ROWS 7
# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
MENU TITLE Linux From Scratch 8.3 LiveCD
#MENU BACKGROUND splash.png
#MENU COLOR border 30;44 #40ffffff #a0000000 std
#MENU COLOR title 1;36;44 #9033ccff #a0000000 std
#MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
#MENU COLOR unsel 37;44 #50ffffff #a0000000 std
#MENU COLOR help 37;40 #c0ffffff #a0000000 std
#MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
#MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
#MENU COLOR msg07 37;40 #90ffffff #a0000000 std
#MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
LABEL silent
MENU LABEL Boot Linux From Scratch 8.3
KERNEL /boot/vmlinuz
APPEND initrd=/boot/initrd quiet
LABEL debug
MENU LABEL Linux From Scratch 8.3 (Debug)
KERNEL /boot/vmlinuz
APPEND initrd=/boot/initrd verbose
LABEL existing
MENU LABEL Boot existing OS
COM32 chain.c32
APPEND hd0 0
LABEL reboot
MENU LABEL Reboot
COM32 reboot.c32
LABEL poweroff
MENU LABEL Poweroff
COM32 poweroff.c32

BIN
livecd/isolinux/ldlinux.c32 Executable file

Binary file not shown.

BIN
livecd/isolinux/libcom32.c32 Executable file

Binary file not shown.

BIN
livecd/isolinux/libutil.c32 Executable file

Binary file not shown.

BIN
livecd/isolinux/menu.c32 Executable file

Binary file not shown.

BIN
livecd/isolinux/poweroff.c32 Executable file

Binary file not shown.

BIN
livecd/isolinux/reboot.c32 Executable file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more