2 # - fix config having escaped html entities:
3 # # package A requires capability foo >= 1.0 while package B provides "foo"
6 %bcond_with static # don't use shared libraries
7 %bcond_without imode # don't build interactive mode
8 %bcond_without python # don't build python bindings
9 %bcond_with snap # install configs for official Th snapshot
10 %bcond_with rpm4 # use rpm4 instead of rpm5
11 %bcond_with tests # tests
13 # current snapshot name
16 # required versions (forced to avoid SEGV with mixed db used by rpm and poldek)
20 %define ver_rpm 1:4.14
21 %define ver_db_devel %(rpm -q --qf '%|E?{%{E}:}|%{V}-%{R}' --what-provides db-devel)
23 %define ver_db %(rpm -q --provides rpm-lib | awk 'BEGIN { v="RPM_TOO_OLD" } /^rpm-db-ver = [.0-9]+$/ { v=$3 } END { print v }')
24 %define db_pkg db%{ver_db}
25 %define ver_rpm 5.4.10
29 Summary: RPM packages management helper tool
30 Summary(hu.UTF-8): RPM csomagkezelést segítő eszköz
31 Summary(pl.UTF-8): Pomocnicze narzędzie do zarządzania pakietami RPM
34 Release: %{rel}%{?with_snap:.%{SNAP}}
36 Group: Applications/System
37 #Source0: http://poldek.pld-linux.org/download/snapshots/%{name}-%{version}-cvs%{snap}.tar.bz2
38 Source0: https://github.com/poldek-pm/poldek/releases/download/v%{version}/%{name}-%{version}.tar.xz
39 # Source0-md5: 2759fe45bc50efb6084d5338d725411a
41 Source2: %{name}-multilib.conf
42 Source3: %{name}-config.sh
43 Source5: %{name}-aliases.conf
44 Source6: %{name}.desktop
46 # Source7-md5: ee487abede50874e9eceb6495d5ee150
47 Source8: %{name}-debuginfo.conf
48 Source9: %{name}-aidath.conf
49 Source10: %{name}-multilib-aidath.conf
50 Source11: %{name}-archive.conf
51 Source100: %{name}-snap.conf
52 Source101: %{name}-multilib-snap.conf
53 Source102: %{name}-debuginfo-snap.conf
54 Patch0: %{name}-config.patch
55 Patch1: pm-hooks.patch
56 Patch2: %{name}-ext-down-enable.patch
57 Patch3: %{name}-pc.patch
58 Patch4: %{name}-info.patch
59 Patch5: %{name}-multiarch-x32.patch
60 Patch6: rpm-4.15.patch
61 Patch7: db-index-format.patch
62 Patch8: rpm4-uname-deps.patch
63 URL: http://poldek.pld-linux.org/
64 BuildRequires: %{db_pkg}-devel >= %{ver_db}
65 BuildRequires: autoconf >= 2.63
66 BuildRequires: automake >= 1:1.11
67 BuildRequires: bzip2-devel
68 BuildRequires: check-devel
69 BuildRequires: docbook-dtd412-xml
70 BuildRequires: docbook2X
71 BuildRequires: gettext-tools >= 0.11.5
72 BuildRequires: libgomp-devel
73 BuildRequires: libtool
74 BuildRequires: libxml2-devel >= 2
75 BuildRequires: ncurses-devel
76 BuildRequires: openssl-devel >= 0.9.7d
77 BuildRequires: pcre-devel
78 BuildRequires: perl-XML-Simple
79 BuildRequires: perl-base
80 BuildRequires: perl-modules
81 BuildRequires: pkgconfig
82 BuildRequires: popt-devel
83 %{?with_python:BuildRequires: python-devel}
84 BuildRequires: readline-devel >= 5.0
85 BuildRequires: rpm-devel >= %{ver_rpm}
86 %{?with_python:BuildRequires: rpm-pythonprov}
87 BuildRequires: tar >= 1:1.22
88 BuildRequires: texinfo
91 BuildRequires: zlib-devel
92 BuildRequires: zstd-devel
94 BuildRequires: %{db_pkg}-static >= %{ver_db}
95 BuildRequires: bzip2-static
96 BuildRequires: glibc-static
97 BuildRequires: libxml2-static
98 BuildRequires: ncurses-static
99 BuildRequires: openssl-static
100 BuildRequires: pcre-static
101 BuildRequires: popt-static
102 BuildRequires: readline-static
103 BuildRequires: rpm-static
104 BuildRequires: zlib-static
105 BuildRequires: zstd-static
107 Requires(postun): awk
108 Requires(postun): sed >= 4.0
110 Requires: %{db_pkg} >= %{ver_db_devel}
112 Requires: %{db_pkg} >= %{ver_db}
113 Requires: rpm-db-ver = %{ver_db}
115 Requires: %{name}-libs = %{version}-%{release}
116 Requires: /bin/run-parts
117 Requires: rpm >= %{ver_rpm}
118 Requires: rpm-lib >= %{ver_rpm}
120 Conflicts: etckeeper < 1.18-2
121 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
123 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
124 %define pkglibexecdir %{_prefix}/lib/%{name}
127 poldek is an RPM package management tool which allows you to easily
128 perform package verification, installation (including system
129 installation from scratch), upgrading, and removal.
131 Program can be used in batch (like apt-get from Debian's APT) or
132 interactive mode. The interactive mode puts you into a readline
133 interface with command line autocompletion and history, similar to the
134 shell mode of Perl's CPAN.
136 %{?with_static:This version is statically linked.}
138 %{!?with_imode:This version hasn't got interactive mode.}
141 %description -l hu.UTF-8
142 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
143 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
144 nulláról), frissítést és eltávolítást.
146 A program használható parancssorból (mint a Debian apt-get programja)
147 vagy interaktív módban. Az interaktív mód egy readline környezetet
148 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
151 %{?with_static:Ez a verzió statikusan linkelt.}
153 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
155 %description -l pl.UTF-8
156 poldek jest narzędziem linii poleceń służącym do weryfikacji,
157 instalacji (włączając instalację systemu od zera), aktualizacji i
160 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
161 interaktywnym. Tryb interaktywny posiada interfejs readline z
162 dopełnianiem komend i historią, podobny do trybu shell perlowego
165 %{?with_static:Ta wersja jest konsolidowana statycznie.}
167 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
170 Summary: poldek libraries
171 Summary(hu.UTF-8): A poldek könyvtárai
172 Summary(pl.UTF-8): Biblioteki poldka
178 %description libs -l hu.UTF-8
181 %description libs -l pl.UTF-8
185 Summary: Header files for poldek libraries
186 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
187 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
188 Group: Development/Libraries
189 Requires: %{name}-libs = %{version}-%{release}
190 Requires: rpm-devel >= %{ver_rpm}
193 Header files for poldek libraries.
195 %description devel -l hu.UTF-8
196 A poldek könyvtár fejlesztői fájljai.
198 %description devel -l pl.UTF-8
199 Pliki nagłówkowe bibliotek poldka.
202 Summary: poldek static libraries
203 Summary(hu.UTF-8): poldek statikus könyvtárak
204 Summary(pl.UTF-8): Biblioteki statyczne poldka
205 Group: Development/Libraries
206 Requires: %{name}-devel = %{version}-%{release}
209 poldek static libraries.
211 %description static -l hu.UTF-8
212 poldek statikus könyvtárak.
214 %description static -l pl.UTF-8
215 Biblioteki statyczne poldka.
217 %package -n python-poldek
218 Summary: Python modules for poldek
219 Summary(hu.UTF-8): Python modulok poldek-hez
220 Summary(pl.UTF-8): Moduły języka Python dla poldka
221 Group: Libraries/Python
222 Requires: %{name}-libs = %{version}-%{release}
223 Requires: python-libs
225 %description -n python-poldek
226 Python modules for poldek.
228 %description -n python-poldek -l hu.UTF-8
229 Python modulok poldek-hez.
231 %description -n python-poldek -l pl.UTF-8
232 Moduły języka Python dla poldka.
246 %{__rm} doc/poldek.info
247 %{__rm} m4/libtool.m4 m4/lt*.m4
249 # cleanup backups after patching
250 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
251 chmod u+x ./configure ./doc/conf-xml2.sh
275 %{?with_static:--enable-static --disable-shared} \
276 %{!?with_imode:--disable-imode} \
277 --with-pkglibdir=%{pkglibexecdir} \
279 %{?with_python:--with-python}
282 %{__make} -C doc poldek.info
293 rm -rf $RPM_BUILD_ROOT
294 install -d $RPM_BUILD_ROOT/var/cache/%{name}
297 DESTDIR=$RPM_BUILD_ROOT
299 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
302 %{__make} -C python install \
303 DESTDIR=$RPM_BUILD_ROOT \
304 py_sitedir=%{py_sitedir}
307 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
309 %ifarch i486 i686 ppc sparc alpha athlon aarch64
310 %define ftp_arch %{_target_cpu}
313 %define ftp_arch x86_64
314 %define ftp_alt_arch i686
315 %define ftp_alt2_arch x32
319 %define ftp_alt_arch x86_64
320 %define ftp_alt2_arch i686
323 %define ftp_arch i486
325 %ifarch pentium2 pentium3 pentium4
326 %define ftp_arch i686
328 %ifarch sparcv9 sparc64
329 %define ftp_arch sparc
330 %define ftp_arch %{_target_cpu}
332 %define ftp_alt_arch sparcv9
336 %define pld_conf %{SOURCE1}
337 %define pld_debuginfo_conf %{SOURCE8}
338 %define pld_archive_conf %{SOURCE11}
341 %define pld_multilib_conf %{SOURCE2}
342 %define pld_multilib2_conf %{SOURCE2}
346 %ifarch sparcv9 sparc64
347 %define pld_conf %{SOURCE9}
348 %undefine pld_archive_conf
351 %define pld_multilib_conf %{SOURCE10}
354 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
356 %if 0%{?pld_multilib_conf:1}
357 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
360 %if 0%{?pld_multilib2_conf:1}
361 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
364 %if 0%{?pld_debuginfo_conf:1}
365 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
368 %if 0%{?pld_archive_conf:1}
369 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
372 # Always install snapshot configs
373 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
374 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
375 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
376 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
378 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
379 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
380 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
381 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
385 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
386 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
388 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
389 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
392 # create "all" meta repo
393 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
394 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
395 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
399 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
403 # th-2014 snap does not exist for x32 yet
404 %if "%{ftp_arch}" == "x32"
405 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
407 %if "%{ftp_alt2_arch}" == "x32"
408 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
411 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
414 # add desktop file and icon
415 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
416 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
417 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
420 # sources we don't package
421 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
422 # include them in %doc
425 %{__rm} -f configs/Makefile*
429 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
435 rm -rf $RPM_BUILD_ROOT
438 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
439 if [ "$1" = "1" ]; then
440 # remove ignore = vserver-packages inside vserver on first install
443 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
444 done </proc/self/status
446 if [ -z "$ctx" -o "$ctx" = "0" ]; then
451 if [ "$VSERVER" = "yes" ]; then
452 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
456 %postun -p /sbin/postshell
457 -/usr/sbin/fix-info-dir -c %{_infodir}
459 %post libs -p /sbin/ldconfig
460 %postun libs -p /sbin/ldconfig
462 %triggerpostun -- poldek < 0.30.1-8
463 # poldek < 0.30-0.20080225.00.1
464 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
465 %{__sed} -i -e '/^%%include source.conf/{
467 a# /etc/poldek/repos.d/*.conf
468 a%%includedir repos.d
469 }' %{_sysconfdir}/%{name}/poldek.conf
472 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
473 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
475 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
476 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
477 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
481 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
482 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
483 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
487 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
488 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
489 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
491 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
492 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
493 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
496 if [ $1 -le 1 ]; then
497 # revert change on --downgrade
498 %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
501 %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
504 %files -f %{name}.lang
505 %defattr(644,root,root,755)
506 %doc ChangeLog README* NEWS configs
507 %dir %{_sysconfdir}/%{name}
508 %dir %{_sysconfdir}/%{name}/pre-install.d
509 %{_sysconfdir}/%{name}/pre-install.d/README
510 %dir %{_sysconfdir}/%{name}/post-install.d
511 %{_sysconfdir}/%{name}/post-install.d/README
512 %dir %{_sysconfdir}/%{name}/repos.d
513 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
514 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
515 %attr(755,root,root) %{_bindir}/ipoldek
516 %attr(755,root,root) %{_bindir}/poldek
517 %attr(755,root,root) %{_bindir}/poldek-config
518 %attr(755,root,root) %{_bindir}/rpmvercmp
519 %dir %{pkglibexecdir}
520 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
521 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
522 %attr(755,root,root) %{pkglibexecdir}/vfcompr
523 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
524 %attr(755,root,root) %{pkglibexecdir}/vfsmb
525 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
526 %{_mandir}/man1/%{name}*.1*
527 %lang(pl) %{_mandir}/pl/man1/%{name}*
528 %{_infodir}/poldek.info*
530 %{_desktopdir}/%{name}.desktop
531 %{_pixmapsdir}/%{name}.png
533 %dir /var/cache/%{name}
535 %if %{without static}
537 %defattr(644,root,root,755)
538 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
539 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
540 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
541 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
542 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
543 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
544 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
545 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
546 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
547 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
551 %defattr(644,root,root,755)
552 %if %{without static}
553 %attr(755,root,root) %{_libdir}/libpoclidek.so
554 %attr(755,root,root) %{_libdir}/libpoldek.so
555 %attr(755,root,root) %{_libdir}/libtndb.so
556 %attr(755,root,root) %{_libdir}/libtrurl.so
557 %attr(755,root,root) %{_libdir}/libvfile.so
559 %{_libdir}/libpoclidek.la
560 %{_libdir}/libpoldek.la
561 %{_libdir}/libtndb.la
562 %{_libdir}/libtrurl.la
563 %{_libdir}/libvfile.la
564 %{_includedir}/poldek
568 %{_pkgconfigdir}/tndb.pc
569 %{_pkgconfigdir}/trurlib.pc
572 %defattr(644,root,root,755)
574 %{_libdir}/libtrurl.a
577 %files -n python-poldek
578 %defattr(644,root,root,755)
579 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
580 %{py_sitescriptdir}/poldek.py[co]
581 %{py_sitescriptdir}/poldekmod.py[co]