From 893567d6e53806076789d0f027299e2ae710ba0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Mendes?= Date: Wed, 7 Sep 2022 12:55:14 -0300 Subject: [PATCH] Updating to LFS 11.2 --- README.md | 46 ++--- img/uname.png | Bin 16739 -> 19413 bytes img/vim-smile.png | Bin 30351 -> 30351 bytes lfs-chroot.sh | 62 +++---- lfs-cross.sh | 155 ++++++++-------- lfs-final.sh | 47 +++-- lfs-system.sh | 439 +++++++++++++++++++++++----------------------- 7 files changed, 364 insertions(+), 385 deletions(-) diff --git a/README.md b/README.md index 0e7fcb7..25df303 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # lfs-scripts :penguin: -Instructions and scripts to build Linux From Scratch (LFS), version 11.0, as simply as possible (I know, not that simple, but anyway). +Instructions and scripts to build Linux From Scratch (LFS), version 11.2, as simply as possible (I know, not that simple, but anyway). ![Output of uname -a](https://github.com/luisgbm/lfs-scripts/blob/master/img/uname.png?raw=true) @@ -13,7 +13,7 @@ This build will be accomplished inside a virtual machine. I'll be using Oracle V My VM has two virtual hard disks: one for the host (Arch Linux itself) and another for building LFS. You could also use a single hard disk with two partitions, that's also up to personal taste. I've decided to use two separate hard disks so I can completely isolate LFS from the host after the build. At the end, you'll be able to create a separate VM and boot from it directly. -The packages needed to build LFS were downloaded from [here](http://ftp.osuosl.org/pub/lfs/lfs-packages/lfs-packages-11.0.tar) (443 MB), other mirrors are available [here](http://linuxfromscratch.org/lfs/download.html) (look for the "LFS HTTP/FTP Sites" section at the bottom, the file you need is lfs-packages-11.0.tar). +The packages needed to build LFS were downloaded from [here](http://ftp.osuosl.org/pub/lfs/lfs-packages/lfs-packages-11.2.tar) (474 MB), other mirrors are available [here](http://linuxfromscratch.org/lfs/download.html) (look for the "LFS HTTP/FTP Sites" section at the bottom, the file you need is lfs-packages-11.0.tar). # Build instructions @@ -51,9 +51,9 @@ Download all the packages and extract them to $LFS/sources. ``` cd $LFS -cp //lfs-packages-11.0.tar . -tar xf lfs-packages-11.0.tar -mv 11.0 sources +cp //lfs-packages-11.2.tar . +tar xf lfs-packages-11.2.tar +mv 11.2-rc1 sources chmod -v a+wt $LFS/sources ``` @@ -154,8 +154,6 @@ Prepare virtual kernel file systems: ``` 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 mount -v --bind /dev $LFS/dev mount -v --bind /dev/pts $LFS/dev/pts mount -vt proc proc $LFS/proc @@ -174,7 +172,7 @@ chroot "$LFS" /usr/bin/env -i \ TERM="$TERM" \ PS1='(lfs chroot) \u:\w\$ ' \ PATH=/usr/bin:/usr/sbin \ - /bin/bash --login +h + /bin/bash --login ``` Create essential directories, files and symlinks: @@ -191,13 +189,10 @@ mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo} mkdir -pv /usr/{,local/}share/man/man{1..8} mkdir -pv /var/{cache,local,log,mail,opt,spool} mkdir -pv /var/lib/{color,misc,locate} - ln -sfv /run /var/run ln -sfv /run/lock /var/lock - install -dv -m 0750 /root install -dv -m 1777 /tmp /var/tmp - ln -sv /proc/self/mounts /etc/mtab cat > /etc/hosts << EOF @@ -207,11 +202,11 @@ EOF 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:/run/dbus:/bin/false -uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/bin/false -nobody:x:99:99:Unprivileged User:/dev/null:/bin/false +bin:x:1:1:bin:/dev/null:/usr/bin/false +daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false +messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false +uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false +nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false EOF cat > /etc/group << "EOF" @@ -238,16 +233,19 @@ mail:x:34: kvm:x:61: uuidd:x:80: wheel:x:97: -nogroup:x:99: users:x:999: +nogroup:x:65534: EOF +echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd +echo "tester:x:101:" >> /etc/group +install -o tester -d /home/tester 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 -exec /bin/bash --login +h +exec /usr/bin/bash --login ``` Run the lfs-chroot.sh script, which will build additional temporary tools: @@ -276,18 +274,6 @@ You must now set a password for the root user (you will have to type a password) passwd root ``` -Logout from the chroot environment and re-enter it with updated configuration: - -``` -logout - -chroot "$LFS" /usr/bin/env -i \ - HOME=/root TERM="$TERM" \ - PS1='(lfs chroot) \u:\w\$ ' \ - PATH=/usr/bin:/usr/sbin \ - /bin/bash --login -``` - Run the final script to configure the rest of the system: ``` diff --git a/img/uname.png b/img/uname.png index bd967edadbfca36c33624a29e22a553e2e989a40..e2f93840e06378b38a5bc7886598ea923321bdd1 100644 GIT binary patch literal 19413 zcmeFZXH=8h*Ds1&(TxZeHX_ml1VoxrO=t=VNR?hf5h2u2LvK+L5K(%sQX?ehoFb*#vN_9Z%ie!>88J=Jt-k&bh#I;bk!*yd$iX-ge9t$o;3gy-kwN z{f_}QsbK3|V{Do{U{4jjT4iit5E!hgs#-dSqkN5qOQ>*ys0esbRpL-SKu%gqW%K0R zC#Lz%vvV4k6TVKPnSKl(ByyBQ3#gt}vvhj#&#<6EiPumjR7(XIJZx}K?HYVcb zzk_yyNV9fKa#1BUt z@4AO>G!mTmR>yW$tC2vYG7vZ|9wBH0%GG{*O_02d%L+zQX8Z|u!2qdY#;i}Ej3yl! zhpuVyJVme6*x0kKAx5wH0sdvvVQYw;R$L_3J^l~*liy2?IM8;oz(ctThRN8G7n3oX zp!Wh{D}sN?Glnm{=eDj#xws5r0h8}E&v|eqN+3H%3obB*o)@`*hX$R#y-nfmbbR6? z6oCsT&L{p^^OBYv`6V;!P56foI^Jz0(cn9OzHYWl3Is4SGaJsbGnz~!gFHopX9-*~ ziS%OvIunJG4fbu3fo*_B$Hu&9tJL@IxFUxTV;dWr8OzF{JY`VS?-`iC!zsp8uB6lF z*mWTNsUq9Uh2dDf^lAFhsyb#_jlx}t^zr4Fx3jRgZD24oIyrgUsW&ktJc}sPn^@#q zF_aMe*w|J;i!UqDsg9K1i|`e4Xed7 zuyZP$RF<9%<)8tc@Pq!XD70-NFF;f{_F@*}j`SXMXf7=lrl4~`LKmZ`p0f0hGJRt( zvUuw<$RRb(M?8%*<9d_dh{$*5-}QRD(bWCJH=GjFS^beD%xp56`n`9t2u(iSkHMr# zNEeBFd2Q^#U5m1Cu+6Q7_$`>FS||a+9XJyx8{n*8Mot$Wnp~G05=-niEut5n)U`cq zBgX<~fa6_&9u`L)iX5o9=&AOxZ`InsJHO*>*8iIG~bUh%~d-faxp>4y=Xh*=iaV`1gJ2~ z#AB(b8r~c*|E?-yrv>(zl)08i1kvlf5}IfeX;yK%);qtS^$(b6Hp%fEuUDg(QM+BO zCaYb%f42=9fb|x;TKDz*#+AkZ8;N=l%N$9ou%cHo6}lE`T^jo$0Gaj7w6F8LDbfV= zMbBmx5hL$Abi>1RsXmCn=}(|BBiONNj+|?ve)gTud{;Jqd~`wuu33cs{(NpmkV}BA zx0+Cs64Ok~mDkbE5e4~6+`dgCP!DFey7V_aXAf&TP6mM1G&twZU{PU4mL=8NexmNd zc#XA)rv*~}=TVDfN0VvUQL=ciJ^=hBK(j=_1}Ng=R>(Wqq8+5fp4P%LB0yPj5WCI( zp?dNrrQBr6a+i8z%r7uYDgzyLFobnFYPczie^1%kc~;EAqUW>4ZE4{kwN#U;;kwzi zt4Zx&4(=bhO8#j_8VfXR+h%c@$eUWIDBsG=D_G2YJVTanh8o7$0tEY0*Q%UN*MY8f zoxp+(X)+S_DhyTAppgYi>AYiOlX8zeFt4mheu7qCEV%P{;+kCX5wer&wW_|~phAr( zNC!h_PVXM_N_5;VbuzwQoo2w}sX30+Ra8ei4Ako7pTh#4ObH>nza)ijWM-hM8=u&m z7mMvuFOe1-^&4k>pRs4+2i`eILd>Z_RJ-(oIEfLP`N+N$yQP;jD{Dn8CsT;$j~2gD zvd>CSJO{Yv_2tJ2ll87iavNWDi*73UFX)KfT!Td$W%3L%A%teFtV~TM@|wMa2R<6e z3`CY14J^}tvLBtmWzul!@@8uElxK{`i;x~I(z?e zZR#jSEM(62IdwR+LoH*mUoD)TeM5219C$A>J-;%NlxK zRb8*FggR&&cUkcp?ga+5ZHuR8I)CIInoul9)EV_(g_YFK2pOq%jk4KJUZ=Oz)aafZ zZ1*-E!i|*dHCN|%%y7?l@e&1Mcd_a4CY`ZN_`>!nmU?s4Y=`CT?J)LmLsN{<&B0bDxZhmHW*hygQ>k|FJ~{YYTOCNqMR z-(541op1)$Q%cX^rh?$zOMQjYPj2gVY*>4|Y*m)-%L#H=Z1r+5xy@6!8`nx4;2glUat|F(dj`jle+o*Y& zlnq>jL(z&_@542O-3Ujj-m-L%G*Gd1D|}<8go{T{xK{4Do+UD2>u+W*E?Bafz$qK+ z*p-&_K&Ad?9P0zMos(yl@$pOuDV+WDpq-DguBHu~z}^c9?#YRmzJ9Q*t3I48NzxyK zgp3A{7O_f|L${zBNsnc*Eo9D$Jgt9$ZzZ*72HZD{1sJ14M*VVXtO<<4;W z^kab)Z$}MWByjpBKn!wm$FdFk?zLgH_0!IhQMmNIsm7jHAJ|ZU=&`M-j2^BJZv*C| zQw_IXm71_5N#J7{smQO@g$3)!Wb)nt^Kr;h_5!IkM=vgFV$kgNKEYVY7cZgCfRoTS%j zWO2_(I%jq(;S|%S7~E`3_iUrn9qX8t;%&p$pB2?*Ezi<*Fpj3HS7z?D>4%L=^Im@s zg&N$Y4~<;%av2!g}xq}E}(FY^vs(SWSRbe33HU#_dNI1{a~F}dqlfC$9PDs zQo%7n+1MoVRI#1Z6{R<#-dFU;zG{G|9EfTl!mgP=Z_(LEaUV$-fY7`4q=_%7m8Y1p z3ZDwBJQW~)e#Th>y(#?_+gUkRewzZfGDHl6Ycrw)eqLa@Cy+YxFhuQTgZb;tw~GTr zsrK@{9(xi*MQUb4YSasbS_nblmV7$hpL9bz@MqQ&AHqoEitwJvNs;kUQ9wZ@%)B>O zjq}EEU}+Gh;zf8(7WtpQ4jwZb!p6Fi2y5tvMWeZePo4;Y!L&=(A`+z$c4|-Zlet>% zjUc7H<$s9PM5hi zeIj{$bc{Jm3$T;C((6DM9OgOiCEGCLZ?ZDxpf+%n^^C4nLK$wxK0c_2_9EKtx(F^| z@bG}ic_yYTcB+U5RWPGeJE=kv_|7o=uHM!6s?mI92#tXH1x#AI)6Qyel!UAOtb`Ps z!YJ|k4Ze+`(XkN^S!iBAR#aXY7pr)xt=lVR{F2v~dimzp^7464z5WWiP0M@NP!?{M z*#tbdM6#T9_B?*D1#)QKZP#nUU-w!K(s;pQe$Xm7S_wm&m4$@$e8TVf6@8lXBGb-W zw>`Z<&}olqF>?K#>8@MmEpPv6CozrK!oA`>Ozv<;Zi)@@+AD_fV)69_7R zyIxCav%06mqSaA+=aUD(aoR^Ce*#NmoLGenBm@Esf0j{Y1mmo4InRY#&CEt33=J#UQ;^!RBX|0aRIYF85VYpZ1 zp(+vJk_t*%yK3iKA6kAe9qDx|#peWN9(7FZ-uZ>zNQuO4WqcEcmysdSESRAygmG6k z9AZOg$lG1+MVs;zF23vURw-YqH=--~OcA-7i`9h(=ZfTDEdJtBtH|*N>ns@MBXm+o z`TDsihBL zXKJ43UjZtjcZZ0_yrf!h_tn13IUxlR8+o(7OMe_eX~h)HKVItdGu3L0hyoMS-+%r; zSJ3#=`856#8{=Xn^pF9pm@@xsNaX*(&;a7YheL;hSs0ok+Zydzm<*PIq!VNIAB0iMVVQ=RkUH^^qrVIbm_(g&A{2l8nU47B0rFig;hGx#-24yq=?7)KE^ zzWTU76TH*I;i-{m>~b%YiRnUzUWKxDB};!Js43=5N*LgY-5QO0RX(sST`$AzT=3v$ z54i^0=?m}3E>+XVpHyX=8+0uY{T6Q->^?2!ADno6dTJr$^J1|>&RMh}TVB(F2bM#4CaKVo?3P7W+bgy|j`cGHrEyd$~)kc2*j8I3|Z0r`S-RCZ^-Ai_y%_ zM^Ot`x<*CC_B*5z^O*9eJ>)`8V`MY@fcCo$cC*NyZJH*YY1OSbVM1tE?)mH`qZ3H7 zwO(OorRb_m07(s*ppUT`8D^zZ#btWQfw>&Bj zww#tDeh9}vD;{@x&t?Ks#^-n1uz4BY_l3N~_WRao&^qlGZzUkfUM@K_>1!hgXyuJI zMOPl93f0Wzwr6{MT=xzd9z{*C{+vG+JnFi$=5(~B?R&i2E5P)e#*?1uMrE?KP_^6K z?)qYHCIrd^Z>_DpdX}TuX;#&=PdiV08kmu8xHYBJK)YX{kM5=DQu%WvK+ZWxkzwm) zDG^j3XgPdIH(uG$9AP7cx^vgtI1~Y~E;z2Ho8d3+(nwR~rS_}(TDxujuO2rV8b(&U zEZhjRX$-vFCGvf&q6Uo~-JnlOVVoN!^=rcWwhg|L*gy6`N?ZGUn`YOV<&)p&m6@%U zVQ2oXruxuEeLw@tgX|lp3s!9nLpMn=U#oyQYn?_{4T6`rAvqoD$Iz2gOs~J(ez-K$bbB3OVh@s1wJSCF`-hFWG}Ptb-PN!4 zJ{i#H1n@pD?9ND_VzF}y(!qTjlCyy^DTi|H5327?wwlaTz`{!G;;rREYZ;#fGdTy`E9)nX0|#6Ettee&UzqbDt>s6e zI@4SUK8c4_nAoz=U@|_C38q~f06$YBocm;!V;{A7w)^<>mHkB$@?Lu~^73YhGL7kZ0`|s? zl~vScwX*~FYoGo`bCZ0Y3wsjYDXoOqigVUZYH!0~kJjl6{E*XVSOe>Quf0?CmeWWY zKB!Tr(a@W~?REb9Z%dnJu{U29oSissYa5o9*ZI8OJ893wUx{O(%;)H@&Z|&5m-bYl z<=z>wgb%Z7;Hfz(v(o}4rz2I*&9=vhIgwKe*hVZS^E^&9M*CeSkRQp-Mhqz2Y*t{i@ z=fx_Rl6xxTEK+y`-CA|~B=!q5LSS%j3fxGi{HzO9#6tvLyR}#F>{q|XwOpk{oNdXkrZ9*k%45@5Gu>Wc8h_b! zX6J+lEa@b|W6k`dBsA;GDApT|B+cU+w+h;IbeqD~3jeO`^p+3b5)$8P{fMxsn3b~( zqw*$&lXL5-6YH0FJ950O3kF9vSzdIp7-L!BdU37$Ypt&z3yrnr`vaCrZjHR_=2N2< zl1F2N(hjs&=Pxqdr+@vw;*Foa8WnMLG%oOK;6eW|6xN+@OBjD-^4P-lhhiusQ=mp25=wKVEmnZw zX7iyq?95wIY(n*9SM@jpxm8n`D!EAO;R~|XumT& z?0xbLi*DPN|B@1}xpDmQ^#B?sS1AXHLWZC^v5Xy0FLumWtz6X2IZI-Vhw-FR84%~W zUibSrH?|DgQ$X?qU`tH^1b#qn&KIRnOh$^Rj0m!?c;Bsu6iqX$r@P-M4&g8HA@e7D zhw!bWTbMTk>ge-b*vvT~#bN5&hp>*L&Yu(Mh(HEsuen(m{mZFONeITyOymC#2ucIC zuRJr4IlFV$_4H@@>jvjFUT`i=cke@!epb$^)hj8Pv_alw2f6<+mG+_26?2Nms3kfv6{`fx?A{%DITgShI$RKS3`eEUnMn(Pn^1Tt1bU& z|HG=iU7s`&K%(Xj@aUw?&O^9C^jD9tmKDdo6!-P|`%I(_4Otx-h@L|d_0;olop zWbk6!D9`J2pb2g7qxG^`$v8*8;SoIE#3`vs+G)2T>FTJ~jaaMhnyx1IyDO))Uj}6LW}CSV0GxI* zKYp0wawo>iQWUbfT`^=<<#f3MjbU{H!2@59Glz)usjEx`e0F4z;3iL@m*cr1P!l@e zs4daha1}ysnhKhrQ8U(kGTv?MEFBOE-i67?8z(+WcbCnm!a`(l)iUeTkDDav4TW>UB6d=}t9}`|+ho_||~DamZBeyS7UPP5Ytg zVX}6a*yW+MEXZMu5PsvG&_EP6R(}=6K2oXpjR!7K0%OSa-+4HS^4N~t<)*hc=qO6P z9e)AN;p|HoUwtDlGEqPA1+35+=4$FoNsDijriC5XGk$hF&;UrP;9mFIlJS`!jf;WS zR*=gP-ogLSs6ROu*$$l7?j5gPl-7J?EkLhx#yfvOuak$+c2UOTBWU%GlGGsvF$-_~ z;cNwu4k?qvHp^@(%P<{yg3%TAP`#bDx3{#7)UH#b%i9|}V#r4G23hfDdm%`<38FqY z+&ag*o0$@jIQO{Z>@TLHHGK;-%uWS37!=tNdh+OKZK$FS4EDH@^!fg_PjFQvFPI*J zFUylIxV87tT1yfBSgAnCApQ7kE{x9vVbm5lM*b{OX?tsG<8d>#vI)bJiP+fQ%5z>z z_lP{J(bVksp83Gw$1E|*uo;PeY@P(OMY)#@lhQKucY`BUh!OUxId4pi6f+lRiFL;( z-5n(zKN%7qFQlsq98_1qgT;}xPYa@mZM#{PFws4`IzgKwrCT6n2~!$}*u<$$v%Tdr z?UxRdX1)py0JQ=9Tx)kRv1U`X^Bw-;+dhP+UPaAs>!1oP(!_?-Kc5{3-=0uwy*93z zF&A{Cmu)tW`nuGi)2POf#3jHAQkZ9t?WUbNYLQ%Q|oAx93M@GN`H9odN4)xsunYK`g&8QRt8Yqi)! z|FilU{c#L>+8NeupFaOIyaub}6DhL~?FPZYQ%5DgU5Hu&gr+I{TuNvn-@^qVOoH53gtE}@5u^T&# zr=kd*7=SrImi7kmsTi+r8_mDFSnE{BkJhhXsf~k$)D_M(L@DB9SwPFqfn_$CFskZj z#~i~_lc6;hY-x#pnqhk21!-;Oti>X&-k33tm<^Oljy{KZ#ndmZCba%QRtzH-Fad_v!qL5GF33|MKQZFQW|qfDd26|MvBdU%73-Gi&PsjLzQ{TK|nq zcv$~n3cXH^1~iZMZ$C}qJ-$K+kS>4w&?bh>v_JL_jN!_)p8=RKTfy#(qp3)*S3}y* z8K&^l*M*MV`2BP4|K`M{6_+=@X~5h>?=xo1J@Y4O1XujAlLe;QF6UI0`xb4NU-jB1;(e^gMx6@K1l;!~a55m;ZD! z>Am_>HSoz~0S-MBP+x|r%-ruAN13R~%HYGg`9~N#Ja5kIlNyQUzFyxciIB09P1yvD z|KH=IB*d9$XR8EnQT&Iw0HQo_n%?|Qe_2n&y1;R2p?_(Iv7avu{Qb&C%$K^k5Az)* zFY$+(ZdD`|pvsIqX(fUtd#NMPte^IW7UiGa0db0@&68I zo{Lfbe=d^+fjV)x!DVI7iS$F$d|nhz)B>N!uwcRB*CRDb2ZU1i>g8y^*r-xJS#IJ^2>N z!kB)8&*pzIRx=EIEZ%wIlAzMrZjkE)xRTI%+HO1K7uvDg$+(Vyw zcX#)ciV9J8AD=8N*3i`QnIHfFkah06B!2sLs$+L70Es^uhc@oG=q3KM{B2RDmRpEm zDB<7hOxRh(h^VX2Msm(f)VqRD4!8aB21>1(>y3?#{nf~>+hT_K$&6~dfiX*mf|0fl z*oTj+Wuys&C5 zvYGq}P7AQLpTSEXX_BV}fBy2~^WQ>rFL*(Otz_fwZUQOZ^13s=(mQ?;Oys|=M1iCS^lADC zh^7t1wrO7e1J{#B)m7}o2*f*vT1kcxeL(>Mn0O~C|6gwP^5f0Q-LY4f27Wy5cAh@e z;HbMIaO~wZvol&Hyz^opsMUMvnyb}qJ3BiQ5NPeya73dR@Eu&&5tVC2Wz~;MW@p&foM-w>vz%G1H|7V8x2*AMB{*|51)Byqdp>|Hg zVdPFXfoEE9B*Fy}y>3G(>7Y}$g5!RS47YpF0J)WeYHULnGf@7Ey4;L9;K2fAOMfVI zrm|!tGHmYC3mrk5thBCqU2&^sST*pw5Ph3c zn(8{b#JTv$zv-jqj%%h~fA%hyPTWCZilBB-9~E|&z?b@auZTAtv(;i7do>%X)PGdA zj3Je}mIuwd934_E_iP`!z21LWPv3H$1RDHCdSs|WJkteT3gCtUf?&~4?0mUSiPnh# zf%c)hE2+Y9xn(4s&XceC8kM}DVb?~Qi*3tqC_=n7F_9e*b<)D&rttcot5ib zuRl$!ysL|d5M*)f;^mNKU1*C*Tj*T_Ia5B1x|%sTmGY{FneA`Q%J3+8r{m#9%JeaY zu-L&(;fCcGCJWP~W_AX)gQ`czb3*67Gj#@S*l;U&qz~pP;U;8)r~TsaZ_w`e3Z1p} zkpvd6{=_TqGdA0omRt_ZU-GB<6kZdDHMYNZc%=KS!ZxX5$&g#oE8o_ycMLV}Tzhg< z&f!9J8Xa-Lmdcl7^azI$8H~K?i7Tz4SBOl_{n+q4M$9vj!DbZAOe@0 zpyT<%v)0DK>h@E&TAgAsL(Pdxw>86Qsk>A4A=F(u6^*EG*LI+$tW$g?Ix3>xhd^_@I33y z*@%_p9NF4?4n$?N8I7X+O=ojkbOOCq6OecG%q9P9gINQ!+3EbV%Rjs0+BHq_SD&y= zU0;&d317Qb_O8UvW!ok;>6#GKJNKsg?1*6AzLKt&T>;05{0Gmq;&FH&$&+mzsNeq2 z%CYAs!$(<2!RmV9-l`v3E8oVwC;VCr_6yuHvK*qUzrE$2ubJmUA3g$v{C`yZ0@Wz*U8KnW$??LOPej-ZYc z7ie@tlStRzcEH;1#H|WxvVik*MuCIQ<7hX%@aA=*y~M?ACRI<37Yk?5AjO8pkiou) z(2$>Qm8w5(!96DnLh+IJJ-OJu0>^zbt30)mv89476%`dmR=aLG!{6+Y>FI145=a3V z^{MIGJnR9whTc&F;MIH7NqbN*KHk&H2lw%I8#L99=}co#PeD{2y{X!?>qsM7e(`PU zT5UU)1wHw!mOgf=;z8KmoE&oa59%mA^s93=*B-go25FlR_#9GOR5{_+Ru9hZ>5?%h9%AZ@wy z?LKBMVLKqbiCw9dUQ17kdTO%3sx~$}Dy1Iv@qvGDQZfKKFvx7z)sSvh33YA~q~l z7iVF+0V@Iacj=mE8Cj3#>GBc$YLmCg+RK=?e$1Q03vUv37PT)_8&$u24+T0+YouF(w32HCz1W0>{n!zRFFU^FX z+M*v`ouInZn{5GaYuitV!pFVSI;)#>-?1Rfm6HZWvSu6^l`pv*u8Us{?j9`{75Xn5 z8d2`Ue9Q|L3~pz(5=dSVOB#YQ+WN7XE@ar!WZ%g_4P=JO>3)63nj88R*x$dE+@E3U z-1pmY)V)F`$4XMUD*T{v{GfdNvc*0+RDWEhxe{JuN48lBumS3Gx8R?}sMz?&o%o_D z{=;nRJ1l>g(;(54(rw_cS*~_@-nM!pWise!9m$RnE4p{f^FX0ZlVhOwLQ05J9Qi@f zo1os|t8OwiE++E39uhTI(X(4_nWr1=ia!_o_FNL@F}!T2Ge%ObIg|miF%1 z2JPy^Y^GTK;77dJYd5zsF^?XDd){uF>Enrt6Rpd6CMHc5#E-vStdINd~tB; zNH7b>DdU$p*-}gcJ1LLW!X>Op2dzrPwn^vEu5d8_W$Q!i*PIm^8BKE^n;l6>3H*v=?>Y_bMXMQy0{hP*Ta|l#3o(r zBy;{<^5)=vx z&Ph&@lee7IzcvnR4DVSTt1c*sOz2z;i8^SX?Jraf4;yH3$2;qGvxh$0r=>5}hr-em z+km9?JA#w{AQY{di_We%)Tm1+bSF5En~RKYuxgfoTNc4% zvOsP4-5wvxtJ`oQxNh>5Q$14tCS07)rERXwl5aB=TdTsY5YIyVwu1+HevbNA z*lTgVxuCS{ujdKx@N3XK|K@yoQ!!}gyePmZ?lHW!RWGU@VO?u|N9);9tLieSxpjqG z?xRlAmWuaZyXu&gyE6TpSw>JID|BfvIb7gvfBbQg9#p$tE)tYweSjs-#vbBkpOR!9 zRWEN}5#d*FUVrLmQ_}cFtu_k@sfBK`4Wo`E+MV5vlI?|NYr_rsxmV7G)r6SoE~$z# z4ip5Sp;12Gi^Ao=JS+KKYxZQ#Jkqp zoi;fXYtRIRHiFHUS+BAUPtIEV?BX-+sZ4Bnh6%)#s}VL2H9^xXEC`pGZe8E}{u9wb z5&m#^VhLm=w=i zsWd}!%7%l36tl4YN?T~^Nr+~&O8ep~@(0x!qsgzD(UHIJ2Dc#tD94}<>gMwI8Sb=N zcDC+#=p(wJ<*v&^DdL)Q{`1ZRRRXR#n zy+3%TCH~UjHdbsfYA$(<*X|?984U~zV!-1y=i_q@EQ33yj<#xY7ENr9JJut~pwaKd zn|qB?vMRr?xkk>qx9ku6jD~{=O}F9sz+$Dy)sII1L`s$`878R34(A!oo_nFmUG)na zZcwv-#^wd3;p#b?*F_4BKlp;<%WTvffY+PW0zt9gY9(34sQKK3s`OSapPZu}Mzrm+iaFuQHa~^Bw z^V!_8Gra&QfA7f29RxML(M`aK?`l9vD~Me&;1PqXtE=*k#@+A51;_T?NUt$IK}`dL z6O&0zKF`M)DzGZZpfX#@u#2LL=!mK@aKROB1i=12>$Z6D)5NU@Gcztz`B%Y85A)D? z&Q2VzRU9AAhcXJVwsFl8-w+XA`2L04|6~JS?vB+b$xpR`F;^#k|H8Oq;!i6Z+~1@M z-*t#w_sCHz@B8khVLYNU0g41V9whOEcH-yFG4k%@L$09VEd$p`FwSU>DuZS8*HsMl3_=+YT+DSMId*~6}UH49-5 z-7xy|#QpO9xE)m_U-A}glLZd3YMrtDCwqP?vwlhFGf(q69W>&pCibvBumbg~J*ofr z;;fetB$=hXC`7;Kl^wGDuzNH63`fAhbiuWQg*Y(PX;$H9lLmjNA)IW}j-F{IQgH)Y z;|?+hMDFqF0!UPS4eZKMNXlawLKI1#Ldec}@)w4TD5o}jW-eT1)UZc?L}vgXKq-66i|99(@47=) zS2^rEN~Cbh_F^_mZPRTHhA^uO;|OHIopn!R1JK|ua29KHbpVULchhrgQbekEf46dq z+{s#I)sUXQg0qBUS*WpaZsEo-;mQyWx>x_tG0hO|V>maLRxLwU;-q&f)WYri(@ z{)TX6qjQ`?6jF3=MiuB^a0MrGnOo7m%q_pcAV*SpIVodLPXAS#BoY3$EAsVp&{4w9 zEHPM%w%n_?*pwH3z~N9|YjOR0ds(%Cv(8W7i57_w!ja5Yj-Zdj9s5LnpG>?I^U}hw z^gTa7P?a7#?@-3em%B<6o3%>46)ipz4VGF4ZPr=_lz2(lejTrR=xBbLlxn#IQB=+) zG36r|b94OItMb|`C3}@J>OffkN?xo8_eoKqUe30s7UMF+vy9RXU`uLpku|Prkx9Aq znBO*`9N?oF(d>QiD~49vcA*ez+~QW+{>GgL2l&khy-mf>!C4*Ltuo&-{Bz8+F4xxx zs6G?gpSu&z$@F}o;cHM&wuZIwjHnpT?waog@p9HiT<#+5WLfYi%N$+i{9HYz3jBXLw}0nV`YB%cH*WH;+8MzHH@%Q+Y;OxT04WKE$lap> z7>!(1VBsAp8?PoS{b8bJD%Q!4@pSmQD+&VaD&-!B5wO==OCG{jL{-uyW{POkO!w{8 zZM_Rd4Ofdi;|)6u%{$aa{^;OLw`OK_t6$8eHx-X%T2{z$JvP*e7SWl6v{P;1r2zf$KBYH(lO-SW<*$Hane&qad<$t~TC2xO5+#%9q3 zn4{&Kz<(=Hl0k3*hjyQm^qaON6C?cxuv&;x`g26`$n+ z)^@E;e<$PLuG7L9Gb{#mQ({8~;vLePo|D*Y!C)}fz|s-#KEm@)v{dw>6Dv5xILc_& z2)W|)H3*_6?C*wLkNhPbN{)BH6gyBYy!&UQ=HJBK+an2+cL_|5>(i}r@^^xAymq}W zy)_94E7&5zi-OvUY$Nx^ure2j0eAy%#B#m@mq=VYxoql8UET1y44ccO0VDDRX7d?P zCF>R>BsssNNa3$c3lz3AUG=X_Ptb2JyNojqm)u=W38D>Ow|Jw4 zHt^R{lbmYma+m&ny&O?r2@mK2IS;&bMAgy=-Uyas;;4`5i3q&ziTBa4vh#61W{{N) z7k_o-ON#Kq{<*Ex5l#*Rx5T|d-1oGItq&qQ8$%9v&p`_*W^XU89q4SuiMu@bTHwF6 zx3(CJE2RH}P%qu$MDs?zYa znKIUv?B$q)t#(@aoSHGCu8pOnapoV32gBYLNb%;&OucqwWMSxmI*JwwsGkly2%8r{hgbF5H&!@<@Y4qC`zz z^QZCzcbWff-^Z*sRQYbyhJ3oRqvRp5Ew>!eea5Z1p+RAwYevDJ{NdcR4aXM-xLmj( zkq%P#hrcZXjOk}cXbw?+RiJGo=aIQf9b(aV<*kv0cCq4LmqR!EFJf?+u_`85QpvWQ z^(ON=CuXSn!#Jj}jMT2de-yr<$#-E(VqrwN0}d_ARfm378~#jK{r$5${u07L>=e_b zZ>^`064I3Y@BN!nt_yRdAa{t8z$b5}4?ao#^J~`^K4$SO?)~g`9xyM*8kioR+Gu## zzV~Y65+X9$bVfeAYQ;4>C~0^ZxOTDZOwLzjDKGm_Cki(=3{rHm$D3k}7t5}*U47-V z(N!!pLrl|XD7Vr~&2%o7Pg5Jw%_>DKeclv{I=+$aU60F?m&}XgwJ;oS=wITxh&gGB z+;OOtP94~B$A-aw#mquD)m^jseK>5I`8P7B=m-)2qhmcjRkYQ$4^7%to4l28$P%x` zJLm;Y&JT^Vaui2KYcTHovX7(o;X$Dufz20q6a+`kZ@x{?J6hna%>KTj0uU|ekGbpa zCeM}Ug1#x?isMh8tkMQAamL+5KatVLHEJ~HUg``!c-&e;Ro&^T7Vz^l(4oC<&%Pif zmC2*lpz}s7F*WpH`WC)64=f$aq5k`dB#Bt6ni&DQ!Z!N(M(4w>jWdvD`mVoU8?3DP zp&B(~ZRRLd<#D%UJytRx%d*)t^UX=;et6;?I@4&;0B(c{f%|lZ>BieAD?-smvZV!Y zMs6E4@@*rt=a-r**1tbf%#rtbn{FT}D=_}io?)BRiWPKL)07%umHVFTu?=RA zP8S~-crbDhZkYG|D%h|UTqe4Ulx`ck8W_58oNXIECMkAr?V^jDYX6&k!nl~2+i$kf zr|a~e=>d=6NhSE2-L_RlKw!xu!vc>Dd|VTjH(^E@+xJl&Eh@lgCv}l1YvE#Vks_NO z{-xrzt)RCf+-NR!*FR0fOgYqI7Mx0K5Yv0G2&3Z@Xp(nRu$wMup?3>_uQ5}0) ztKYHQj16IsTP|%s`9e_}>27IJsE2%47>;y2(nWW-M zgaTFW*mu{GA71D@`t2S3{`@$e5?InDZ!|h=;fwTc4mnWTFI0yVbTtAE;(28PW$QJHrmQMclAO_P6ocD@_30k$cjM_VW*D8@;)k9-l z+||bG6d50Q4U{fysU@ydCNO4`tcRc0q=+!65~p8PDx^jvw|?1?}LRMIQlJs z>@L2_P8Yck7Xe29+QS(x_0m6@Ci1F!t`fjyG8FcpJ|w+PdGuXOGwyc!Pxxv%mKSYE zwjX9Sfw|Yr2tHztyIF|8y-_fvT8`+nW?%Qts$SIe$E_#nMtL7Hm(Zy{ntN^rw-B?E z4>Nk4AEDi4&G#^Gv?HZHPZrD{hl}j?2XMtR4y(?2HahjP$D5m(_3W`7RvJa>5|6OK zZKaHQ_mC;0HRo}uw1pMgS$FsElc*U%ZiTW(n_d2|ZJ~>U z_EJsPzwK>@BGI(4A_tXxl~9x^+7M~?=wyw|2=5)7{Ehh%!>ZYy8q$DkqU{uqUL;O= zw;Q-%^GO}-Auc9Y(;9=V) z&x1ejk73~uZ9&SyDf&s#L|)Q}K-h?buGyqNy-&EaU7)PwU1(cUN1o>1mleCMuq<-3 zO;<$gi5{gB)i!xkP4A*@o|qEhB+eE_-7_rOzTu@GvF@o1-Z5`ZfVx7?8-yk1M_KS& z*^u&i!U|WJGwp}P>9d7|#HIl!iR&W4OZUX{Df1a84AsC&9|@lPVKYcVGZjv{11T z(hCP_z^n=ff63*ZOCZczN2AbN&>x;uYbwLWhBJ%^{r<|#=c2px_fNc8cO5b%>FK)?e3tt;Zj^=U?YFS69Xp%+i1Ry zVn+V72EE5KKSl;lRb%Qy$xDUdF9WV4W{uznZGJ1Inwe#8DI_v3V)1MJ&T&rA(aHh`>UY()Xg;U%d_a_)%+&Ao z5%{~6s5O}xpD^ANL7Ri3gJ>m8rc_#R$2=c))_9%RIaO&YqoYEDBTjyCp_8kL`|N&E zzQd!x1%-GBDr>eKuVUQx#Jrp)T~o(+OmxvJFX&}WUr&R zq-?%RT&wU$727p!0&Wrv`2^>`y$g)ncQ7~4s5hz?oKQ3VlfR=V|y0bCQ8A?X^DaaZqD`p5!wJH|LPMA z(Vo_}c6syIS=n4wFUQU_JN@m8&FL_uEMI0!$dh%ao|feYzb$u9`&;?ob)S^NKp*I! zs?%-q%;qCF$uXrYIp=f5~*kiWTzGOD{S9J~<)U8Dr=_ zOgizMcit&WmMls7^%wvE0Pt3z-?C_Ue)idCoj~mb=veGrh}J8ArC0je7ir$Sc}{;X z{e>UxyQKje0002E)M=~p8*jYfe0!t!GHCZNy>CNrpjEM0O#UA#(r^2Ads@K&0000< KMNUMnLSTZ8&4Anh literal 16739 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 T01lD;)A7#|K4pFK?WO+(m4z=l diff --git a/lfs-chroot.sh b/lfs-chroot.sh index c17e909..a715686 100644 --- a/lfs-chroot.sh +++ b/lfs-chroot.sh @@ -1,8 +1,8 @@ #!/bin/bash -# LFS 11.0 Build Script +# LFS 11.2 Build Script # Builds the additional temporary tools from chapter 7 # by Luís Mendes :) -# 10/Sep/2021 +# 06/Sep/2022 package_name="" package_ext="" @@ -11,14 +11,14 @@ begin() { package_name=$1 package_ext=$2 - echo "[lfs-scripts] Starting build of $package_name at $(date)" + echo "[lfs-chroot] Starting build of $package_name at $(date)" tar xf $package_name.$package_ext cd $package_name } finish() { - echo "[lfs-scripts] Finishing build of $package_name at $(date)" + echo "[lfs-chroot] Finishing build of $package_name at $(date)" cd /sources rm -rf $package_name @@ -26,54 +26,38 @@ finish() { cd /sources -# 7.7. Libstdc++ from GCC-11.2.0, Pass 2 -begin gcc-11.2.0 tar.xz -ln -s gthr-posix.h libgcc/gthr-default.h -mkdir -v build -cd build -../libstdc++-v3/configure \ - CXXFLAGS="-g -O2 -D_GNU_SOURCE" \ - --prefix=/usr \ - --disable-multilib \ - --disable-nls \ - --host=$(uname -m)-lfs-linux-gnu \ - --disable-libstdcxx-pch -make -make install -finish - -# 7.8. Gettext-0.21 +# 7.7. Gettext-0.21 begin gettext-0.21 tar.xz ./configure --disable-shared make cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin finish -# 7.9. Bison-3.7.6 -begin bison-3.7.6 tar.xz +# 7.8. Bison-3.8.2 +begin bison-3.8.2 tar.xz ./configure --prefix=/usr \ - --docdir=/usr/share/doc/bison-3.7.6 + --docdir=/usr/share/doc/bison-3.8.2 make make install finish -# 7.10. Perl-5.34.0 -begin perl-5.34.0 tar.xz +# 7.9. Perl-5.36.0 +begin perl-5.36.0 tar.xz sh Configure -des \ -Dprefix=/usr \ -Dvendorprefix=/usr \ - -Dprivlib=/usr/lib/perl5/5.34/core_perl \ - -Darchlib=/usr/lib/perl5/5.34/core_perl \ - -Dsitelib=/usr/lib/perl5/5.34/site_perl \ - -Dsitearch=/usr/lib/perl5/5.34/site_perl \ - -Dvendorlib=/usr/lib/perl5/5.34/vendor_perl \ - -Dvendorarch=/usr/lib/perl5/5.34/vendor_perl + -Dprivlib=/usr/lib/perl5/5.36/core_perl \ + -Darchlib=/usr/lib/perl5/5.36/core_perl \ + -Dsitelib=/usr/lib/perl5/5.36/site_perl \ + -Dsitearch=/usr/lib/perl5/5.36/site_perl \ + -Dvendorlib=/usr/lib/perl5/5.36/vendor_perl \ + -Dvendorarch=/usr/lib/perl5/5.36/vendor_perl make make install finish -# 7.11. Python-3.9.6 -begin Python-3.9.6 tar.xz +# 7.10. Python-3.10.6 +begin Python-3.10.6 tar.xz ./configure --prefix=/usr \ --enable-shared \ --without-ensurepip @@ -81,21 +65,19 @@ make make install finish -# 7.12. Texinfo-6.8 +# 7.11. Texinfo-6.8 begin texinfo-6.8 tar.xz -sed -e 's/__attribute_nonnull__/__nonnull/' \ - -i gnulib/lib/malloc/dynarray-skeleton.c ./configure --prefix=/usr make make install finish -# 7.13. Util-linux-2.37.2 -begin util-linux-2.37.2 tar.xz +# 7.12. Util-linux-2.38.1 +begin util-linux-2.38.1 tar.xz mkdir -pv /var/lib/hwclock ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ --libdir=/usr/lib \ - --docdir=/usr/share/doc/util-linux-2.37.2 \ + --docdir=/usr/share/doc/util-linux-2.38.1 \ --disable-chfn-chsh \ --disable-login \ --disable-nologin \ diff --git a/lfs-cross.sh b/lfs-cross.sh index 235cff9..9bca271 100644 --- a/lfs-cross.sh +++ b/lfs-cross.sh @@ -1,8 +1,8 @@ #!/bin/bash -# LFS 11.0 Build Script +# LFS 11.2 Build Script # Builds the cross-toolchain and cross compiling temporary tools from chapters 5 and 6 # by Luís Mendes :) -# 08/Sep/2021 +# 06/Sep/2022 package_name="" package_ext="" @@ -11,14 +11,14 @@ begin() { package_name=$1 package_ext=$2 - echo "[lfs-scripts] Starting build of $package_name at $(date)" + echo "[lfs-cross] Starting build of $package_name at $(date)" tar xf $package_name.$package_ext cd $package_name } finish() { - echo "[lfs-scripts] Finishing build of $package_name at $(date)" + echo "[lfs-cross] Finishing build of $package_name at $(date)" cd $LFS/sources rm -rf $package_name @@ -26,21 +26,22 @@ finish() { cd $LFS/sources -# 5.2. Binutils-2.37 - Pass 1 -begin binutils-2.37 tar.xz +# 5.2. Binutils-2.39 - Pass 1 +begin binutils-2.39 tar.xz mkdir -v build cd build ../configure --prefix=$LFS/tools \ --with-sysroot=$LFS \ --target=$LFS_TGT \ --disable-nls \ + --enable-gprofng=no \ --disable-werror make -make install -j1 +make install finish -# 5.3. GCC-11.2.0 - Pass 1 -begin gcc-11.2.0 tar.xz +# 5.3. GCC-12.2.0 - Pass 1 +begin gcc-12.2.0 tar.xz tar -xf ../mpfr-4.1.0.tar.xz mv -v mpfr-4.1.0 mpfr tar -xf ../gmp-6.2.1.tar.xz @@ -55,25 +56,24 @@ case $(uname -m) in esac mkdir -v build cd build -../configure \ - --target=$LFS_TGT \ - --prefix=$LFS/tools \ - --with-glibc-version=2.11 \ - --with-sysroot=$LFS \ - --with-newlib \ - --without-headers \ - --enable-initfini-array \ - --disable-nls \ - --disable-shared \ - --disable-multilib \ - --disable-decimal-float \ - --disable-threads \ - --disable-libatomic \ - --disable-libgomp \ - --disable-libquadmath \ - --disable-libssp \ - --disable-libvtv \ - --disable-libstdcxx \ +../configure \ + --target=$LFS_TGT \ + --prefix=$LFS/tools \ + --with-glibc-version=2.36 \ + --with-sysroot=$LFS \ + --with-newlib \ + --without-headers \ + --disable-nls \ + --disable-shared \ + --disable-multilib \ + --disable-decimal-float \ + --disable-threads \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libquadmath \ + --disable-libssp \ + --disable-libvtv \ + --disable-libstdcxx \ --enable-languages=c,c++ make make install @@ -82,17 +82,16 @@ cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/install-tools/include/limits.h finish -# 5.4. Linux-5.13.12 API Headers -begin linux-5.13.12 tar.xz +# 5.4. Linux-5.19.2 API Headers +begin linux-5.19.2 tar.xz make mrproper make headers -find usr/include -name '.*' -delete -rm usr/include/Makefile +find usr/include -type f ! -name '*.h' -delete cp -rv usr/include $LFS/usr finish -# 5.5. Glibc-2.34 -begin glibc-2.34 tar.xz +# 5.5. Glibc-2.36 +begin glibc-2.36 tar.xz case $(uname -m) in i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3 ;; @@ -100,7 +99,7 @@ case $(uname -m) in ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3 ;; esac -patch -Np1 -i ../glibc-2.34-fhs-1.patch +patch -Np1 -i ../glibc-2.36-fhs-1.patch mkdir -v build cd build echo "rootsbindir=/usr/sbin" > configparms @@ -114,15 +113,14 @@ echo "rootsbindir=/usr/sbin" > configparms make make DESTDIR=$LFS install sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd -echo 'int main(){}' > dummy.c -$LFS_TGT-gcc dummy.c -readelf -l a.out | grep '/ld-linux' -rm -v dummy.c a.out -$LFS/tools/libexec/gcc/$LFS_TGT/11.2.0/install-tools/mkheaders +echo 'int main(){}' | gcc -xc - +readelf -l a.out | grep ld-linux +rm -v a.out +$LFS/tools/libexec/gcc/$LFS_TGT/12.2.0/install-tools/mkheaders finish -# 5.6. Libstdc++ from GCC-11.2.0, Pass 1 -begin gcc-11.2.0 tar.xz +# 5.6. Libstdc++ from GCC-12.2.0 +begin gcc-12.2.0 tar.xz mkdir -v build cd build ../libstdc++-v3/configure \ @@ -132,9 +130,10 @@ cd build --disable-multilib \ --disable-nls \ --disable-libstdcxx-pch \ - --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/11.2.0 + --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/12.2.0 make make DESTDIR=$LFS install +rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la finish # 6.2. M4-1.4.19 @@ -146,8 +145,8 @@ make make DESTDIR=$LFS install finish -# 6.3. Ncurses-6.2 -begin ncurses-6.2 tar.gz +# 6.3. Ncurses-6.3 +begin ncurses-6.3 tar.gz sed -i s/mawk// configure mkdir build pushd build @@ -161,17 +160,19 @@ popd --mandir=/usr/share/man \ --with-manpage-format=normal \ --with-shared \ + --without-normal \ + --with-cxx-shared \ --without-debug \ --without-ada \ - --without-normal \ + --disable-stripping \ --enable-widec make make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so finish -# 6.4. Bash-5.1.8 -begin bash-5.1.8 tar.gz +# 6.4. Bash-5.1.16 +begin bash-5.1.16 tar.gz ./configure --prefix=/usr \ --build=$(support/config.guess) \ --host=$LFS_TGT \ @@ -181,8 +182,8 @@ make DESTDIR=$LFS install ln -sv bash $LFS/bin/sh finish -# 6.5. Coreutils-8.32 -begin coreutils-8.32 tar.xz +# 6.5. Coreutils-9.1 +begin coreutils-9.1 tar.xz ./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) \ @@ -190,10 +191,10 @@ begin coreutils-8.32 tar.xz --enable-no-install-program=kill,uptime make make DESTDIR=$LFS install -mv -v $LFS/usr/bin/chroot $LFS/usr/sbin +mv -v $LFS/usr/bin/chroot $LFS/usr/sbin mkdir -pv $LFS/usr/share/man/man8 -mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8 -sed -i 's/"1"/"8"/' $LFS/usr/share/man/man8/chroot.8 +mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8 +sed -i 's/"1"/"8"/' $LFS/usr/share/man/man8/chroot.8 finish # 6.6. Diffutils-3.8 @@ -203,8 +204,8 @@ make make DESTDIR=$LFS install finish -# 6.7. File-5.40 -begin file-5.40 tar.gz +# 6.7. File-5.42 +begin file-5.42 tar.gz mkdir build pushd build ../configure --disable-bzlib \ @@ -216,10 +217,11 @@ popd ./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess) make FILE_COMPILE=$(pwd)/build/src/file make DESTDIR=$LFS install +rm -v $LFS/usr/lib/libmagic.la finish -# 6.8. Findutils-4.8.0 -begin findutils-4.8.0 tar.xz +# 6.8. Findutils-4.9.0 +begin findutils-4.9.0 tar.xz ./configure --prefix=/usr \ --localstatedir=/var/lib/locate \ --host=$LFS_TGT \ @@ -228,12 +230,12 @@ make make DESTDIR=$LFS install finish -# 6.9. Gawk-5.1.0 -begin gawk-5.1.0 tar.xz +# 6.9. Gawk-5.1.1 +begin gawk-5.1.1 tar.xz sed -i 's/extras//' Makefile.in ./configure --prefix=/usr \ --host=$LFS_TGT \ - --build=$(./config.guess) + --build=$(build-aux/config.guess) make make DESTDIR=$LFS install finish @@ -246,8 +248,8 @@ make make DESTDIR=$LFS install finish -# 6.11. Gzip-1.10 -begin gzip-1.10 tar.xz +# 6.11. Gzip-1.12 +begin gzip-1.12 tar.xz ./configure --prefix=/usr --host=$LFS_TGT make make DESTDIR=$LFS install @@ -289,19 +291,21 @@ make make DESTDIR=$LFS install finish -# 6.16. Xz-5.2.5 -begin xz-5.2.5 tar.xz +# 6.16. Xz-5.2.6 +begin xz-5.2.6 tar.xz ./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) \ --disable-static \ - --docdir=/usr/share/doc/xz-5.2.5 + --docdir=/usr/share/doc/xz-5.2.6 make make DESTDIR=$LFS install +rm -v $LFS/usr/lib/liblzma.la finish -# 6.17. Binutils-2.37 - Pass 2 -begin binutils-2.37 tar.xz +# 6.17. Binutils-2.39 - Pass 2 +begin binutils-2.39 tar.xz +sed '6009s/$add_dir//' -i ltmain.sh mkdir -v build cd build ../configure \ @@ -310,15 +314,16 @@ cd build --host=$LFS_TGT \ --disable-nls \ --enable-shared \ + --enable-gprofng=no \ --disable-werror \ --enable-64-bit-bfd make -make DESTDIR=$LFS install -j1 -install -vm755 libctf/.libs/libctf.so.0.0.0 $LFS/usr/lib +make DESTDIR=$LFS install +rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.{a,la} finish -# 6.18. GCC-11.2.0 - Pass 2 -begin gcc-11.2.0 tar.xz +# 6.18. GCC-12.2.0 - Pass 2 +begin gcc-12.2.0 tar.xz tar -xf ../mpfr-4.1.0.tar.xz mv -v mpfr-4.1.0 mpfr tar -xf ../gmp-6.2.1.tar.xz @@ -330,15 +335,16 @@ case $(uname -m) in sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 ;; esac +sed '/thread_header =/s/@.*@/gthr-posix.h/' \ + -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in mkdir -v build cd build -mkdir -pv $LFS_TGT/libgcc -ln -s ../../../libgcc/gthr-posix.h $LFS_TGT/libgcc/gthr-default.h ../configure \ --build=$(../config.guess) \ --host=$LFS_TGT \ + --target=$LFS_TGT \ + LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \ --prefix=/usr \ - CC_FOR_TARGET=$LFS_TGT-gcc \ --with-build-sysroot=$LFS \ --enable-initfini-array \ --disable-nls \ @@ -349,7 +355,6 @@ ln -s ../../../libgcc/gthr-posix.h $LFS_TGT/libgcc/gthr-default.h --disable-libquadmath \ --disable-libssp \ --disable-libvtv \ - --disable-libstdcxx \ --enable-languages=c,c++ make make DESTDIR=$LFS install diff --git a/lfs-final.sh b/lfs-final.sh index 73ed863..707e011 100644 --- a/lfs-final.sh +++ b/lfs-final.sh @@ -1,8 +1,8 @@ #!/bin/bash -# LFS 11.0 Build Script +# LFS 11.2 Build Script # Final steps to configure the system # by Luís Mendes :) -# 13/Sep/2021 +# 07/Sep/2022 package_name="" package_ext="" @@ -11,14 +11,14 @@ begin() { package_name=$1 package_ext=$2 - echo "[lfs-scripts] Starting build of $package_name at $(date)" + echo "[lfs-final] Starting build of $package_name at $(date)" tar xf $package_name.$package_ext cd $package_name } finish() { - echo "[lfs-scripts] Finishing build of $package_name at $(date)" + echo "[lfs-final] Finishing build of $package_name at $(date)" cd /sources rm -rf $package_name @@ -26,11 +26,8 @@ finish() { cd /sources -find /usr/lib /usr/libexec -name \*.la -delete -find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf - -# 9.2. LFS-Bootscripts-20210608 -begin lfs-bootscripts-20210608 tar.xz +# 9.2. LFS-Bootscripts-20220723 +begin lfs-bootscripts-20220723 tar.xz make install finish @@ -200,17 +197,17 @@ EOF cd /sources -# 10.3. Linux-5.13.12 -begin linux-5.13.12 tar.xz +# 10.3. Linux-5.19.2 +begin linux-5.19.2 tar.xz make mrproper make defconfig make make modules_install -cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.13.12-lfs-11.0 -cp -iv System.map /boot/System.map-5.13.12 -cp -iv .config /boot/config-5.13.12 -install -d /usr/share/doc/linux-5.13.12 -cp -r Documentation/* /usr/share/doc/linux-5.13.12 +cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.19.2-lfs-11.2 +cp -iv System.map /boot/System.map-5.19.2 +cp -iv .config /boot/config-5.19.2 +install -d /usr/share/doc/linux-5.19.2 +cp -r Documentation/* /usr/share/doc/linux-5.19.2 finish # 10.3.2. Configuring Linux Module Load Order @@ -230,27 +227,29 @@ cat > /boot/grub/grub.cfg << "EOF" # Begin /boot/grub/grub.cfg set default=0 set timeout=5 + insmod ext2 -set root=(hd0,1) -menuentry "GNU/Linux, Linux 5.13.12-lfs-11.0" { - linux /boot/vmlinuz-5.13.12-lfs-11.0 root=/dev/sda1 ro +set root=(hd0,2) + +menuentry "GNU/Linux, Linux 5.19.2-lfs-11.2" { + linux /boot/vmlinuz-5.19.2-lfs-11.2 root=/dev/sda2 ro } EOF # 11.1. The End -echo 11.0 > /etc/lfs-release +echo 11.2 > /etc/lfs-release cat > /etc/lsb-release << "EOF" DISTRIB_ID="Linux From Scratch" -DISTRIB_RELEASE="11.0" +DISTRIB_RELEASE="11.2" DISTRIB_CODENAME="Linux From Scratch" DISTRIB_DESCRIPTION="Linux From Scratch" EOF cat > /etc/os-release << "EOF" NAME="Linux From Scratch" -VERSION="11.0" +VERSION="11.2 ID=lfs -PRETTY_NAME="Linux From Scratch 11.0" +PRETTY_NAME="Linux From Scratch 11.2" VERSION_CODENAME="Linux From Scratch" EOF -echo "[lfs-scripts] The end" \ No newline at end of file +echo "[lfs-final] The end" \ No newline at end of file diff --git a/lfs-system.sh b/lfs-system.sh index 6ff7ea4..c88b3b5 100644 --- a/lfs-system.sh +++ b/lfs-system.sh @@ -1,8 +1,8 @@ #!/bin/bash -# LFS 11.0 Build Script +# LFS 11.2 Build Script # Builds the basic system software from chapter 8 # by Luís Mendes :) -# 10/Sep/2021 +# 07/Sep/2022 package_name="" package_ext="" @@ -11,14 +11,14 @@ begin() { package_name=$1 package_ext=$2 - echo "[lfs-scripts] Starting build of $package_name at $(date)" + echo "[lfs-system] Starting build of $package_name at $(date)" tar xf $package_name.$package_ext cd $package_name } finish() { - echo "[lfs-scripts] Finishing build of $package_name at $(date)" + echo "[lfs-system] Finishing build of $package_name at $(date)" cd /sources rm -rf $package_name @@ -31,16 +31,14 @@ begin man-pages-5.13 tar.xz make prefix=/usr install finish -# 8.4. Iana-Etc-20210611 -begin iana-etc-20210611 tar.gz +# 8.4. Iana-Etc-20220812 +begin iana-etc-20220812 tar.gz cp services protocols /etc finish -# 8.5. Glibc-2.34 -begin glibc-2.34 tar.xz -sed -e '/NOTIFY_REMOVED)/s/)/ \&\& data.attr != NULL)/' \ - -i sysdeps/unix/sysv/linux/mq_notify.c -patch -Np1 -i ../glibc-2.34-fhs-1.patch +# 8.5. Glibc-2.36 +begin glibc-2.36 tar.xz +patch -Np1 -i ../glibc-2.36-fhs-1.patch mkdir -v build cd build echo "rootsbindir=/usr/sbin" > configparms @@ -61,6 +59,8 @@ mkdir -pv /usr/lib/locale localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true localedef -i en_US -f ISO-8859-1 en_US localedef -i en_US -f UTF-8 en_US.UTF-8 +make localedata/install-locales + cat > /etc/nsswitch.conf << "EOF" # Begin /etc/nsswitch.conf @@ -78,7 +78,8 @@ rpc: files # End /etc/nsswitch.conf EOF -tar -xf ../../tzdata2021a.tar.gz + +tar -xf ../../tzdata2022c.tar.gz ZONEINFO=/usr/share/zoneinfo mkdir -pv $ZONEINFO/{posix,right} @@ -94,22 +95,25 @@ cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO zic -d $ZONEINFO -p America/New_York unset ZONEINFO ln -sfv /usr/share/zoneinfo/America/Sao_Paulo /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 finish -# 8.6. Zlib-1.2.11 -begin zlib-1.2.11 tar.xz +# 8.6. Zlib-1.2.12 +begin zlib-1.2.12 tar.xz ./configure --prefix=/usr make make install @@ -134,39 +138,41 @@ done rm -fv /usr/lib/libbz2.a finish -# 8.8. Xz-5.2.5 -begin xz-5.2.5 tar.xz +# 8.8. Xz-5.2.6 +begin xz-5.2.6 tar.xz ./configure --prefix=/usr \ --disable-static \ - --docdir=/usr/share/doc/xz-5.2.5 + --docdir=/usr/share/doc/xz-5.2.6 make make install finish -# 8.9. Zstd-1.5.0 -begin zstd-1.5.0 tar.gz -make +# 8.9. Zstd-1.5.2 +begin zstd-1.5.2 tar.gz +patch -Np1 -i ../zstd-1.5.2-upstream_fixes-1.patch +make prefix=/usr make prefix=/usr install rm -v /usr/lib/libzstd.a finish -# 8.10. File-5.40 -begin file-5.40 tar.gz +# 8.10. File-5.42 +begin file-5.42 tar.gz ./configure --prefix=/usr make make install finish -# 8.11. Readline-8.1 -begin readline-8.1 tar.gz +# 8.11. Readline-8.1.2 +begin readline-8.1.2 tar.gz sed -i '/MV.*old/d' Makefile.in sed -i '/{OLDSUFF}/c:' support/shlib-install ./configure --prefix=/usr \ --disable-static \ --with-curses \ - --docdir=/usr/share/doc/readline-8.1 + --docdir=/usr/share/doc/readline-8.1.2 make SHLIB_LIBS="-lncursesw" make SHLIB_LIBS="-lncursesw" install +install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.1.2 finish # 8.12. M4-1.4.19 @@ -176,9 +182,9 @@ make make install finish -# 8.13. Bc-5.0.0 -begin bc-5.0.0 tar.xz -CC=gcc ./configure --prefix=/usr -G -O3 +# 8.13. Bc-6.0.1 +begin bc-6.0.1 tar.xz +CC=gcc ./configure --prefix=/usr -G -O3 -r make make install finish @@ -193,31 +199,30 @@ make install ln -sv flex /usr/bin/lex finish -# 8.15. Tcl-8.6.11 -mv tcl8.6.11-src.tar.gz tcl8.6.11.tar.gz -begin tcl8.6.11 tar.gz -tar -xf ../tcl8.6.11-html.tar.gz --strip-components=1 +# 8.15. Tcl-8.6.12 +mv tcl8.6.12-src.tar.gz tcl8.6.12.tar.gz +begin tcl8.6.12 tar.gz +tar -xf ../tcl8.6.12-html.tar.gz --strip-components=1 SRCDIR=$(pwd) cd unix ./configure --prefix=/usr \ - --mandir=/usr/share/man \ - $([ "$(uname -m)" = x86_64 ] && echo --enable-64bit) + --mandir=/usr/share/man make sed -e "s|$SRCDIR/unix|/usr/lib|" \ -e "s|$SRCDIR|/usr/include|" \ -i tclConfig.sh -sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.2|/usr/lib/tdbc1.1.2|" \ - -e "s|$SRCDIR/pkgs/tdbc1.1.2/generic|/usr/include|" \ - -e "s|$SRCDIR/pkgs/tdbc1.1.2/library|/usr/lib/tcl8.6|" \ - -e "s|$SRCDIR/pkgs/tdbc1.1.2|/usr/include|" \ - -i pkgs/tdbc1.1.2/tdbcConfig.sh +sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.3|/usr/lib/tdbc1.1.3|" \ + -e "s|$SRCDIR/pkgs/tdbc1.1.3/generic|/usr/include|" \ + -e "s|$SRCDIR/pkgs/tdbc1.1.3/library|/usr/lib/tcl8.6|" \ + -e "s|$SRCDIR/pkgs/tdbc1.1.3|/usr/include|" \ + -i pkgs/tdbc1.1.3/tdbcConfig.sh -sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.1|/usr/lib/itcl4.2.1|" \ - -e "s|$SRCDIR/pkgs/itcl4.2.1/generic|/usr/include|" \ - -e "s|$SRCDIR/pkgs/itcl4.2.1|/usr/include|" \ - -i pkgs/itcl4.2.1/itclConfig.sh +sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.2|/usr/lib/itcl4.2.2|" \ + -e "s|$SRCDIR/pkgs/itcl4.2.2/generic|/usr/include|" \ + -e "s|$SRCDIR/pkgs/itcl4.2.2|/usr/include|" \ + -i pkgs/itcl4.2.2/itclConfig.sh unset SRCDIR make install @@ -225,6 +230,8 @@ chmod -v u+w /usr/lib/libtcl8.6.so make install-private-headers ln -sfv tclsh8.6 /usr/bin/tclsh mv /usr/share/man/man3/{Thread,Tcl_Thread}.3 +mkdir -v -p /usr/share/doc/tcl-8.6.12 +cp -v -r ../html/* /usr/share/doc/tcl-8.6.12 finish # 8.16. Expect-5.45.4 @@ -251,15 +258,13 @@ install -v -dm755 /usr/share/doc/dejagnu-1.6.3 install -v -m644 doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-1.6.3 finish -# 8.18. Binutils-2.37 -begin binutils-2.37 tar.xz +# 8.18. Binutils-2.39 +begin binutils-2.39 tar.xz expect -c "spawn ls" -patch -Np1 -i ../binutils-2.37-upstream_fix-1.patch -sed -i '63d' etc/texi2pod.pl -find -name \*.1 -delete mkdir -v build cd build ../configure --prefix=/usr \ + --sysconfdir=/etc \ --enable-gold \ --enable-ld=default \ --enable-plugins \ @@ -268,7 +273,7 @@ cd build --enable-64-bit-bfd \ --with-system-zlib make tooldir=/usr -make tooldir=/usr install -j1 +make tooldir=/usr install rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.a finish @@ -326,16 +331,15 @@ make make install finish -# 8.24. Libcap-2.53 -begin libcap-2.53 tar.xz +# 8.24. Libcap-2.65 +begin libcap-2.65 tar.xz sed -i '/install -m.*STA/d' libcap/Makefile make prefix=/usr lib=lib make prefix=/usr lib=lib install -chmod -v 755 /usr/lib/lib{cap,psx}.so.2.53 finish -# 8.25. Shadow-4.9 -begin shadow-4.9 tar.xz +# 8.25. Shadow-4.12.2 +begin shadow-4.12.2 tar.xz 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 / /' {} \; @@ -344,24 +348,17 @@ sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD SHA512:' \ -e 's:/var/spool/mail:/var/mail:' \ -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \ -i etc/login.defs -sed -e "224s/rounds/min_rounds/" -i libmisc/salt.c touch /usr/bin/passwd ./configure --sysconfdir=/etc \ + --disable-static \ --with-group-name-max-length=32 make make exec_prefix=/usr install make -C man install-man -mkdir -p /etc/default -useradd -D --gid 999 -pwconv -grpconv finish -# 8.26. GCC-11.2.0 -begin gcc-11.2.0 tar.xz -sed -e '/static.*SIGSTKSZ/d' \ - -e 's/return kAltStackSize/return SIGSTKSZ * 4/' \ - -i libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp +# 8.26. GCC-12.2.0 +begin gcc-12.2.0 tar.xz case $(uname -m) in x86_64) sed -e '/m64=/s/lib64/lib/' \ @@ -378,11 +375,10 @@ cd build --with-system-zlib make make install -rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/11.2.0/include-fixed/bits/ chown -v -R root:root \ - /usr/lib/gcc/*linux-gnu/11.2.0/include{,-fixed} + /usr/lib/gcc/$(gcc -dumpmachine)/12.2.0/include{,-fixed} ln -svr /usr/bin/cpp /usr/lib -ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/11.2.0/liblto_plugin.so \ +ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/12.2.0/liblto_plugin.so \ /usr/lib/bfd-plugins/ echo 'int main(){}' > dummy.c cc dummy.c -v -Wl,--verbose &> dummy.log @@ -407,17 +403,22 @@ make make install finish -# 8.28. Ncurses-6.2 -begin ncurses-6.2 tar.gz +# 8.28. Ncurses-6.3 +begin ncurses-6.3 tar.gz ./configure --prefix=/usr \ --mandir=/usr/share/man \ --with-shared \ --without-debug \ --without-normal \ + --with-cxx-shared \ --enable-pc-files \ - --enable-widec + --enable-widec \ + --with-pkg-config-libdir=/usr/lib/pkgconfig make -make install +make DESTDIR=$PWD/dest install +install -vm755 dest/usr/lib/libncursesw.so.6.3 /usr/lib +rm -v dest/usr/lib/libncursesw.so.6.3 +cp -av dest/* / 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 @@ -426,9 +427,8 @@ done rm -vf /usr/lib/libcursesw.so echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so ln -sfv libncurses.so /usr/lib/libcurses.so -rm -fv /usr/lib/libncurses++w.a -mkdir -v /usr/share/doc/ncurses-6.2 -cp -v -R doc/* /usr/share/doc/ncurses-6.2 +mkdir -pv /usr/share/doc/ncurses-6.3 +cp -v -R doc/* /usr/share/doc/ncurses-6.3 finish # 8.29. Sed-4.8 @@ -441,8 +441,8 @@ install -d -m755 /usr/share/doc/sed-4.8 install -m644 doc/sed.html /usr/share/doc/sed-4.8 finish -# 8.30. Psmisc-23.4 -begin psmisc-23.4 tar.xz +# 8.30. Psmisc-23.5 +begin psmisc-23.5 tar.xz ./configure --prefix=/usr make make install @@ -458,9 +458,9 @@ make install chmod -v 0755 /usr/lib/preloadable_libintl.so finish -# 8.32. Bison-3.7.6 -begin bison-3.7.6 tar.xz -./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.7.6 +# 8.32. Bison-3.8.2 +begin bison-3.8.2 tar.xz +./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2 make make install finish @@ -472,26 +472,26 @@ make make install finish -# 8.34. Bash-5.1.8 -begin bash-5.1.8 tar.gz +# 8.34. Bash-5.1.16 +begin bash-5.1.16 tar.gz ./configure --prefix=/usr \ - --docdir=/usr/share/doc/bash-5.1.8 \ + --docdir=/usr/share/doc/bash-5.1.16 \ --without-bash-malloc \ --with-installed-readline make make install finish -# 8.35. Libtool-2.4.6 -begin libtool-2.4.6 tar.xz +# 8.35. Libtool-2.4.7 +begin libtool-2.4.7 tar.xz ./configure --prefix=/usr make make install rm -fv /usr/lib/libltdl.a finish -# 8.36. GDBM-1.20 -begin gdbm-1.20 tar.gz +# 8.36. GDBM-1.23 +begin gdbm-1.23 tar.gz ./configure --prefix=/usr \ --disable-static \ --enable-libgdbm-compat @@ -506,17 +506,18 @@ make make install finish -# 8.38. Expat-2.4.1 -begin expat-2.4.1 tar.xz +# 8.38. Expat-2.4.8 +begin expat-2.4.8 tar.xz ./configure --prefix=/usr \ --disable-static \ - --docdir=/usr/share/doc/expat-2.4.1 + --docdir=/usr/share/doc/expat-2.4.8 make make install +install -v -m644 doc/*.{html,css} /usr/share/doc/expat-2.4.8 finish -# 8.39. Inetutils-2.1 -begin inetutils-2.1 tar.xz +# 8.39. Inetutils-2.3 +begin inetutils-2.3 tar.xz ./configure --prefix=/usr \ --bindir=/usr/bin \ --localstatedir=/var \ @@ -539,20 +540,19 @@ make make install finish -# 8.41. Perl-5.34.0 -begin perl-5.34.0 tar.xz -patch -Np1 -i ../perl-5.34.0-upstream_fixes-1.patch +# 8.41. Perl-5.36.0 +begin perl-5.36.0 tar.xz export BUILD_ZLIB=False export BUILD_BZIP2=0 sh Configure -des \ -Dprefix=/usr \ -Dvendorprefix=/usr \ - -Dprivlib=/usr/lib/perl5/5.34/core_perl \ - -Darchlib=/usr/lib/perl5/5.34/core_perl \ - -Dsitelib=/usr/lib/perl5/5.34/site_perl \ - -Dsitearch=/usr/lib/perl5/5.34/site_perl \ - -Dvendorlib=/usr/lib/perl5/5.34/vendor_perl \ - -Dvendorarch=/usr/lib/perl5/5.34/vendor_perl \ + -Dprivlib=/usr/lib/perl5/5.36/core_perl \ + -Darchlib=/usr/lib/perl5/5.36/core_perl \ + -Dsitelib=/usr/lib/perl5/5.36/site_perl \ + -Dsitearch=/usr/lib/perl5/5.36/site_perl \ + -Dvendorlib=/usr/lib/perl5/5.36/vendor_perl \ + -Dvendorarch=/usr/lib/perl5/5.36/vendor_perl \ -Dman1dir=/usr/share/man/man1 \ -Dman3dir=/usr/share/man/man3 \ -Dpager="/usr/bin/less -isR" \ @@ -586,17 +586,32 @@ make make install finish -# 8.45. Automake-1.16.4 -begin automake-1.16.4 tar.xz -./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.4 +# 8.45. Automake-1.16.5 +begin automake-1.16.5 tar.xz +./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.5 make make install finish -# 8.46. Kmod-29 -begin kmod-29 tar.xz +# 8.46. OpenSSL-3.0.5 +begin openssl-3.0.5 tar.gz +./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 +mv -v /usr/share/doc/openssl /usr/share/doc/openssl-3.0.5 +cp -vfr doc/* /usr/share/doc/openssl-3.0.5 +finish + +# 8.47. Kmod-30 +begin kmod-30 tar.xz ./configure --prefix=/usr \ --sysconfdir=/etc \ + --with-openssl \ --with-xz \ --with-zstd \ --with-zlib @@ -608,8 +623,8 @@ done ln -sfv kmod /usr/bin/lsmod finish -# 8.47. Libelf from Elfutils-0.185 -begin elfutils-0.185 tar.bz2 +# 8.48. Libelf from Elfutils-0.187 +begin elfutils-0.187 tar.bz2 ./configure --prefix=/usr \ --disable-debuginfod \ --enable-libdebuginfod=dummy @@ -619,7 +634,7 @@ install -vm644 config/libelf.pc /usr/lib/pkgconfig rm /usr/lib/libelf.a finish -# 8.48. Libffi-3.4.2 +# 8.49. Libffi-3.4.2 begin libffi-3.4.2 tar.gz ./configure --prefix=/usr \ --disable-static \ @@ -629,40 +644,35 @@ make make install finish -# 8.49. OpenSSL-1.1.1l -begin openssl-1.1.1l tar.gz -./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 -mv -v /usr/share/doc/openssl /usr/share/doc/openssl-1.1.1l -cp -vfr doc/* /usr/share/doc/openssl-1.1.1l -finish - -# 8.50. Python-3.9.6 -begin Python-3.9.6 tar.xz +# 8.50. Python-3.10.6 +begin Python-3.10.6 tar.xz ./configure --prefix=/usr \ --enable-shared \ --with-system-expat \ --with-system-ffi \ - --with-ensurepip=yes \ --enable-optimizations make make install -install -v -dm755 /usr/share/doc/python-3.9.6/html +cat > /etc/pip.conf << EOF +[global] +root-user-action = ignore +disable-pip-version-check = true +EOF +install -v -dm755 /usr/share/doc/python-3.10.6/html tar --strip-components=1 \ --no-same-owner \ --no-same-permissions \ - -C /usr/share/doc/python-3.9.6/html \ - -xvf ../python-3.9.6-docs-html.tar.bz2 + -C /usr/share/doc/python-3.10.6/html \ + -xvf ../python-3.10.6-docs-html.tar.bz2 finish -# 8.51. Ninja-1.10.2 -begin ninja-1.10.2 tar.gz +# 8.51. Wheel-0.37.1 +begin wheel-0.37.1 tar.gz +pip3 install --no-index $PWD +finish + +# 8.52. Ninja-1.11.0 +begin ninja-1.11.0 tar.gz sed -i '/int Guess/a \ int j = 0;\ char* jobs = getenv( "NINJAJOBS" );\ @@ -675,18 +685,17 @@ install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninj install -vDm644 misc/zsh-completion /usr/share/zsh/site-functions/_ninja finish -# 8.52. Meson-0.59.1 -begin meson-0.59.1 tar.gz -python3 setup.py build -python3 setup.py install --root=dest -cp -rv dest/* / +# 8.53. Meson-0.63.1 +begin meson-0.63.1 tar.gz +pip3 wheel -w dist --no-build-isolation --no-deps $PWD +pip3 install --no-index --find-links dist meson install -vDm644 data/shell-completions/bash/meson /usr/share/bash-completion/completions/meson install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson finish -# 8.53. Coreutils-8.32 -begin coreutils-8.32 tar.xz -patch -Np1 -i ../coreutils-8.32-i18n-1.patch +# 8.54. Coreutils-9.1 +begin coreutils-9.1 tar.xz +patch -Np1 -i ../coreutils-9.1-i18n-1.patch autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./configure \ --prefix=/usr \ @@ -698,45 +707,48 @@ mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 sed -i 's/"1"/"8"/' /usr/share/man/man8/chroot.8 finish -# 8.54. Check-0.15.2 +# 8.55. Check-0.15.2 begin check-0.15.2 tar.gz ./configure --prefix=/usr --disable-static make make docdir=/usr/share/doc/check-0.15.2 install finish -# 8.55. Diffutils-3.8 +# 8.56. Diffutils-3.8 begin diffutils-3.8 tar.xz ./configure --prefix=/usr make make install finish -# 8.56. Gawk-5.1.0 -begin gawk-5.1.0 tar.xz +# 8.57. Gawk-5.1.1 +begin gawk-5.1.1 tar.xz sed -i 's/extras//' Makefile.in ./configure --prefix=/usr make make install -mkdir -v /usr/share/doc/gawk-5.1.0 -cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.1.0 +mkdir -pv /usr/share/doc/gawk-5.1.1 +cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.1.1 finish -# 8.57. Findutils-4.8.0 -begin findutils-4.8.0 tar.xz -./configure --prefix=/usr --localstatedir=/var/lib/locate +# 8.58. Findutils-4.9.0 +begin findutils-4.9.0 tar.xz +case $(uname -m) in + i?86) TIME_T_32_BIT_OK=yes ./configure --prefix=/usr --localstatedir=/var/lib/locate ;; + x86_64) ./configure --prefix=/usr --localstatedir=/var/lib/locate ;; +esac make make install finish -# 8.58. Groff-1.22.4 +# 8.59. Groff-1.22.4 begin groff-1.22.4 tar.gz PAGE=A4 ./configure --prefix=/usr make -j1 make install finish -# 8.59. GRUB-2.06 +# 8.60. GRUB-2.06 begin grub-2.06 tar.xz ./configure --prefix=/usr \ --sysconfdir=/etc \ @@ -747,58 +759,53 @@ make install mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions finish -# 8.60. Gzip-1.10 -begin gzip-1.10 tar.xz +# 8.61. Gzip-1.12 +begin gzip-1.12 tar.xz ./configure --prefix=/usr make make install finish -# 8.61. IPRoute2-5.13.0 -begin iproute2-5.13.0 tar.xz +# 8.62. IPRoute2-5.19.0 +begin iproute2-5.19.0 tar.xz sed -i /ARPD/d Makefile rm -fv man/man8/arpd.8 -sed -i 's/.m_ipt.o//' tc/Makefile -make +make NETNS_RUN_DIR=/run/netns make SBINDIR=/usr/sbin install -mkdir -v /usr/share/doc/iproute2-5.13.0 -cp -v COPYING README* /usr/share/doc/iproute2-5.13.0 +mkdir -pv /usr/share/doc/iproute2-5.19.0 +cp -v COPYING README* /usr/share/doc/iproute2-5.19.0 finish -# 8.62. Kbd-2.4.0 -begin kbd-2.4.0 tar.xz -patch -Np1 -i ../kbd-2.4.0-backspace-1.patch +# 8.63. Kbd-2.5.1 +begin kbd-2.5.1 tar.xz +patch -Np1 -i ../kbd-2.5.1-backspace-1.patch sed -i '/RESIZECONS_PROGS=/s/yes/no/' configure sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in ./configure --prefix=/usr --disable-vlock -make -make install -mkdir -v /usr/share/doc/kbd-2.4.0 -cp -R -v docs/doc/* /usr/share/doc/kbd-2.4.0 finish -# 8.63. Libpipeline-1.5.3 -begin libpipeline-1.5.3 tar.gz +# 8.64. Libpipeline-1.5.6 +begin libpipeline-1.5.6 tar.gz ./configure --prefix=/usr make make install finish -# 8.64. Make-4.3 +# 8.65. Make-4.3 begin make-4.3 tar.gz ./configure --prefix=/usr make make install finish -# 8.65. Patch-2.7.6 +# 8.66. Patch-2.7.6 begin patch-2.7.6 tar.xz ./configure --prefix=/usr make make install finish -# 8.66. Tar-1.34 +# 8.67. Tar-1.34 begin tar-1.34 tar.xz FORCE_UNSAFE_CONFIGURE=1 \ ./configure --prefix=/usr @@ -807,11 +814,9 @@ make install make -C doc install-html docdir=/usr/share/doc/tar-1.34 finish -# 8.67. Texinfo-6.8 +# 8.68. Texinfo-6.8 begin texinfo-6.8 tar.xz ./configure --prefix=/usr -sed -e 's/__attribute_nonnull__/__nonnull/' \ - -i gnulib/lib/malloc/dynarray-skeleton.c make make install make TEXMF=/usr/share/texmf install-tex @@ -823,8 +828,8 @@ pushd /usr/share/info popd finish -# 8.68. Vim-8.2.3337 -begin vim-8.2.3337 tar.gz +# 8.69. Vim-9.0.0228 +begin vim-9.0.0228 tar.gz echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h ./configure --prefix=/usr make @@ -833,13 +838,13 @@ ln -sv vim /usr/bin/vi for L in /usr/share/man/{,*/}man1/vim.1; do ln -sv vim.1 $(dirname $L)/vi.1 done -ln -sv ../vim/vim82/doc /usr/share/doc/vim-8.2.3337 +ln -sv ../vim/vim90/doc /usr/share/doc/vim-9.0.0228 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 +let skip_defaults_vim=1 set nocompatible set backspace=2 @@ -853,8 +858,8 @@ endif EOF finish -# 8.69. Eudev-3.2.10 -begin eudev-3.2.10 tar.gz +# 8.70. Eudev-3.2.11 +begin eudev-3.2.11 tar.gz ./configure --prefix=/usr \ --bindir=/usr/sbin \ --sysconfdir=/etc \ @@ -869,38 +874,39 @@ make -f udev-lfs-20171102/Makefile.lfs install udevadm hwdb --update finish -# 8.70. Man-DB-2.9.4 -begin man-db-2.9.4 tar.xz -./configure --prefix=/usr \ - --docdir=/usr/share/doc/man-db-2.9.4 \ - --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= \ +# 8.71. Man-DB-2.10.2 +begin man-db-2.10.2 tar.xz +./configure --prefix=/usr \ + --docdir=/usr/share/doc/man-db-2.10.2 \ + --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= \ --with-systemdsystemunitdir= make make install finish -# 8.71. Procps-ng-3.3.17 -mv procps-ng-3.3.17.tar.xz procps-3.3.17.tar.xz -begin procps-3.3.17 tar.xz +# 8.72. Procps-ng-4.0.0 +begin procps-ng-4.0.0 tar.xz ./configure --prefix=/usr \ - --docdir=/usr/share/doc/procps-ng-3.3.17 \ + --docdir=/usr/share/doc/procps-ng-4.0.0 \ --disable-static \ --disable-kill make make install finish -# 8.72. Util-linux-2.37.2 -begin util-linux-2.37.2 tar.xz +# 8.73. Util-linux-2.38.1 +begin util-linux-2.38.1 tar.xz ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ + --bindir=/usr/bin \ --libdir=/usr/lib \ - --docdir=/usr/share/doc/util-linux-2.37.2 \ + --sbindir=/usr/sbin \ + --docdir=/usr/share/doc/util-linux-2.38.1 \ --disable-chfn-chsh \ --disable-login \ --disable-nologin \ @@ -911,14 +917,13 @@ begin util-linux-2.37.2 tar.xz --disable-static \ --without-python \ --without-systemd \ - --without-systemdsystemunitdir \ - runstatedir=/run + --without-systemdsystemunitdir make make install finish -# 8.73. E2fsprogs-1.46.4 -begin e2fsprogs-1.46.4 tar.gz +# 8.74. E2fsprogs-1.46.5 +begin e2fsprogs-1.46.5 tar.gz mkdir -v build cd build ../configure --prefix=/usr \ @@ -938,7 +943,7 @@ install -v -m644 doc/com_err.info /usr/share/info install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info finish -# 8.74. Sysklogd-1.5.1 +# 8.75. Sysklogd-1.5.1 begin sysklogd-1.5.1 tar.gz sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c sed -i 's/union wait/int/' syslogd.c @@ -959,21 +964,21 @@ user.* -/var/log/user.log EOF finish -# 8.75. Sysvinit-2.99 -begin sysvinit-2.99 tar.xz -patch -Np1 -i ../sysvinit-2.99-consolidated-1.patch +# 8.76. Sysvinit-3.04 +begin sysvinit-3.04 tar.xz +patch -Np1 -i ../sysvinit-3.04-consolidated-1.patch make make install finish -# 8.77. Stripping -save_usrlib="$(cd /usr/lib; ls ld-linux*) +# 8.78. Stripping +save_usrlib="$(cd /usr/lib; ls ld-linux*[^g]) libc.so.6 libthread_db.so.1 - libquadmath.so.0.0.0 - libstdc++.so.6.0.29 - libitm.so.1.0.0 - libatomic.so.1.2.0" + libquadmath.so.0.0.0 + libstdc++.so.6.0.30 + libitm.so.1.0.0 + libatomic.so.1.2.0" cd /usr/lib @@ -987,12 +992,12 @@ for LIB in $save_usrlib; do done online_usrbin="bash find strip" -online_usrlib="libbfd-2.37.so +online_usrlib="libbfd-2.39.so libhistory.so.8.1 - libncursesw.so.6.2 + libncursesw.so.6.3 libm.so.6 libreadline.so.8.1 - libz.so.1.2.11 + libz.so.1.2.12 $(cd /usr/lib; find libnss*.so* -type f)" for BIN in $online_usrbin; do @@ -1013,9 +1018,9 @@ for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \ $(find /usr/lib -type f -name \*.a) \ $(find /usr/{bin,sbin,libexec} -type f); do case "$online_usrbin $online_usrlib $save_usrlib" in - *$(basename $i)* ) + *$(basename $i)* ) ;; - * ) strip --strip-unneeded $i + * ) strip --strip-unneeded $i ;; esac done @@ -1023,4 +1028,6 @@ done unset BIN LIB save_usrlib online_usrbin online_usrlib # 8.78. Cleaning Up -rm -rf /tmp/* \ No newline at end of file +rm -rf /tmp/* +find /usr/lib /usr/libexec -name \*.la -delete +find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf