#---------------------------------------------------------------------------- # build_glibc.txt - how to build the glibc binaries and create folder and packages # # Creation : 2008-12-13 holbru # Last update: $Id$ # # !!! this is not a script but an step-by-step howto !!! #------------------------------------------------------------------------------ exit 1 # home : http://www.gnu.org/software/libc/ ### download the source code from the internet, e.g. # http://ftp.gnu.org/gnu/glibc/glibc-2.3.6.tar.bz2 # http://ftp.gnu.org/gnu/glibc/glibc-libidn-2.3.6.tar.bz2 # http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.6.tar.bz2 verschiedene patches, zusammengefasst in glibc-2.3.6-complete.patch - glibc-2.3.6.tar.gz unter /usr/src auspacken - glibc-libidn-2.3.6.tar.gz unter /usr/src/glibc-2.3.6 auspacken - glibc-linuxthreads-2.3.6.tar.gz unter /usr/src/glibc-2.3.6 auspacken - glibc-2.3.6-complete.patch unter /usr/src kopieren - patch -p0 < glibc-2.3.6-complete.patch - Verzeichnis /usr/src/glibcbuild erstellen und hineinwechseln rm -r /usr/src/glibcbuild mkdir /usr/src/glibcbuild cd /usr/src/glibcbuild ../glibc-2.3.6/configure \ --prefix=/usr \ --build=i486-pc-linux-gnu \ --disable-profile \ --enable-add-ons=linuxthreads,libidn \ --with-tls \ --without-__thread \ --enable-kernel=2.2.19 \ --libexecdir=/usr/lib make make install_root=/public/glibc-2.3.6-stripped install make install_root=/public/glibc-2.3.6-stripped localedata/install-locales rm -rf /public/glibc-2.3.6-stripped/usr/info for filename in `find /public/glibc-2.3.6-stripped -type f` do echo "stripping $filename with -S" strip -S "$filename" done done zum glibc-dev packages werden dann noch die Kernel-Header hinzugefuegt mit der diese libc Version erzeugt wurde. cp /usr/src/linux/include/{linux,asm,asm-generic} /usr/include siehe auch http://oss.erdfunkstelle.de/lfs-de/5.0/online/chapter06/kernel.html # 2015-01-31 security update glibc 2.11.3-12.62 # 2015-02-21 -> glibc-2.15 # patches from Suse with rpm # patch for cpuid.h # patch for sed >= 4.2.2 # patch for texinfo >= 5 -> was obsolet require 4.13 # hbfl # 2017-09 -> glibc-2.22 # build with rpm Suse # glibc-2.22-4.9.1.src.rpm # glibc-utils-2.22-4.9.1.src.rpm # for i486 and x86_64 # kernelheader 3.16.47 Linux-3.16.47 API Headers make mrproper make INSTALL_HDR_PATH=dest headers_install cp -rv dest/include/* /usr/include find dest/include \( -name .install -o -name ..install.cmd \) -delete # hbfl # 2018-03-20 -> glibc-2.22 security # build with rpm Suse # glibc-2.22-16.3.src.rpm # glibc-utils-2.22-16.3.src.rpm # kernelheader 3.16.54 Linux-3.16.54 API Headers make mrproper make INSTALL_HDR_PATH=dest headers_install cp -rv dest/include/* /usr/include find dest/include \( -name .install -o -name ..install.cmd \) -delete # hbfl # 2020-02-15 -> glibc-2.22 security # build with rpm Suse # glibc-2.22-25.1.src.rpm # glibc-utils-2.22-25.1.src.rpm # kernelheader 3.16.74 Linux-3.16.74 API Headers make mrproper make INSTALL_HDR_PATH=dest headers_install #cp -rv dest/include/* /usr/include find dest/include \( -name .install -o -name ..install.cmd \) -delete Linux-4.9.210 API Headers make mrproper make INSTALL_HDR_PATH=dest headers_install #cp -rv dest/include/* /usr/include find dest/include \( -name .install -o -name ..install.cmd \) -delete Linux-4.9.215 API Headers make mrproper make INSTALL_HDR_PATH=dest headers_install #cp -rv dest/include/* /usr/include find dest/include \( -name .install -o -name ..install.cmd \) -delete # hbfl # 2020-03-29 -> glibc-2.31 # build with rpm Suse # glibc-2.31-3.1.src.rpm # glibc-utils-src-2.31-3.1.spec # kernelheader 4.9.215 locale-archive for i in * ; do echo $i ; localedef --add-to-archive $i ;done C.utf8 de_LU en_GB.utf8 en_SG fr_CA.utf8 de_AT.utf8 de_LU.utf8 en_HK en_SG.utf8 fr_CH de_AT@euro de_LU@euro en_HK.utf8 en_US fr_CH.utf8 de_BE en_AG en_IE en_US.iso885915 fr_FR de_BE.utf8 en_AU en_IE.utf8 en_US.utf8 fr_FR.utf8 de_BE@euro en_AU.utf8 en_IE@euro en_ZA fr_FR@euro de_CH en_BW en_IL en_ZA.utf8 fr_LU de_CH.utf8 en_BW.utf8 en_IN en_ZM fr_LU.utf8 de_DE en_CA en_NG en_ZW fr_LU@euro de_DE.utf8 en_CA.utf8 en_NZ en_ZW.utf8 de_DE@euro en_DK en_NZ.utf8 fr_BE de_IT en_DK.utf8 en_PH fr_BE.utf8 de_IT.utf8 en_GB en_PH.utf8 fr_BE@euro de_LI.utf8 en_GB.iso885915 en_SC.utf8 fr_CA !!!!!kein archiv, locale im dev Paket behandeln!!!!!! # hbfl # 2021-05-17 -> glibc-2.33 # build with rpm Suse # glibc-2.33-6.1.src.rpm # 2021-06-11 -> glibc-utils-2.33 # glibc-utils-src-2.33-6.1.spec # kernelheader 5.10.31 # kernelheader nach lfs # # make mrproper # make headers # find usr/include -name '.*' -delete # rm usr/include/Makefile # tar ... usr/include # hbfl # 2023-03-16 -> glibc-2.37 # build with rpm Suse # glibc-2.37-1.1.src.rpm # kernelheader 5.15.102 # stage-1 ohne locale # 2023-04-26 -> glibc-util-2.37 # glibc-utils-src-2.37-1.1.src.rpm # hbfl # 2023-10-08 -> glibc-2.37 # rebuild with rpm Suse # glibc-2.37-2.1.src.rpm # kernelheader 5.15.102 # 2023-10-08 -> glibc-util-2.37 # glibc-utils-src-2.37-2.1.src.rpm # added tunables-string-parsing.patch # hbfl # 2024-03-13 -> glibc-2.37 # rebuild with rpm Suse # glibc-2.37-3.1.src.rpm # kernelheader 5.15.150 # 2024-03-13 -> glibc-util-2.37 # glibc-utils-src-2.37-3.1.src.rpm # CVE-2023-6246 CVE-2023-6779 CVE-2023-6780 # hbfl # 2025-03-07 -> kernel header 6.6.80 # cd /usr/src/linux # make mrproper # make headers # find usr/include -type f ! -name '*.h' -delete # cd usr/include -> mc F2 packen linux-kernel-header-6.6.80 # hbfl # 2025-03-07 -> glibc-2.41 # build with rpm Suse -> gcc-14 -> glibc-2.37 # glibc-2.41-1.1.src.rpm # stage-1 # hbfl # 2025-03-10 -> glibc-2.41 # build with rpm Suse -> gcc-14 -> glibc-2.41 # glibc-2.41-1.1.src.rpm # final # hbfl # 2025-04-03 -> glibc-utils-src.2.41 # build with rpm Suse -> gcc-14 -> glibc-2.41 # glibc-utils-src.2.41-1.1.src.rpm # required libgd-dev # !!!!!change: suse-linux -> pc-linux-gnu #--------------------------------------------------------------------------- !!Nicht bearbeitet!! create folder Um die Folder im Hauptverszeichnis zu erstellen gibt es das Script 'glibc-folder.sh' unter glibc/_ADMIN/ mit glibc-folder.sh -v 2.3.6 -w create wird die folder Struktur fuer die lib Version 2.3.6 erstellt nun koennen die files aus dem compilat eingefuegt werden. mit glibc-folder.sh -v 2.3.6 -w add wird ein svn add auf die erzeugten Folder durchgefuehrt. mit glibc-folder.sh -v 2.3.6 -w list wird fuer jeden Folder die files-list.txt erzeugt, add muss zwingend vorher ausgefuehrt worden sein mit glibc-folder.sh -v 2.3.6 -w ci erfolgt der commit der erzeugten Folder In den eis und eis_dev Foldern muessen keine Anpassungen vorgenommen werden. Diese Anpassungen erfolgen beim packen der packages durch mktarball.sh mit den _do_ Scripten unter _ADMIN automatisch. In den Pack-Scripten unter _ADMIN muss dann noch die Pfadangabe geaendert werden, auf den soeben erzeugten Pfad und ein commit ausgefuehrt werden. Nach dem checkout auf eisler koennen nun die packages erzeugt werden. die wichtigsten Parameter fuer mktarball.sh sind dann -setdate now -setversion ${version} mktarball.sh - home -setdate now -setversion [version angeben] glibc glibc-dev duch die Angabe von -home werden die packages in die Folder Struktur /home/user/public_html/packages/ kopiert und koennen von da direkt auf Pack-Eis geladen werden. wichtig ist noch, dass unbedingt die 'lib' Version zuerst gebaut werden muss, da fuer die 'dev' Version Informationen aus der 'lib' Info Datei gelesen werden.