1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
|
%global libmodulemd_version 2.3.0
%define __cmake_in_source_build 1
%global bash_completion %{_datadir}/bash-completion/completions/*
# Fedora infrastructure needs it for producing Fedora ≤ 39 and EPEL ≤ 7 repositories
# See https://github.com/rpm-software-management/createrepo_c/issues/398
%if ( 0%{?rhel} && ( 0%{?rhel} <= 7 || 0%{?rhel} >= 9 ) ) || ( 0%{?fedora} && 0%{?fedora} >= 45 )
%bcond_with drpm
%else
%bcond_without drpm
%endif
%if 0%{?rhel}
%bcond_with zchunk
%else
%bcond_without zchunk
%endif
%if 0%{?rhel} && 0%{?rhel} < 7
%bcond_with libmodulemd
%else
%bcond_without libmodulemd
%endif
%if 0%{?rhel} && 0%{?rhel} <= 8
%bcond_without legacy_hashes
%else
%bcond_with legacy_hashes
%endif
%bcond_with sanitizers
Summary: Creates a common metadata repository
Name: createrepo_c
Version: 1.2.0
Release: 1%{?dist}
License: GPL-2.0-or-later
URL: https://github.com/rpm-software-management/createrepo_c
Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz
%global epoch_dep %{?epoch:%{epoch}:}
BuildRequires: cmake
BuildRequires: gcc
BuildRequires: bzip2-devel
BuildRequires: doxygen
BuildRequires: glib2-devel >= 2.22.0
BuildRequires: libcurl-devel
BuildRequires: libxml2-devel
BuildRequires: openssl-devel
BuildRequires: rpm-devel >= 4.8.0-28
BuildRequires: sqlite-devel >= 3.6.18
BuildRequires: xz
BuildRequires: xz-devel
BuildRequires: zlib-devel
%if %{with zchunk}
BuildRequires: pkgconfig(zck) >= 0.9.11
BuildRequires: zchunk
%endif
%if %{with libmodulemd}
BuildRequires: pkgconfig(modulemd-2.0) >= %{libmodulemd_version}
%if 0%{?rhel} && 0%{?rhel} <= 7
BuildRequires: libmodulemd2
Requires: libmodulemd2%{?_isa} >= %{libmodulemd_version}
%else
BuildRequires: libmodulemd
Requires: libmodulemd%{?_isa} >= %{libmodulemd_version}
%endif
%endif
Requires: %{name}-libs = %{epoch_dep}%{version}-%{release}
%if 0%{?fedora} > 40 || 0%{?rhel} > 10
BuildRequires: bash-completion-devel
%else
BuildRequires: bash-completion
%endif
Requires: rpm >= 4.9.0
%if %{with drpm}
BuildRequires: drpm-devel >= 0.4.0
%endif
# dnf supports zstd since 8.4: https://bugzilla.redhat.com/show_bug.cgi?id=1914876
BuildRequires: pkgconfig(libzstd)
%if %{with sanitizers}
BuildRequires: libasan
BuildRequires: liblsan
BuildRequires: libubsan
%endif
%if 0%{?fedora} || 0%{?rhel} > 7
Obsoletes: createrepo < 0.11.0
Provides: createrepo = %{epoch_dep}%{version}-%{release}
%endif
%description
C implementation of Createrepo.
A set of utilities (createrepo_c, mergerepo_c, modifyrepo_c)
for generating a common metadata repository from a directory of
rpm packages and maintaining it.
%package libs
Summary: Library for repodata manipulation
%description libs
Libraries for applications using the createrepo_c library
for easy manipulation with a repodata.
%package devel
Summary: Library for repodata manipulation
Requires: %{name}-libs%{?_isa} = %{epoch_dep}%{version}-%{release}
%description devel
This package contains the createrepo_c C library and header files.
These development files are for easy manipulation with a repodata.
%package -n python3-%{name}
Summary: Python 3 bindings for the createrepo_c library
%{?python_provide:%python_provide python3-%{name}}
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-sphinx
Requires: %{name}-libs = %{epoch_dep}%{version}-%{release}
%description -n python3-%{name}
Python 3 bindings for the createrepo_c library.
%prep
%autosetup -p1
%py3_shebang_fix examples/python
mkdir build-py3
%build
# Build createrepo_c with Pyhon 3
pushd build-py3
%cmake .. \
-DWITH_ZCHUNK=%{?with_zchunk:ON}%{!?with_zchunk:OFF} \
-DWITH_LIBMODULEMD=%{?with_libmodulemd:ON}%{!?with_libmodulemd:OFF} \
-DWITH_LEGACY_HASHES=%{?with_legacy_hashes:ON}%{!?with_legacy_hashes:OFF} \
-DENABLE_DRPM=%{?with_drpm:ON}%{!?with_drpm:OFF} \
-DWITH_SANITIZERS=%{?with_sanitizers:ON}%{!?with_sanitizers:OFF}
make %{?_smp_mflags} RPM_OPT_FLAGS="%{optflags}"
# Build C documentation
make doc-c
popd
%check
# Run Python 3 tests
pushd build-py3
# Compile C tests
make tests
# Run Python 3 tests
make ARGS="-V" test
popd
%install
pushd build-py3
# Install createrepo_c with Python 3
make install DESTDIR=%{buildroot}
popd
%if 0%{?fedora} || 0%{?rhel} > 7
ln -sr %{buildroot}%{_bindir}/createrepo_c %{buildroot}%{_bindir}/createrepo
ln -sr %{buildroot}%{_bindir}/mergerepo_c %{buildroot}%{_bindir}/mergerepo
ln -sr %{buildroot}%{_bindir}/modifyrepo_c %{buildroot}%{_bindir}/modifyrepo
%endif
%if 0%{?rhel} && 0%{?rhel} <= 7
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%else
%ldconfig_scriptlets libs
%endif
%files
%doc README.md
%{_mandir}/man8/createrepo_c.8*
%{_mandir}/man8/mergerepo_c.8*
%{_mandir}/man8/modifyrepo_c.8*
%{_mandir}/man8/sqliterepo_c.8*
%{bash_completion}
%{_bindir}/createrepo_c
%{_bindir}/mergerepo_c
%{_bindir}/modifyrepo_c
%{_bindir}/sqliterepo_c
%if 0%{?fedora} || 0%{?rhel} > 7
%{_bindir}/createrepo
%{_bindir}/mergerepo
%{_bindir}/modifyrepo
%endif
%files libs
%license COPYING
%{_libdir}/lib%{name}.so.*
%files devel
%doc build-py3/doc/html
%{_libdir}/lib%{name}.so
%{_libdir}/pkgconfig/%{name}.pc
%{_includedir}/%{name}/
%files -n python3-%{name}
%doc examples/python/*
%{python3_sitearch}/%{name}/
%{python3_sitearch}/%{name}-%{version}-py%{python3_version}.egg-info
%changelog
|