]> git.ipfire.org Git - people/ms/ipfire-2.x.git/commitdiff
zlib-ng: Migrate to zlib-ng
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 3 Jan 2025 10:39:28 +0000 (10:39 +0000)
committerArne Fitzenreiter <arne_f@ipfire.org>
Wed, 8 Jan 2025 19:15:25 +0000 (20:15 +0100)
This is a new and improved version of zlib that merges various fixes and
optimizations from various contributors.

Amonst those are taking advantage of AVX and instruction sets if they
are available.

This patch adds the new API and a compat library that is a drop-in
replacement for the legacy version of zlib.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
config/rootfiles/common/zlib [deleted file]
config/rootfiles/common/zlib-ng [new file with mode: 0644]
lfs/zlib-ng [moved from lfs/zlib with 80% similarity]
make.sh

diff --git a/config/rootfiles/common/zlib b/config/rootfiles/common/zlib
deleted file mode 100644 (file)
index ae2bd9e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-lib/libz.so
-lib/libz.so.1
-lib/libz.so.1.3.1
-#usr/include/zconf.h
-#usr/include/zlib.h
-#usr/lib/libz.a
-#usr/lib/pkgconfig
-#usr/lib/pkgconfig/zlib.pc
-#usr/share/man/man3/zlib.3
diff --git a/config/rootfiles/common/zlib-ng b/config/rootfiles/common/zlib-ng
new file mode 100644 (file)
index 0000000..0e6cf18
--- /dev/null
@@ -0,0 +1,17 @@
+#usr/include/zconf-ng.h
+#usr/include/zconf.h
+#usr/include/zlib-ng.h
+#usr/include/zlib.h
+#usr/include/zlib_name_mangling-ng.h
+#usr/include/zlib_name_mangling.h
+#usr/lib/libz-ng.a
+#usr/lib/libz-ng.so
+usr/lib/libz-ng.so.2
+usr/lib/libz-ng.so.2.2.3
+#usr/lib/libz.a
+#usr/lib/libz.so
+usr/lib/libz.so.1
+usr/lib/libz.so.1.3.1.zlib-ng
+#usr/lib/pkgconfig
+#usr/lib/pkgconfig/zlib-ng.pc
+#usr/lib/pkgconfig/zlib.pc
similarity index 80%
rename from lfs/zlib
rename to lfs/zlib-ng
index d7c723914452526e00cb1955abeedeaef3dd42c8..5310c60517dac45e36e0ade3115a636d7a437496 100644 (file)
--- a/lfs/zlib
 
 include Config
 
-VER        = 1.3.1
+VER        = 2.2.3
 
-THISAPP    = zlib-$(VER)
-DL_FILE    = $(THISAPP).tar.xz
+THISAPP    = zlib-ng-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 
 ifeq "$(TOOLCHAIN)" "1"
   TARGET = $(DIR_INFO)/$(THISAPP)-tools
-  CROSS_PREFIX = $(CROSSTARGET)-
 else
   TARGET = $(DIR_INFO)/$(THISAPP)
 endif
 
-CFLAGS    += -fPIC -DPIC
-
 ###############################################################################
 # Top-level Rules
 ###############################################################################
+
 objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 42d109223801a493de6d52e7343403d7fc3234a6ca816425fe41ac9c18019b01b93841acd28a235e99f2256a6a17f93624e96b2ddb58d588c8190a6bedb82910
+$(DL_FILE)_BLAKE2 = 65cd976d559dcc31f34861a01b2eb0ce0439dd6412553a5a9842d2d937d4a0d1194aec98f478f5def4a0401e65a7c97b6843122bae49a35f96c7e2c59e79cc64
 
 install : $(TARGET)
 
@@ -77,18 +75,24 @@ $(subst %,%_BLAKE2,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-       
-       cd $(DIR_APP) && CROSS_PREFIX=$(CROSS_PREFIX) ./configure --prefix=$(PREFIX) --shared
-       cd $(DIR_APP) && make $(MAKETUNING)
-       cd $(DIR_APP) && make install
-
-ifneq "$(TOOLCHAIN)" "1"
-       mv -v /usr/lib/libz.so.$(VER) /lib/libz.so.$(VER)
-       ln -svf libz.so.$(VER) /lib/libz.so.1
-       ln -svf libz.so.$(VER) /lib/libz.so
-       rm -vf /usr/lib/libz.so.1
-       rm -vf /usr/lib/libz.so
-endif
+
+       # Build the regular version
+       cd $(DIR_APP) && mkdir -pv build
+       cd $(DIR_APP)/build && ../configure \
+               --prefix=$(PREFIX)
+       cd $(DIR_APP)/build && make $(MAKETUNING) VERBOSE=1
+
+       # Build the compat version
+       cd $(DIR_APP) && mkdir -pv compat
+       cd $(DIR_APP)/compat && ../configure \
+               --prefix=$(PREFIX) \
+               --zlib-compat \
+               --without-new-strategies
+       cd $(DIR_APP)/compat && make $(MAKETUNING) VERBOSE=1
+
+       # Install both versions
+       cd $(DIR_APP)/build  && make install
+       cd $(DIR_APP)/compat && make install
 
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/make.sh b/make.sh
index fbfc8af8601fc3770b143c380b284564b929eeaa..84b00f9ad27e53a296f79ac55054721e74831e0c 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -1363,7 +1363,7 @@ build_toolchain() {
        lfsmake1 glibc
        lfsmake1 libxcrypt
        lfsmake1 gcc                    PASS=L
-       lfsmake1 zlib
+       lfsmake1 zlib-ng
        lfsmake1 binutils                       PASS=2
        lfsmake1 gcc                    PASS=2
        lfsmake1 zstd
@@ -1408,7 +1408,7 @@ build_system() {
        lfsmake2 glibc
        lfsmake2 tzdata
        lfsmake2 cleanup-toolchain
-       lfsmake2 zlib
+       lfsmake2 zlib-ng
        [ "${BUILD_ARCH}" = "riscv64" ] && lfsmake2 gcc PASS=A
        lfsmake2 zstd
        lfsmake2 autoconf