#----------------------------------------------------------------------------
# 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.