%global libsolv_version 0.7.21 %global libmodulemd_version 2.13.0 %global librepo_version 1.18.0 %global dnf_conflict 4.11.0 %global swig_version 3.0.12 %global libdnf_major_version 0 %global libdnf_minor_version 73 %global libdnf_micro_version 4 %define __cmake_in_source_build 1 # set sphinx package name according to distro %global requires_python2_sphinx python2-sphinx %global requires_python3_sphinx python3-sphinx %if 0%{?rhel} == 7 %global requires_python2_sphinx python-sphinx %endif %if 0%{?suse_version} %global requires_python2_sphinx python2-Sphinx %global requires_python3_sphinx python3-Sphinx %endif %bcond_with valgrind # Do not build bindings for python3 for RHEL <= 7 %if 0%{?rhel} && 0%{?rhel} <= 7 %bcond_with python3 %else %bcond_without python3 %endif %if 0%{?rhel} > 7 || 0%{?fedora} > 29 # Disable python2 build by default %bcond_with python2 %else %bcond_without python2 %endif %if 0%{?rhel} && ! 0%{?centos} %bcond_without rhsm %else %bcond_with rhsm %endif %if 0%{?rhel} %bcond_with zchunk %else %bcond_without zchunk %endif %bcond_with sanitizers %global _cmake_opts \\\ -DENABLE_RHSM_SUPPORT=%{?with_rhsm:ON}%{!?with_rhsm:OFF} \\\ %{nil} Name: libdnf Version: 0.73.4 Release: 20241215011412.1.gf3302a86%{?dist} Summary: Library providing simplified C and Python API to libsolv License: LGPL-2.1-or-later URL: https://github.com/rpm-software-management/libdnf Source0: libdnf-0.73.4-20241215011412.1.gf3302a86.tar.xz BuildRequires: cmake BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: libsolv-devel >= %{libsolv_version} BuildRequires: pkgconfig(librepo) >= %{librepo_version} BuildRequires: pkgconfig(check) %if %{with valgrind} BuildRequires: valgrind %endif BuildRequires: pkgconfig(gio-unix-2.0) >= 2.46.0 BuildRequires: pkgconfig(gtk-doc) BuildRequires: rpm-devel >= 4.15.0 %if %{with rhsm} BuildRequires: pkgconfig(librhsm) >= 0.0.3 %endif %if %{with zchunk} BuildRequires: pkgconfig(zck) >= 0.9.11 %endif BuildRequires: pkgconfig(sqlite3) BuildRequires: pkgconfig(json-c) BuildRequires: pkgconfig(cppunit) BuildRequires: pkgconfig(modulemd-2.0) >= %{libmodulemd_version} BuildRequires: pkgconfig(smartcols) BuildRequires: gettext %if %{with sanitizers} BuildRequires: libasan BuildRequires: liblsan BuildRequires: libubsan %endif Requires: libmodulemd%{?_isa} >= %{libmodulemd_version} Requires: libsolv%{?_isa} >= %{libsolv_version} Requires: librepo%{?_isa} >= %{librepo_version} %if %{without python2} # Obsoleted from here so we can track the fast growing version easily. # We intentionally only obsolete and not provide, this is a broken upgrade # prevention, not providing the removed functionality. Obsoletes: python2-%{name} < %{version}-%{release} Obsoletes: python2-hawkey < %{version}-%{release} Obsoletes: python2-hawkey-debuginfo < %{version}-%{release} Obsoletes: python2-libdnf-debuginfo < %{version}-%{release} %endif %description A Library providing simplified C and Python API to libsolv. %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: libsolv-devel%{?_isa} >= %{libsolv_version} %description devel Development files for %{name}. %if %{with python2} %package -n python2-%{name} %{?python_provide:%python_provide python2-%{name}} Summary: Python 2 bindings for the libdnf library. Requires: %{name}%{?_isa} = %{version}-%{release} BuildRequires: python2-devel %if !0%{?mageia} BuildRequires: %{requires_python2_sphinx} %endif %if 0%{?rhel} == 7 BuildRequires: swig3 >= %{swig_version} %else BuildRequires: swig >= %{swig_version} %endif %description -n python2-%{name} Python 2 bindings for the libdnf library. %endif # endif with python2 %if %{with python3} %package -n python3-%{name} %{?python_provide:%python_provide python3-%{name}} Summary: Python 3 bindings for the libdnf library. Requires: %{name}%{?_isa} = %{version}-%{release} BuildRequires: python3-devel BuildRequires: %{requires_python3_sphinx} BuildRequires: swig >= %{swig_version} %description -n python3-%{name} Python 3 bindings for the libdnf library. %endif %if %{with python2} %package -n python2-hawkey Summary: Python 2 bindings for the hawkey library %{?python_provide:%python_provide python2-hawkey} BuildRequires: python2-devel Requires: %{name}%{?_isa} = %{version}-%{release} Requires: python2-%{name} = %{version}-%{release} # Fix problem with hawkey - dnf version incompatibility # Can be deleted for distros where only python2-dnf >= 2.0.0 Conflicts: python2-dnf < %{dnf_conflict} Conflicts: python-dnf < %{dnf_conflict} %description -n python2-hawkey Python 2 bindings for the hawkey library. %endif # endif with python2 %if %{with python3} %package -n python3-hawkey Summary: Python 3 bindings for the hawkey library %{?python_provide:%python_provide python3-hawkey} BuildRequires: python3-devel Requires: %{name}%{?_isa} = %{version}-%{release} Requires: python3-%{name} = %{version}-%{release} # Fix problem with hawkey - dnf version incompatibility # Can be deleted for distros where only python3-dnf >= 2.0.0 Conflicts: python3-dnf < %{dnf_conflict} # Obsoletes F27 packages Obsoletes: platform-python-hawkey < %{version}-%{release} %description -n python3-hawkey Python 3 bindings for the hawkey library. %endif %prep %autosetup -n libdnf-0.73.4-20241215011412.1.gf3302a86 %if %{with python2} mkdir build-py2 %endif %if %{with python3} mkdir build-py3 %endif %build %if %{with python2} pushd build-py2 %if 0%{?mageia} || 0%{?suse_version} cd .. %define _cmake_builddir build-py2 %define __builddir build-py2 %endif %cmake -DPYTHON_DESIRED:FILEPATH=%{__python2} -DWITH_MAN=OFF ../ %{!?with_zchunk:-DWITH_ZCHUNK=OFF} %{!?with_valgrind:-DDISABLE_VALGRIND=1} %{_cmake_opts} -DLIBDNF_MAJOR_VERSION=%{libdnf_major_version} -DLIBDNF_MINOR_VERSION=%{libdnf_minor_version} -DLIBDNF_MICRO_VERSION=%{libdnf_micro_version} \ -DWITH_SANITIZERS=%{?with_sanitizers:ON}%{!?with_sanitizers:OFF} %make_build popd %endif # endif with python2 %if %{with python3} pushd build-py3 %if 0%{?mageia} || 0%{?suse_version} cd .. %define _cmake_builddir build-py3 %define __builddir build-py3 %endif %cmake -DPYTHON_DESIRED:FILEPATH=%{__python3} -DWITH_GIR=0 -DWITH_MAN=0 -Dgtkdoc=0 ../ %{!?with_zchunk:-DWITH_ZCHUNK=OFF} %{!?with_valgrind:-DDISABLE_VALGRIND=1} %{_cmake_opts} -DLIBDNF_MAJOR_VERSION=%{libdnf_major_version} -DLIBDNF_MINOR_VERSION=%{libdnf_minor_version} -DLIBDNF_MICRO_VERSION=%{libdnf_micro_version} \ -DWITH_SANITIZERS=%{?with_sanitizers:ON}%{!?with_sanitizers:OFF} %make_build popd %endif %check %if %{with python2} pushd build-py2 make ARGS="-V" test popd %endif %if %{with python3} # If we didn't run the general tests yet, do it now. %if %{without python2} pushd build-py3 make ARGS="-V" test popd %else # Otherwise, run just the Python tests, not all of # them, since we have coverage of the core from the # first build pushd build-py3/python/hawkey/tests make ARGS="-V" test popd %endif %endif %install %if %{with python2} pushd build-py2 %make_install popd %endif %if %{with python3} pushd build-py3 %make_install popd %endif %find_lang %{name} %if (0%{?rhel} && 0%{?rhel} <= 7) || 0%{?suse_version} %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %else %ldconfig_scriptlets %endif %files -f %{name}.lang %license COPYING %doc README.md AUTHORS %{_libdir}/%{name}.so.* %dir %{_libdir}/libdnf/ %dir %{_libdir}/libdnf/plugins/ %{_libdir}/libdnf/plugins/README %if %{with sanitizers} %{_sysconfdir}/profile.d/dnf-sanitizers.sh %endif %files devel %doc %{_datadir}/gtk-doc/html/%{name}/ %{_libdir}/%{name}.so %{_libdir}/pkgconfig/%{name}.pc %{_includedir}/%{name}/ %if %{with python2} %files -n python2-%{name} %{python2_sitearch}/%{name}/ %endif %if %{with python3} %files -n python3-%{name} %{python3_sitearch}/%{name}-*.dist-info %{python3_sitearch}/%{name}/ %endif %if %{with python2} %files -n python2-hawkey %{python2_sitearch}/hawkey/ %endif %if %{with python3} %files -n python3-hawkey %{python3_sitearch}/hawkey/ %endif %changelog * Tue Dec 10 2024 rpm-gitoverlay - 0.73.4-20241215011412.1.gf3302a86 - [f3302a86] Fix a segfault in iterator of a ConfigParser section (Miro HronĨok)