From a28eebe0d80fea947cb24b2576b1400a50e5d016 Mon Sep 17 00:00:00 2001 From: emmett1 Date: Sat, 1 Dec 2018 00:12:45 +0800 Subject: [PATCH] updated --- .gitignore | 3 + 01-toolchain | 25 ++ 02-lfs-base | 194 ++++++++++++ 03-mklfsiso | 54 ++++ lfs/functions | 30 ++ lfs/pkg.conf | 7 + lfs/pkgscripts/acl | 38 +++ lfs/pkgscripts/attr | 38 +++ lfs/pkgscripts/autoconf | 32 ++ lfs/pkgscripts/automake | 32 ++ lfs/pkgscripts/base-lfs | 87 ++++++ lfs/pkgscripts/bash | 36 +++ lfs/pkgscripts/bc | 52 ++++ lfs/pkgscripts/binutils | 42 +++ lfs/pkgscripts/bison | 32 ++ lfs/pkgscripts/bzip2 | 47 +++ lfs/pkgscripts/check | 33 ++ lfs/pkgscripts/coreutils | 46 +++ lfs/pkgscripts/cpio | 35 +++ lfs/pkgscripts/dhcpcd | 37 +++ lfs/pkgscripts/diffutils | 32 ++ lfs/pkgscripts/e2fsprogs | 46 +++ lfs/pkgscripts/eudev | 56 ++++ lfs/pkgscripts/expat | 36 +++ lfs/pkgscripts/file | 32 ++ lfs/pkgscripts/findutils | 39 +++ lfs/pkgscripts/flex | 36 +++ lfs/pkgscripts/gawk | 33 ++ lfs/pkgscripts/gcc | 68 ++++ lfs/pkgscripts/gdbm | 34 ++ lfs/pkgscripts/gettext | 41 +++ lfs/pkgscripts/glibc | 139 +++++++++ lfs/pkgscripts/gmp | 35 +++ lfs/pkgscripts/gperf | 32 ++ lfs/pkgscripts/grep | 32 ++ lfs/pkgscripts/groff | 32 ++ lfs/pkgscripts/grub | 36 +++ lfs/pkgscripts/gzip | 36 +++ lfs/pkgscripts/iana-etc | 31 ++ lfs/pkgscripts/inetutils | 42 +++ lfs/pkgscripts/intltool | 34 ++ lfs/pkgscripts/iproute2 | 36 +++ lfs/pkgscripts/kbd | 38 +++ lfs/pkgscripts/kmod | 41 +++ lfs/pkgscripts/less | 32 ++ lfs/pkgscripts/lfs-bootscripts | 30 ++ lfs/pkgscripts/lfs-files | 431 ++++++++++++++++++++++++++ lfs/pkgscripts/libcap | 36 +++ lfs/pkgscripts/libelf | 33 ++ lfs/pkgscripts/libffi | 39 +++ lfs/pkgscripts/libnl | 34 ++ lfs/pkgscripts/libpipeline | 32 ++ lfs/pkgscripts/libtasn1 | 32 ++ lfs/pkgscripts/libtool | 32 ++ lfs/pkgscripts/linux | 46 +++ lfs/pkgscripts/linux-api-headers | 32 ++ lfs/pkgscripts/m4 | 35 +++ lfs/pkgscripts/make | 34 ++ lfs/pkgscripts/make-ca | 43 +++ lfs/pkgscripts/man-db | 40 +++ lfs/pkgscripts/man-pages | 29 ++ lfs/pkgscripts/meson | 32 ++ lfs/pkgscripts/mkinitramfs | 35 +++ lfs/pkgscripts/mpc | 34 ++ lfs/pkgscripts/mpfr | 35 +++ lfs/pkgscripts/ncurses | 50 +++ lfs/pkgscripts/ninja | 41 +++ lfs/pkgscripts/openssl | 37 +++ lfs/pkgscripts/p11-kit | 42 +++ lfs/pkgscripts/patch | 32 ++ lfs/pkgscripts/perl | 44 +++ lfs/pkgscripts/perl-xml-parser | 32 ++ lfs/pkgscripts/pkg-config | 35 +++ lfs/pkgscripts/procps-ng | 39 +++ lfs/pkgscripts/psmisc | 34 ++ lfs/pkgscripts/python3 | 38 +++ lfs/pkgscripts/readline | 42 +++ lfs/pkgscripts/sed | 35 +++ lfs/pkgscripts/shadow | 43 +++ lfs/pkgscripts/sysklogd | 34 ++ lfs/pkgscripts/sysvinit | 33 ++ lfs/pkgscripts/tar | 34 ++ lfs/pkgscripts/template | 32 ++ lfs/pkgscripts/texinfo | 40 +++ lfs/pkgscripts/util-linux | 48 +++ lfs/pkgscripts/vim | 57 ++++ lfs/pkgscripts/wget | 34 ++ lfs/pkgscripts/wpa_supplicant | 81 +++++ lfs/pkgscripts/xz | 37 +++ lfs/pkgscripts/zlib | 34 ++ livecd/isolinux/chain.c32 | Bin 0 -> 24560 bytes livecd/isolinux/isohdpfx.bin | Bin 0 -> 432 bytes livecd/isolinux/isolinux.bin | Bin 0 -> 45056 bytes livecd/isolinux/isolinux.cfg | 43 +++ livecd/isolinux/ldlinux.c32 | Bin 0 -> 122308 bytes livecd/isolinux/libcom32.c32 | Bin 0 -> 186500 bytes livecd/isolinux/libutil.c32 | Bin 0 -> 24148 bytes livecd/isolinux/menu.c32 | Bin 0 -> 26596 bytes livecd/isolinux/poweroff.c32 | Bin 0 -> 1664 bytes livecd/isolinux/reboot.c32 | Bin 0 -> 1376 bytes livecd/virootfs/etc/fstab | 13 + livecd/virootfs/etc/issue | 17 + livecd/virootfs/root/custom_script.sh | 15 + toolchain/01-binutils-pass1 | 49 +++ toolchain/02-gcc-pass1 | 92 ++++++ toolchain/03-linux-api-headers | 38 +++ toolchain/04-glibc | 48 +++ toolchain/05-libstdc++ | 48 +++ toolchain/06-binutils-pass2 | 52 ++++ toolchain/07-gcc-pass2 | 87 ++++++ toolchain/08-tcl | 42 +++ toolchain/09-expect | 42 +++ toolchain/10-dejagnu | 37 +++ toolchain/11-m4 | 42 +++ toolchain/12-ncurses | 45 +++ toolchain/13-bash | 39 +++ toolchain/14-bison | 38 +++ toolchain/15-bzip2 | 38 +++ toolchain/16-coreutils | 38 +++ toolchain/17-diffutils | 38 +++ toolchain/18-file | 38 +++ toolchain/19-findutils | 43 +++ toolchain/20-gawk | 38 +++ toolchain/21-gettext | 43 +++ toolchain/22-grep | 38 +++ toolchain/23-gzip | 42 +++ toolchain/24-make | 39 +++ toolchain/25-patch | 38 +++ toolchain/26-perl | 40 +++ toolchain/27-sed | 38 +++ toolchain/28-tar | 38 +++ toolchain/29-texinfo | 38 +++ toolchain/30-util-linux | 43 +++ toolchain/31-xz | 38 +++ toolchain/32-openssl | 42 +++ toolchain/33-certs | 160 ++++++++++ toolchain/34-zlib | 38 +++ toolchain/35-wget | 44 +++ toolchain/36-nano | 38 +++ toolchain/99-cleaning | 8 + toolchain/bootstrap | 25 ++ toolchain/functions | 49 +++ toolchain/pkgversion | 36 +++ toolchain/template | 38 +++ 144 files changed, 5984 insertions(+) create mode 100644 .gitignore create mode 100755 01-toolchain create mode 100755 02-lfs-base create mode 100755 03-mklfsiso create mode 100755 lfs/functions create mode 100755 lfs/pkg.conf create mode 100755 lfs/pkgscripts/acl create mode 100755 lfs/pkgscripts/attr create mode 100755 lfs/pkgscripts/autoconf create mode 100755 lfs/pkgscripts/automake create mode 100755 lfs/pkgscripts/base-lfs create mode 100755 lfs/pkgscripts/bash create mode 100755 lfs/pkgscripts/bc create mode 100755 lfs/pkgscripts/binutils create mode 100755 lfs/pkgscripts/bison create mode 100755 lfs/pkgscripts/bzip2 create mode 100755 lfs/pkgscripts/check create mode 100755 lfs/pkgscripts/coreutils create mode 100755 lfs/pkgscripts/cpio create mode 100755 lfs/pkgscripts/dhcpcd create mode 100755 lfs/pkgscripts/diffutils create mode 100755 lfs/pkgscripts/e2fsprogs create mode 100755 lfs/pkgscripts/eudev create mode 100755 lfs/pkgscripts/expat create mode 100755 lfs/pkgscripts/file create mode 100755 lfs/pkgscripts/findutils create mode 100755 lfs/pkgscripts/flex create mode 100755 lfs/pkgscripts/gawk create mode 100755 lfs/pkgscripts/gcc create mode 100755 lfs/pkgscripts/gdbm create mode 100755 lfs/pkgscripts/gettext create mode 100755 lfs/pkgscripts/glibc create mode 100755 lfs/pkgscripts/gmp create mode 100755 lfs/pkgscripts/gperf create mode 100755 lfs/pkgscripts/grep create mode 100755 lfs/pkgscripts/groff create mode 100755 lfs/pkgscripts/grub create mode 100755 lfs/pkgscripts/gzip create mode 100755 lfs/pkgscripts/iana-etc create mode 100755 lfs/pkgscripts/inetutils create mode 100755 lfs/pkgscripts/intltool create mode 100755 lfs/pkgscripts/iproute2 create mode 100755 lfs/pkgscripts/kbd create mode 100755 lfs/pkgscripts/kmod create mode 100755 lfs/pkgscripts/less create mode 100755 lfs/pkgscripts/lfs-bootscripts create mode 100755 lfs/pkgscripts/lfs-files create mode 100755 lfs/pkgscripts/libcap create mode 100755 lfs/pkgscripts/libelf create mode 100755 lfs/pkgscripts/libffi create mode 100755 lfs/pkgscripts/libnl create mode 100755 lfs/pkgscripts/libpipeline create mode 100755 lfs/pkgscripts/libtasn1 create mode 100755 lfs/pkgscripts/libtool create mode 100755 lfs/pkgscripts/linux create mode 100755 lfs/pkgscripts/linux-api-headers create mode 100755 lfs/pkgscripts/m4 create mode 100755 lfs/pkgscripts/make create mode 100755 lfs/pkgscripts/make-ca create mode 100755 lfs/pkgscripts/man-db create mode 100755 lfs/pkgscripts/man-pages create mode 100755 lfs/pkgscripts/meson create mode 100755 lfs/pkgscripts/mkinitramfs create mode 100755 lfs/pkgscripts/mpc create mode 100755 lfs/pkgscripts/mpfr create mode 100755 lfs/pkgscripts/ncurses create mode 100755 lfs/pkgscripts/ninja create mode 100755 lfs/pkgscripts/openssl create mode 100755 lfs/pkgscripts/p11-kit create mode 100755 lfs/pkgscripts/patch create mode 100755 lfs/pkgscripts/perl create mode 100755 lfs/pkgscripts/perl-xml-parser create mode 100755 lfs/pkgscripts/pkg-config create mode 100755 lfs/pkgscripts/procps-ng create mode 100755 lfs/pkgscripts/psmisc create mode 100755 lfs/pkgscripts/python3 create mode 100755 lfs/pkgscripts/readline create mode 100755 lfs/pkgscripts/sed create mode 100755 lfs/pkgscripts/shadow create mode 100755 lfs/pkgscripts/sysklogd create mode 100755 lfs/pkgscripts/sysvinit create mode 100755 lfs/pkgscripts/tar create mode 100755 lfs/pkgscripts/template create mode 100755 lfs/pkgscripts/texinfo create mode 100755 lfs/pkgscripts/util-linux create mode 100755 lfs/pkgscripts/vim create mode 100755 lfs/pkgscripts/wget create mode 100755 lfs/pkgscripts/wpa_supplicant create mode 100755 lfs/pkgscripts/xz create mode 100755 lfs/pkgscripts/zlib create mode 100755 livecd/isolinux/chain.c32 create mode 100755 livecd/isolinux/isohdpfx.bin create mode 100755 livecd/isolinux/isolinux.bin create mode 100755 livecd/isolinux/isolinux.cfg create mode 100755 livecd/isolinux/ldlinux.c32 create mode 100755 livecd/isolinux/libcom32.c32 create mode 100755 livecd/isolinux/libutil.c32 create mode 100755 livecd/isolinux/menu.c32 create mode 100755 livecd/isolinux/poweroff.c32 create mode 100755 livecd/isolinux/reboot.c32 create mode 100755 livecd/virootfs/etc/fstab create mode 100755 livecd/virootfs/etc/issue create mode 100755 livecd/virootfs/root/custom_script.sh create mode 100755 toolchain/01-binutils-pass1 create mode 100755 toolchain/02-gcc-pass1 create mode 100755 toolchain/03-linux-api-headers create mode 100755 toolchain/04-glibc create mode 100755 toolchain/05-libstdc++ create mode 100755 toolchain/06-binutils-pass2 create mode 100755 toolchain/07-gcc-pass2 create mode 100755 toolchain/08-tcl create mode 100755 toolchain/09-expect create mode 100755 toolchain/10-dejagnu create mode 100755 toolchain/11-m4 create mode 100755 toolchain/12-ncurses create mode 100755 toolchain/13-bash create mode 100755 toolchain/14-bison create mode 100755 toolchain/15-bzip2 create mode 100755 toolchain/16-coreutils create mode 100755 toolchain/17-diffutils create mode 100755 toolchain/18-file create mode 100755 toolchain/19-findutils create mode 100755 toolchain/20-gawk create mode 100755 toolchain/21-gettext create mode 100755 toolchain/22-grep create mode 100755 toolchain/23-gzip create mode 100755 toolchain/24-make create mode 100755 toolchain/25-patch create mode 100755 toolchain/26-perl create mode 100755 toolchain/27-sed create mode 100755 toolchain/28-tar create mode 100755 toolchain/29-texinfo create mode 100755 toolchain/30-util-linux create mode 100755 toolchain/31-xz create mode 100755 toolchain/32-openssl create mode 100755 toolchain/33-certs create mode 100755 toolchain/34-zlib create mode 100755 toolchain/35-wget create mode 100755 toolchain/36-nano create mode 100755 toolchain/99-cleaning create mode 100755 toolchain/bootstrap create mode 100755 toolchain/functions create mode 100755 toolchain/pkgversion create mode 100755 toolchain/template diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..772f3da --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.iso +toolchain/log +toolchain/src diff --git a/01-toolchain b/01-toolchain new file mode 100755 index 0000000..86d4993 --- /dev/null +++ b/01-toolchain @@ -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 "**************************************************" diff --git a/02-lfs-base b/02-lfs-base new file mode 100755 index 0000000..f026dd6 --- /dev/null +++ b/02-lfs-base @@ -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 diff --git a/03-mklfsiso b/03-mklfsiso new file mode 100755 index 0000000..98c2f70 --- /dev/null +++ b/03-mklfsiso @@ -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 diff --git a/lfs/functions b/lfs/functions new file mode 100755 index 0000000..266e598 --- /dev/null +++ b/lfs/functions @@ -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 :::" +} diff --git a/lfs/pkg.conf b/lfs/pkg.conf new file mode 100755 index 0000000..e8e291c --- /dev/null +++ b/lfs/pkg.conf @@ -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" diff --git a/lfs/pkgscripts/acl b/lfs/pkgscripts/acl new file mode 100755 index 0000000..47eca74 --- /dev/null +++ b/lfs/pkgscripts/acl @@ -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 diff --git a/lfs/pkgscripts/attr b/lfs/pkgscripts/attr new file mode 100755 index 0000000..f395e82 --- /dev/null +++ b/lfs/pkgscripts/attr @@ -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 diff --git a/lfs/pkgscripts/autoconf b/lfs/pkgscripts/autoconf new file mode 100755 index 0000000..ef4b0a3 --- /dev/null +++ b/lfs/pkgscripts/autoconf @@ -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 diff --git a/lfs/pkgscripts/automake b/lfs/pkgscripts/automake new file mode 100755 index 0000000..3a12da6 --- /dev/null +++ b/lfs/pkgscripts/automake @@ -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 diff --git a/lfs/pkgscripts/base-lfs b/lfs/pkgscripts/base-lfs new file mode 100755 index 0000000..fc7035e --- /dev/null +++ b/lfs/pkgscripts/base-lfs @@ -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 + diff --git a/lfs/pkgscripts/bash b/lfs/pkgscripts/bash new file mode 100755 index 0000000..d615fb6 --- /dev/null +++ b/lfs/pkgscripts/bash @@ -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 diff --git a/lfs/pkgscripts/bc b/lfs/pkgscripts/bc new file mode 100755 index 0000000..697dd7e --- /dev/null +++ b/lfs/pkgscripts/bc @@ -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 diff --git a/lfs/pkgscripts/binutils b/lfs/pkgscripts/binutils new file mode 100755 index 0000000..efdc14a --- /dev/null +++ b/lfs/pkgscripts/binutils @@ -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 diff --git a/lfs/pkgscripts/bison b/lfs/pkgscripts/bison new file mode 100755 index 0000000..82ddda9 --- /dev/null +++ b/lfs/pkgscripts/bison @@ -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 diff --git a/lfs/pkgscripts/bzip2 b/lfs/pkgscripts/bzip2 new file mode 100755 index 0000000..8a64760 --- /dev/null +++ b/lfs/pkgscripts/bzip2 @@ -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 diff --git a/lfs/pkgscripts/check b/lfs/pkgscripts/check new file mode 100755 index 0000000..46a44d0 --- /dev/null +++ b/lfs/pkgscripts/check @@ -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 diff --git a/lfs/pkgscripts/coreutils b/lfs/pkgscripts/coreutils new file mode 100755 index 0000000..ada4b91 --- /dev/null +++ b/lfs/pkgscripts/coreutils @@ -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 diff --git a/lfs/pkgscripts/cpio b/lfs/pkgscripts/cpio new file mode 100755 index 0000000..b0c35c6 --- /dev/null +++ b/lfs/pkgscripts/cpio @@ -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 diff --git a/lfs/pkgscripts/dhcpcd b/lfs/pkgscripts/dhcpcd new file mode 100755 index 0000000..ee9df5c --- /dev/null +++ b/lfs/pkgscripts/dhcpcd @@ -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 diff --git a/lfs/pkgscripts/diffutils b/lfs/pkgscripts/diffutils new file mode 100755 index 0000000..2853c11 --- /dev/null +++ b/lfs/pkgscripts/diffutils @@ -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 diff --git a/lfs/pkgscripts/e2fsprogs b/lfs/pkgscripts/e2fsprogs new file mode 100755 index 0000000..d16b712 --- /dev/null +++ b/lfs/pkgscripts/e2fsprogs @@ -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 diff --git a/lfs/pkgscripts/eudev b/lfs/pkgscripts/eudev new file mode 100755 index 0000000..0fc6cdd --- /dev/null +++ b/lfs/pkgscripts/eudev @@ -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 diff --git a/lfs/pkgscripts/expat b/lfs/pkgscripts/expat new file mode 100755 index 0000000..fec6de2 --- /dev/null +++ b/lfs/pkgscripts/expat @@ -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 diff --git a/lfs/pkgscripts/file b/lfs/pkgscripts/file new file mode 100755 index 0000000..7fdf97d --- /dev/null +++ b/lfs/pkgscripts/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 diff --git a/lfs/pkgscripts/findutils b/lfs/pkgscripts/findutils new file mode 100755 index 0000000..bf17db4 --- /dev/null +++ b/lfs/pkgscripts/findutils @@ -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 ' 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 diff --git a/lfs/pkgscripts/flex b/lfs/pkgscripts/flex new file mode 100755 index 0000000..17e5357 --- /dev/null +++ b/lfs/pkgscripts/flex @@ -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 " 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 diff --git a/lfs/pkgscripts/gawk b/lfs/pkgscripts/gawk new file mode 100755 index 0000000..e828a54 --- /dev/null +++ b/lfs/pkgscripts/gawk @@ -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 diff --git a/lfs/pkgscripts/gcc b/lfs/pkgscripts/gcc new file mode 100755 index 0000000..5e1d7ad --- /dev/null +++ b/lfs/pkgscripts/gcc @@ -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 diff --git a/lfs/pkgscripts/gdbm b/lfs/pkgscripts/gdbm new file mode 100755 index 0000000..c8ca584 --- /dev/null +++ b/lfs/pkgscripts/gdbm @@ -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 diff --git a/lfs/pkgscripts/gettext b/lfs/pkgscripts/gettext new file mode 100755 index 0000000..ccb2e90 --- /dev/null +++ b/lfs/pkgscripts/gettext @@ -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 diff --git a/lfs/pkgscripts/glibc b/lfs/pkgscripts/glibc new file mode 100755 index 0000000..16c1f7a --- /dev/null +++ b/lfs/pkgscripts/glibc @@ -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 diff --git a/lfs/pkgscripts/gmp b/lfs/pkgscripts/gmp new file mode 100755 index 0000000..e1bb986 --- /dev/null +++ b/lfs/pkgscripts/gmp @@ -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 diff --git a/lfs/pkgscripts/gperf b/lfs/pkgscripts/gperf new file mode 100755 index 0000000..cea0279 --- /dev/null +++ b/lfs/pkgscripts/gperf @@ -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 diff --git a/lfs/pkgscripts/grep b/lfs/pkgscripts/grep new file mode 100755 index 0000000..0cadf63 --- /dev/null +++ b/lfs/pkgscripts/grep @@ -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 diff --git a/lfs/pkgscripts/groff b/lfs/pkgscripts/groff new file mode 100755 index 0000000..75145bb --- /dev/null +++ b/lfs/pkgscripts/groff @@ -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 diff --git a/lfs/pkgscripts/grub b/lfs/pkgscripts/grub new file mode 100755 index 0000000..334ded7 --- /dev/null +++ b/lfs/pkgscripts/grub @@ -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 diff --git a/lfs/pkgscripts/gzip b/lfs/pkgscripts/gzip new file mode 100755 index 0000000..32104e6 --- /dev/null +++ b/lfs/pkgscripts/gzip @@ -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 diff --git a/lfs/pkgscripts/iana-etc b/lfs/pkgscripts/iana-etc new file mode 100755 index 0000000..3b232d9 --- /dev/null +++ b/lfs/pkgscripts/iana-etc @@ -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 diff --git a/lfs/pkgscripts/inetutils b/lfs/pkgscripts/inetutils new file mode 100755 index 0000000..c380774 --- /dev/null +++ b/lfs/pkgscripts/inetutils @@ -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 diff --git a/lfs/pkgscripts/intltool b/lfs/pkgscripts/intltool new file mode 100755 index 0000000..d6a759e --- /dev/null +++ b/lfs/pkgscripts/intltool @@ -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 diff --git a/lfs/pkgscripts/iproute2 b/lfs/pkgscripts/iproute2 new file mode 100755 index 0000000..ddde06c --- /dev/null +++ b/lfs/pkgscripts/iproute2 @@ -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 diff --git a/lfs/pkgscripts/kbd b/lfs/pkgscripts/kbd new file mode 100755 index 0000000..4394114 --- /dev/null +++ b/lfs/pkgscripts/kbd @@ -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 diff --git a/lfs/pkgscripts/kmod b/lfs/pkgscripts/kmod new file mode 100755 index 0000000..2610178 --- /dev/null +++ b/lfs/pkgscripts/kmod @@ -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 diff --git a/lfs/pkgscripts/less b/lfs/pkgscripts/less new file mode 100755 index 0000000..1fed790 --- /dev/null +++ b/lfs/pkgscripts/less @@ -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 diff --git a/lfs/pkgscripts/lfs-bootscripts b/lfs/pkgscripts/lfs-bootscripts new file mode 100755 index 0000000..d9f47fa --- /dev/null +++ b/lfs/pkgscripts/lfs-bootscripts @@ -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 diff --git a/lfs/pkgscripts/lfs-files b/lfs/pkgscripts/lfs-files new file mode 100755 index 0000000..8e23b28 --- /dev/null +++ b/lfs/pkgscripts/lfs-files @@ -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 + +# 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/ / defaults 1 1 +#/dev/ 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 " +#DHCP_STOP="-k " +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 +# modifications by Dagmar d'Surreal + +# 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 +# updated by Bruce Dubbs + +# 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 +# updated by Bruce Dubbs + +# 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=_.<@modifiers> + +# End ~/.profile +EOF + +cat > ~/.bashrc << "EOF" +# Begin ~/.bashrc +# Written for Beyond Linux From Scratch +# by James Robertson + +# 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=_.<@modifiers> + +# End ~/.bashrc +EOF + +cat > ~/.bash_logout << "EOF" +# Begin ~/.bash_logout +# Written for Beyond Linux From Scratch +# by James Robertson + +# 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 diff --git a/lfs/pkgscripts/libcap b/lfs/pkgscripts/libcap new file mode 100755 index 0000000..60439e8 --- /dev/null +++ b/lfs/pkgscripts/libcap @@ -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 diff --git a/lfs/pkgscripts/libelf b/lfs/pkgscripts/libelf new file mode 100755 index 0000000..1b4892e --- /dev/null +++ b/lfs/pkgscripts/libelf @@ -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 diff --git a/lfs/pkgscripts/libffi b/lfs/pkgscripts/libffi new file mode 100755 index 0000000..8b8ab9b --- /dev/null +++ b/lfs/pkgscripts/libffi @@ -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 diff --git a/lfs/pkgscripts/libnl b/lfs/pkgscripts/libnl new file mode 100755 index 0000000..e5a88d2 --- /dev/null +++ b/lfs/pkgscripts/libnl @@ -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 diff --git a/lfs/pkgscripts/libpipeline b/lfs/pkgscripts/libpipeline new file mode 100755 index 0000000..6ed7c09 --- /dev/null +++ b/lfs/pkgscripts/libpipeline @@ -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 diff --git a/lfs/pkgscripts/libtasn1 b/lfs/pkgscripts/libtasn1 new file mode 100755 index 0000000..2679db9 --- /dev/null +++ b/lfs/pkgscripts/libtasn1 @@ -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 diff --git a/lfs/pkgscripts/libtool b/lfs/pkgscripts/libtool new file mode 100755 index 0000000..c674fbc --- /dev/null +++ b/lfs/pkgscripts/libtool @@ -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 diff --git a/lfs/pkgscripts/linux b/lfs/pkgscripts/linux new file mode 100755 index 0000000..2c7917d --- /dev/null +++ b/lfs/pkgscripts/linux @@ -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 diff --git a/lfs/pkgscripts/linux-api-headers b/lfs/pkgscripts/linux-api-headers new file mode 100755 index 0000000..e9d05db --- /dev/null +++ b/lfs/pkgscripts/linux-api-headers @@ -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 diff --git a/lfs/pkgscripts/m4 b/lfs/pkgscripts/m4 new file mode 100755 index 0000000..825bd51 --- /dev/null +++ b/lfs/pkgscripts/m4 @@ -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 diff --git a/lfs/pkgscripts/make b/lfs/pkgscripts/make new file mode 100755 index 0000000..1280edd --- /dev/null +++ b/lfs/pkgscripts/make @@ -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 diff --git a/lfs/pkgscripts/make-ca b/lfs/pkgscripts/make-ca new file mode 100755 index 0000000..0b35cee --- /dev/null +++ b/lfs/pkgscripts/make-ca @@ -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 diff --git a/lfs/pkgscripts/man-db b/lfs/pkgscripts/man-db new file mode 100755 index 0000000..5785418 --- /dev/null +++ b/lfs/pkgscripts/man-db @@ -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 diff --git a/lfs/pkgscripts/man-pages b/lfs/pkgscripts/man-pages new file mode 100755 index 0000000..b775578 --- /dev/null +++ b/lfs/pkgscripts/man-pages @@ -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 diff --git a/lfs/pkgscripts/meson b/lfs/pkgscripts/meson new file mode 100755 index 0000000..6d04499 --- /dev/null +++ b/lfs/pkgscripts/meson @@ -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 diff --git a/lfs/pkgscripts/mkinitramfs b/lfs/pkgscripts/mkinitramfs new file mode 100755 index 0000000..fb9b51d --- /dev/null +++ b/lfs/pkgscripts/mkinitramfs @@ -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 diff --git a/lfs/pkgscripts/mpc b/lfs/pkgscripts/mpc new file mode 100755 index 0000000..b1c3026 --- /dev/null +++ b/lfs/pkgscripts/mpc @@ -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 diff --git a/lfs/pkgscripts/mpfr b/lfs/pkgscripts/mpfr new file mode 100755 index 0000000..a1daddc --- /dev/null +++ b/lfs/pkgscripts/mpfr @@ -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 diff --git a/lfs/pkgscripts/ncurses b/lfs/pkgscripts/ncurses new file mode 100755 index 0000000..81f2627 --- /dev/null +++ b/lfs/pkgscripts/ncurses @@ -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 diff --git a/lfs/pkgscripts/ninja b/lfs/pkgscripts/ninja new file mode 100755 index 0000000..91ccfc8 --- /dev/null +++ b/lfs/pkgscripts/ninja @@ -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 diff --git a/lfs/pkgscripts/openssl b/lfs/pkgscripts/openssl new file mode 100755 index 0000000..4903e45 --- /dev/null +++ b/lfs/pkgscripts/openssl @@ -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 diff --git a/lfs/pkgscripts/p11-kit b/lfs/pkgscripts/p11-kit new file mode 100755 index 0000000..9bc9f3d --- /dev/null +++ b/lfs/pkgscripts/p11-kit @@ -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 diff --git a/lfs/pkgscripts/patch b/lfs/pkgscripts/patch new file mode 100755 index 0000000..e4124bc --- /dev/null +++ b/lfs/pkgscripts/patch @@ -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 diff --git a/lfs/pkgscripts/perl b/lfs/pkgscripts/perl new file mode 100755 index 0000000..316fce3 --- /dev/null +++ b/lfs/pkgscripts/perl @@ -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 diff --git a/lfs/pkgscripts/perl-xml-parser b/lfs/pkgscripts/perl-xml-parser new file mode 100755 index 0000000..6858621 --- /dev/null +++ b/lfs/pkgscripts/perl-xml-parser @@ -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 diff --git a/lfs/pkgscripts/pkg-config b/lfs/pkgscripts/pkg-config new file mode 100755 index 0000000..01fd3d0 --- /dev/null +++ b/lfs/pkgscripts/pkg-config @@ -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 diff --git a/lfs/pkgscripts/procps-ng b/lfs/pkgscripts/procps-ng new file mode 100755 index 0000000..88b41cb --- /dev/null +++ b/lfs/pkgscripts/procps-ng @@ -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 diff --git a/lfs/pkgscripts/psmisc b/lfs/pkgscripts/psmisc new file mode 100755 index 0000000..f316ed2 --- /dev/null +++ b/lfs/pkgscripts/psmisc @@ -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 diff --git a/lfs/pkgscripts/python3 b/lfs/pkgscripts/python3 new file mode 100755 index 0000000..0d16807 --- /dev/null +++ b/lfs/pkgscripts/python3 @@ -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 diff --git a/lfs/pkgscripts/readline b/lfs/pkgscripts/readline new file mode 100755 index 0000000..389102c --- /dev/null +++ b/lfs/pkgscripts/readline @@ -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 diff --git a/lfs/pkgscripts/sed b/lfs/pkgscripts/sed new file mode 100755 index 0000000..ecdde0f --- /dev/null +++ b/lfs/pkgscripts/sed @@ -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 diff --git a/lfs/pkgscripts/shadow b/lfs/pkgscripts/shadow new file mode 100755 index 0000000..97bfc93 --- /dev/null +++ b/lfs/pkgscripts/shadow @@ -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 diff --git a/lfs/pkgscripts/sysklogd b/lfs/pkgscripts/sysklogd new file mode 100755 index 0000000..80960b3 --- /dev/null +++ b/lfs/pkgscripts/sysklogd @@ -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 diff --git a/lfs/pkgscripts/sysvinit b/lfs/pkgscripts/sysvinit new file mode 100755 index 0000000..f50c877 --- /dev/null +++ b/lfs/pkgscripts/sysvinit @@ -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 diff --git a/lfs/pkgscripts/tar b/lfs/pkgscripts/tar new file mode 100755 index 0000000..61b5dab --- /dev/null +++ b/lfs/pkgscripts/tar @@ -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 diff --git a/lfs/pkgscripts/template b/lfs/pkgscripts/template new file mode 100755 index 0000000..89975c7 --- /dev/null +++ b/lfs/pkgscripts/template @@ -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 diff --git a/lfs/pkgscripts/texinfo b/lfs/pkgscripts/texinfo new file mode 100755 index 0000000..44790ea --- /dev/null +++ b/lfs/pkgscripts/texinfo @@ -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 diff --git a/lfs/pkgscripts/util-linux b/lfs/pkgscripts/util-linux new file mode 100755 index 0000000..28ff3bc --- /dev/null +++ b/lfs/pkgscripts/util-linux @@ -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 diff --git a/lfs/pkgscripts/vim b/lfs/pkgscripts/vim new file mode 100755 index 0000000..626b28d --- /dev/null +++ b/lfs/pkgscripts/vim @@ -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 diff --git a/lfs/pkgscripts/wget b/lfs/pkgscripts/wget new file mode 100755 index 0000000..fbc89f4 --- /dev/null +++ b/lfs/pkgscripts/wget @@ -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 diff --git a/lfs/pkgscripts/wpa_supplicant b/lfs/pkgscripts/wpa_supplicant new file mode 100755 index 0000000..597c3e2 --- /dev/null +++ b/lfs/pkgscripts/wpa_supplicant @@ -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 " +#DHCP_STOP="-k " +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 diff --git a/lfs/pkgscripts/xz b/lfs/pkgscripts/xz new file mode 100755 index 0000000..9e16915 --- /dev/null +++ b/lfs/pkgscripts/xz @@ -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 diff --git a/lfs/pkgscripts/zlib b/lfs/pkgscripts/zlib new file mode 100755 index 0000000..7f5aa37 --- /dev/null +++ b/lfs/pkgscripts/zlib @@ -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 diff --git a/livecd/isolinux/chain.c32 b/livecd/isolinux/chain.c32 new file mode 100755 index 0000000000000000000000000000000000000000..aa1e03eb02d61ed685e04bfb37ed0a5ea0524e82 GIT binary patch literal 24560 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 Ve^eGt(Y{gHG0-(ei3}P-{|}FCG8g~= literal 0 HcmV?d00001 diff --git a/livecd/isolinux/isohdpfx.bin b/livecd/isolinux/isohdpfx.bin new file mode 100755 index 0000000000000000000000000000000000000000..89371734bd83c8ab813358043d6465c2f1d7efa1 GIT binary patch literal 432 zcmXqhI{_~+e*3HM>K=xg-+$5!Z>JfaObbp6WDD=R+jlf*A4AQ42DY6HjGvdj@@8XT z2-@PfdsV36NrP`c&k7fbHU17=RVvW@kg||j`TeyM!g$o0JQv*YqL&I^VN1xIf?Hp=;AE+oO<@~khP4z36 z8U}_J%?z2v`8k<+r4@QfnRyDinZ?DKdFcxIMGDFJMMb3rC3?JEX$fhDm(rNoepIIk zi~Xri3rY)M3(jK966k!E_TB77^?@gB9S=K>PWoo{uDatG$3w>*j7(i(pQ_Ia_ofJ> zB_4hu$KYR(T9jAXF=VkoxK z+E%S-ZLPJf?ayjJrC=;*?FG?RtF}dJ?Z!|`t3|x#EZWca^F6QgIx zAUAnUl7AtWcM*W8;x74NKU*$$?`Ox!XY{k%<>G$!9=W@d{jt1hv4_0fXqaw=iLFeL z9=V(bh-mXeFcAy$dOd8)VJvsXc2LQ5;^q(+xki)GX6tf_h;xyF zKla%<2DD28!oR6TsBc2AW{_&S4U*byQgrNmes14&4m?M~!NBhgXSK%_IB9laNShgH zL&w@Kx7kRu2MI5c@qQ%bp?5L%V}?IiK-^>lV#n~-Gfa+NGJLT|y`I}M*GT^a?B64H z5qqLjtq?g5>buyWyAkeus|Vdoe*wtOBtY)_tAT9=qiwy9L!DVY|1@-Qz}@!?e|3*t z_ZNrk{HuZF_UZ%3eM!I}^&`zH7Y@0Q{a1tj*NIpEZP9PsD~IgePd{@mW8N_>+>g1_ zZ-b)Bke+#)=?q{Rq>Tu@228ZJLD-YFnT`Y#-DiLK=^myJ2K8ftM&>?}(D<;i>cm99 zG(K#q^y<-XroAT$#~^el==o_g%>#~eJ)dl*5#V^L&g|LJM6*Ew6Vuwro#e7Zl3qQF z_5hACvWVPeQy&)69B`QTKj}wYLa%-!ewMZ~V+LEaM|9vDcj`CMt1&#$2ck~S%=}%p zlMsYB{ls!IbchtadkP`@h7l5FGXvD!OD6C84auO-0j9H_Fl|Yuk!rRkYo(aFMJ}7* zdWP4`BT@8T=S;H5QX;PO$S2`AX&eH9Px^l6!bij(hCUm)EVOqbFTKG@7Tq{8z!uBj z*p%-OO;q@wx|nJvXlH1cisl8#nfu}(IeC99^z6%Dk@xS@@gVTq@PC*Q^iS_ib|ik? z^rh*C37Q>8kdq8s%jlU5?aE1{=;)cgVQwz8w<6bAmb}+B8s*&v2teNT|dEzw8_4 zKqZ?I>pW>z;{He=ixn8E;Gg;p1_o_Ssslkpw z2R8z%5e|+tUIZq;-9{6Wpmm(;nPjAWpYHLJ(`lf`$4L7>?G(sq4d|I=q^CY*hQdNX z`#lZqeKyoZpZO`;$N_e38&JFe9zE{KFp|1*t{BiCprp+nc3Wnk!qPJf>(uMatDIVr@wqcYH$4hY|sdK@tUPc z@hKTv$-EHxi;@@Qp>t=4%4f^xNq{7JZAD#W*$SOr5)d6I2@MaQJ9{Es5*H#-m+DI^ zC6Q~Y%hpIr^^&4;ArF*Qtt~HGW2jvq0V!)G#cS8KwGw?%ad~O5q^PROu)1u` z3P}}nD=(E)l~z@itz9E2DXUr)5)#4?&{UKzmsAujU&T;dUB;v`nUkU-pHZn?U8HAn z2TSyobrbLPYb7-k&oceSX02gOiKJ@n>QcRKqG*v` zQc_t~T`E~50ZD7uuBwt$mKIg5UGtp%MKiEmzLK_iYwQyDqSOq zieIXclrZhGTt881c~KS9E_!|G>Iyx>s$TbB;xW(onh>FU?eZdhsU%uCJ8fw)Q@FZp zdFjIEP4}F6rdc$lr4pT9U$J1$oT|F2XDuAEzD~ckGGzJM)pM$fS4+sXm6FwKD@*@( zLrt`&l4)5u{_1 z*^>EuJr!;5H{gsaV6=pTJ@MRWWELw%O`4f?+&nKxZeGkNE?vxH^L}OjD%l4rb|FSTi8a4pciNp!5Q^!B1x|Riln`_4^R?d^#*Md+G4P6xQ%9# zt^ z?7;<2nn4LQ%nD&@3mIUW+TvQQP`2|M&s_`~hQiMv-3AQWXDPWYhtJIV z01i8u*cy-;dX^3ch8J%<$bOcMYPtEU0Fgbt_3A{*OkkKik@D1KaDicWPix!1J@DgG zJMU38S!83UlIkv}v#l?L?EHEG10DL6Ly z5dF1Nk4c6MQzp`GmK=b3{8?z3o2he`iBRkoBiD?}&@F7WMJZ91WXw1H0vr)sw-r#)~ z7yP#i&xM%%E-v_QSChv}ff(5RpOU-&O``hAK%k_#Fwq zwH;q+u|IsGK6FshYj~)&H7>TcIYlkm@L51F?g8ygqw0fuz^e>U(EEM?+DYsFIkR&Z zj;$*uVf&b8Xm3{oU|=F?E%_qgC-OrZlc}qbd9&Y^$-v4*6WI+jm{quIBbb1hrx=*o z^l+juGtQaxiBbhNbr0Si+IxrrE6gC$dme)QO-~x5iz;UU-0aLQ6`@g!wZ=0Sz+*UQ2 z`q?yi&~)bD-I8}Faz0>y?!ocG0;ETb{=RW`Rqe&`Wa;B;fdgpHog1v78KBjokvjG9gLFIdRg1Paql@`s&r|3lyT62kM%)4+EZ(KM%(OlsO>n@6K)K$Wayi{jxfS+ z;0(_6l-xA9_T9##m?`_vczp@;_{)Jf7Ed(8{~#oCkrM@=Ch&j5BWv4X*vi!P3?Y5v z&HyCNGgwr>0HQk&9Cyi1M)~cFqZmL@0bXRrwTG ztG8|5?f)ogot9Cd={mp+Xy;2Y%uLaZGB>(|NjIJrzoL?b_I}ZLUktj2TySvr!!LTn z0O)FEQkn2X&aT{dC&IQdRUo2=kDM7H20M(4z-6;9gLVK# zJAZxnn0gkzeW!V%?q#B*dYQz@y1alfTYMPB=J?quoQN3MPS0khOp)<4_MMGv&&bNu zq^2211dq*nS%A4-CO^rv6|lrSL6x##N-4vradWzCE{aeX!+Yq}LlLgk^MhR+i&@Tz zeCcer@N^j_+MI#_&^jXqzpB4wQF?niW>}6g=^$J`kr+CW$c~8+SJmLX`pd>%wk4hO zB-}$L+B}^}VyHZMP6cOTR9`6FXGaLy?8VqL)Fk5o7H_y4*dI9XoWxv97W%B{4aUY| z46fE0mN%UDolXn3BPQ_F!gQHjwE0^m$;@Mxfj{kUFkF!B5sFGB)yL$vWI2t)oYonA zc9sRZ%oH&8Vc~RDy!{}P@3~Bw=yPT^Fhrh<^t&a=n~~n(+8!YhZ9c=~G!DfU)0O0N29lYw7NzJ3BS<*Lh&gY9p((~w7&Y^`Jk&tw)z+A&1TAX5 z{FGtdgY!%#mx*#7?B@(TWGXUy!G3BIoRHl<-^pY=;>WxN&ujUe2~E`UtcnXvN5`GeZxZIb&me3v2Q{qMjFc- zpw~GenLa%5l-+NlYP}z@WFZWnl`EgOd)EJI^ve8J#KdXMfu=%e96;&~#aF_zyLHmD6W218rhhQ48*0Hl7ybWakzX=G&}{@WAn_6`y!qvob&( zIKH<|tR#+atrM23V?dLpHa>OgH-mA8*e&ee1KGXF%cHI-)KinXP8#M zyZ->9N67um8VBFi=H%KeN*8DNK+RWAEcGHM)jv_Vk|~_B^m%b96MbIXcn2~5`5z)o zLomWTClwR>jM!tx;n3dabsvm3otvn8(zCihoT&TUMBN{b*(NGy9!%{A9gWlg^}|Ez zktJOuGTs=aC;G8xVojqi1^(St%m`-Lyv@SQ`~A*g%ig2R^lUmcvC2|uhzPow7n-Xu zb0TiE34Z0!kC?&Y7!ko7c`7lcM|U}Yr^ZPt%8j|E^wDBdl!vK!k|}DMsd(lyWV4Ix zWbFW^UnWfQfZ;wL0&Hxxd znU%_71Yp#;2!LT{jW)%Q(OItG;o-I_cHjW~g|hYNQGf>i9R8Hqc6e%hIM8Z{1& zQqfo!?~N{=h&@$z#K5b5gD0RagJ~Euui;&4dOg=AwAWI4@7ZJ@V6}@~LH$xNz}o8X z3rx(_%v_D>K;ff=4G^}#Gb(tb13k^W?PabL%w^30>=yPB{}F(cNKk;qz|Pu4M05=B z>v*%5B_ZjPq45m1uMV|tg7izUmbJkPfET$TL)?`Roo9c$gpIamqzAdAnkz8suJKnv zp95KSHOykJbq5F~keSs2a~y77k5NyIzoE$ng0V?FM=jHW!Y>;WEO-M6LTzoc#DHS@kowMQxV30|3+--LdVNKch# z=v6B|Eeh!_Jwzg!m8dSd4&U)6F0i_~c#bJB)W9=_p#~OX3pkzSE}Y+^EfrzLM~LC% zN4%eut3Ktf{*>#I%q>{WO-kWvbD+;S^vQ3lIdMM|*}aU-Iv~b8KZot?D=K9dT7DNiQrSIT_3lK5ErB5PEOo;wj%Ly3(h5%`IM=qP zF^L-|Vy!WbXb)ie;DG6{F%RFwmLW?!a1@PAk_BJK6BKyBM<9KK6}%1jreXc85uP7!AVvhlNKNmQ1o)s>?^QI{lS#E zAvsW865I*2(JZU!Zx=R6;b^xI5eI(-rk6aCKo<^ccM7W!iG({95E+K_edLi3I3AwM zO4Pf)7x8fcg6?gOfsPR@wjMyIsM#Lb-qa3Ri|)F6h+2Mx!Sj%>mUepu`K`=+)3((b3=;7ji#`=Z9JRX#7vW#tnZM`*9OCDa!azZTQJJ zppG;?zzp9gy$sWu6i0C$=swLr?8C^N<8`8*%CEb>R3Zp9dZ$ahOd_~KjnmHL3Hw?N z$C@6M3!&jB(zsiucIHU!*K#|Ir*+N$=j-KA&$CL>ICfsrq`+iQxCR+}l#J|Mg^-lz ziX@T}HY6V4&tlpAQ)k&+{Nttx081?q9aYHeL&`M;tyba6mpcz4b9g?V_Ls zVy~j@YhY^J-p5*0-x%Mh6}~gQeyKWHKM6hXnAv_`p`IMD2HsDqeU}GNK%MHljgb^% zFXZjkuZH3=)?oIxko)C_8kXqjxi296nJT0!wlJt^)iH2 zla>^KqedEum{Akk1tcfPTp#+|#0m*3U557Ez^NZUMjmFABZWDlqvy2<3?DSOE2E1- z`akxkYvWvVel_GIe4A_Q8CPIRR}^s$+Uz6Ai@IN%bH2}>IwvlDWa%8Ww{6F-km^6q z(s*X-J~iC!P>8Xd>_o$;u4na>E!j{zcsV@*F^=;Ly!|P6(s`Ju$Chhj1#GMZR0D{v`U1&M07pCeC8qg_OXrZ>N#s9K)F>k`$2!Et^ zbI#qZJ5r22NWj=wbWXP8w(jJ5cspUM`|D3^)?&SVR*J}qltQ8uqNQ+B39RJVg(Yy! zbUXU-ip~>+SHQl@Ilhld=eeDsd~Zo3Vn=LU_~ z?tT9YH%`l8nYGL^ftxENdCFQb8yLTHwv36I8{?p`m2VQrsDGNCI%fh<%{o~Jx+*Zh z3%6Ht7+_s3bj)hSWMLTJ@K>bcw$Zt%nv+nt9ELiz2oRW}oU!I48KlNdFghi{@qzI{ zQH{{D-f1b@NYNRnLj#{$J|GNpoGkrH7Lv7{&5CuxbAjL54H?t=g*eDR!XhU7CUEO< zRv~wXZ}p@!ipMj@t(;_8hgSl4G~3yHRi72=Y<$#MGt&~hkfQU#fx8R!1=5-ruvb5b#*KbP(gh9fTa1A1z(sG;l~(e`6GqYb%S^*5(GxbG;Y4or1pTo??Yi z^~U6&-(7ohLG4^LiQKp2iFn1KI1@Vy#GBBvtp$E-0<7hkDE&bkH}dcH6v%OTi@UdF zDGWW^U5jq!*;gxg>mo9<#Ftv9S7M^0#6rm-ppJvEwHc&-E=GUjD@yrGm3$cfkAW+V zTP#4s$MvE8tkNf9fS9IdGnk$l-@#)7I{MWMh{VZVxAClB`{0Lrx9>wjsN%*0*2kaAd?7TPG*W)2KUOb!!-V6Hv zai#0U$CSslYyca$C;THA%64APhrt?ZAb$F}?D^g+R+h`AT^F<$3m&ODW*lL*4LFPF zy&ouG+RVd`TLM3QQ*bC9MAz*7=y8Wv`#*w$-9eq%=`&|j^8MR+1w(SzI^Z48zy4SJ zx&oHySklPOCrKj^o}%1MsLvO2`?Q%#>MQHm%PE3C6Kwc&|(e z+2%ySg*znmQosj(40figw8?xuI%C#cnM@m<{0gd(P=A?I-037W7Z1D-nY|NJ(nYe_!S-8{_|SludlGqk!OfF_UhUFTVvK%(EqnAYG9%=KISVs$%u8`|p}_bM)HE!L{s7d>AlkeGWYXjzVAxJ_>JSJei$QHfV%-0B%UA9a4+r*C3kXK#gadetACWX;9NNq77^f zYk8MA=1=dB%z3@#EHnENi)AneSUNT$R#4|l4rF8Dkm`w zvlbHb=l9V(mb639VuhcolBv^lz0!+*dAo36+4Y#QL^L#>P@F{XFWf?3e9?D7TxUfV z&g}B))n)KSB}77dO^xF&$%;kmIflP8C(&38QY-y;rtbxHlz7k)?;0$< zqYO>=`BOPbmr3xJ=oVB0!CnM;>fbn`$BPt<%V34xY+ zS-|5%+;Mu50)PQDGfMTshC@kU>5)|`Tz+5;!*?+CfO`1pD`UjE#O{q5q><;Ew3J(4 zuH@mLAx#T2RhmdqOMxD8P_k(Q2BBz++8{JaJ<`*M;`eu%AbN$O>Gzk^S~$^SX0t+c zOydHJ-p8We(+&7+)d;B3zB?GDmwAu_m<)hZZhpp83`xgW7-?2KC5_{eAFYn%k-kn= zM1LtJ3&=-HRf4X{xuHW!HpJzb6<1IL>8v=b44vBorp&#V+doKXr%G@ltKurg%Ft*4VgpAJTuFA zpwUoFnqOPhDLQtl>;?aHgk_0yw)BZwrfpbZHe=h+zI7;X9a;f7{gC5KQlez|dC|*b zQLxo09n5DNhglIUQOlRG+VeR6x}f=37HoZOvKq1)A4&|dt;VVGFoKue{5S`VU~~Cr zqp`;0l5|And14!sra~N|pQzz$+ZvC{KIQ(B3G6${G3=qYA))oPsXKV7+@lKAXDGDs zVFJ$z0u$heATS>8_Mgivqmz5@GgdWbH^0Fa8(#8X0QGBca}Dc`<9vheL!4zO^dD!C z)$mitOJA}?%BlVj!2D9q{P#ILL&$F&-+-F{_F|4nTc$e1yite1hxd|$<@0!Mf?c;z zAZHujVN7F+ZE2}k)EJv?XWIX1#O4PwvS8d^pMZ5^A3o9etWyHvCkn;Aq9g?o9UMS?buj58wN7(U$LTm_@fdQ*T8(HxCP(yS%?HPM zouM!j+I?e}FlZ#E<7lGn13B+4!XBno5Aey3EVO%!DnRx*8>8qWy~;z*)0{MF5gWD z&_3Ii5F5Z<$L9g5i_IHdIOaGv#F^&NC3v?Uxtwd?yij^-Ru}yIVz6{U8b4KLib86m z%0`1@-)`zZOqhK-cRta6hl?#SVrN=FOK+Wfj$mEd#_r%LvUU=2xDCWi+cG6avK}yu zUyPb+7QV*eI#YeZB7GJH_mgJg$7C|y4Ht@zT~1teRnTO6oHxiaqvkM+>aJSh$zisM z2DFV0cY#4VyKH{(h5>dyZ#?kYRNsU^)lEce)vomArBJ?8cY5N^3W>8~n$vJoH&pId ze`=}UfNErmP&Fca2fz%Y5DJJ!AL+C>XmHq1RR4f#H0-XJ@v!NhV>ujK+n*9Vy&oX_n3gfUXDd5mjscBv+)wATI~Ys4_x@#~ z|6`ZIq!xb>KXFvIc%{q7;Zl8Z2778J_Q@U$3Nv-tb?7TOXs)(fWSE-$WrW&$V9GT5 zd#N*Hz&@@@?5c_G?%tz75!EPN8{S3#T!L1<+}-shTF{Il28lTqE5c4jVRTy^ZcF9= zvJAps><8d|Kb(4~VLMahyZi+4*og$p-l1>v$xoa`tX|;%-lTsLU!KI*RTWSAAuKLX zm9TXsZ`>|j7(;EqNb!Nl1Q?Bf#_mnLM!+h@9^1&?9kz)uM~jJ<6Gbg!<#Uh?9+p@b zBjZz0G*deXwJ14=*>k5mbTh7>n;m^R7jq^LGah+Sa1khcUG&P~H7_Rk>cWescY?qq zw6Gv`E>(S{ZF3%iS}+ckaV>q3BCN|TaEBYqoN-Mr&eDC+;Kpv4tW_dWuEFLq)*KgN z66Ab9izCO_cN0FDpQXFBl6_&mX)>as>9Jo0XOU=(_I;E}^k+z`mqFHD>M7Mg+q*Z^ zj?+U)mKTV_vS{1><K@Kb!@VKxlWxo*#Z3T9L|i1bQg#@YeJn$N)OdcB};94YJl@ZiCN3emA%N65z< zpM<*^H+BAX95^s#gm%$-#MC-4p4rhDd{EppQZb~RhFqe~Srr@ctMPy2Bv#|c=P_XB zZ;MZHFde;`cz7PRRlukhYr}~f^Fn*2XXdc@mPqHSUIA+dg~#E>Ix(*2(UymM#HhPD z-h<+2Y*Db@k0x9LG_2^s$F4>1xaLoed&se8Ww32K6mcj=Y!)+S7tfrg)B+TB4%tF` z{dEQ&b*Z0qnlUiugpQffhS)!1eE029A{=Hn66ys5taqQtZq0YNXWO`uVUs_f@lp|L zC0SgoyY|=J?;{+uXi0ktTJdz+-pIToiD9Hm7f3%%uVdY+ zuR|kp(VWgh8kF33BWic&VG7=igEoKrfK0V_&pMV!!_qpQ`oFEcWL6QT6~N_wHNFz4 zDO=y8ndW3%^vOAMhCuYmAUuD+6o+4>sg>n$)R`Hq?Y$jp_T2smO%v=p{Zw4=}&;|^t0l}+6Y42;9`#Tj-yn=M8>drsmF!e z)Ol*T$;8G{<_Z z!ea%2Y-WR>JFwTVy<%h99o5b>u9qc-P>YVnNYuKM#qs?ww5Nrnpj0&bdJK=)Axr-w zdrCChQ{xRW1R^CFv)^PV(C%y&a|Hiz$hkB`^wA(Ue@s}Z=L!eo*rMoZltyA^yjGm8 z$)lqE_b=Q!g!1o)j!{+V)CR3+|EUYZA0ems^Qh=$V7-3?52|tdblJu&x@KaHZ&yU@ z!|u4d_2p@WIcEbx-SO=8wydAbVOFX8Yuf$zsJn9c*A-01_+-etV5dISkP--*}1^A~bhj9v6Ou>iSnBQ10&_%|et zU*B=>em#vivx2(_@`sN0^rnLAoX|3jN9DO-#P{^V%ro;s*2Q@Q0+$Dqv6}7QT6XC_ z%7{Ca%6enfy#Z@u^?bQ<`+Q8CrODJy?ubHMLhI)xZA4o!cT>yVOm-_Ktghw!@SyQQ z$tu_@X|?DPL0F%G8`XT)aQQHFFor@1mn&Hwal!iT8o}4me$%!>TEmzDf)C`cMw`*X z)#m7uy2#71e>2M;nPuHx&3--l?s;05u#T-yV;2+(@r$dm(Cob7VrXn|K@FuJu$O

