%global libname solv %bcond_without python_bindings %bcond_without perl_bindings %bcond_without ruby_bindings # Creates special prefixed pseudo-packages from appdata metadata %bcond_without appdata # Creates special prefixed "group:", "category:" pseudo-packages %bcond_without comps %bcond_without conda # For rich dependencies %bcond_without complex_deps %bcond_without helix_repo %bcond_without suse_repo %bcond_without debian_repo %bcond_without arch_repo # For handling deb + rpm at the same time %bcond_without multi_semantics %if %{defined rhel} %bcond_with zchunk %else %bcond_without zchunk %endif %bcond_without zstd %define __cmake_switch(b:) %[%{expand:%%{?with_%{-b*}}} ? "ON" : "OFF"] Name: lib%{libname} Version: 0.7.29 Release: 7%{?dist}.alma.1 Summary: Package dependency solver License: BSD-3-Clause URL: https://github.com/openSUSE/libsolv Source: %{url}/archive/%{version}/%{name}-%{version}.tar.gz # Downstream-only, RHEL-41048 Patch0: 0001-Add-support-for-computing-hashes-using-OpenSSL.patch # AlmaLinux patches Patch1000: 0001-Set-x86_64-arch-as-exchangeable-to-x86_64_v2.patch BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: ninja-build BuildRequires: pkgconfig(rpm) BuildRequires: zlib-devel # -DWITH_LIBXML2=ON BuildRequires: libxml2-devel # -DWITH_OPENSSL=ON BuildRequires: pkgconfig(openssl) # -DENABLE_LZMA_COMPRESSION=ON BuildRequires: xz-devel # -DENABLE_BZIP2_COMPRESSION=ON BuildRequires: bzip2-devel %if %{with zstd} # -DENABLE_ZSTD_COMPRESSION=ON BuildRequires: libzstd-devel %endif %if %{with zchunk} # -DENABLE_ZCHUNK_COMPRESSION=ON BuildRequires: pkgconfig(zck) %endif %description A free package dependency solver using a satisfiability algorithm. The library is based on two major, but independent, blocks: - Using a dictionary approach to store and retrieve package and dependency information. - Using satisfiability, a well known and researched topic, for resolving package dependencies. %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: rpm-devel%{?_isa} %description devel Development files for %{name}. %package tools-base Summary: Utilities used by libzypp to manage .solv files Requires: %{name}%{?_isa} = %{version}-%{release} Provides: libsolv-tools:%{_bindir}/repo2solv %description tools-base This subpackage contains utilities used by libzypp to manage solv files. %package tools Summary: Package dependency solver tools Requires: %{name}%{?_isa} = %{version}-%{release} # repo2solv dependencies. Used as execl() Requires: /usr/bin/find Requires: libsolv-tools-base = %{version}-%{release} %description tools Package dependency solver tools. %package demo Summary: Applications demoing the %{name} library Requires: %{name}%{?_isa} = %{version}-%{release} # solv dependencies. Used as execlp() and system() Requires: /usr/bin/curl Requires: /usr/bin/gpg2 %description demo Applications demoing the %{name} library. %if %{with perl_bindings} %package -n perl-%{libname} Summary: Perl bindings for the %{name} library BuildRequires: swig BuildRequires: perl-devel BuildRequires: perl-generators Requires: %{name}%{?_isa} = %{version}-%{release} %description -n perl-%{libname} Perl bindings for the %{name} library. %endif %if %{with ruby_bindings} %package -n ruby-%{libname} Summary: Ruby bindings for the %{name} library BuildRequires: swig BuildRequires: ruby-devel Requires: %{name}%{?_isa} = %{version}-%{release} %description -n ruby-%{libname} Ruby bindings for the %{name} library. %endif %if %{with python_bindings} %package -n python3-%{libname} Summary: Python bindings for the %{name} library %{?python_provide:%python_provide python3-%{libname}} BuildRequires: swig BuildRequires: python3-devel Requires: %{name}%{?_isa} = %{version}-%{release} %description -n python3-%{libname} Python bindings for the %{name} library. Python 3 version. %endif %prep %autosetup -p1 # Prune unbundled cryptography sources, RHEL-41048. rm src/{md5,sha1,sha2}.{c,h} %build %cmake -GNinja \ -DFEDORA=1 \ -DENABLE_RPMDB=ON \ -DENABLE_RPMDB_BYRPMHEADER=ON \ -DENABLE_RPMDB_LIBRPM=ON \ -DENABLE_RPMPKG_LIBRPM=ON \ -DENABLE_RPMMD=ON \ -DENABLE_COMPS=%{__cmake_switch -b comps} \ -DENABLE_APPDATA=%{__cmake_switch -b appdata} \ -DUSE_VENDORDIRS=ON \ -DWITH_LIBXML2=ON \ -DWITH_OPENSSL=ON \ -DENABLE_LZMA_COMPRESSION=ON \ -DENABLE_BZIP2_COMPRESSION=ON \ -DENABLE_ZSTD_COMPRESSION=%{__cmake_switch -b zstd} \ -DENABLE_ZCHUNK_COMPRESSION=%{__cmake_switch -b zchunk} \ %if %{with zchunk} -DWITH_SYSTEM_ZCHUNK=ON \ %endif -DENABLE_HELIXREPO=%{__cmake_switch -b helix_repo} \ -DENABLE_SUSEREPO=%{__cmake_switch -b suse_repo} \ -DENABLE_DEBIAN=%{__cmake_switch -b debian_repo} \ -DENABLE_ARCHREPO=%{__cmake_switch -b arch_repo} \ -DMULTI_SEMANTICS=%{__cmake_switch -b multi_semantics} \ -DENABLE_COMPLEX_DEPS=%{__cmake_switch -b complex_deps} \ -DENABLE_CONDA=%{__cmake_switch -b conda} \ -DENABLE_PERL=%{__cmake_switch -b perl_bindings} \ -DENABLE_RUBY=%{__cmake_switch -b ruby_bindings} \ -DENABLE_PYTHON=%{__cmake_switch -b python_bindings} \ %if %{with python_bindings} -DPYTHON_EXECUTABLE=%{python3} \ %endif %{nil} %cmake_build %install %cmake_install %check %ctest # Python smoke test (not tested in %%ctest): export PYTHONPATH=%{buildroot}%{python3_sitearch} export LD_LIBRARY_PATH=%{buildroot}%{_libdir} %python3 -c 'import solv' %files %license LICENSE* %doc README %{_libdir}/%{name}.so.* %{_libdir}/%{name}ext.so.* %files devel %{_libdir}/%{name}.so %{_libdir}/%{name}ext.so %{_includedir}/%{libname}/ %{_libdir}/pkgconfig/%{name}.pc %{_libdir}/pkgconfig/%{name}ext.pc # Own directory because we don't want to depend on cmake %dir %{_datadir}/cmake/Modules/ %{_datadir}/cmake/Modules/FindLibSolv.cmake %{_mandir}/man3/%{name}*.3* # Some small macro to list tools with mans %global solv_tool() \ %{_bindir}/%{1}\ %{_mandir}/man1/%{1}.1* %files tools-base %solv_tool repo2solv %solv_tool rpmdb2solv %files tools %solv_tool deltainfoxml2solv %solv_tool dumpsolv %solv_tool installcheck %solv_tool mergesolv %solv_tool repomdxml2solv %solv_tool rpmmd2solv %solv_tool rpms2solv %solv_tool testsolv %solv_tool updateinfoxml2solv %if %{with comps} %solv_tool comps2solv %endif %if %{with appdata} %solv_tool appdata2solv %endif %if %{with debian_repo} %solv_tool deb2solv %endif %if %{with arch_repo} %solv_tool archpkgs2solv %solv_tool archrepo2solv %endif %if %{with helix_repo} %solv_tool helix2solv %endif %if %{with suse_repo} %solv_tool susetags2solv %endif %if %{with conda} %{_bindir}/conda2solv %endif %files demo %solv_tool solv %if %{with perl_bindings} %files -n perl-%{libname} %{perl_vendorarch}/%{libname}.pm %{perl_vendorarch}/%{libname}.so %endif %if %{with ruby_bindings} %files -n ruby-%{libname} %{ruby_vendorarchdir}/%{libname}.so %endif %if %{with python_bindings} %files -n python3-%{libname} %{python3_sitearch}/_%{libname}.so %{python3_sitearch}/%{libname}.py %{python3_sitearch}/__pycache__/%{libname}.* %endif %changelog * Fri Sep 06 2024 Eduard Abdullin - 0.7.29-7.alma.1 - Set x86_64 arch as exchangeable to x86_64_v2 * Thu Aug 08 2024 Troy Dawson - 0.7.29-7 - Bump release for Aug 2024 perl mass rebuild * Tue Jul 09 2024 Petr Písař - 0.7.29-6 - Use digest functions from OpenSSL * Mon Jun 24 2024 Troy Dawson - 0.7.29-5 - Bump release for June 2024 mass rebuild * Fri May 31 2024 Petr Písař - 0.7.29-4 - Stricten dependencies between libsolv subpackages (RHEL-38831) * Fri May 31 2024 Petr Písař - 0.7.29-2 - Configure gating * Thu May 30 2024 Petr Písař - 0.7.29-1 - Update to 0.7.29 (RHEL-32212) * Fri Feb 09 2024 Jan Kolarik - 0.7.28-1 - Update to 0.7.28 * Thu Jan 25 2024 Fedora Release Engineering - 0.7.27-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Sun Jan 21 2024 Fedora Release Engineering - 0.7.27-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Wed Jan 03 2024 Vít Ondruch - 0.7.27-2 - Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_3.3 * Tue Dec 05 2023 Jan Kolarik - 0.7.27-1 - Update to 0.7.27 * Tue Oct 03 2023 Jan Kolarik - 0.7.25-1 - Update to 0.7.25 * Mon Aug 28 2023 Yaakov Selkowitz - 0.7.24-9 - Disable zchunk in RHEL builds * Fri Jul 21 2023 Neal Gompa - 0.7.24-8 - Backport fix to lower memory usage of updateinfo processing (rhbz#2214520) * Thu Jul 20 2023 Fedora Release Engineering - 0.7.24-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Tue Jul 11 2023 Jitka Plesnikova - 0.7.24-6 - Perl 5.38 rebuild * Thu Jun 15 2023 Python Maint - 0.7.24-5 - Rebuilt for Python 3.12 * Wed May 17 2023 Jan Kolarik - 0.7.24-4 - Rebuild for rpm-4.18.90-4 * Tue May 16 2023 Jan Kolarik - 0.7.24-3 - Rebuild for rpm-4.18.90 * Mon May 15 2023 Igor Raits - 0.7.24-2 - Upload sources * Mon May 15 2023 Igor Raits - 0.7.24-1 - Update to 0.7.24 * Thu Jan 19 2023 Fedora Release Engineering - 0.7.22-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild