Advertisement
markorians

LFS 8.3 From ubuntu-18.04.1-desktop-amd64.iso

Oct 20th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 56.46 KB | None | 0 0
  1. #####################################################################
  2. # ENVIRONMENT PREAPRATION ###########################################
  3. #####################################################################
  4.  
  5. # Need to be root
  6. sudo su root
  7.  
  8. # Need to change apt source list
  9. cd /etc/apt/ && cp sources.list sources.list.old && rm sources.list
  10. grep -v cdrom /etc/apt/sources.list.old | sed -e 's/restricted/universe/g' > sources.list
  11. rm sources.list.old
  12.  
  13. # Update apt package list an install some shit
  14. apt-get update && apt-get install bison gawk gcc g++ m4 make texinfo
  15.  
  16. # Change default shell symlink
  17. ln -svf /bin/bash /bin/sh
  18.  
  19. # Test all
  20. wget -O - https://raw.githubusercontent.com/viktomas/linux-from-scratch/master/version-check.sh | bash
  21.  
  22. # Partitioning  20 GB Disk ...
  23.  
  24. gdisk /dev/sda
  25.  
  26. # n --> (Enter) --> (Enter) --> +100M   --> (Enter)
  27. # n --> (Enter) --> (Enter) --> +18330M --> (Enter)
  28. # n --> (Enter) --> (Enter) --> (Enter) --> (Enter)
  29. #
  30. # Number  Start (sector)    End (sector)  Size       Code  Name
  31. #    1            2048          206847   100.0 MiB   8300  boot
  32. #    2          206848        37746687   17.9 GiB    8300  rootfs
  33. #    3        37746688        41943006   2.0 GiB     8300  swap
  34.  
  35. # Format file systems
  36. mkfs -v -t ext4 /dev/sda2 # rootfs
  37. mkfs -v -t ext2 /dev/sda1 # boot
  38. mkswap /dev/sda3          # swap
  39.  
  40. # Export LFS Path
  41. export LFS=/mnt/lfs && echo $LFS
  42.  
  43. # Make structure and Mount file system
  44. mkdir -pv $LFS
  45. mount -v -t ext4 /dev/sda2 $LFS
  46. mkdir -pv $LFS/boot
  47. mount -v -t ext2 /dev/sda1 $LFS/boot
  48. /sbin/swapon -v /dev/sda3
  49.  
  50. # Getting sources ...
  51. mkdir -v $LFS/sources
  52. chmod -v a+wt $LFS/sources
  53. wget http://www.linuxfromscratch.org/lfs/view/8.3/wget-list
  54.  
  55. # Make tools dir
  56. mkdir -v $LFS/tools
  57. ln -sv $LFS/tools /
  58.  
  59. # Make lfs User & Group
  60. groupadd lfs
  61. useradd -s /bin/bash -g lfs -m -k /dev/null lfs
  62. passwd lfs
  63. chown -v lfs $LFS/tools
  64. chown -v lfs $LFS/sources
  65. su - lfs
  66.  
  67. # Make lfs env files
  68. cat > ~/.bash_profile << "EOF"
  69. exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
  70. EOF
  71.  
  72. cat > ~/.bashrc << "EOF"
  73. set +h
  74. umask 022
  75. LFS=/mnt/lfs
  76. LC_ALL=POSIX
  77. LFS_TGT=$(uname -m)-lfs-linux-gnu
  78. PATH=/tools/bin:/bin:/usr/bin
  79. export LFS LC_ALL LFS_TGT PATH
  80. export MAKEFLAGS='-j 4'
  81. EOF
  82.  
  83. source ~/.bash_profile
  84.  
  85. # Final check before compiling process
  86. cat >  ~/finalcheck.sh << "EOF"
  87. if [ "$LFS" = "/mnt/lfs" ]; then echo "OK !"; else echo "\$LFS var not set."; fi
  88. if [ "$BASH" = "/bin/bash" ]; then echo "OK !"; else echo "Current shell is not bash." $0 $1; fi
  89. if [ "$( readlink /bin/sh )" = "/bin/bash" ]; then echo "OK !"; else echo "Current sh symlink is not bash."; fi
  90. if [ "$( readlink $(readlink /usr/bin/awk) )" = "/usr/bin/gawk" ]; then echo "OK !"; else echo "Current awk symlink is not gawk."; fi
  91. if [ "$( readlink $(readlink /usr/bin/yacc) )" = "/usr/bin/bison.yacc" ]; then echo "OK !"; else echo "Current awk symlink is not gawk."; fi
  92. EOF
  93.  
  94. chmod +xX finalcheck.sh && ./finalcheck.sh && rm finalcheck.sh
  95.  
  96. #####################################################################
  97. # BULDING TEMPORARY SYSTEM ##########################################
  98. #####################################################################
  99.  
  100. # go to src dir
  101. cd $LFS/sources
  102.  
  103. # Binutils-2.31.1
  104. tar -xf binutils-2.31.1.tar.xz
  105. cd binutils-2.31.1
  106. mkdir -v build && cd build
  107. ../configure --prefix=/tools            \
  108.              --with-sysroot=$LFS        \
  109.              --with-lib-path=/tools/lib \
  110.              --target=$LFS_TGT          \
  111.              --disable-nls              \
  112.              --disable-werror
  113. make
  114. case $(uname -m) in
  115.   x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
  116. esac
  117. make install
  118. cd ../.. && rm -rf binutils-2.31.1
  119.  
  120. # GCC-8.2.0
  121. tar -xf gcc-8.2.0.tar.xz
  122. cd gcc-8.2.0
  123. tar -xf ../mpfr-4.0.1.tar.xz
  124. mv -v mpfr-4.0.1 mpfr
  125. tar -xf ../gmp-6.1.2.tar.xz
  126. mv -v gmp-6.1.2 gmp
  127. tar -xf ../mpc-1.1.0.tar.gz
  128. mv -v mpc-1.1.0 mpc
  129. for file in gcc/config/{linux,i386/linux{,64}}.h
  130. do
  131.   cp -uv $file{,.orig}
  132.   sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
  133.       -e 's@/usr@/tools@g' $file.orig > $file
  134.   echo '
  135. #undef STANDARD_STARTFILE_PREFIX_1
  136. #undef STANDARD_STARTFILE_PREFIX_2
  137. #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
  138. #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
  139.   touch $file.orig
  140. done
  141. case $(uname -m) in
  142.   x86_64)
  143.     sed -e '/m64=/s/lib64/lib/' \
  144.         -i.orig gcc/config/i386/t-linux64
  145.  ;;
  146. esac
  147. mkdir -v build && cd build
  148. ../configure                                       \
  149.     --target=$LFS_TGT                              \
  150.     --prefix=/tools                                \
  151.     --with-glibc-version=2.11                      \
  152.     --with-sysroot=$LFS                            \
  153.     --with-newlib                                  \
  154.     --without-headers                              \
  155.     --with-local-prefix=/tools                     \
  156.     --with-native-system-header-dir=/tools/include \
  157.     --disable-nls                                  \
  158.     --disable-shared                               \
  159.     --disable-multilib                             \
  160.     --disable-decimal-float                        \
  161.     --disable-threads                              \
  162.     --disable-libatomic                            \
  163.     --disable-libgomp                              \
  164.     --disable-libmpx                               \
  165.     --disable-libquadmath                          \
  166.     --disable-libssp                               \
  167.     --disable-libvtv                               \
  168.     --disable-libstdcxx                            \
  169.     --enable-languages=c,c++
  170. make && make install
  171. cd ../.. && rm -rf gcc-8.2.0
  172.  
  173. # Linux-4.18.5 API Headers
  174. tar -xf linux-4.18.5.tar.xz
  175. cd linux-4.18.5
  176. make mrproper
  177. make INSTALL_HDR_PATH=dest headers_install
  178. cp -rv dest/include/* /tools/include
  179. cd .. && rm -rf linux-4.18.5
  180.  
  181. # Glibc-2.28
  182. tar -xf glibc-2.28.tar.xz
  183. cd glibc-2.28
  184. mkdir -v build && cd build
  185. ../configure                             \
  186.       --prefix=/tools                    \
  187.       --host=$LFS_TGT                    \
  188.       --build=$(../scripts/config.guess) \
  189.       --enable-kernel=3.2             \
  190.       --with-headers=/tools/include      \
  191.       libc_cv_forced_unwind=yes          \
  192.       libc_cv_c_cleanup=yes
  193. make -j1 && make install
  194. echo 'int main(){}' > dummy.c
  195. $LFS_TGT-gcc dummy.c
  196. echo; echo "Expected --> [Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]"; echo;
  197. readelf -l a.out | grep ': /tools'
  198. cd ../.. && rm -rf glibc-2.28
  199.  
  200. # Libstdc++
  201. tar -xf gcc-8.2.0.tar.xz
  202. cd gcc-8.2.0
  203. mkdir -v build && cd build
  204. ../libstdc++-v3/configure           \
  205.     --host=$LFS_TGT                 \
  206.     --prefix=/tools                 \
  207.     --disable-multilib              \
  208.     --disable-nls                   \
  209.     --disable-libstdcxx-threads     \
  210.     --disable-libstdcxx-pch         \
  211.     --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/8.2.0
  212. make && make install
  213. cd ../.. && rm -rf gcc-8.2.0
  214.  
  215. # Binutils-2.31.1
  216. tar -xf binutils-2.31.1.tar.xz
  217. cd binutils-2.31.1
  218. mkdir -v build && cd build
  219. CC=$LFS_TGT-gcc                \
  220. AR=$LFS_TGT-ar                 \
  221. RANLIB=$LFS_TGT-ranlib         \
  222. ../configure                   \
  223.     --prefix=/tools            \
  224.     --disable-nls              \
  225.     --disable-werror           \
  226.     --with-lib-path=/tools/lib \
  227.     --with-sysroot
  228. make && make install
  229. make -C ld clean
  230. make -C ld LIB_PATH=/usr/lib:/lib
  231. cp -v ld/ld-new /tools/bin
  232. cd ../.. && rm -rf binutils-2.31.1
  233.  
  234. # GCC-8.2.0
  235. tar -xf gcc-8.2.0.tar.xz
  236. cd gcc-8.2.0
  237. cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
  238.   `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h
  239. for file in gcc/config/{linux,i386/linux{,64}}.h
  240. do
  241.   cp -uv $file{,.orig}
  242.   sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
  243.       -e 's@/usr@/tools@g' $file.orig > $file
  244.   echo '
  245. #undef STANDARD_STARTFILE_PREFIX_1
  246. #undef STANDARD_STARTFILE_PREFIX_2
  247. #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
  248. #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
  249.   touch $file.orig
  250. done
  251. case $(uname -m) in
  252.   x86_64)
  253.     sed -e '/m64=/s/lib64/lib/' \
  254.         -i.orig gcc/config/i386/t-linux64
  255.   ;;
  256. esac
  257. tar -xf ../mpfr-4.0.1.tar.xz
  258. mv -v mpfr-4.0.1 mpfr
  259. tar -xf ../gmp-6.1.2.tar.xz
  260. mv -v gmp-6.1.2 gmp
  261. tar -xf ../mpc-1.1.0.tar.gz
  262. mv -v mpc-1.1.0 mpc
  263. mkdir -v build && cd build
  264. CC=$LFS_TGT-gcc                                    \
  265. CXX=$LFS_TGT-g++                                   \
  266. AR=$LFS_TGT-ar                                     \
  267. RANLIB=$LFS_TGT-ranlib                             \
  268. ../configure                                       \
  269.     --prefix=/tools                                \
  270.     --with-local-prefix=/tools                     \
  271.     --with-native-system-header-dir=/tools/include \
  272.     --enable-languages=c,c++                       \
  273.     --disable-libstdcxx-pch                        \
  274.     --disable-multilib                             \
  275.     --disable-bootstrap                            \
  276.     --disable-libgomp
  277. make && make install
  278. ln -sv gcc /tools/bin/cc
  279. echo 'int main(){}' > dummy.c
  280. cc dummy.c
  281. echo; echo "Expected -->[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]"; echo;
  282. readelf -l a.out | grep ': /tools'
  283. cd ../.. && rm -rf gcc-8.2.0
  284.  
  285. # Tcl-8.6.8
  286. tar -xf tcl8.6.8-src.tar.gz
  287. cd tcl8.6.8/unix
  288. ./configure --prefix=/tools
  289. make && make install
  290. chmod -v u+w /tools/lib/libtcl8.6.so
  291. make install-private-headers
  292. ln -sv tclsh8.6 /tools/bin/tclsh
  293. cd ../.. && rm -rf tcl8.6.8
  294.  
  295. #  Expect-5.45.4
  296. tar -xf expect5.45.4.tar.gz
  297. cd expect5.45.4
  298. cp -v configure{,.orig}
  299. sed 's:/usr/local/bin:/bin:' configure.orig > configure
  300. ./configure --prefix=/tools       \
  301.             --with-tcl=/tools/lib \
  302.             --with-tclinclude=/tools/include
  303. make && make SCRIPTS="" install
  304. cd .. && rm -rf expect5.45.4
  305.  
  306. # DejaGNU-1.6.1
  307. tar -xf dejagnu-1.6.1.tar.gz
  308. cd dejagnu-1.6.1
  309. ./configure --prefix=/tools && make install && make check
  310. cd .. && rm -rf dejagnu-1.6.1
  311.  
  312. # M4-1.4.18
  313. tar -xf m4-1.4.18.tar.xz
  314. cd m4-1.4.18
  315. sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
  316. echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
  317. ./configure --prefix=/tools
  318. make && make check && make install
  319. cd .. && rm -rf m4-1.4.18
  320.  
  321. # Ncurses-6.1
  322. tar -xf ncurses-6.1.tar.gz
  323. cd ncurses-6.1
  324. sed -i s/mawk// configure
  325. ./configure --prefix=/tools \
  326.             --with-shared   \
  327.             --without-debug \
  328.             --without-ada   \
  329.             --enable-widec  \
  330.             --enable-overwrite
  331. make && make install
  332. cd .. && rm -rf ncurses-6.1
  333.  
  334. # Bash-4.4.18
  335. tar -xf bash-4.4.18.tar.gz
  336. cd bash-4.4.18
  337. ./configure --prefix=/tools --without-bash-malloc
  338. make && make install
  339. ln -sv bash /tools/bin/sh
  340. cd .. && rm -rf bash-4.4.18
  341.  
  342. # Bison-3.0.5
  343. tar -xf bison-3.0.5.tar.xz
  344. cd bison-3.0.5
  345. ./configure --prefix=/tools
  346. make && make install
  347. cd .. && rm -rf bison-3.0.5
  348.  
  349. # Bzip2-1.0.6
  350. tar -xf bzip2-1.0.6.tar.gz
  351. cd bzip2-1.0.6
  352. make && make PREFIX=/tools install
  353. cd .. && rm -rf bzip2-1.0.6
  354.  
  355. # Coreutils-8.30
  356. tar -xf coreutils-8.30.tar.xz
  357. cd coreutils-8.30
  358. ./configure --prefix=/tools --enable-install-program=hostname
  359. make && make install
  360. cd .. && rm -rf coreutils-8.30
  361.  
  362. # Diffutils-3.6
  363. tar -xf diffutils-3.6.tar.xz
  364. cd diffutils-3.6
  365. ./configure --prefix=/tools
  366. make && make install
  367. cd .. && rm -rf diffutils-3.6
  368.  
  369. # File-5.34
  370. tar -xf file-5.34.tar.gz
  371. cd file-5.34
  372. ./configure --prefix=/tools
  373. make && make install
  374. cd .. && rm -rf file-5.34
  375.  
  376. # Findutils-4.6.0
  377. tar -xf findutils-4.6.0.tar.gz
  378. cd findutils-4.6.0
  379. sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.c
  380. sed -i '/unistd/a #include <sys/sysmacros.h>' gl/lib/mountlist.c
  381. echo "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h
  382. ./configure --prefix=/tools
  383. make && make install
  384. cd .. && rm -rf findutils-4.6.0
  385.  
  386. # Gawk-4.2.1
  387. tar -xf gawk-4.2.1.tar.xz
  388. cd gawk-4.2.1
  389. ./configure --prefix=/tools
  390. make && make install
  391. cd .. && rm -rf gawk-4.2.1
  392.  
  393. # Gettext-0.19.8.1
  394. tar -xf gettext-0.19.8.1.tar.xz
  395. cd gettext-0.19.8.1/gettext-tools
  396. EMACS="no" ./configure --prefix=/tools --disable-shared
  397. make -C gnulib-lib
  398. make -C intl pluralx.c
  399. make -C src msgfmt
  400. make -C src msgmerge
  401. make -C src xgettext
  402. cp -v src/{msgfmt,msgmerge,xgettext} /tools/bin
  403. cd ../.. && rm -rf gettext-0.19.8.1
  404.  
  405. # Grep-3.1
  406. tar -xf grep-3.1.tar.xz
  407. cd grep-3.1
  408. ./configure --prefix=/tools
  409. make && make install
  410. cd .. && rm -rf grep-3.1
  411.  
  412. # Gzip-1.9
  413. tar -xf gzip-1.9.tar.xz
  414. cd gzip-1.9
  415. sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
  416. echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
  417. ./configure --prefix=/tools
  418. make && make install
  419. cd .. && rm -rf gzip-1.9
  420.  
  421. # Make-4.2.1
  422. tar -xf make-4.2.1.tar.bz2
  423. cd make-4.2.1
  424. sed -i '211,217 d; 219,229 d; 232 d' glob/glob.c
  425. ./configure --prefix=/tools --without-guile
  426. make && make install
  427. cd .. && rm -rf make-4.2.1
  428.  
  429. # Patch-2.7.6
  430. tar -xf patch-2.7.6.tar.xz
  431. cd patch-2.7.6
  432. ./configure --prefix=/tools
  433. make && make install
  434. cd .. && rm -rf patch-2.7.6
  435.  
  436. # Perl-5.28.0
  437. tar -xf perl-5.28.0.tar.xz
  438. cd perl-5.28.0
  439. sh Configure -des -Dprefix=/tools -Dlibs=-lm -Uloclibpth -Ulocincpth
  440. make
  441. cp -v perl cpan/podlators/scripts/pod2man /tools/bin
  442. mkdir -pv /tools/lib/perl5/5.28.0
  443. cp -Rv lib/* /tools/lib/perl5/5.28.0
  444. cd .. && rm -rf perl-5.28.0
  445.  
  446. # Sed-4.5
  447. tar -xf sed-4.5.tar.xz
  448. cd sed-4.5
  449. ./configure --prefix=/tools
  450. make && make install
  451. cd .. && rm -rf sed-4.5
  452.  
  453. # Tar-1.30
  454. tar -xf tar-1.30.tar.xz
  455. cd tar-1.30
  456. ./configure --prefix=/tools
  457. make && make install
  458. cd .. && rm -rf tar-1.30
  459.  
  460. # Texinfo-6.5
  461. tar -xf texinfo-6.5.tar.xz
  462. cd texinfo-6.5
  463. ./configure --prefix=/tools
  464. make && make install
  465. cd .. && rm -rf texinfo-6.5
  466.  
  467. # Util-linux-2.32.1
  468. tar -xf util-linux-2.32.1.tar.xz
  469. cd util-linux-2.32.1
  470. ./configure --prefix=/tools                \
  471.             --without-python               \
  472.             --disable-makeinstall-chown    \
  473.             --without-systemdsystemunitdir \
  474.             --without-ncurses              \
  475.             PKG_CONFIG=""
  476. make && make install
  477. cd .. && rm -rf util-linux-2.32.1
  478.  
  479. # Xz-5.2.4
  480. tar -xf xz-5.2.4.tar.xz
  481. cd xz-5.2.4
  482. ./configure --prefix=/tools
  483. make && make install
  484. cd .. && rm -rf xz-5.2.4
  485.  
  486. # Now stripping debug symbol & remove documentation.
  487. strip --strip-debug /tools/lib/*
  488. /usr/bin/strip --strip-unneeded /tools/{,s}bin/*
  489. rm -rf /tools/{,share}/{info,man,doc}
  490. find /tools/{lib,libexec} -name \*.la -delete
  491.  
  492. # Now exit from LFS, and own tools directory by root
  493. exit
  494. chown -R root:root $LFS/tools
  495.  
  496. #####################################################################
  497. # PREPARATION FOR BUILDING REAL SYSTEM ##############################
  498. #####################################################################
  499.  
  500. # Create basic chroot structure
  501. mkdir -pv $LFS/{dev,proc,sys,run}
  502. mknod -m 600 $LFS/dev/console c 5 1
  503. mknod -m 666 $LFS/dev/null c 1 3
  504.  
  505. # Mount some essentials
  506. mount -v --bind /dev $LFS/dev
  507. mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
  508. mount -vt proc proc $LFS/proc
  509. mount -vt sysfs sysfs $LFS/sys
  510. mount -vt tmpfs tmpfs $LFS/run
  511.  
  512. # Workaround for SHM directory
  513. if [ -h $LFS/dev/shm ]; then
  514.   mkdir -pv $LFS/$(readlink $LFS/dev/shm)
  515. fi
  516.  
  517. # Chroot into LFS
  518. chroot "$LFS" /tools/bin/env -i \
  519.     HOME=/root                  \
  520.     TERM="$TERM"                \
  521.     PS1='(lfs chroot) \u:\w\$ ' \
  522.     PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
  523.     /tools/bin/bash --login +h
  524.  
  525. # Create Filesystem Hierarchy Standard (FHS)
  526. mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt}
  527. mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
  528. install -dv -m 0750 /root
  529. install -dv -m 1777 /tmp /var/tmp
  530. mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
  531. mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
  532. mkdir -v  /usr/{,local/}share/{misc,terminfo,zoneinfo}
  533. mkdir -v  /usr/libexec
  534. mkdir -pv /usr/{,local/}share/man/man{1..8}
  535.  
  536. case $(uname -m) in
  537.  x86_64) mkdir -v /lib64 ;;
  538. esac
  539.  
  540. mkdir -v /var/{log,mail,spool}
  541. ln -sv /run /var/run
  542. ln -sv /run/lock /var/lock
  543. mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}
  544.  
  545. # Create some symlink for base utilities
  546. ln -sv /tools/bin/{bash,cat,dd,echo,ln,pwd,rm,stty} /bin
  547. ln -sv /tools/bin/{env,install,perl} /usr/bin
  548. ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
  549. ln -sv /tools/lib/libstdc++.{a,so{,.6}} /usr/lib
  550. for lib in blkid lzma mount uuid
  551. do
  552.     ln -sv /tools/lib/lib$lib.so* /usr/lib
  553. done
  554. ln -svf /tools/include/blkid    /usr/include
  555. ln -svf /tools/include/libmount /usr/include
  556. ln -svf /tools/include/uuid     /usr/include
  557. install -vdm755 /usr/lib/pkgconfig
  558. for pc in blkid mount uuid
  559. do
  560.     sed 's@tools@usr@g' /tools/lib/pkgconfig/${pc}.pc \
  561.         > /usr/lib/pkgconfig/${pc}.pc
  562. done
  563. ln -sv bash /bin/sh
  564.  
  565. ln -sv /proc/self/mounts /etc/mtab
  566.  
  567. # Create user and groups
  568. cat > /etc/passwd << "EOF"
  569. root:x:0:0:root:/root:/bin/bash
  570. bin:x:1:1:bin:/dev/null:/bin/false
  571. daemon:x:6:6:Daemon User:/dev/null:/bin/false
  572. messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
  573. nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
  574. EOF
  575.  
  576. cat > /etc/group << "EOF"
  577. root:x:0:
  578. bin:x:1:daemon
  579. sys:x:2:
  580. kmem:x:3:
  581. tape:x:4:
  582. tty:x:5:
  583. daemon:x:6:
  584. floppy:x:7:
  585. disk:x:8:
  586. lp:x:9:
  587. dialout:x:10:
  588. audio:x:11:
  589. video:x:12:
  590. utmp:x:13:
  591. usb:x:14:
  592. cdrom:x:15:
  593. adm:x:16:
  594. messagebus:x:18:
  595. systemd-journal:x:23:
  596. input:x:24:
  597. mail:x:34:
  598. nogroup:x:99:
  599. users:x:999:
  600. EOF
  601.  
  602. # Re-exec bash, force load of new ursers/groups
  603. exec /tools/bin/bash --login +h
  604.  
  605. # Init log files
  606. touch /var/log/{btmp,lastlog,faillog,wtmp}
  607. chgrp -v utmp /var/log/lastlog
  608. chmod -v 664  /var/log/lastlog
  609. chmod -v 600  /var/log/btmp
  610.  
  611. #####################################################################
  612. # START TO BUILDING REAL SYSTEM #####################################
  613. #####################################################################
  614.  
  615. cd /sources/
  616.  
  617. # Linux-4.18.5 API Headers
  618. tar -xf linux-4.18.5.tar.xz
  619. cd linux-4.18.5
  620. make mrproper
  621. make INSTALL_HDR_PATH=dest headers_install
  622. find dest/include \( -name .install -o -name ..install.cmd \) -delete
  623. cp -rv dest/include/* /usr/include
  624. cd .. && rm -rf linux-4.18.5
  625.  
  626. # Man-pages-4.16
  627. tar -xf man-pages-4.16.tar.xz
  628. cd man-pages-4.16
  629. make install
  630. cd .. && rm -rf man-pages-4.16
  631.  
  632. # Glibc-2.28
  633. tar -xf glibc-2.28.tar.xz
  634. cd glibc-2.28
  635. patch -Np1 -i ../glibc-2.28-fhs-1.patch
  636. ln -sfv /tools/lib/gcc /usr/lib
  637. case $(uname -m) in
  638.     i?86)    GCC_INCDIR=/usr/lib/gcc/$(uname -m)-pc-linux-gnu/8.2.0/include
  639.             ln -sfv ld-linux.so.2 /lib/ld-lsb.so.3
  640.     ;;
  641.     x86_64) GCC_INCDIR=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include
  642.             ln -sfv ../lib/ld-linux-x86-64.so.2 /lib64
  643.             ln -sfv ../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
  644.     ;;
  645. esac
  646. rm -f /usr/include/limits.h
  647. mkdir -v build && cd build
  648. CC="gcc -isystem $GCC_INCDIR -isystem /usr/include" \
  649. ../configure --prefix=/usr                          \
  650.              --disable-werror                       \
  651.              --enable-kernel=3.2                    \
  652.              --enable-stack-protector=strong        \
  653.              libc_cv_slibdir=/lib
  654. unset GCC_INCDIR
  655. make
  656. make check
  657. touch /etc/ld.so.conf
  658. sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
  659. make install
  660. cp -v ../nscd/nscd.conf /etc/nscd.conf
  661. mkdir -pv /var/cache/nscd
  662. mkdir -pv /usr/lib/locale
  663. localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
  664. localedef -i de_DE -f ISO-8859-1 de_DE
  665. localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
  666. localedef -i de_DE -f UTF-8 de_DE.UTF-8
  667. localedef -i en_GB -f UTF-8 en_GB.UTF-8
  668. localedef -i en_HK -f ISO-8859-1 en_HK
  669. localedef -i en_PH -f ISO-8859-1 en_PH
  670. localedef -i en_US -f ISO-8859-1 en_US
  671. localedef -i en_US -f UTF-8 en_US.UTF-8
  672. localedef -i es_MX -f ISO-8859-1 es_MX
  673. localedef -i fa_IR -f UTF-8 fa_IR
  674. localedef -i fr_FR -f ISO-8859-1 fr_FR
  675. localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
  676. localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
  677. localedef -i it_IT -f ISO-8859-1 it_IT
  678. localedef -i it_IT -f UTF-8 it_IT.UTF-8
  679. localedef -i ja_JP -f EUC-JP ja_JP
  680. localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
  681. localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
  682. localedef -i tr_TR -f UTF-8 tr_TR.UTF-8
  683. localedef -i zh_CN -f GB18030 zh_CN.GB18030
  684. make localedata/install-locales
  685. cat > /etc/nsswitch.conf << "EOF"
  686. # Begin /etc/nsswitch.conf
  687.  
  688. passwd: files
  689. group: files
  690. shadow: files
  691.  
  692. hosts: files dns
  693. networks: files
  694.  
  695. protocols: files
  696. services: files
  697. ethers: files
  698. rpc: files
  699.  
  700. # End /etc/nsswitch.conf
  701. EOF
  702. tar -xf ../../tzdata2018e.tar.gz
  703.  
  704. ZONEINFO=/usr/share/zoneinfo
  705. mkdir -pv $ZONEINFO/{posix,right}
  706.  
  707. for tz in etcetera southamerica northamerica europe africa antarctica  \
  708.           asia australasia backward pacificnew systemv; do
  709.     zic -L /dev/null   -d $ZONEINFO       -y "sh yearistype.sh" ${tz}
  710.     zic -L /dev/null   -d $ZONEINFO/posix -y "sh yearistype.sh" ${tz}
  711.     zic -L leapseconds -d $ZONEINFO/right -y "sh yearistype.sh" ${tz}
  712. done
  713.  
  714. cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO
  715. zic -d $ZONEINFO -p America/New_York
  716. unset ZONEINFO
  717. tzselect
  718. cp -v /usr/share/zoneinfo/Europe/Rome /etc/localtime
  719. cat > /etc/ld.so.conf << "EOF"
  720. # Begin /etc/ld.so.conf
  721. /usr/local/lib
  722. /opt/lib
  723.  
  724. EOF
  725. cat >> /etc/ld.so.conf << "EOF"
  726. # Add an include directory
  727. include /etc/ld.so.conf.d/*.conf
  728.  
  729. EOF
  730. mkdir -pv /etc/ld.so.conf.d
  731. mv -v /tools/bin/{ld,ld-old}
  732. mv -v /tools/$(uname -m)-pc-linux-gnu/bin/{ld,ld-old}
  733. mv -v /tools/bin/{ld-new,ld}
  734. ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld
  735. gcc -dumpspecs | sed -e 's@/tools@@g'                   \
  736.     -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
  737.     -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' >      \
  738.     `dirname $(gcc --print-libgcc-file-name)`/specs
  739. echo 'int main(){}' > dummy.c
  740. cc dummy.c -v -Wl,--verbose &> dummy.log
  741. readelf -l a.out | grep ': /lib'
  742. echo; echo "Expected --> [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]"; echo;
  743. grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
  744. echo; echo "Expected --> /usr/lib/../lib/crt1.o succeeded"; echo;
  745. echo; echo "Expected --> /usr/lib/../lib/crti.o succeeded"; echo;
  746. echo; echo "Expected --> /usr/lib/../lib/crtn.o succeeded"; echo;
  747. grep -B1 '^ /usr/include' dummy.log
  748. echo; echo "Expected --> #include <...> search starts here:"; echo;
  749. echo; echo "Expected -->  /usr/include"; echo;
  750. grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
  751. echo; echo "Expected --> SEARCH_DIR("/usr/lib")"; echo;
  752. echo; echo "Expected --> SEARCH_DIR("/lib")"; echo;
  753. grep "/lib.*/libc.so.6 " dummy.log
  754. echo; echo "Expected --> attempt to open /lib/libc.so.6 succeeded"; echo;
  755. grep found dummy.log
  756. echo; echo "Expected --> found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2"; echo;
  757. cd ../.. && rm -rf glibc-2.28
  758.  
  759. # Zlib-1.2.11
  760. tar -xf zlib-1.2.11.tar.xz
  761. cd zlib-1.2.11
  762. ./configure --prefix=/usr
  763. make && make check
  764. make install
  765. mv -v /usr/lib/libz.so.* /lib
  766. ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so
  767. cd .. && rm -rf zlib-1.2.11
  768.  
  769. # File-5.34
  770. tar -xf file-5.34.tar.gz
  771. cd file-5.34
  772. ./configure --prefix=/usr
  773. make && make check
  774. make install
  775. cd .. && rm -rf file-5.34
  776.  
  777. # Readline-7.0
  778. tar -xf readline-7.0.tar.gz
  779. cd readline-7.0
  780. sed -i '/MV.*old/d' Makefile.in
  781. sed -i '/{OLDSUFF}/c:' support/shlib-install
  782. ./configure --prefix=/usr    \
  783.             --disable-static \
  784.             --docdir=/usr/share/doc/readline-7.0
  785. make SHLIB_LIBS="-L/tools/lib -lncursesw"
  786. make SHLIB_LIBS="-L/tools/lib -lncurses" install
  787. mv -v /usr/lib/lib{readline,history}.so.* /lib
  788. chmod -v u+w /lib/lib{readline,history}.so.*
  789. ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) /usr/lib/libreadline.so
  790. ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) /usr/lib/libhistory.so
  791. install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-7.0
  792. cd .. && rm -rf readline-7.0
  793.  
  794. # M4-1.4.18
  795. tar -xf m4-1.4.18.tar.xz
  796. cd m4-1.4.18
  797. sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
  798. echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
  799. ./configure --prefix=/usr
  800. make && make check
  801. make install
  802. cd .. && rm -rf m4-1.4.18
  803.  
  804. # Bc-1.07.1
  805. tar -xf bc-1.07.1.tar.gz
  806. cd bc-1.07.1
  807. cat > bc/fix-libmath_h << "EOF"
  808. #! /bin/bash
  809. sed -e '1   s/^/{"/' \
  810.     -e     's/$/",/' \
  811.     -e '2,$ s/^/"/'  \
  812.     -e   '$ d'       \
  813.     -i libmath.h
  814.  
  815. sed -e '$ s/$/0}/' \
  816.     -i libmath.h
  817. EOF
  818. ln -sv /tools/lib/libncursesw.so.6 /usr/lib/libncursesw.so.6
  819. ln -sfv libncurses.so.6 /usr/lib/libncurses.so
  820. sed -i -e '/flex/s/as_fn_error/: ;; # &/' configure
  821. ./configure --prefix=/usr           \
  822.             --with-readline         \
  823.             --mandir=/usr/share/man \
  824.             --infodir=/usr/share/info
  825. make
  826. echo "quit" | ./bc/bc -l Test/checklib.b
  827. make install
  828. cd .. && rm -rf bc-1.07.1
  829.  
  830. # Binutils-2.31.1
  831. expect -c "spawn ls"
  832. echo; echo "Expected --> spawn ls"; echo;
  833. tar -xf binutils-2.31.1.tar.xz
  834. cd binutils-2.31.1
  835. mkdir -v build && cd build
  836. ../configure --prefix=/usr       \
  837.              --enable-gold       \
  838.              --enable-ld=default \
  839.              --enable-plugins    \
  840.              --enable-shared     \
  841.              --disable-werror    \
  842.              --enable-64-bit-bfd \
  843.              --with-system-zlib
  844. make tooldir=/usr
  845. make -k check
  846. make tooldir=/usr install
  847. cd ../.. && rm -rf binutils-2.31.1
  848.  
  849. # GMP-6.1.2
  850. tar -xf gmp-6.1.2.tar.xz
  851. cd gmp-6.1.2
  852. ./configure --prefix=/usr    \
  853.             --enable-cxx     \
  854.             --disable-static \
  855.             --docdir=/usr/share/doc/gmp-6.1.2
  856. make
  857. make html
  858. make check 2>&1 | tee gmp-check-log
  859. awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log
  860. make install
  861. make install-html
  862. cd .. && rm -rf gmp-6.1.2
  863.  
  864. # MPFR-4.0.1
  865. tar -xf mpfr-4.0.1.tar.xz
  866. cd mpfr-4.0.1
  867. ./configure --prefix=/usr        \
  868.             --disable-static     \
  869.             --enable-thread-safe \
  870.             --docdir=/usr/share/doc/mpfr-4.0.1
  871. make && make html
  872. make check
  873. make install
  874. make install-html
  875. cd .. && rm -rf mpfr-4.0.1
  876.  
  877. # MPC-1.1.0
  878. tar -xf mpc-1.1.0.tar.gz
  879. cd mpc-1.1.0
  880. ./configure --prefix=/usr    \
  881.             --disable-static \
  882.             --docdir=/usr/share/doc/mpc-1.1.0
  883. make && make html
  884. make check
  885. make install
  886. make install-html
  887. cd .. && rm -rf mpc-1.1.0
  888.  
  889. # Shadow-4.6
  890. tar -xf shadow-4.6.tar.xz
  891. cd shadow-4.6
  892. sed -i 's/groups$(EXEEXT) //' src/Makefile.in
  893. find man -name Makefile.in -exec sed -i 's/groups\.1 / /'   {} \;
  894. find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
  895. find man -name Makefile.in -exec sed -i 's/passwd\.5 / /'   {} \;
  896. sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
  897.        -e 's@/var/spool/mail@/var/mail@' etc/login.defs
  898. sed -i 's/1000/999/' etc/useradd
  899. ./configure --sysconfdir=/etc --with-group-name-max-length=32
  900. make && make install
  901. mv -v /usr/bin/passwd /bin
  902. pwconv && grpconv
  903. sed -i 's/yes/no/' /etc/default/useradd
  904. passwd root
  905. cd .. && rm -rf shadow-4.6
  906.  
  907. # GCC-8.2.0
  908. tar -xf gcc-8.2.0.tar.xz
  909. cd gcc-8.2.0
  910. case $(uname -m) in
  911.   x86_64)
  912.     sed -e '/m64=/s/lib64/lib/' \
  913.         -i.orig gcc/config/i386/t-linux64
  914.   ;;
  915. esac
  916. rm -f /usr/lib/gcc
  917. mkdir -v build && cd build
  918. SED=sed                               \
  919. ../configure --prefix=/usr            \
  920.              --enable-languages=c,c++ \
  921.              --disable-multilib       \
  922.              --disable-bootstrap      \
  923.              --disable-libmpx         \
  924.              --with-system-zlib
  925. make
  926. ulimit -s 32768
  927. rm ../gcc/testsuite/g++.dg/pr83239.C
  928. chown -Rv nobody .
  929. su nobody -s /bin/bash -c "PATH=$PATH make -k check"
  930. ../contrib/test_summary | grep -A7 Summ
  931. make install
  932. ln -sv ../usr/bin/cpp /lib
  933. ln -sv gcc /usr/bin/cc
  934. install -v -dm755 /usr/lib/bfd-plugins
  935. ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/8.2.0/liblto_plugin.so \
  936.         /usr/lib/bfd-plugins/
  937. echo 'int main(){}' > dummy.c
  938. cc dummy.c -v -Wl,--verbose &> dummy.log
  939. readelf -l a.out | grep ': /lib'
  940. echo; echo "Expected -->[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]"; echo;
  941. grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
  942. echo; echo "Expected --> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crt1.o succeeded"; echo;
  943. echo; echo "Expected --> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crti.o succeeded"; echo;
  944. echo; echo "Expected --> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crtn.o succeeded"; echo;
  945. grep -B4 '^ /usr/include' dummy.log
  946. echo; echo "Expected --> #include <...> search starts here:"; echo;
  947. echo; echo "Expected -->  /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include"; echo;
  948. echo; echo "Expected -->  /usr/local/include"; echo;
  949. echo; echo "Expected -->  /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include-fixed"; echo;
  950. echo; echo "Expected -->  /usr/include"; echo;
  951. grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
  952. echo; echo "Expected --> SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")"; echo;
  953. echo; echo "Expected --> SEARCH_DIR("/usr/local/lib64")"; echo;
  954. echo; echo "Expected --> SEARCH_DIR("/lib64")"; echo;
  955. echo; echo "Expected --> SEARCH_DIR("/usr/lib64")"; echo;
  956. echo; echo "Expected --> SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")"; echo;
  957. echo; echo "Expected --> SEARCH_DIR("/usr/local/lib")"; echo;
  958. echo; echo "Expected --> SEARCH_DIR("/lib")"; echo;
  959. echo; echo "Expected --> SEARCH_DIR("/usr/lib");"; echo;
  960. grep "/lib.*/libc.so.6 " dummy.log
  961. echo; echo "Expected --> attempt to open /lib/libc.so.6 succeeded"; echo;
  962. grep found dummy.log
  963. echo; echo "Expected --> found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2"; echo;
  964. mkdir -pv /usr/share/gdb/auto-load/usr/lib
  965. mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
  966. cd ../.. && rm -rf gcc-8.2.0
  967.  
  968. # Bzip2-1.0.6
  969. tar -xf bzip2-1.0.6.tar.gz  
  970. cd bzip2-1.0.6
  971. patch -Np1 -i ../bzip2-1.0.6-install_docs-1.patch
  972. sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
  973. sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
  974. make -f Makefile-libbz2_so
  975. make clean
  976. make
  977. make PREFIX=/usr install
  978. cp -v bzip2-shared /bin/bzip2
  979. cp -av libbz2.so* /lib
  980. ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
  981. rm -v /usr/bin/{bunzip2,bzcat,bzip2}
  982. ln -sv bzip2 /bin/bunzip2
  983. ln -sv bzip2 /bin/bzcat
  984. cd .. && rm -rf bzip2-1.0.6
  985.  
  986. # Pkg-config-0.29.2
  987. tar -xf pkg-config-0.29.2.tar.gz
  988. cd pkg-config-0.29.2
  989. ./configure --prefix=/usr              \
  990.             --with-internal-glib       \
  991.             --disable-host-tool        \
  992.             --docdir=/usr/share/doc/pkg-config-0.29.2
  993. make
  994. make check
  995. make install
  996. cd .. && rm -rf pkg-config-0.29.2
  997.  
  998. # Ncurses-6.1
  999. tar -xf ncurses-6.1.tar.gz
  1000. cd ncurses-6.1
  1001. sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in
  1002. ./configure --prefix=/usr           \
  1003.             --mandir=/usr/share/man \
  1004.             --with-shared           \
  1005.             --without-debug         \
  1006.             --without-normal        \
  1007.             --enable-pc-files       \
  1008.             --enable-widec
  1009. make
  1010. make install
  1011. mv -v /usr/lib/libncursesw.so.6* /lib
  1012. ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so
  1013. for lib in ncurses form panel menu ; do
  1014.     rm -vf                    /usr/lib/lib${lib}.so
  1015.     echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
  1016.     ln -sfv ${lib}w.pc        /usr/lib/pkgconfig/${lib}.pc
  1017. done
  1018. rm -vf                     /usr/lib/libcursesw.so
  1019. echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
  1020. ln -sfv libncurses.so      /usr/lib/libcurses.so
  1021. mkdir -v       /usr/share/doc/ncurses-6.1
  1022. cp -v -R doc/* /usr/share/doc/ncurses-6.1
  1023. cd .. && rm -rf ncurses-6.1
  1024.  
  1025. # Attr-2.4.48
  1026. tar -xf attr-2.4.48.tar.gz
  1027. cd attr-2.4.48
  1028. ./configure --prefix=/usr     \
  1029.             --bindir=/bin     \
  1030.             --disable-static  \
  1031.             --sysconfdir=/etc \
  1032.             --docdir=/usr/share/doc/attr-2.4.48
  1033. make
  1034. make check
  1035. make install
  1036. mv -v /usr/lib/libattr.so.* /lib
  1037. ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so
  1038. cd .. && rm -rf attr-2.4.48
  1039.  
  1040. # Acl-2.2.53
  1041. tar -xf acl-2.2.53.tar.gz
  1042. cd acl-2.2.53
  1043. ./configure --prefix=/usr         \
  1044.             --bindir=/bin         \
  1045.             --disable-static      \
  1046.             --libexecdir=/usr/lib \
  1047.             --docdir=/usr/share/doc/acl-2.2.53
  1048. make
  1049. make install
  1050. mv -v /usr/lib/libacl.so.* /lib
  1051. ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so
  1052. cd .. && rm -rf acl-2.2.53
  1053.  
  1054. # Acl-2.2.53
  1055. tar -xf acl-2.2.53.tar.gz
  1056. cd acl-2.2.53
  1057. ./configure --prefix=/usr         \
  1058.             --bindir=/bin         \
  1059.             --disable-static      \
  1060.             --libexecdir=/usr/lib \
  1061.             --docdir=/usr/share/doc/acl-2.2.53
  1062. make
  1063. make install
  1064. mv -v /usr/lib/libacl.so.* /lib
  1065. ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so
  1066. cd .. && rm -rf acl-2.2.53
  1067.  
  1068. # Libcap-2.25
  1069. tar -xf libcap-2.25.tar.xz
  1070. cd libcap-2.25
  1071. sed -i '/install.*STALIBNAME/d' libcap/Makefile
  1072. make
  1073. make RAISE_SETFCAP=no lib=lib prefix=/usr install
  1074. chmod -v 755 /usr/lib/libcap.so
  1075. mv -v /usr/lib/libcap.so.* /lib
  1076. ln -sfv ../../lib/$(readlink /usr/lib/libcap.so) /usr/lib/libcap.so
  1077. cd .. && rm -rf libcap-2.25
  1078.  
  1079. # Sed-4.5
  1080. tar -xf sed-4.5.tar.xz
  1081. cd sed-4.5
  1082. sed -i 's/usr/tools/'                 build-aux/help2man
  1083. sed -i 's/testsuite.panic-tests.sh//' Makefile.in
  1084. ./configure --prefix=/usr --bindir=/bin
  1085. make && make html
  1086. make check
  1087. make install
  1088. install -d -m755           /usr/share/doc/sed-4.5
  1089. install -m644 doc/sed.html /usr/share/doc/sed-4.5
  1090. cd .. && rm -rf sed-4.5
  1091.  
  1092. # Psmisc-23.1
  1093. tar -xf psmisc-23.1.tar.xz
  1094. cd psmisc-23.1
  1095. ./configure --prefix=/usr
  1096. make && make install
  1097. mv -v /usr/bin/fuser   /bin
  1098. mv -v /usr/bin/killall /bin
  1099. cd .. && rm -rf psmisc-23.1
  1100.  
  1101. # Iana-Etc-2.30
  1102. tar -xf iana-etc-2.30.tar.bz2
  1103. cd iana-etc-2.30
  1104. make && make install
  1105. cd .. && rm -rf iana-etc-2.30
  1106.  
  1107. # Bison-3.0.5
  1108. tar -xf bison-3.0.5.tar.xz
  1109. cd bison-3.0.5
  1110. ./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.0.5
  1111. make && make install
  1112. cd .. && rm -rf bison-3.0.5
  1113.  
  1114. # Flex-2.6.4
  1115. tar -xf flex-2.6.4.tar.gz
  1116. cd flex-2.6.4
  1117. sed -i "/math.h/a #include <malloc.h>" src/flexdef.h
  1118. HELP2MAN=/tools/bin/true \
  1119. ./configure --prefix=/usr --docdir=/usr/share/doc/flex-2.6.4
  1120. make
  1121. make check
  1122. make install
  1123. ln -sv flex /usr/bin/lex
  1124. cd .. && rm -rf flex-2.6.4
  1125.  
  1126. # Grep-3.1
  1127. tar -xf grep-3.1.tar.xz
  1128. cd grep-3.1
  1129. ./configure --prefix=/usr --bindir=/bin
  1130. make
  1131. make -k check
  1132. make install
  1133. cd .. && rm -rf grep-3.1
  1134.  
  1135. # Bash-4.4.18
  1136. tar -xf bash-4.4.18.tar.gz
  1137. cd bash-4.4.18
  1138. ./configure --prefix=/usr                       \
  1139.             --docdir=/usr/share/doc/bash-4.4.18 \
  1140.             --without-bash-malloc               \
  1141.             --with-installed-readline
  1142. make
  1143. chown -Rv nobody .
  1144. su nobody -s /bin/bash -c "PATH=$PATH make tests"
  1145. make install
  1146. mv -vf /usr/bin/bash /bin
  1147. exec /bin/bash --login +h
  1148. cd .. && rm -rf bash-4.4.18
  1149.  
  1150. #  Libtool-2.4.6
  1151. tar -xf  libtool-2.4.6.tar.xz
  1152. cd libtool-2.4.6
  1153. ./configure --prefix=/usr
  1154. make
  1155. TESTSUITEFLAGS=-j4 make check
  1156. make install
  1157. cd .. && rm -rf libtool-2.4.6
  1158.  
  1159. # GDBM-1.17
  1160. tar -xf gdbm-1.17.tar.gz
  1161. cd gdbm-1.17
  1162. ./configure --prefix=/usr \
  1163.             --disable-static \
  1164.             --enable-libgdbm-compat
  1165. make
  1166. make check
  1167. make install
  1168. cd .. && rm -rf gdbm-1.17
  1169.  
  1170. # Gperf-3.1
  1171. tar -xf gperf-3.1.tar.gz
  1172. cd gperf-3.1
  1173. ./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1
  1174. make
  1175. make -j1 check
  1176. make install
  1177. cd .. && rm -rf gperf-3.1
  1178.  
  1179. # Expat-2.2.6
  1180. tar -xf expat-2.2.6.tar.bz2
  1181. cd expat-2.2.6
  1182. sed -i 's|usr/bin/env |bin/|' run.sh.in
  1183. ./configure --prefix=/usr    \
  1184.             --disable-static \
  1185.             --docdir=/usr/share/doc/expat-2.2.6
  1186. make
  1187. make check
  1188. make install
  1189. install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.2.6
  1190. cd .. && rm -rf expat-2.2.6
  1191.  
  1192. # Inetutils-1.9.4
  1193. tar -xf inetutils-1.9.4.tar.xz
  1194. cd inetutils-1.9.4
  1195. ./configure --prefix=/usr        \
  1196.             --localstatedir=/var \
  1197.             --disable-logger     \
  1198.             --disable-whois      \
  1199.             --disable-rcp        \
  1200.             --disable-rexec      \
  1201.             --disable-rlogin     \
  1202.             --disable-rsh        \
  1203.             --disable-servers
  1204. make
  1205. make check
  1206. make install
  1207. mv -v /usr/bin/{hostname,ping,ping6,traceroute} /bin
  1208. mv -v /usr/bin/ifconfig /sbin
  1209. cd .. && rm -rf inetutils-1.9.4
  1210.  
  1211. # Perl-5.28.0
  1212. tar -xf perl-5.28.0.tar.xz
  1213. cd perl-5.28.0
  1214. echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
  1215. export BUILD_ZLIB=False
  1216. export BUILD_BZIP2=0
  1217. sh Configure -des -Dprefix=/usr                 \
  1218.                   -Dvendorprefix=/usr           \
  1219.                   -Dman1dir=/usr/share/man/man1 \
  1220.                   -Dman3dir=/usr/share/man/man3 \
  1221.                   -Dpager="/usr/bin/less -isR"  \
  1222.                   -Duseshrplib                  \
  1223.                   -Dusethreads
  1224. make
  1225. make -k test
  1226. make install
  1227. unset BUILD_ZLIB BUILD_BZIP2
  1228. cd .. && rm -rf perl-5.28.0
  1229.  
  1230. #  XML::Parser-2.44
  1231. tar -xf XML-Parser-2.44.tar.gz
  1232. cd XML-Parser-2.44
  1233. perl Makefile.PL
  1234. make
  1235. make test
  1236. make install
  1237. cd .. && rm -rf XML-Parser-2.44
  1238.  
  1239. # Intltool-0.51.0
  1240. tar -xf intltool-0.51.0.tar.gz
  1241. cd intltool-0.51.0
  1242. sed -i 's:\\\${:\\\$\\{:' intltool-update.in
  1243. ./configure --prefix=/usr
  1244. make
  1245. make check
  1246. make install
  1247. install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO
  1248. cd .. && rm -rf intltool-0.51.0
  1249.  
  1250. # Autoconf-2.69
  1251. tar -xf autoconf-2.69.tar.xz
  1252. cd autoconf-2.69
  1253. ./configure --prefix=/usr
  1254. make
  1255. TESTSUITEFLAGS=-j4 make check
  1256. make install
  1257. cd .. && rm -rf autoconf-2.69
  1258.  
  1259. # Automake-1.16.1
  1260. tar -xf automake-1.16.1.tar.xz
  1261. cd automake-1.16.1
  1262. ./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.1
  1263. make
  1264. make -j4 check
  1265. make install
  1266. cd .. && rm -rf automake-1.16.1
  1267.  
  1268. # Xz-5.2.4
  1269. tar -xf xz-5.2.4.tar.xz
  1270. cd xz-5.2.4
  1271. ./configure --prefix=/usr    \
  1272.             --disable-static \
  1273.             --docdir=/usr/share/doc/xz-5.2.4
  1274. make
  1275. make check
  1276. make install
  1277. mv -v   /usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} /bin
  1278. mv -v /usr/lib/liblzma.so.* /lib
  1279. ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.so
  1280. cd .. && rm -rf xz-5.2.4
  1281.  
  1282. # Kmod-25
  1283. tar -xf kmod-25.tar.xz
  1284. cd kmod-25
  1285. ./configure --prefix=/usr          \
  1286.             --bindir=/bin          \
  1287.             --sysconfdir=/etc      \
  1288.             --with-rootlibdir=/lib \
  1289.             --with-xz              \
  1290.             --with-zlib
  1291. make
  1292. make install
  1293. for target in depmod insmod lsmod modinfo modprobe rmmod; do
  1294.   ln -sfv ../bin/kmod /sbin/$target
  1295. done
  1296. ln -sfv kmod /bin/lsmod
  1297. cd .. && rm -rf kmod-25
  1298.  
  1299. # Gettext-0.19.8.1
  1300. tar -xf gettext-0.19.8.1.tar.xz
  1301. cd gettext-0.19.8.1
  1302. sed -i '/^TESTS =/d' gettext-runtime/tests/Makefile.in &&
  1303. sed -i 's/test-lock..EXEEXT.//' gettext-tools/gnulib-tests/Makefile.in
  1304. sed -e '/AppData/{N;N;p;s/\.appdata\./.metainfo./}' \
  1305.     -i gettext-tools/its/appdata.loc
  1306. ./configure --prefix=/usr    \
  1307.             --disable-static \
  1308.             --docdir=/usr/share/doc/gettext-0.19.8.1
  1309. make
  1310. make check
  1311. make install
  1312. chmod -v 0755 /usr/lib/preloadable_libintl.so
  1313. cd .. && rm -rf gettext-0.19.8.1
  1314.  
  1315. # Libelf 0.173
  1316. tar -xf elfutils-0.173.tar.bz2
  1317. cd elfutils-0.173
  1318. ./configure --prefix=/usr
  1319. make
  1320. make check
  1321. make -C libelf install
  1322. install -vm644 config/libelf.pc /usr/lib/pkgconfig
  1323. cd .. && rm -rf elfutils-0.173
  1324.  
  1325. # Libffi-3.2.1
  1326. tar -xf libffi-3.2.1.tar.gz
  1327. cd libffi-3.2.1
  1328. sed -e '/^includesdir/ s/$(libdir).*$/$(includedir)/' \
  1329.     -i include/Makefile.in
  1330. sed -e '/^includedir/ s/=.*$/=@includedir@/' \
  1331.     -e 's/^Cflags: -I${includedir}/Cflags:/' \
  1332.     -i libffi.pc.in
  1333. ./configure --prefix=/usr --disable-static --with-gcc-arch=native
  1334. make
  1335. make check
  1336. make install
  1337. cd .. && rm -rf libffi-3.2.1
  1338.  
  1339. # Openssl-1.1.0i
  1340. tar -xf openssl-1.1.0i.tar.gz
  1341. cd openssl-1.1.0i
  1342. ./config --prefix=/usr         \
  1343.          --openssldir=/etc/ssl \
  1344.          --libdir=lib          \
  1345.          shared                \
  1346.          zlib-dynamic
  1347. make
  1348. make test
  1349. sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
  1350. make MANSUFFIX=ssl install
  1351. mv -v /usr/share/doc/openssl /usr/share/doc/openssl-1.1.0i
  1352. cp -vfr doc/* /usr/share/doc/openssl-1.1.0i
  1353. cd .. && rm -rf openssl-1.1.0i
  1354.  
  1355. # Python-3.7.0
  1356. tar -xf Python-3.7.0.tar.xz
  1357. cd Python-3.7.0
  1358. ./configure --prefix=/usr       \
  1359.             --enable-shared     \
  1360.             --with-system-expat \
  1361.             --with-system-ffi   \
  1362.             --with-ensurepip=yes
  1363. make
  1364. make install
  1365. chmod -v 755 /usr/lib/libpython3.7m.so
  1366. chmod -v 755 /usr/lib/libpython3.so
  1367. install -v -dm755 /usr/share/doc/python-3.7.0/html
  1368. tar --strip-components=1  \
  1369.     --no-same-owner       \
  1370.     --no-same-permissions \
  1371.     -C /usr/share/doc/python-3.7.0/html \
  1372.     -xvf ../python-3.7.0-docs-html.tar.bz2
  1373. cd .. && rm -rf Python-3.7.0
  1374.  
  1375. # Ninja-1.8.2
  1376. tar -xf ninja-1.8.2.tar.gz
  1377. cd ninja-1.8.2
  1378. export NINJAJOBS=4
  1379. patch -Np1 -i ../ninja-1.8.2-add_NINJAJOBS_var-1.patch
  1380. python3 configure.py --bootstrap
  1381. python3 configure.py
  1382. ./ninja ninja_test
  1383. ./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
  1384. install -vm755 ninja /usr/bin/
  1385. install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja
  1386. install -vDm644 misc/zsh-completion  /usr/share/zsh/site-functions/_ninja
  1387. cd .. && rm -rf ninja-1.8.2
  1388.  
  1389. # Meson-0.47.1
  1390. tar -xf meson-0.47.1.tar.gz
  1391. cd meson-0.47.1
  1392. python3 setup.py build
  1393. python3 setup.py install --root=dest
  1394. cp -rv dest/* /
  1395. cd .. && rm -rf meson-0.47.1
  1396.  
  1397. # Procps-ng-3.3.15
  1398. tar -xf procps-ng-3.3.15.tar.xz
  1399. cd procps-ng-3.3.15
  1400. ./configure --prefix=/usr                            \
  1401.             --exec-prefix=                           \
  1402.             --libdir=/usr/lib                        \
  1403.             --docdir=/usr/share/doc/procps-ng-3.3.15 \
  1404.             --disable-static                         \
  1405.             --disable-kill
  1406. make
  1407. sed -i -r 's|(pmap_initname)\\\$|\1|' testsuite/pmap.test/pmap.exp
  1408. sed -i '/set tty/d' testsuite/pkill.test/pkill.exp
  1409. rm testsuite/pgrep.test/pgrep.exp
  1410. make check
  1411. make install
  1412. mv -v /usr/lib/libprocps.so.* /lib
  1413. ln -sfv ../../lib/$(readlink /usr/lib/libprocps.so) /usr/lib/libprocps.so
  1414. cd .. && rm -rf procps-ng-3.3.15
  1415.  
  1416. # E2fsprogs-1.44.3
  1417. tar -xf e2fsprogs-1.44.3.tar.gz
  1418. mkdir -v e2fsprogs-1.44.3/build
  1419. cd e2fsprogs-1.44.3/build
  1420. ../configure --prefix=/usr           \
  1421.              --bindir=/bin           \
  1422.              --with-root-prefix=""   \
  1423.              --enable-elf-shlibs     \
  1424.              --disable-libblkid      \
  1425.              --disable-libuuid       \
  1426.              --disable-uuidd         \
  1427.              --disable-fsck
  1428. make
  1429. ln -sfv /tools/lib/lib{blk,uu}id.so.1 lib
  1430. make LD_LIBRARY_PATH=/tools/lib check
  1431. make install
  1432. make install-libs
  1433. chmod -v u+w /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
  1434. gunzip -v /usr/share/info/libext2fs.info.gz
  1435. install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
  1436. makeinfo -o      doc/com_err.info ../lib/et/com_err.texinfo
  1437. install -v -m644 doc/com_err.info /usr/share/info
  1438. install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info
  1439. cd ../.. && rm -rf e2fsprogs-1.44.3
  1440.  
  1441. # Coreutils-8.30
  1442. tar -xf coreutils-8.30.tar.xz
  1443. cd coreutils-8.30
  1444. patch -Np1 -i ../coreutils-8.30-i18n-1.patch
  1445. sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
  1446. autoreconf -fiv
  1447. FORCE_UNSAFE_CONFIGURE=1 ./configure \
  1448.             --prefix=/usr            \
  1449.             --enable-no-install-program=kill,uptime
  1450. FORCE_UNSAFE_CONFIGURE=1 make
  1451. make NON_ROOT_USERNAME=nobody check-root
  1452. echo "dummy:x:1000:nobody" >> /etc/group
  1453. chown -Rv nobody .
  1454. su nobody -s /bin/bash \
  1455.           -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"
  1456. sed -i '/dummy/d' /etc/group
  1457. make install
  1458. mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
  1459. mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} /bin
  1460. mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
  1461. mv -v /usr/bin/chroot /usr/sbin
  1462. mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8
  1463. sed -i s/\"1\"/\"8\"/1 /usr/share/man/man8/chroot.8
  1464. mv -v /usr/bin/{head,sleep,nice} /bin
  1465. cd .. && rm -rf coreutils-8.30
  1466.  
  1467. # Check-0.12.0
  1468. tar -xf check-0.12.0.tar.gz
  1469. cd check-0.12.0
  1470. ./configure --prefix=/usr
  1471. make
  1472. make check
  1473. make install
  1474. sed -i '1 s/tools/usr/' /usr/bin/checkmk
  1475. cd .. && rm -rf check-0.12.0
  1476.  
  1477. # Diffutils-3.6
  1478. tar -xf diffutils-3.6.tar.xz
  1479. cd diffutils-3.6
  1480. ./configure --prefix=/usr
  1481. make
  1482. make check
  1483. make install
  1484. cd .. && rm -rf diffutils-3.6
  1485.  
  1486. # Gawk-4.2.1
  1487. tar -xf gawk-4.2.1.tar.xz
  1488. cd gawk-4.2.1
  1489. sed -i 's/extras//' Makefile.in
  1490. ./configure --prefix=/usr
  1491. make
  1492. make check
  1493. make install
  1494. mkdir -v /usr/share/doc/gawk-4.2.1
  1495. cp    -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-4.2.1
  1496. cd .. && rm -rf gawk-4.2.1
  1497.  
  1498. # Findutils-4.6.0
  1499. tar -xf findutils-4.6.0.tar.gz
  1500. cd findutils-4.6.0
  1501. sed -i 's/test-lock..EXEEXT.//' tests/Makefile.in
  1502. sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.c
  1503. sed -i '/unistd/a #include <sys/sysmacros.h>' gl/lib/mountlist.c
  1504. echo "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h
  1505. ./configure --prefix=/usr --localstatedir=/var/lib/locate
  1506. make
  1507. make check
  1508. make install
  1509. mv -v /usr/bin/find /bin
  1510. sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb
  1511. cd .. && rm -rf findutils-4.6.0
  1512.  
  1513. # Groff-1.22.3
  1514. tar -xf groff-1.22.3.tar.gz
  1515. cd groff-1.22.3
  1516. PAGE=A4 ./configure --prefix=/usr
  1517. make -j1
  1518. make install
  1519. cd .. && rm -rf groff-1.22.3
  1520.  
  1521. # GRUB-2.02
  1522. tar -xf grub-2.02.tar.xz
  1523. cd grub-2.02
  1524. ./configure --prefix=/usr          \
  1525.             --sbindir=/sbin        \
  1526.             --sysconfdir=/etc      \
  1527.             --disable-efiemu       \
  1528.             --disable-werror
  1529. make && make install
  1530. cd .. && rm -rf grub-2.02
  1531.  
  1532. # Less-530
  1533. tar -xf less-530.tar.gz
  1534. cd less-530
  1535. ./configure --prefix=/usr --sysconfdir=/etc
  1536. make && make install
  1537. cd .. && rm -rf less-530
  1538.  
  1539. # Gzip-1.9
  1540. tar -xf gzip-1.9.tar.xz
  1541. cd gzip-1.9
  1542. sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
  1543. echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
  1544. ./configure --prefix=/usr
  1545. make
  1546. make check
  1547. make install
  1548. mv -v /usr/bin/gzip /bin
  1549. cd .. && rm -rf gzip-1.9
  1550.  
  1551. # IPRoute2-4.18.0
  1552. tar -xf iproute2-4.18.0.tar.xz
  1553. cd iproute2-4.18.0
  1554. sed -i /ARPD/d Makefile
  1555. rm -fv man/man8/arpd.8
  1556. sed -i 's/.m_ipt.o//' tc/Makefile
  1557. make
  1558. make DOCDIR=/usr/share/doc/iproute2-4.18.0 install
  1559. cd .. && rm -rf iproute2-4.18.0
  1560.  
  1561. # Kbd-2.0.4
  1562. tar -xf kbd-2.0.4.tar.xz
  1563. cd kbd-2.0.4
  1564. patch -Np1 -i ../kbd-2.0.4-backspace-1.patch
  1565. sed -i 's/\(RESIZECONS_PROGS=\)yes/\1no/g' configure
  1566. sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
  1567. PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr --disable-vlock
  1568. make
  1569. make check
  1570. make install
  1571. mkdir -v /usr/share/doc/kbd-2.0.4
  1572. cp -R -v docs/doc/* /usr/share/doc/kbd-2.0.4
  1573. cd .. && rm -rf kbd-2.0.4
  1574.  
  1575. # Libpipeline-1.5.0
  1576. tar -xf libpipeline-1.5.0.tar.gz
  1577. cd libpipeline-1.5.0
  1578. ./configure --prefix=/usr
  1579. make
  1580. make check
  1581. make install
  1582. cd .. && rm -rf libpipeline-1.5.0
  1583.  
  1584. # Make-4.2.1
  1585. tar -xf make-4.2.1.tar.bz2
  1586. cd make-4.2.1
  1587. sed -i '211,217 d; 219,229 d; 232 d' glob/glob.c
  1588. ./configure --prefix=/usr
  1589. make
  1590. make PERL5LIB=$PWD/tests/ check
  1591. make install
  1592. cd .. && rm -rf make-4.2.1
  1593.  
  1594. # Patch-2.7.6
  1595. tar -xf patch-2.7.6.tar.xz
  1596. cd patch-2.7.6
  1597. ./configure --prefix=/usr
  1598. make
  1599. make check
  1600. make install
  1601. cd .. && rm -rf patch-2.7.6
  1602.  
  1603. # Sysklogd-1.5.1
  1604. tar -xf sysklogd-1.5.1.tar.gz
  1605. cd sysklogd-1.5.1
  1606. sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c
  1607. sed -i 's/union wait/int/' syslogd.c
  1608. make && make BINDIR=/sbin install
  1609. cat > /etc/syslog.conf << "EOF"
  1610. # Begin /etc/syslog.conf
  1611.  
  1612. auth,authpriv.* -/var/log/auth.log
  1613. *.*;auth,authpriv.none -/var/log/sys.log
  1614. daemon.* -/var/log/daemon.log
  1615. kern.* -/var/log/kern.log
  1616. mail.* -/var/log/mail.log
  1617. user.* -/var/log/user.log
  1618. *.emerg *
  1619.  
  1620. # End /etc/syslog.conf
  1621. EOF
  1622. cd .. && rm -rf sysklogd-1.5.1
  1623.  
  1624. # Sysvinit-2.90
  1625. tar -xf sysvinit-2.90.tar.xz
  1626. cd sysvinit-2.90
  1627. patch -Np1 -i ../sysvinit-2.90-consolidated-1.patch
  1628. make -C src
  1629. make -C src install
  1630. cd .. && rm -rf sysvinit-2.90
  1631.  
  1632. # Eudev-3.2.5
  1633. tar -xf eudev-3.2.5.tar.gz
  1634. cd eudev-3.2.5
  1635. cat > config.cache << "EOF"
  1636. HAVE_BLKID=1
  1637. BLKID_LIBS="-lblkid"
  1638. BLKID_CFLAGS="-I/tools/include"
  1639. EOF
  1640. ./configure --prefix=/usr           \
  1641.             --bindir=/sbin          \
  1642.             --sbindir=/sbin         \
  1643.             --libdir=/usr/lib       \
  1644.             --sysconfdir=/etc       \
  1645.             --libexecdir=/lib       \
  1646.             --with-rootprefix=      \
  1647.             --with-rootlibdir=/lib  \
  1648.             --enable-manpages       \
  1649.             --disable-static        \
  1650.             --config-cache
  1651. LIBRARY_PATH=/tools/lib make
  1652. mkdir -pv /lib/udev/rules.d
  1653. mkdir -pv /etc/udev/rules.d
  1654. make LD_LIBRARY_PATH=/tools/lib check
  1655. make LD_LIBRARY_PATH=/tools/lib install
  1656. tar -xvf ../udev-lfs-20171102.tar.bz2
  1657. make -f udev-lfs-20171102/Makefile.lfs install
  1658. LD_LIBRARY_PATH=/tools/lib udevadm hwdb --update
  1659. cd .. && rm -rf eudev-3.2.5
  1660.  
  1661. # Util-linux-2.32.1
  1662. tar -xf util-linux-2.32.1.tar.xz
  1663. cd util-linux-2.32.1
  1664. mkdir -pv /var/lib/hwclock
  1665. rm -vf /usr/include/{blkid,libmount,uuid}
  1666. ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
  1667.             --docdir=/usr/share/doc/util-linux-2.32.1 \
  1668.             --disable-chfn-chsh  \
  1669.             --disable-login      \
  1670.             --disable-nologin    \
  1671.             --disable-su         \
  1672.             --disable-setpriv    \
  1673.             --disable-runuser    \
  1674.             --disable-pylibmount \
  1675.             --disable-static     \
  1676.             --without-python     \
  1677.             --without-systemd    \
  1678.             --without-systemdsystemunitdir
  1679. make
  1680. make install
  1681. cd .. && rm -rf util-linux-2.32.1
  1682.  
  1683. # Man-db-2.8.4
  1684. tar -xf man-db-2.8.4.tar.xz
  1685. cd man-db-2.8.4
  1686. ./configure --prefix=/usr                        \
  1687.             --docdir=/usr/share/doc/man-db-2.8.4 \
  1688.             --sysconfdir=/etc                    \
  1689.             --disable-setuid                     \
  1690.             --enable-cache-owner=bin             \
  1691.             --with-browser=/usr/bin/lynx         \
  1692.             --with-vgrind=/usr/bin/vgrind        \
  1693.             --with-grap=/usr/bin/grap            \
  1694.             --with-systemdtmpfilesdir=
  1695. make
  1696. make check
  1697. make install
  1698. cd .. && rm -rf man-db-2.8.4
  1699.  
  1700. # Tar-1.30
  1701. tar -xf tar-1.30.tar.xz
  1702. cd tar-1.30
  1703. FORCE_UNSAFE_CONFIGURE=1  \
  1704. ./configure --prefix=/usr \
  1705.             --bindir=/bin
  1706. make
  1707. make check
  1708. make install
  1709. make -C doc install-html docdir=/usr/share/doc/tar-1.30
  1710. cd .. && rm -rf tar-1.30
  1711.  
  1712. # texinfo-6.5.tar.xz
  1713. tar -xf texinfo-6.5.tar.xz
  1714. cd texinfo-6.5
  1715. sed -i '5481,5485 s/({/(\\{/' tp/Texinfo/Parser.pm
  1716. ./configure --prefix=/usr --disable-static
  1717. make
  1718. make check
  1719. make install
  1720. make TEXMF=/usr/share/texmf install-tex
  1721. pushd /usr/share/info
  1722. rm -v dir
  1723. for f in *
  1724.   do install-info $f dir 2>/dev/null
  1725. done
  1726. popd
  1727. cd .. && rm -rf texinfo-6.5
  1728.  
  1729. # Vim-8.1
  1730. tar -xf vim-8.1.tar.bz2
  1731. cd vim81
  1732. echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
  1733. ./configure --prefix=/usr
  1734. make
  1735. LANG=en_US.UTF-8 make -j1 test &> vim-test.log
  1736. make install
  1737. ln -sv vim /usr/bin/vi
  1738. for L in  /usr/share/man/{,*/}man1/vim.1; do
  1739.     ln -sv vim.1 $(dirname $L)/vi.1
  1740. done
  1741. ln -sv ../vim/vim81/doc /usr/share/doc/vim-8.1
  1742. cat > /etc/vimrc << "EOF"
  1743. " Begin /etc/vimrc
  1744.  
  1745. " Ensure defaults are set before customizing settings, not after
  1746. source $VIMRUNTIME/defaults.vim
  1747. let skip_defaults_vim=1
  1748.  
  1749. set nocompatible
  1750. set backspace=2
  1751. set mouse=
  1752. syntax on
  1753. if (&term == "xterm") || (&term == "putty")
  1754.   set background=dark
  1755. endif
  1756.  
  1757. " End /etc/vimrc
  1758. EOF
  1759. cd .. && rm -rf vim81
  1760.  
  1761. #####################################################################
  1762. # FINAL ADJUST ######################################################
  1763. #####################################################################
  1764.  
  1765. save_lib="ld-2.28.so libc-2.28.so libpthread-2.28.so libthread_db-1.0.so"
  1766.  
  1767. cd /lib
  1768.  
  1769. for LIB in $save_lib; do
  1770.    objcopy --only-keep-debug $LIB $LIB.dbg
  1771.    strip --strip-unneeded $LIB
  1772.    objcopy --add-gnu-debuglink=$LIB.dbg $LIB
  1773. done    
  1774.  
  1775. save_usrlib="libquadmath.so.0.0.0 libstdc++.so.6.0.25
  1776.              libitm.so.1.0.0 libatomic.so.1.2.0"
  1777.  
  1778. cd /usr/lib
  1779.  
  1780. for LIB in $save_usrlib; do
  1781.    objcopy --only-keep-debug $LIB $LIB.dbg
  1782.    strip --strip-unneeded $LIB
  1783.    objcopy --add-gnu-debuglink=$LIB.dbg $LIB
  1784. done
  1785.  
  1786. unset LIB save_lib save_usrlib
  1787. exec /tools/bin/bash
  1788. /tools/bin/find /usr/lib -type f -name \*.a \
  1789.   -exec /tools/bin/strip --strip-debug {} ';'
  1790. /tools/bin/find /lib /usr/lib -type f \( -name \*.so* -a ! -name \*dbg \) \
  1791.   -exec /tools/bin/strip --strip-unneeded {} ';'
  1792. /tools/bin/find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \
  1793.    -exec /tools/bin/strip --strip-all {} ';'
  1794.  
  1795. rm -rf /tmp/*
  1796.  
  1797. exit
  1798. chroot "$LFS" /usr/bin/env -i          \
  1799.    HOME=/root TERM="$TERM"            \
  1800.    PS1='(lfs chroot) \u:\w\$ '        \
  1801.    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
  1802.    /bin/bash --login
  1803.  
  1804. rm -f /usr/lib/lib{bfd,opcodes}.a
  1805. rm -f /usr/lib/libbz2.a
  1806. rm -f /usr/lib/lib{com_err,e2p,ext2fs,ss}.a
  1807. rm -f /usr/lib/libltdl.a
  1808. rm -f /usr/lib/libfl.a
  1809. rm -f /usr/lib/libz.a
  1810. find /usr/lib /usr/libexec -name \*.la -delete
  1811.  
  1812. tar -xf lfs-bootscripts-20180820.tar.bz2
  1813. cd lfs-bootscripts-20180820
  1814. make install
  1815. cd .. && rm -rf lfs-bootscripts-20180820
  1816.  
  1817. bash /lib/udev/init-net-rules.sh
  1818.  
  1819. cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF"
  1820.  
  1821. # Persistent symlinks for webcam and tuner
  1822. KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", \
  1823.    SYMLINK+="webcam"
  1824. KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", \
  1825.    SYMLINK+="tvtuner"
  1826.  
  1827. EOF
  1828.  
  1829. cat > ifconfig.eth0 << "EOF"
  1830. ONBOOT=yes
  1831. IFACE=eth0
  1832. SERVICE=ipv4-static
  1833. IP=192.168.1.2
  1834. GATEWAY=192.168.1.1
  1835. PREFIX=24
  1836. BROADCAST=192.168.1.255
  1837. EOF
  1838.  
  1839. cat > /etc/resolv.conf << "EOF"
  1840. # Begin /etc/resolv.conf
  1841.  
  1842. nameserver 192.168.1.1
  1843. nameserver 8.8.8.8
  1844.  
  1845. # End /etc/resolv.conf
  1846. EOF
  1847.  
  1848. cat > /etc/inittab << "EOF"
  1849. # Begin /etc/inittab
  1850.  
  1851. id:3:initdefault:
  1852.  
  1853. si::sysinit:/etc/rc.d/init.d/rc S
  1854.  
  1855. l0:0:wait:/etc/rc.d/init.d/rc 0
  1856. l1:S1:wait:/etc/rc.d/init.d/rc 1
  1857. l2:2:wait:/etc/rc.d/init.d/rc 2
  1858. l3:3:wait:/etc/rc.d/init.d/rc 3
  1859. l4:4:wait:/etc/rc.d/init.d/rc 4
  1860. l5:5:wait:/etc/rc.d/init.d/rc 5
  1861. l6:6:wait:/etc/rc.d/init.d/rc 6
  1862.  
  1863. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
  1864.  
  1865. su:S016:once:/sbin/sulogin
  1866.  
  1867. 1:2345:respawn:/sbin/agetty --noclear tty1 9600
  1868. 2:2345:respawn:/sbin/agetty tty2 9600
  1869. 3:2345:respawn:/sbin/agetty tty3 9600
  1870. 4:2345:respawn:/sbin/agetty tty4 9600
  1871. 5:2345:respawn:/sbin/agetty tty5 9600
  1872. 6:2345:respawn:/sbin/agetty tty6 9600
  1873.  
  1874. # End /etc/inittab
  1875. EOF
  1876.  
  1877. cat > /etc/sysconfig/clock << "EOF"
  1878. # Begin /etc/sysconfig/clock
  1879.  
  1880. UTC=1
  1881.  
  1882. # Set this to any options you might need to give to hwclock,
  1883. # such as machine hardware clock type for Alphas.
  1884. CLOCKPARAMS=
  1885.  
  1886. # End /etc/sysconfig/clock
  1887. EOF
  1888.  
  1889. cat > /etc/sysconfig/console << "EOF"
  1890. # Begin /etc/sysconfig/console
  1891.  
  1892. KEYMAP="it"
  1893. FONT="lat2a-16 -m 8859-2"
  1894.  
  1895. # End /etc/sysconfig/console
  1896. EOF
  1897.  
  1898. cat > /etc/profile << "EOF"
  1899. # Begin /etc/profile
  1900.  
  1901. export LANG=it_IT.utf8
  1902.  
  1903. # End /etc/profile
  1904. EOF
  1905.  
  1906. cat > /etc/inputrc << "EOF"
  1907. # Begin /etc/inputrc
  1908. # Modified by Chris Lynn <roryo@roryo.dynup.net>
  1909.  
  1910. # Allow the command prompt to wrap to the next line
  1911. set horizontal-scroll-mode Off
  1912.  
  1913. # Enable 8bit input
  1914. set meta-flag On
  1915. set input-meta On
  1916.  
  1917. # Turns off 8th bit stripping
  1918. set convert-meta Off
  1919.  
  1920. # Keep the 8th bit for display
  1921. set output-meta On
  1922.  
  1923. # none, visible or audible
  1924. set bell-style none
  1925.  
  1926. # All of the following map the escape sequence of the value
  1927. # contained in the 1st argument to the readline specific functions
  1928. "\eOd": backward-word
  1929. "\eOc": forward-word
  1930.  
  1931. # for linux console
  1932. "\e[1~": beginning-of-line
  1933. "\e[4~": end-of-line
  1934. "\e[5~": beginning-of-history
  1935. "\e[6~": end-of-history
  1936. "\e[3~": delete-char
  1937. "\e[2~": quoted-insert
  1938.  
  1939. # for xterm
  1940. "\eOH": beginning-of-line
  1941. "\eOF": end-of-line
  1942.  
  1943. # for Konsole
  1944. "\e[H": beginning-of-line
  1945. "\e[F": end-of-line
  1946.  
  1947. # End /etc/inputrc
  1948. EOF
  1949.  
  1950. cat > /etc/shells << "EOF"
  1951. # Begin /etc/shells
  1952.  
  1953. /bin/sh
  1954. /bin/bash
  1955.  
  1956. # End /etc/shells
  1957. EOF
  1958.  
  1959. cat > /etc/fstab << "EOF"
  1960. # Begin /etc/fstab
  1961.  
  1962. # file system  mount-point  type     options             dump  fsck
  1963. #                                                              order
  1964.  
  1965. /dev/sda1      /boot        ext2     defaults            1     1
  1966. /dev/sda2      /            ext4     defaults            2     1
  1967. /dev/sda3      swap         swap     pri=1               0     0
  1968. proc           /proc        proc     nosuid,noexec,nodev 0     0
  1969. sysfs          /sys         sysfs    nosuid,noexec,nodev 0     0
  1970. devpts         /dev/pts     devpts   gid=5,mode=620      0     0
  1971. tmpfs          /run         tmpfs    defaults            0     0
  1972. devtmpfs       /dev         devtmpfs mode=0755,nosuid    0     0
  1973.  
  1974. # End /etc/fstab
  1975. EOF
  1976.  
  1977. tar -xf linux-4.18.5.tar.xz
  1978. cd linux-4.18.5
  1979. make mrproper
  1980. make defconfig
  1981. make menuconfig
  1982. make
  1983. make modules_install
  1984. cp -iv arch/x86/boot/bzImage /boot/vmlinuz-4.18.5-lfs-8.3
  1985. cp -iv System.map /boot/System.map-4.18.5
  1986. cp -iv .config /boot/config-4.18.5
  1987. install -d /usr/share/doc/linux-4.18.5
  1988. cp -r Documentation/* /usr/share/doc/linux-4.18.5
  1989. install -v -m755 -d /etc/modprobe.d
  1990. cat > /etc/modprobe.d/usb.conf << "EOF"
  1991. # Begin /etc/modprobe.d/usb.conf
  1992.  
  1993. install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
  1994. install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true
  1995.  
  1996. # End /etc/modprobe.d/usb.conf
  1997. EOF
  1998.  
  1999. cd .. && rm -rf linux-4.18.5
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement