Add support for compat mode
Build zlib-ng twice in order to distribute the compat sub-packages that can fully replace zlib (zlib-ng-compat and zlib-ng-compat-devel). Run ABI tests provided by upstream during %check. Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@redhat.com>
This commit is contained in:
parent
8057d05982
commit
245d095d95
12
far.diff
Normal file
12
far.diff
Normal file
@ -0,0 +1,12 @@
|
||||
diff --git a/zconf.h.in b/zconf.h.in
|
||||
index 074f0255..e7183db3 100644
|
||||
--- a/zconf.h.in
|
||||
+++ b/zconf.h.in
|
||||
@@ -200,4 +200,7 @@ typedef PTRDIFF_TYPE ptrdiff_t;
|
||||
|
||||
typedef size_t z_size_t;
|
||||
|
||||
+/* Some packages depend on FAR being defined, i.e. old versions of minizip. */
|
||||
+#define FAR
|
||||
+
|
||||
#endif /* ZCONF_H */
|
165
zlib-ng.spec
165
zlib-ng.spec
@ -1,18 +1,36 @@
|
||||
%bcond_without compat
|
||||
%bcond_without sanitizers
|
||||
|
||||
# Be explicit about the soname in order to avoid unintentional changes.
|
||||
# Before modifying any of the sonames, this must be announced to the Fedora
|
||||
# community as it may break many other packages.
|
||||
# A change proposal is needed:
|
||||
# https://docs.fedoraproject.org/en-US/program_management/changes_policy/
|
||||
%global soname libz-ng.so.2
|
||||
%global compat_soname libz.so.1
|
||||
|
||||
# Compatible with the following zlib version.
|
||||
%global zlib_ver 1.2.13
|
||||
# Obsoletes zlib versions less than.
|
||||
%global zlib_obsoletes 1.3
|
||||
|
||||
# ABI files for ix86 and s390x are not available upstream.
|
||||
%global supported_abi_test aarch64 ppc64le x86_64
|
||||
|
||||
Name: zlib-ng
|
||||
Version: 2.1.3
|
||||
Release: 2%{?dist}
|
||||
Release: 7%{?dist}
|
||||
Summary: Zlib replacement with optimizations
|
||||
License: zlib
|
||||
Url: https://github.com/zlib-ng/zlib-ng
|
||||
Source0: https://github.com/zlib-ng/zlib-ng/archive/%{version}/%{name}-%{version}.tar.gz
|
||||
|
||||
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
|
||||
Patch: far.diff
|
||||
|
||||
BuildRequires: cmake >= 3.1
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: cmake(GTest)
|
||||
BuildRequires: libabigail
|
||||
|
||||
%description
|
||||
zlib-ng is a zlib replacement that provides optimizations for "next generation"
|
||||
@ -23,23 +41,128 @@ Summary: Development files for %{name}
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
The %{name}-devel package contains static libraries and header files for
|
||||
developing application that use %{name}.
|
||||
The %{name}-devel package contains libraries and header files for developing
|
||||
application that use %{name}.
|
||||
|
||||
%if %{with compat}
|
||||
|
||||
%package compat
|
||||
Summary: Zlib implementation provided by %{name}
|
||||
Provides: zlib = %{zlib_ver}
|
||||
Provides: zlib%{?_isa} = %{zlib_ver}
|
||||
Conflicts: zlib%{?_isa}
|
||||
Obsoletes: zlib < %{zlib_obsoletes}
|
||||
|
||||
%description compat
|
||||
zlib-ng is a zlib replacement that provides optimizations for "next generation"
|
||||
systems.
|
||||
The %{name}-compat package contains the library that is API and binary
|
||||
compatible with zlib.
|
||||
|
||||
%package compat-devel
|
||||
Summary: Development files for %{name}-compat
|
||||
Requires: %{name}-compat%{?_isa} = %{version}-%{release}
|
||||
Provides: zlib-devel = %{zlib_ver}
|
||||
Provides: zlib-devel%{?_isa} = %{zlib_ver}
|
||||
Conflicts: zlib-devel%{?_isa}
|
||||
Obsoletes: zlib-devel < %{zlib_obsoletes}
|
||||
|
||||
%description compat-devel
|
||||
The %{name}-compat-devel package contains libraries and header files for
|
||||
developing application that use zlib.
|
||||
|
||||
%endif
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n %{name}-%{version}
|
||||
|
||||
%build
|
||||
cat <<_EOF_
|
||||
###########################################################################
|
||||
#
|
||||
# Build the default zlib-ng library
|
||||
#
|
||||
###########################################################################
|
||||
_EOF_
|
||||
|
||||
# zlib-ng uses a different macro for library directory.
|
||||
%cmake -DWITH_SANITIZERS=ON -DINSTALL_LIB_DIR=%{_libdir}
|
||||
%global cmake_param %{?with_sanitizers:-DWITH_SANITIZER=ON} -DINSTALL_LIB_DIR=%{_libdir}
|
||||
|
||||
# Setting __cmake_builddir is not necessary in this step, but do it anyway for symmetry.
|
||||
%global __cmake_builddir %{_vpath_builddir}
|
||||
%cmake %{cmake_param}
|
||||
%cmake_build
|
||||
|
||||
%if %{with compat}
|
||||
cat <<_EOF_
|
||||
###########################################################################
|
||||
#
|
||||
# Build the compat mode library
|
||||
#
|
||||
###########################################################################
|
||||
_EOF_
|
||||
|
||||
%global __cmake_builddir %{_vpath_builddir}-compat
|
||||
# Disable new strategies in order to keep compatibility with zlib.
|
||||
%cmake %{cmake_param} -DZLIB_COMPAT=ON -DWITH_NEW_STRATEGIES=OFF
|
||||
%cmake_build
|
||||
%endif
|
||||
|
||||
%check
|
||||
cat <<_EOF_
|
||||
###########################################################################
|
||||
#
|
||||
# Run the zlib-ng tests
|
||||
#
|
||||
###########################################################################
|
||||
_EOF_
|
||||
|
||||
%global __cmake_builddir %{_vpath_builddir}
|
||||
%ctest
|
||||
|
||||
%ifarch ppc64le
|
||||
# Workaround Copr, that sets _target_cpu to ppc64le.
|
||||
%global target_cpu powerpc64le
|
||||
%else
|
||||
%global target_cpu %{_target_cpu}
|
||||
%endif
|
||||
|
||||
%ifarch x86_64
|
||||
%global vendor pc
|
||||
%else
|
||||
%global vendor unknown
|
||||
%endif
|
||||
|
||||
%ifarch %{supported_abi_test}
|
||||
CHOST=%{target_cpu}-%{vendor}-linux-gnu sh test/abicheck.sh
|
||||
%endif
|
||||
|
||||
%if %{with compat}
|
||||
cat <<_EOF_
|
||||
###########################################################################
|
||||
#
|
||||
# Run the compat mode tests
|
||||
#
|
||||
###########################################################################
|
||||
_EOF_
|
||||
|
||||
%global __cmake_builddir %{_vpath_builddir}-compat
|
||||
%ctest
|
||||
%ifarch %{supported_abi_test}
|
||||
CHOST=%{target_cpu}-%{vendor}-linux-gnu sh test/abicheck.sh --zlib-compat
|
||||
%endif
|
||||
%endif
|
||||
|
||||
|
||||
%install
|
||||
%global __cmake_builddir %{_vpath_builddir}
|
||||
%cmake_install
|
||||
|
||||
%if %{with compat}
|
||||
%global __cmake_builddir %{_vpath_builddir}-compat
|
||||
%cmake_install
|
||||
%endif
|
||||
|
||||
%files
|
||||
%license LICENSE.md
|
||||
%doc README.md
|
||||
@ -53,7 +176,39 @@ developing application that use %{name}.
|
||||
%{_libdir}/libz-ng.so
|
||||
%{_libdir}/pkgconfig/%{name}.pc
|
||||
|
||||
%if %{with compat}
|
||||
|
||||
%files compat
|
||||
%{_libdir}/%{compat_soname}
|
||||
%{_libdir}/libz.so.%{zlib_ver}.zlib-ng
|
||||
|
||||
%files compat-devel
|
||||
%{_includedir}/zconf.h
|
||||
%{_includedir}/zlib.h
|
||||
%{_includedir}/zlib_name_mangling.h
|
||||
%{_libdir}/libz.so
|
||||
%{_libdir}/pkgconfig/zlib.pc
|
||||
|
||||
|
||||
%endif
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Oct 18 2023 Tulio Magno Quites Machado Filho <tuliom@redhat.com> - 2.1.3-7
|
||||
- Improve the patch that defines the FAR macro
|
||||
|
||||
* Wed Sep 27 2023 Tulio Magno Quites Machado Filho <tuliom@redhat.com> - 2.1.3-6
|
||||
- Add a patch that defines the FAR macro
|
||||
|
||||
* Wed Sep 20 2023 Tulio Magno Quites Machado Filho <tuliom@redhat.com> - 2.1.3-5
|
||||
- Fix WITH_SANITIZER
|
||||
|
||||
* Tue Sep 19 2023 Tulio Magno Quites Machado Filho <tuliom@redhat.com> - 2.1.3-4
|
||||
- Disable WITH_NEW_STRATEGIES in compat mode
|
||||
|
||||
* Thu Aug 24 2023 Tulio Magno Quites Machado Filho <tuliom@redhat.com> - 2.1.3-3
|
||||
- Enable zlib compat build
|
||||
|
||||
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.3-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user