iOg_``Dn}PRFqTH;WW@Wj<+wL2s}{;Net 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

R@lclQ2^bUMNq^0eu7SwKMMZhFMaygR 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 R`!53jMc}^({Qr!={{V;IAs7Gv literal 0 HcmV?d00001 diff --git a/livecd/isolinux/isolinux.cfg b/livecd/isolinux/isolinux.cfg new file mode 100755 index 0000000..2ba816a --- /dev/null +++ b/livecd/isolinux/isolinux.cfg @@ -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 \ No newline at end of file diff --git a/livecd/isolinux/ldlinux.c32 b/livecd/isolinux/ldlinux.c32 new file mode 100755 index 0000000000000000000000000000000000000000..0d8f2ef0c3203df004afdcb70f0d62282acd3b5f GIT binary patch literal 122308 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 d;_<%L!24RqrvHfH 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 Ip<6G~AM*=gH~;_u literal 0 HcmV?d00001 diff --git a/livecd/isolinux/libcom32.c32 b/livecd/isolinux/libcom32.c32 new file mode 100755 index 0000000000000000000000000000000000000000..aedab3330c2ac7a23f421ee48017be9c663be1e5 GIT binary patch literal 186500 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 literal 0 HcmV?d00001 diff --git a/livecd/isolinux/libutil.c32 b/livecd/isolinux/libutil.c32 new file mode 100755 index 0000000000000000000000000000000000000000..496fc303e52d1129f1d7a451d49354ea9d633851 GIT binary patch literal 24148 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 literal 0 HcmV?d00001 diff --git a/livecd/isolinux/menu.c32 b/livecd/isolinux/menu.c32 new file mode 100755 index 0000000000000000000000000000000000000000..3ab63e248426108f3e970d735430f80e8d87c2b4 GIT binary patch literal 26596 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 z zZ0kaNuu@r?UtR*!itmvs3o9y=vK9Ht;ym%?PzB#O6-0pe9;B43i5Ipdp?w5AYe?7_)y@F9uJ5A6QTH{aQJHrCU=W>PiLHg z`SKg7FbBSr$xo~brxx*Q(L;x&j?Rk=(^2;hnm<{QY05Ml7yiNuk@)SvBk{+&z z65(EiG?XLY0@fUlFhwUM;d zzymTZ97+2X@Fx)P*Q)r$Tak(Ze4|Lq=t}zo@Sf#T@2#Z6+Kd9I%b$V2hJfa%kEHDb zZq=hJtqEx@f-dYs{hZ|e0C+2c&v!BH%YQ=mEz)}0Wj<{C6Vf58tBl)`*0bDrq(v`4 z8yz`q;S53yjBq8wjR<2A zvJmDVEJj#{uomG7gg+s?hR}rY0m7FEXAojwP;}!=gC|ixHL~tVMVN;ZF#! zAv7U;fbb>48H5;Y1Fl545n(Js7Q!5a#R$s~)*=k_;{W8h=bk&9$&;qdPH~PIId0@= z=crWInA9|v%b7eQKhHTi*CW$!xjhAgwxWQadd^*_j9gOU9f_4xfig00Wl6=#VhKIv z%EHw*#Gd_l+Yz`*f9KK_w~;{xw62)ax_jvoe&E7H+lN9aZ&PT3rnPV`9zo=Zpm zs2fpy2DXci|BnpAvWXEYNki;Ti;m^Q;oGKFNos4xQw zWG5ZR8w2mzi1UwhtS?-Am%PD?@GV<}DM*X_k&a;jLZn>!8wS2O5&4VI6?UWBkcV#v zBQP)W7m1f5f#pXd)Pja#-k=DT%p=Cm#bQ#4;E!}8WK{ezFA^v#^0yasl@SCmqU!$! D>R9%f literal 0 HcmV?d00001 diff --git a/livecd/isolinux/poweroff.c32 b/livecd/isolinux/poweroff.c32 new file mode 100755 index 0000000000000000000000000000000000000000..eca2e4861acf07d89ba860e6edee2e7d393c1c72 GIT binary patch literal 1664 zcmb7EO=uHA6rNarq7{wOVuc8+rjYuxHX88%Agx-VmD(Q_MawqXG{Iyy>`rKlf|h_% zO2LCCPeQ$U5xgh}3YF?nFCIiC2x5aC1kq#H@7r~nwqEqXmznRq@4cCMGn?zjJ5Pi{ zA)%~J)CsZ*ev%mPEe|3|p&=3%Yel^uS9*?7XoyuL5h0dgxLsGn2sp74V7W7&Wg5d@ zrs7D&TEbsv1;*AB%QllUPK(WauSRbj-qGAIOYh!%ynp5T-D^Rl_KR)I8|NyQPV%Dw z_ehI~u-JofA>Y1)H!k7xJ;G!os~3!%B?bm^mP{G>yeO8W3!0L);|{peaO6BQtu*H8 zMUj9p0&8F|QMZXBo4LTeM{o*nD*VUiO|8W&OIEFTuqmD{%W(BIX#cshz2$G`XXB_h zHXTK^C-sOWo{xX|@!(~9EGBw|n9Rp^jaSD%J#3tPikx5VvA&S3pDaf}s_!Asj9rVh zcXgM(andb9!w7C=@EL*=?Xk{sCCr3_^gV#jUqmet!V)b1m`$9$01Z<5%9W4|PnP>Y zzg}IWUk5$5rtw+U^0w9TN@LtdrwFaTDdAm|yedd;LatwgcU&v-Vb1ds&w~R-Cd(yc z&pv_gG3DhK=PzC!xHLTxjZGix?$Rt3iK$v1mKeOzWcC9yT4V zU|7bGS%6YY=Uihj&k$33x->iq)5#bqQ%l*FWu~N-F><~j$h9+>d5`!x=h=6#7ry%r zY>Myp6|e?41@Q8C!#q|PPl3;ayaCt%Yy$4^F#l=l?K5o#`EP-fZEc6N_{r1#Em~4P zpzqW6wkDFT2NMY`-eab<4nqe1-TPaF(A}&n9cc^-eaI^5S;Nf=Jw0lo%kymZgZ(3tfckv+)ewAw)Y8ws z5;p+$lWn7h{oDf3M;-5hVE>g-OKS#J1OB>jviHm<=N+;hKSp%Ouh08@2o2GSxiaQZ zs{;u6_g=w-I6%iAqlU(_(Y+UF!bXW<%#|@l909l{&!Ya5`Cm*NndtSUHuaGa67E^9^&T*6!@^fj&?oS%&{-mT* zY2~$E1^i`?Q`BI;jgYJ#8ieOp+Pfp%dAd3lj@a7sIpm^ zh_u!oLA$eF#i#06y}!W7&04kYEH%I24x?XQRd#Fl;Hq{=)&?*cl2Q@|5$_MfJE%VqDd{xdK(G;|>x9h;o) z4V%V*(H~C66K4E;A`y;GWi#P%O9lSexn2>&%b~l{ z+-$*^FDNlob`hiNWGrRXWy{W|vC>h2j^|)!i|XGm!Mc3+eTVg6{Rk7#Pl2z1I0-P8 ze%6&J1N!&G7}k@$ppS9v1Ht-h1Fc&R#-jk^Sa*W!$=O5h$H#>V)qBi-t|Nws<69fo zFxCJd)%(u>7@`2KjWIOdjd4j}7KaghBig7D7XhBhyRgSZd5>e-&u;|ZjMwjqZ>x&| gd&YB#Nq})WcmB7X1=ps})q81w6dTWIf|)w)7a2RtegFUf literal 0 HcmV?d00001 diff --git a/livecd/virootfs/etc/fstab b/livecd/virootfs/etc/fstab new file mode 100755 index 0000000..94d59bb --- /dev/null +++ b/livecd/virootfs/etc/fstab @@ -0,0 +1,13 @@ +# Begin /etc/fstab + +# modified for liveiso + +# file system mount-point type options dump fsck +# order +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 diff --git a/livecd/virootfs/etc/issue b/livecd/virootfs/etc/issue new file mode 100755 index 0000000..394e19e --- /dev/null +++ b/livecd/virootfs/etc/issue @@ -0,0 +1,17 @@ +Linux From Scratch 8.3 \r (\l) + +login: + root : root + +networking (wired): + sed "s/eth0//" -i /etc/sysconfig/ifconfig.wired + ifup wired + +networking (wifi): + sed "s/wlan0//" -i /etc/sysconfig/ifconfig.wifi + ifup wifi + +project page: + https://github.com/emmett1/lfs-scripts + + diff --git a/livecd/virootfs/root/custom_script.sh b/livecd/virootfs/root/custom_script.sh new file mode 100755 index 0000000..bf04b14 --- /dev/null +++ b/livecd/virootfs/root/custom_script.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +#USER=mylfs +#PASSWORD=mylfs + +#useradd -m -G users,wheel,audio,video -s /bin/bash $USER +#passwd -d $USER &>/dev/null +passwd -d root &>/dev/null + +echo "root:root" | chpasswd -c SHA512 +#echo "$USER:$PASSWORD" | chpasswd -c SHA512 + +#chmod -R 775 /home/$USER/.config + + diff --git a/toolchain/01-binutils-pass1 b/toolchain/01-binutils-pass1 new file mode 100755 index 0000000..bdbc2fb --- /dev/null +++ b/toolchain/01-binutils-pass1 @@ -0,0 +1,49 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=binutils +VERSION=${BINUTILS_VER} + +fetch "http://ftp.gnu.org/gnu/binutils/binutils-$BINUTILS_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + mkdir -v build + cd build + + ../configure --prefix=/tools \ + --with-sysroot=$LFS \ + --with-lib-path=/tools/lib \ + --target=$LFS_TGT \ + --disable-nls \ + --disable-werror + make + case $(uname -m) in + x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;; + esac + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/02-gcc-pass1 b/toolchain/02-gcc-pass1 new file mode 100755 index 0000000..f891b28 --- /dev/null +++ b/toolchain/02-gcc-pass1 @@ -0,0 +1,92 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=gcc +VERSION=${GCC_VER} + +fetch "http://www.mpfr.org/mpfr-$MPFR_VER/mpfr-$MPFR_VER.tar.xz" $SRC +fetch "https://ftp.gnu.org/gnu/mpc/mpc-$MPC_VER.tar.gz" $SRC +fetch "http://ftp.gnu.org/gnu/gmp/gmp-$GMP_VER.tar.xz" $SRC +fetch "http://ftp.gnu.org/gnu/gcc/gcc-$GCC_VER/gcc-$GCC_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP +tar -xf $SRC/mpfr-$MPFR_VER.tar.xz -C $TMP/$NAME-$VERSION +tar -xf $SRC/gmp-$GMP_VER.tar.xz -C $TMP/$NAME-$VERSION +tar -xf $SRC/mpc-$MPC_VER.tar.gz -C $TMP/$NAME-$VERSION + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + mv -v mpfr-$MPFR_VER mpfr + mv -v gmp-$GMP_VER gmp + mv -v mpc-$MPC_VER mpc + + for file in gcc/config/{linux,i386/linux{,64}}.h + do + cp -uv $file{,.orig} + sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ + -e 's@/usr@/tools@g' $file.orig > $file + echo ' + #undef STANDARD_STARTFILE_PREFIX_1 + #undef STANDARD_STARTFILE_PREFIX_2 + #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" + #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file + touch $file.orig + done + + case $(uname -m) in + x86_64) + sed -e '/m64=/s/lib64/lib/' \ + -i.orig gcc/config/i386/t-linux64 + ;; + esac + + mkdir -v build + cd build + + ../configure \ + --target=$LFS_TGT \ + --prefix=/tools \ + --with-glibc-version=2.11 \ + --with-sysroot=$LFS \ + --with-newlib \ + --without-headers \ + --with-local-prefix=/tools \ + --with-native-system-header-dir=/tools/include \ + --disable-nls \ + --disable-shared \ + --disable-multilib \ + --disable-decimal-float \ + --disable-threads \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libmpx \ + --disable-libquadmath \ + --disable-libssp \ + --disable-libvtv \ + --disable-libstdcxx \ + --enable-languages=c,c++ + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/03-linux-api-headers b/toolchain/03-linux-api-headers new file mode 100755 index 0000000..4f85de8 --- /dev/null +++ b/toolchain/03-linux-api-headers @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=linux +VERSION=${LINUX_VER} + +fetch "https://www.kernel.org/pub/linux/kernel/v4.x/linux-$LINUX_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + make mrproper + make INSTALL_HDR_PATH=dest headers_install + cp -rv dest/include/* /tools/include + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/04-glibc b/toolchain/04-glibc new file mode 100755 index 0000000..3100299 --- /dev/null +++ b/toolchain/04-glibc @@ -0,0 +1,48 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=glibc +VERSION=${GLIBC_VER} + +fetch "http://ftp.gnu.org/gnu/glibc/glibc-$GLIBC_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + mkdir -v build + cd build + + ../configure \ + --prefix=/tools \ + --host=$LFS_TGT \ + --build=$(../scripts/config.guess) \ + --enable-kernel=3.2 \ + --with-headers=/tools/include \ + libc_cv_forced_unwind=yes \ + libc_cv_c_cleanup=yes + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/05-libstdc++ b/toolchain/05-libstdc++ new file mode 100755 index 0000000..476299d --- /dev/null +++ b/toolchain/05-libstdc++ @@ -0,0 +1,48 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=gcc +VERSION=${GCC_VER} + +fetch "http://ftp.gnu.org/gnu/gcc/gcc-$GCC_VER/gcc-$GCC_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + mkdir -v build + cd build + + ../libstdc++-v3/configure \ + --host=$LFS_TGT \ + --prefix=/tools \ + --disable-multilib \ + --disable-nls \ + --disable-libstdcxx-threads \ + --disable-libstdcxx-pch \ + --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/$GCC_VER + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/06-binutils-pass2 b/toolchain/06-binutils-pass2 new file mode 100755 index 0000000..a941e13 --- /dev/null +++ b/toolchain/06-binutils-pass2 @@ -0,0 +1,52 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=binutils +VERSION=${BINUTILS_VER} + +fetch "http://ftp.gnu.org/gnu/binutils/binutils-$BINUTILS_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + mkdir -v build + cd build + + CC=$LFS_TGT-gcc \ + AR=$LFS_TGT-ar \ + RANLIB=$LFS_TGT-ranlib \ + ../configure \ + --prefix=/tools \ + --disable-nls \ + --disable-werror \ + --with-lib-path=/tools/lib \ + --with-sysroot + make + make install + make -C ld clean + make -C ld LIB_PATH=/usr/lib:/lib + cp -v ld/ld-new /tools/bin + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/07-gcc-pass2 b/toolchain/07-gcc-pass2 new file mode 100755 index 0000000..a0b3ab9 --- /dev/null +++ b/toolchain/07-gcc-pass2 @@ -0,0 +1,87 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=gcc +VERSION=${GCC_VER} + +fetch "http://www.mpfr.org/mpfr-$MPFR_VER/mpfr-$MPFR_VER.tar.xz" $SRC +fetch "https://ftp.gnu.org/gnu/mpc/mpc-$MPC_VER.tar.gz" $SRC +fetch "http://ftp.gnu.org/gnu/gmp/gmp-$GMP_VER.tar.xz" $SRC +fetch "http://ftp.gnu.org/gnu/gcc/gcc-$GCC_VER/gcc-$GCC_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP +tar -xf $SRC/mpfr-$MPFR_VER.tar.xz -C $TMP/$NAME-$VERSION +tar -xf $SRC/gmp-$GMP_VER.tar.xz -C $TMP/$NAME-$VERSION +tar -xf $SRC/mpc-$MPC_VER.tar.gz -C $TMP/$NAME-$VERSION + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ + `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h + + for file in gcc/config/{linux,i386/linux{,64}}.h + do + cp -uv $file{,.orig} + sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ + -e 's@/usr@/tools@g' $file.orig > $file + echo ' + #undef STANDARD_STARTFILE_PREFIX_1 + #undef STANDARD_STARTFILE_PREFIX_2 + #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" + #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file + touch $file.orig + done + + case $(uname -m) in + x86_64) + sed -e '/m64=/s/lib64/lib/' \ + -i.orig gcc/config/i386/t-linux64 + ;; + esac + + mv -v mpfr-$MPFR_VER mpfr + mv -v gmp-$GMP_VER gmp + mv -v mpc-$MPC_VER mpc + + mkdir -v build + cd build + + CC=$LFS_TGT-gcc \ + CXX=$LFS_TGT-g++ \ + AR=$LFS_TGT-ar \ + RANLIB=$LFS_TGT-ranlib \ + ../configure \ + --prefix=/tools \ + --with-local-prefix=/tools \ + --with-native-system-header-dir=/tools/include \ + --enable-languages=c,c++ \ + --disable-libstdcxx-pch \ + --disable-multilib \ + --disable-bootstrap \ + --disable-libgomp + make + make install + ln -sv gcc /tools/bin/cc + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/08-tcl b/toolchain/08-tcl new file mode 100755 index 0000000..afcb520 --- /dev/null +++ b/toolchain/08-tcl @@ -0,0 +1,42 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=tcl +VERSION=${TCL_VER} + +fetch "https://downloads.sourceforge.net/tcl/tcl$TCL_VER-src.tar.gz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/${NAME}${VERSION} + + cd unix + ./configure --prefix=/tools + make + make install + chmod -v u+w /tools/lib/libtcl8.6.so + make install-private-headers + ln -sv tclsh8.6 /tools/bin/tclsh + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/09-expect b/toolchain/09-expect new file mode 100755 index 0000000..4ea0a97 --- /dev/null +++ b/toolchain/09-expect @@ -0,0 +1,42 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=expect +VERSION=${EXPECT_VER} + +fetch "https://prdownloads.sourceforge.net/expect/expect$EXPECT_VER.tar.gz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/${NAME}${VERSION} + + cp -v configure{,.orig} + sed 's:/usr/local/bin:/bin:' configure.orig > configure + ./configure --prefix=/tools \ + --with-tcl=/tools/lib \ + --with-tclinclude=/tools/include + make + make SCRIPTS="" install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/10-dejagnu b/toolchain/10-dejagnu new file mode 100755 index 0000000..90200a4 --- /dev/null +++ b/toolchain/10-dejagnu @@ -0,0 +1,37 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=dejagnu +VERSION=${DEJAGNU_VER} + +fetch "http://ftp.gnu.org/gnu/dejagnu/dejagnu-$DEJAGNU_VER.tar.gz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/11-m4 b/toolchain/11-m4 new file mode 100755 index 0000000..6ebd221 --- /dev/null +++ b/toolchain/11-m4 @@ -0,0 +1,42 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=m4 +VERSION=${M4_VER} + +fetch "http://ftp.gnu.org/gnu/m4/m4-$M4_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + # fixes required by glibc-2.28 + sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c + echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/12-ncurses b/toolchain/12-ncurses new file mode 100755 index 0000000..6b55d44 --- /dev/null +++ b/toolchain/12-ncurses @@ -0,0 +1,45 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=ncurses +VERSION=${NCURSES_VER} + +fetch "http://ftp.gnu.org/gnu/ncurses/ncurses-$NCURSES_VER.tar.gz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + sed -i s/mawk// configure + + ./configure --prefix=/tools \ + --with-shared \ + --without-debug \ + --without-ada \ + --enable-widec \ + --enable-overwrite + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/13-bash b/toolchain/13-bash new file mode 100755 index 0000000..a3e85aa --- /dev/null +++ b/toolchain/13-bash @@ -0,0 +1,39 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=bash +VERSION=${BASH_VER} + +fetch "http://ftp.gnu.org/gnu/bash/bash-$BASH_VER.tar.gz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools --without-bash-malloc + make + make install + ln -sv bash /tools/bin/sh + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/14-bison b/toolchain/14-bison new file mode 100755 index 0000000..d472aad --- /dev/null +++ b/toolchain/14-bison @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=bison +VERSION=${BISON_VER} + +fetch "http://ftp.gnu.org/gnu/bison/bison-$BISON_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/15-bzip2 b/toolchain/15-bzip2 new file mode 100755 index 0000000..6025071 --- /dev/null +++ b/toolchain/15-bzip2 @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=bzip2 +VERSION=${BZIP_VER} + +fetch "http://anduin.linuxfromscratch.org/LFS/bzip2-$BZIP_VER.tar.gz" $SRC +#fetch "http://www.bzip.org/$BZIP_VER/bzip2-$BZIP_VER.tar.gz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + make + make PREFIX=/tools install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/16-coreutils b/toolchain/16-coreutils new file mode 100755 index 0000000..1684de9 --- /dev/null +++ b/toolchain/16-coreutils @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=coreutils +VERSION=${COREUTILS_VER} + +fetch "http://ftp.gnu.org/gnu/coreutils/coreutils-$COREUTILS_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools --enable-install-program=hostname + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/17-diffutils b/toolchain/17-diffutils new file mode 100755 index 0000000..dd23241 --- /dev/null +++ b/toolchain/17-diffutils @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=diffutils +VERSION=${DIFFUTILS_VER} + +fetch "http://ftp.gnu.org/gnu/diffutils/diffutils-$DIFFUTILS_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/18-file b/toolchain/18-file new file mode 100755 index 0000000..f54c573 --- /dev/null +++ b/toolchain/18-file @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=file +VERSION=${FILE_VER} + +fetch "ftp://ftp.astron.com/pub/file/file-$FILE_VER.tar.gz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/19-findutils b/toolchain/19-findutils new file mode 100755 index 0000000..bd46cca --- /dev/null +++ b/toolchain/19-findutils @@ -0,0 +1,43 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=findutils +VERSION=${FINDUTILS_VER} + +fetch "http://ftp.gnu.org/gnu/findutils/findutils-$FINDUTILS_VER.tar.gz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + # fixes required by glibc-2.28 + sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.c + sed -i '/unistd/a #include ' gl/lib/mountlist.c + echo "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/20-gawk b/toolchain/20-gawk new file mode 100755 index 0000000..0b9c215 --- /dev/null +++ b/toolchain/20-gawk @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=gawk +VERSION=${GAWK_VER} + +fetch "http://ftp.gnu.org/gnu/gawk/gawk-$GAWK_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/21-gettext b/toolchain/21-gettext new file mode 100755 index 0000000..3eb9440 --- /dev/null +++ b/toolchain/21-gettext @@ -0,0 +1,43 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=gettext +VERSION=${GETTEXT_VER} + +fetch "http://ftp.gnu.org/gnu/gettext/gettext-$GETTEXT_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + cd gettext-tools + EMACS="no" ./configure --prefix=/tools --disable-shared + make -C gnulib-lib + make -C intl pluralx.c + make -C src msgfmt + make -C src msgmerge + make -C src xgettext + cp -v src/{msgfmt,msgmerge,xgettext} /tools/bin + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/22-grep b/toolchain/22-grep new file mode 100755 index 0000000..eb0db14 --- /dev/null +++ b/toolchain/22-grep @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=grep +VERSION=${GREP_VER} + +fetch "http://ftp.gnu.org/gnu/grep/grep-$GREP_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/23-gzip b/toolchain/23-gzip new file mode 100755 index 0000000..258f7b2 --- /dev/null +++ b/toolchain/23-gzip @@ -0,0 +1,42 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=gzip +VERSION=${GZIP_VER} + +fetch "http://ftp.gnu.org/gnu/gzip/gzip-$GZIP_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + #fixes required by glibc-2.28 + sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c + echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/24-make b/toolchain/24-make new file mode 100755 index 0000000..3fafae4 --- /dev/null +++ b/toolchain/24-make @@ -0,0 +1,39 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=make +VERSION=${MAKE_VER} + +fetch "http://ftp.gnu.org/gnu/make/make-$MAKE_VER.tar.bz2" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + sed -i '211,217 d; 219,229 d; 232 d' glob/glob.c + ./configure --prefix=/tools --without-guile + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/25-patch b/toolchain/25-patch new file mode 100755 index 0000000..7d38049 --- /dev/null +++ b/toolchain/25-patch @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=patch +VERSION=${PATCH_VER} + +fetch "http://ftp.gnu.org/gnu/patch/patch-$PATCH_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/26-perl b/toolchain/26-perl new file mode 100755 index 0000000..522a0b0 --- /dev/null +++ b/toolchain/26-perl @@ -0,0 +1,40 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=perl +VERSION=${PERL_VER} + +fetch "https://www.cpan.org/src/5.0/perl-$PERL_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + sh Configure -des -Dprefix=/tools -Dlibs=-lm + make + cp -v perl cpan/podlators/scripts/pod2man /tools/bin + mkdir -pv /tools/lib/perl5/$VERSION + cp -Rv lib/* /tools/lib/perl5/$VERSION + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/27-sed b/toolchain/27-sed new file mode 100755 index 0000000..84a70d1 --- /dev/null +++ b/toolchain/27-sed @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=sed +VERSION=${SED_VER} + +fetch "http://ftp.gnu.org/gnu/sed/sed-$SED_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/28-tar b/toolchain/28-tar new file mode 100755 index 0000000..d86278e --- /dev/null +++ b/toolchain/28-tar @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=tar +VERSION=${TAR_VER} + +fetch "http://ftp.gnu.org/gnu/tar/tar-$TAR_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/29-texinfo b/toolchain/29-texinfo new file mode 100755 index 0000000..e582caa --- /dev/null +++ b/toolchain/29-texinfo @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=texinfo +VERSION=${TEXINFO_VER} + +fetch "http://ftp.gnu.org/gnu/texinfo/texinfo-$TEXINFO_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/30-util-linux b/toolchain/30-util-linux new file mode 100755 index 0000000..a2f6d64 --- /dev/null +++ b/toolchain/30-util-linux @@ -0,0 +1,43 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=util-linux +VERSION=${UTILLINUX_VER} + +fetch "https://www.kernel.org/pub/linux/utils/util-linux/v${UTILLINUX_VER::4}/util-linux-$UTILLINUX_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools \ + --without-python \ + --disable-makeinstall-chown \ + --without-systemdsystemunitdir \ + --without-ncurses \ + PKG_CONFIG="" + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/31-xz b/toolchain/31-xz new file mode 100755 index 0000000..a5abb09 --- /dev/null +++ b/toolchain/31-xz @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=xz +VERSION=${XZ_VER} + +fetch "https://tukaani.org/xz/xz-$XZ_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/32-openssl b/toolchain/32-openssl new file mode 100755 index 0000000..ff9f5b3 --- /dev/null +++ b/toolchain/32-openssl @@ -0,0 +1,42 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=openssl +VERSION=${OPENSSL_VER} + +fetch "https://openssl.org/source/openssl-$OPENSSL_VER.tar.gz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./config --prefix=/tools \ + --openssldir=/tools/etc/ssl \ + --libdir=lib \ + shared \ + no-ssl3-method + make + make -j1 MANDIR=/tools/share/man MANSUFFIX=ssl install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/33-certs b/toolchain/33-certs new file mode 100755 index 0000000..fbd2fe7 --- /dev/null +++ b/toolchain/33-certs @@ -0,0 +1,160 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=certdata + +fetch "http://anduin.linuxfromscratch.org/BLFS/other/certdata.txt" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP/cert $LOG $SRC + +cp $SRC/$tarballname $TMP/cert + +{ time \ + { + + cd $TMP/cert + + cat > make-cert.pl << "EOF" +#!/usr/bin/perl -w +# Used to generate PEM encoded files from Mozilla certdata.txt. +# Run as ./make-cert.pl > certificate.crt +# +# Parts of this script courtesy of RedHat (mkcabundle.pl) +# +# This script modified for use with single file data (tempfile.cer) extracted +# from certdata.txt, taken from the latest version in the Mozilla NSS source. +# mozilla/security/nss/lib/ckfw/builtins/certdata.txt +# +# Authors: DJ Lucas +# Bruce Dubbs +# +# Version 20120211 +my $certdata = './tempfile.cer'; +open( IN, "cat $certdata|" ) + || die "could not open $certdata"; +my $incert = 0; +while ( ) +{ + if ( /^CKA_VALUE MULTILINE_OCTAL/ ) + { + $incert = 1; + open( OUT, "|openssl x509 -text -inform DER -fingerprint" ) + || die "could not pipe to openssl x509"; + } + elsif ( /^END/ && $incert ) + { + close( OUT ); + $incert = 0; + print "\n\n"; + } + elsif ($incert) + { + my @bs = split( /\\/ ); + foreach my $b (@bs) + { + chomp $b; + printf( OUT "%c", oct($b) ) unless $b eq ''; + } + } +} +EOF + chmod +x make-cert.pl + cat > make-ca.sh << "EOF" +#!/bin/sh +# Begin make-ca.sh +# Script to populate OpenSSL's CApath from a bundle of PEM formatted CAs +# +# The file certdata.txt must exist in the local directory +# Version number is obtained from the version of the data. +# +# Authors: DJ Lucas +# Bruce Dubbs +# +# Version 20120211 +certdata="certdata.txt" +if [ ! -r $certdata ]; then + echo "$certdata must be in the local directory" + exit 1 +fi +REVISION=$(grep CVS_ID $certdata | cut -f4 -d'$') +if [ -z "${REVISION}" ]; then + echo "$certfile has no 'Revision' in CVS_ID" + exit 1 +fi +VERSION=$(echo $REVISION | cut -f2 -d" ") +TEMPDIR=$(mktemp -d) +TRUSTATTRIBUTES="CKA_TRUST_SERVER_AUTH" +BUNDLE="BLFS-ca-bundle.crt" +CONVERTSCRIPT="${PWD}/make-cert.pl" +SSLDIR="/tools/etc/ssl" +mkdir "${TEMPDIR}/certs" +# Get a list of starting lines for each cert +CERTBEGINLIST=$(grep -n "^# Certificate" "${certdata}" | cut -d ":" -f1) +# Get a list of ending lines for each cert +CERTENDLIST=`grep -n "^CKA_TRUST_STEP_UP_APPROVED" "${certdata}" | cut -d ":" -f 1` +# Start a loop +for certbegin in ${CERTBEGINLIST}; do + for certend in ${CERTENDLIST}; do + if test "${certend}" -gt "${certbegin}"; then + break + fi + done + # Dump to a temp file with the name of the file as the beginning line number + sed -n "${certbegin},${certend}p" "${certdata}" > "${TEMPDIR}/certs/${certbegin}.tmp" +done +unset CERTBEGINLIST CERTDATA CERTENDLIST certbegin certend +mkdir -p certs +rm -f certs/* # Make sure the directory is clean +for tempfile in ${TEMPDIR}/certs/*.tmp; do + # Make sure that the cert is trusted... + grep "CKA_TRUST_SERVER_AUTH" "${tempfile}" | \ + egrep "TRUST_UNKNOWN|NOT_TRUSTED" > /dev/null + if test "${?}" = "0"; then + # Throw a meaningful error and remove the file + cp "${tempfile}" tempfile.cer + perl ${CONVERTSCRIPT} > tempfile.crt + keyhash=$(openssl x509 -noout -in tempfile.crt -hash) + echo "Certificate ${keyhash} is not trusted! Removing..." + rm -f tempfile.cer tempfile.crt "${tempfile}" + continue + fi + # If execution made it to here in the loop, the temp cert is trusted + # Find the cert data and generate a cert file for it + cp "${tempfile}" tempfile.cer + perl ${CONVERTSCRIPT} > tempfile.crt + keyhash=$(openssl x509 -noout -in tempfile.crt -hash) + mv tempfile.crt "certs/${keyhash}.pem" + rm -f tempfile.cer "${tempfile}" + echo "Created ${keyhash}.pem" +done +# Remove blacklisted files +# MD5 Collision Proof of Concept CA +if test -f certs/8f111d69.pem; then + echo "Certificate 8f111d69 is not trusted! Removing..." + rm -f certs/8f111d69.pem +fi +# Finally, generate the bundle and clean up. +cat certs/*.pem > ${BUNDLE} +rm -r "${TEMPDIR}" +EOF + chmod +x make-ca.sh + ./make-ca.sh + install -v -m644 BLFS-ca-bundle.crt /tools/etc/ssl/certs/ca-certificates.crt + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME" > /tools/$filename || exit $PIPESTATUS + +#rm -fr $TMP diff --git a/toolchain/34-zlib b/toolchain/34-zlib new file mode 100755 index 0000000..dbf0756 --- /dev/null +++ b/toolchain/34-zlib @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=zlib +VERSION=${ZLIB_VER} + +fetch "https://zlib.net/zlib-$ZLIB_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/35-wget b/toolchain/35-wget new file mode 100755 index 0000000..17f0721 --- /dev/null +++ b/toolchain/35-wget @@ -0,0 +1,44 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=wget +VERSION=${WGET_VER} + +fetch "https://ftp.gnu.org/gnu/wget/wget-$WGET_VER.tar.gz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools \ + --with-ssl=openssl \ + --without-libidn \ + --without-libpsl \ + --without-metalink + make + make install + + echo "ca_certificate = /tools/etc/ssl/certs/ca-certificates.crt" > /tools/etc/wgetrc + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/36-nano b/toolchain/36-nano new file mode 100755 index 0000000..7ebab16 --- /dev/null +++ b/toolchain/36-nano @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME=nano +VERSION=${NANO_VER} + +fetch "https://www.nano-editor.org/dist/v3/nano-$NANO_VER.tar.xz" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + ./configure --prefix=/tools + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP diff --git a/toolchain/99-cleaning b/toolchain/99-cleaning new file mode 100755 index 0000000..645dd6a --- /dev/null +++ b/toolchain/99-cleaning @@ -0,0 +1,8 @@ +#!/bin/bash + +[ "$1" = "fetch" ] && exit 0 + +strip --strip-debug /tools/lib/* +/usr/bin/strip --strip-unneeded /tools/{,s}bin/* +rm -rf /tools/{,share}/{info,man,doc} +find /tools/{lib,libexec} -name \*.la -delete diff --git a/toolchain/bootstrap b/toolchain/bootstrap new file mode 100755 index 0000000..6d04a45 --- /dev/null +++ b/toolchain/bootstrap @@ -0,0 +1,25 @@ +#!/bin/bash -e + +source $(dirname $0)/functions + +for script in $(ls | grep ^[0-9]); do + if [ "$1" = "fetch" ]; then + $(dirname $0)/$script "$1" + elif [ -f /tools/"$script" ]; then + echo "--- $script skipped ---" + else + echo "*** $script ***" + $(dirname $0)/$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 "**************************************************" diff --git a/toolchain/functions b/toolchain/functions new file mode 100755 index 0000000..d85c718 --- /dev/null +++ b/toolchain/functions @@ -0,0 +1,49 @@ +# functions and variable loaded by scripts + +JOBS=$(nproc) +export MAKEFLAGS="-j${JOBS}" +export LFS="/mnt/lfs" +export LFS_TGT=$(uname -m)-lfs-linux-gnu + +PATH=/tools/bin:/bin:/usr/bin + +export LC_ALL=C + +fetch() { + + tarballname=$(echo $1 | rev | cut -d / -f 1 | rev) + WGETCMD="wget --passive-ftp --tries=3 --waitretry=3 --output-document=$2/$tarballname.partial" + WGETRESUME="-c" + + if [ -f $2/$tarballname ]; then + echo "Source file $tarballname found." + return 0 + else + if [ -f $2/$tarballname.partial ]; then + echo "Resuming $1" + $WGETCMD $WGETRESUME $1 + else + mkdir -p "$2" + echo "Downloading $1" + $WGETCMD $1 + fi + fi + + if [ $? = 0 ]; then + mv $2/$tarballname.partial $2/$tarballname + fi + +} + +if [ ! -d $LFS/tools ]; then + sudo mkdir -pv $LFS/tools +fi + +if [ ! -w $LFS ]; then + sudo chown -Rv $USER:$USER $LFS +fi + +if [ ! -L /tools ] || [ $(realpath /tools) != $LFS/tools ]; then + sudo ln -svf $LFS/tools / +fi + diff --git a/toolchain/pkgversion b/toolchain/pkgversion new file mode 100755 index 0000000..9c79e82 --- /dev/null +++ b/toolchain/pkgversion @@ -0,0 +1,36 @@ +BINUTILS_VER=2.31.1 +GCC_VER=8.2.0 +GMP_VER=6.1.2 +MPFR_VER=4.0.1 +MPC_VER=1.1.0 +LINUX_VER=4.19.2 +GLIBC_VER=2.28 +TCL_VER=8.6.9 +EXPECT_VER=5.45.4 +DEJAGNU_VER=1.6.1 +M4_VER=1.4.18 +NCURSES_VER=6.1 +BASH_VER=4.4.18 +BISON_VER=3.2.1 +BZIP_VER=1.0.6 +COREUTILS_VER=8.30 +DIFFUTILS_VER=3.6 +FILE_VER=5.35 +FINDUTILS_VER=4.6.0 +GAWK_VER=4.2.1 +GETTEXT_VER=0.19.8.1 +GREP_VER=3.1 +GZIP_VER=1.9 +MAKE_VER=4.2.1 +PATCH_VER=2.7.6 +PERL_VER=5.28.0 +SED_VER=4.5 +TAR_VER=1.30 +TEXINFO_VER=6.5 +UTILLINUX_VER=2.33 +XZ_VER=5.2.4 +OPENSSL_VER=1.0.2q +ZLIB_VER=1.2.11 +WGET_VER=1.19.5 +NANO_VER=3.2 + diff --git a/toolchain/template b/toolchain/template new file mode 100755 index 0000000..983a5ea --- /dev/null +++ b/toolchain/template @@ -0,0 +1,38 @@ +#!/bin/bash -e + +source $(dirname $0)/functions +source $(dirname $0)/pkgversion + +filename=$(echo $0 | rev | cut -d / -f1 | rev) + +TMP=${TMP:-/tmp/build} +LOG=${LOG:-$(dirname $0)/log} +SRC=${SRC:-$(dirname $0)/src} + +NAME= +VERSION=${_VER} + +fetch "urlhere" $SRC + +[ "$1" = "fetch" ] && exit 0 + +rm -fr $TMP +mkdir -p $TMP $LOG $SRC + +tar xf $SRC/$tarballname -C $TMP + +{ time \ + { + + cd $TMP/$NAME-$VERSION + + + make + make install + + } +} 2>&1 | tee $LOG/$filename.log + +[ $PIPESTATUS = 0 ] && echo "$NAME-$VERSION" > /tools/$filename || exit $PIPESTATUS + +rm -fr $TMP