#---------------------------------------------------------------------------- # build_e2fsprogs.txt - how to build the e2fsprogs binaries and create folder and packages # # Creation : 2009-08-16 holbru # Last update: $Id$ # # !!! this is not a script but an step-by-step howto !!! #------------------------------------------------------------------------------ exit 1 ### download the source code from the internet, e.g. #http://e2fsprogs.sourceforge.net/ # e2fsprogs-1.40.2.tar.gz ### extract file in a temporary location tar -xzf e2fsprogs-1.40.2.tar.gz cd e2fsprogs-1.40.2 # 2009-08-16 -> e2fsprogs-1.41.8 ### build -> siehe unten export CFLAGS='-O2 -march=i486' export CXXFLAGS="${CFLAGS}" mkdir -v build cd build ../configure --prefix=/usr \ --with-root-prefix="" \ --enable-elf-shlibs \ --build=i486-pc-linux-gnu \ --host=i486-pc-linux-gnu make make check make DESTDIR=/public/e2fsprogs_41_12 install make DESTDIR=/public/e2fsprogs_41_12 install-libs # strip files/binarys for filename in `find /public/e2fsprogs_41_12/{lib/*.so.*,sbin/*,usr/{bin/*.so.*,sbin/*}} -type f` do echo $filename strip -R .note -R .comment "$filename" done cd /sbin for fname in fsck.ext2 fsck.ext3 fsck.ext4 fsck.ext4dev do ln -f e2fsck $fname done for fname in mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev do ln -f mke2fs $fname done ln -f tune2fs e2label cd /lib rm -f libblkid.so.1 ln -sf libblkid.so.1.0 libblkid.so.1 rm -f libuuid.so.1 ln -sf libuuid.so.1.2 libuuid.so.1 rm -f libcom_err.so.2 ln -sf libcom_err.so.2.1 libcom_err.so.2 rm -f libe2p.so.2 ln -sf libe2p.so.2.3 libe2p.so.2 rm -f libext2fs.so.2 ln -sf libext2fs.so.2.4 libext2fs.so.2 rm -f libss.so.2 ln -sf libss.so.2.0 libss.so.2 # copy files cp *** /lib/e2fsprogs/bin_**_e2fsprogs_1_40_2/*** # 2010-11-13 -> e2fsprogs-1.41.12 This is a new build without libblkid, libuuid, uuidd and fsck. These are coming from util-linux-ng now! cd /usr/src/e2fsprogs-1.41.12 mkdir build cd build export CFLAGS='-O2 -march=i486' export CXXFLAGS="${CFLAGS}" ../configure --prefix=/usr \ --build=i486-pc-linux-gnu \ --host=i486-pc-linux-gnu \ --with-root-prefix="" \ --enable-elf-shlibs \ --disable-libblkid \ --disable-libuuid \ --disable-uuidd \ --disable-fsck make make DESTDIR=/tmp/e2fsprogs-1.41.12 install make DESTDIR=/tmp/e2fsprogs-1.41.12 install-libs strip -R .note -R .comment /tmp/e2fsprogs-1.41.12/{sbin/*,usr/sbin/*,usr/bin/*,lib/*.so.*} # 2010-12-16: -> e2fsprogs-1.41.13 This is a new build with libblkid, libuuid, uuidd and fsck, because the old version could not format a logical lvm volume: cd /usr/src/e2fsprogs-1.41.13 mkdir -p build cd build export CFLAGS='-O2 -march=i486' export CXXFLAGS="${CFLAGS}" ../configure --prefix=/usr \ --build=i486-pc-linux-gnu \ --host=i486-pc-linux-gnu \ --with-root-prefix="" \ --enable-elf-shlibs make make DESTDIR=/tmp/e2fsprogs-1.41.13 install make DESTDIR=/tmp/e2fsprogs-1.41.13 install-libs strip -R .note -R .comment /tmp/e2fsprogs-1.41.13/{sbin/*,usr/sbin/*,usr/bin/*,lib/*.so.*} Muss _vor_ util-linux-ng gebaut werden, da einige Programme gegen die Libs der e2fsprogs gelinkt werden. # 2011-02-03 -> e2fsprogs-1.41.14 gebaut ohne TLS support export CFLAGS='-O2 -march=i486' export CXXFLAGS="${CFLAGS}" mkdir -v build cd build ../configure \ --prefix=/usr \ --with-root-prefix="" \ --enable-elf-shlibs \ --disable-tls \ --build=i486-pc-linux-gnu \ --host=i486-pc-linux-gnu make make check make DESTDIR=/public/e2fsprogs_41_14 install make DESTDIR=/public/e2fsprogs_41_14 install-libs # strip files/binarys for filename in `find /public/e2fsprogs_41_14/{lib/*.so.*,sbin/*,usr/{bin/*.so.*,sbin/*}} -type f` do echo $filename strip -R .note -R .comment "$filename" done # 2012-02-01 -> e2fsprogs-1.42 # 2012-05-27 -> e2fsprogs-1.42.3 # 2012-08-15 -> e2fsprogs-1.42.5 -> 125 tests succeeded 0 tests failed gebaut ohne TLS support export CFLAGS='-O2 -march=i486' export CXXFLAGS="${CFLAGS}" mkdir -v build && cd build ../configure \ --prefix=/usr \ --with-root-prefix="" \ --enable-elf-shlibs \ --disable-tls \ --disable-defrag \ --build=i486-pc-linux-gnu \ --host=i486-pc-linux-gnu # 2013-01-02 -> e2fsprogs-1.42.6 LibC-2.8 # -> 125 tests succeeded 0 tests failed # 2013-07-19 -> e2fsprogs-1.42.8 LibC-2.11.3 # -> 132 tests succeeded 3 tests failed # Tests failed: f_extent_oobounds r_64bit_big_expand r_ext4_big_expand ## ## http://svnweb.freebsd.org/ports/head/sysutils/e2fsprogs/Makefile?view=markup&pathrev=321911 # Disable 2TB r_*_big_expand tests due # to their space requirements, reenable m_bigjournal, and also skip # f_extent_oobounds which breaks inside Tinderbox but is fine outside. ## # 2013-07-29 -> e2fsprogs-1.42.8 rebuild with ld-2.22 # 2014-08-16 -> e2fsprogs-1.42.11 # build with rpm Suse 13.1 # e2fsprogs-1.42.11-63.1.src.rpm # 2014-11-05 -> e2fsprogs-1.42.12 # build with rpm Suse 13.1 # e2fsprogs-1.42.12-66.1.src.rpm # 2015-11-15 -> e2fsprogs-1.42.13 # build withn rpm Suse # e2fsprogs-1.42.13-70.2.src.rpm # hbfl # 2017-10-09 -> e2fsprogs-1.43.6 # build with rpm Suse # e2fsprogs-1.43.6-93.1.src.rpm # hbfl # 2019-05-31 -> e2fsprogs-1.45.1 # build with rpm Suse # e2fsprogs-1.45.1-1.1.src.rpm # hbfl # 2020-03-08 -> e2fsprogs-1.45.5 # build with rpm Suse # e2fsprogs-1.45.5-1.2.src.rpm # hbfl # 2020-04-07 -> e2fsprogs-1.45.5 # rebuild with rpm Suse -> gcc-9.2.1 -> glibc-2.31 # e2fsprogs-1.45.5-1.4.src.rpm # hbfl # 2021-06-06 -> e2fsprogs-1.46.2 # build with rpm Suse -> gcc-10 -> glibc-2.33 # e2fsprogs-1.46.2-3.3.src.rpm # hbfl # 2023-04-20 -> e2fsprogs-1.46.5 # build with rpm Suse -> gcc-12 -> glibc-2.37 # e2fsprogs-1.46.5-4.2.src.rpm # hbfl # 2024-07-16 -> e2fsprogs-1.47.0 # build with rpm Suse # e2fsprogs-1.47.0-4.2.src.rpm # hbfl # 2025-03-18 -> e2fsprogs-1.47.2 # build with rpm Suse -> gcc-14 -> glibc-2.41 # e2fsprogs-1.47.2-1.1.src.rpm # /etc/e2fsck.conf !!!entfernen zum pruefen der inodes find /usr/sbin -links +1 ! -type d -print0 | xargs -0 ls -i | sort -n !!!!! util-linux muss zuerst gebaut werden !!!!!!!! export CFLAGS='-O2 -march=i486' export CXXFLAGS="${CFLAGS}" mkdir -v build20 && cd build20 ../configure \ --prefix=/usr \ --with-root-prefix="" \ --enable-elf-shlibs \ --disable-libblkid \ --disable-libuuid \ --disable-uuidd \ --disable-fsck \ --build=i486-pc-linux-gnu \ --host=i486-pc-linux-gnu make #Guarantee that tranlations match the source messages make -C po update-po make check make DESTDIR=/public/utils/e2fsprogs/1.42.8 install make DESTDIR=/public/utils/e2fsprogs/1.42.8 install-libs # strip files/binarys for filename in `find /public/utils/e2fsprogs/1.42.8/{lib/*.so.*,sbin/*,usr/{bin/*,sbin/*}} -type f` do echo $filename strip -R .note -R .comment "$filename" done #--------------------------------------------------------------------------- create folder Um die Folder im Hauptverszeichnis zu erstellen gibt es das Script 'e2fsprogs-folder.sh' unter e2fsprogs/_ADMIN/ mit e2fsprogs-folder.sh -v 1.40.2 -w create wird die folder Struktur fuer die lib Version 1.40.2 erstellt nun koennen die files aus dem compilat eingefuegt werden. mit e2fsprogs-folder.sh -v 1.40.2 -w add wird ein svn add auf die erzeugten Folder durchgefuehrt. mit e2fsprogs-folder.sh -v 1.40.2 -w list wird fuer jeden Folder die files-list.txt erzeugt, add muss zwingend vorher ausgefuehrt worden sein mit e2fsprogs-folder.sh -v 1.40.2 -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] e2fsprogs e2fsprogs-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.