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_with python # don't build python bindings
9 %bcond_with snap # install configs for official Th snapshot
10 %bcond_with rpm5 # use rpm5 instead of rpm4
11 %bcond_with tests # tests
13 # current snapshot name
16 # required versions (forced to avoid SEGV with mixed db used by rpm and poldek)
18 %define ver_db %(rpm -q --provides rpm-lib | awk 'BEGIN { v="RPM_TOO_OLD" } /^rpm-db-ver = [.0-9]+$/ { v=$3 } END { print v }')
19 %define db_pkg db%{ver_db}
20 %define ver_rpm 5.4.10
22 %define ver_rpm 1:4.14
26 Summary: RPM packages management helper tool
27 Summary(hu.UTF-8): RPM csomagkezelést segítő eszköz
28 Summary(pl.UTF-8): Pomocnicze narzędzie do zarządzania pakietami RPM
31 Release: %{rel}%{?with_snap:.%{SNAP}}
33 Group: Applications/System
34 #Source0: http://poldek.pld-linux.org/download/snapshots/%{name}-%{version}-cvs%{snap}.tar.bz2
35 Source0: https://github.com/poldek-pm/poldek/releases/download/v%{version}/%{name}-%{version}.tar.xz
36 # Source0-md5: 2759fe45bc50efb6084d5338d725411a
38 Source2: %{name}-multilib.conf
39 Source3: %{name}-config.sh
40 Source5: %{name}-aliases.conf
41 Source6: %{name}.desktop
43 # Source7-md5: ee487abede50874e9eceb6495d5ee150
44 Source8: %{name}-debuginfo.conf
45 Source9: %{name}-aidath.conf
46 Source10: %{name}-multilib-aidath.conf
47 Source11: %{name}-archive.conf
48 Source100: %{name}-snap.conf
49 Source101: %{name}-multilib-snap.conf
50 Source102: %{name}-debuginfo-snap.conf
51 Patch0: %{name}-config.patch
52 Patch1: pm-hooks.patch
53 Patch2: %{name}-ext-down-enable.patch
54 Patch3: %{name}-pc.patch
55 Patch4: %{name}-info.patch
56 Patch5: %{name}-multiarch-x32.patch
57 Patch6: rpm-4.15.patch
58 Patch7: db-index-format.patch
59 Patch8: rpm4-uname-deps.patch
60 Patch9: sqlite-rpmdb.patch
61 Patch10: rpm4-cpuinfo-deps.patch
62 Patch11: rpm4-no-dir-deps.patch
63 Patch12: rpm4-rpmvercmp.patch
64 Patch13: trurlib-shared.patch
65 Patch14: rpm4-script-req-workaround.patch
66 Patch15: skip-buildid-obsoletes.patch
67 Patch16: verify-signature.patch
68 Patch17: %{name}-rsa_sig_rpmorg.patch
69 Patch18: no-bdb-for-rpm-org.patch
70 Patch19: more-trace.patch
71 Patch20: boolean-deps.patch
72 Patch21: sorted-ls-upgradable.patch
73 Patch22: egrep-is-obsolete.patch
75 Patch24: %{name}-https-redirect.patch
76 URL: http://poldek.pld-linux.org/
77 %{?with_rpm5:BuildRequires: %{db_pkg}-devel >= %{ver_db}}
78 BuildRequires: autoconf >= 2.63
79 BuildRequires: automake >= 1:1.11
80 BuildRequires: bzip2-devel
81 BuildRequires: check-devel
82 BuildRequires: docbook-dtd412-xml
83 BuildRequires: docbook2X
84 BuildRequires: gettext-tools >= 0.11.5
85 BuildRequires: libgomp-devel
86 BuildRequires: libtool
87 BuildRequires: libxml2-devel >= 2
88 BuildRequires: lua54-devel
89 BuildRequires: ncurses-devel
90 BuildRequires: openssl-devel >= 0.9.7d
91 BuildRequires: pcre-devel
92 BuildRequires: perl-XML-Simple
93 BuildRequires: perl-base
94 BuildRequires: perl-modules
95 BuildRequires: pkgconfig
96 BuildRequires: popt-devel
97 %{?with_python:BuildRequires: python-devel}
98 BuildRequires: readline-devel >= 5.0
99 BuildRequires: rpm-devel >= %{ver_rpm}
100 %{?with_python:BuildRequires: rpm-pythonprov}
101 BuildRequires: tar >= 1:1.22
102 BuildRequires: texinfo
105 BuildRequires: zlib-devel
106 BuildRequires: zstd-devel
108 %{?with_rpm5:BuildRequires: %{db_pkg}-static >= %{ver_db}}
109 BuildRequires: bzip2-static
110 BuildRequires: glibc-static
111 BuildRequires: libxml2-static
112 BuildRequires: ncurses-static
113 BuildRequires: openssl-static
114 BuildRequires: pcre-static
115 BuildRequires: popt-static
116 BuildRequires: readline-static
117 BuildRequires: rpm-static
118 BuildRequires: zlib-static
119 BuildRequires: zstd-static
121 Requires(postun): awk
122 Requires(postun): sed >= 4.0
124 Requires: %{db_pkg} >= %{ver_db}
125 Requires: rpm-db-ver = %{ver_db}
127 Requires: %{name}-libs = %{version}-%{release}
128 Requires: /bin/run-parts
129 Requires: rpm >= %{ver_rpm}
130 Requires: rpm-lib >= %{ver_rpm}
132 Conflicts: etckeeper < 1.18-2
133 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
135 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
136 %define pkglibexecdir %{_prefix}/lib/%{name}
139 poldek is an RPM package management tool which allows you to easily
140 perform package verification, installation (including system
141 installation from scratch), upgrading, and removal.
143 Program can be used in batch (like apt-get from Debian's APT) or
144 interactive mode. The interactive mode puts you into a readline
145 interface with command line autocompletion and history, similar to the
146 shell mode of Perl's CPAN.
148 %{?with_static:This version is statically linked.}
150 %{!?with_imode:This version hasn't got interactive mode.}
153 %description -l hu.UTF-8
154 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
155 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
156 nulláról), frissítést és eltávolítást.
158 A program használható parancssorból (mint a Debian apt-get programja)
159 vagy interaktív módban. Az interaktív mód egy readline környezetet
160 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
163 %{?with_static:Ez a verzió statikusan linkelt.}
165 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
167 %description -l pl.UTF-8
168 poldek jest narzędziem linii poleceń służącym do weryfikacji,
169 instalacji (włączając instalację systemu od zera), aktualizacji i
172 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
173 interaktywnym. Tryb interaktywny posiada interfejs readline z
174 dopełnianiem komend i historią, podobny do trybu shell perlowego
177 %{?with_static:Ta wersja jest konsolidowana statycznie.}
179 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
182 Summary: poldek libraries
183 Summary(hu.UTF-8): A poldek könyvtárai
184 Summary(pl.UTF-8): Biblioteki poldka
190 %description libs -l hu.UTF-8
193 %description libs -l pl.UTF-8
197 Summary: Header files for poldek libraries
198 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
199 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
200 Group: Development/Libraries
201 Requires: %{name}-libs = %{version}-%{release}
202 Requires: rpm-devel >= %{ver_rpm}
205 Header files for poldek libraries.
207 %description devel -l hu.UTF-8
208 A poldek könyvtár fejlesztői fájljai.
210 %description devel -l pl.UTF-8
211 Pliki nagłówkowe bibliotek poldka.
214 Summary: poldek static libraries
215 Summary(hu.UTF-8): poldek statikus könyvtárak
216 Summary(pl.UTF-8): Biblioteki statyczne poldka
217 Group: Development/Libraries
218 Requires: %{name}-devel = %{version}-%{release}
221 poldek static libraries.
223 %description static -l hu.UTF-8
224 poldek statikus könyvtárak.
226 %description static -l pl.UTF-8
227 Biblioteki statyczne poldka.
229 %package -n python-poldek
230 Summary: Python modules for poldek
231 Summary(hu.UTF-8): Python modulok poldek-hez
232 Summary(pl.UTF-8): Moduły języka Python dla poldka
233 Group: Libraries/Python
234 Requires: %{name}-libs = %{version}-%{release}
235 Requires: python-libs
237 %description -n python-poldek
238 Python modules for poldek.
240 %description -n python-poldek -l hu.UTF-8
241 Python modulok poldek-hez.
243 %description -n python-poldek -l pl.UTF-8
244 Moduły języka Python dla poldka.
276 %{__rm} doc/poldek.info
277 %{__rm} m4/libtool.m4 m4/lt*.m4
279 # cleanup backups after patching
280 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
281 chmod u+x ./configure ./doc/conf-xml2.sh
305 %{?with_static:--enable-static --disable-shared} \
306 %{!?with_imode:--disable-imode} \
307 --with-pkglibdir=%{pkglibexecdir} \
309 %{?with_python:--with-python}
312 %{__make} -C doc poldek.info
323 rm -rf $RPM_BUILD_ROOT
324 install -d $RPM_BUILD_ROOT/var/cache/%{name}
327 DESTDIR=$RPM_BUILD_ROOT
329 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
332 %{__make} -C python install \
333 DESTDIR=$RPM_BUILD_ROOT \
334 py_sitedir=%{py_sitedir}
337 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
339 %ifarch i486 i686 ppc sparc alpha athlon aarch64 %{arm}
340 %define ftp_arch %{_target_cpu}
343 %define ftp_arch x86_64
344 %define ftp_alt_arch i686
345 %define ftp_alt2_arch x32
349 %define ftp_alt_arch x86_64
350 %define ftp_alt2_arch i686
353 %define ftp_arch i486
355 %ifarch pentium2 pentium3 pentium4
356 %define ftp_arch i686
358 %ifarch sparcv9 sparc64
359 %define ftp_arch sparc
360 %define ftp_arch %{_target_cpu}
362 %define ftp_alt_arch sparcv9
366 %define pld_conf %{SOURCE1}
367 %define pld_debuginfo_conf %{SOURCE8}
368 %define pld_archive_conf %{SOURCE11}
371 %define pld_multilib_conf %{SOURCE2}
372 %define pld_multilib2_conf %{SOURCE2}
376 %ifarch sparcv9 sparc64
377 %define pld_conf %{SOURCE9}
378 %undefine pld_archive_conf
381 %define pld_multilib_conf %{SOURCE10}
384 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
386 %if 0%{?pld_multilib_conf:1}
387 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
390 %if 0%{?pld_multilib2_conf:1}
391 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
394 %if 0%{?pld_debuginfo_conf:1}
395 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
398 %if 0%{?pld_archive_conf:1}
399 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
402 # Always install snapshot configs
403 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
404 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
405 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
406 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
408 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
409 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
410 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
411 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
415 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
416 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
418 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
419 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
422 # create "all" meta repo
423 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
424 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
425 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
429 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
433 # th-2014 snap does not exist for x32 yet
434 %if "%{ftp_arch}" == "x32"
435 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
437 %if "%{ftp_alt2_arch}" == "x32"
438 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
441 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
444 # add desktop file and icon
445 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
446 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
447 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
450 # sources we don't package
451 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
452 # include them in %doc
455 %{__rm} -f configs/Makefile*
459 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
465 rm -rf $RPM_BUILD_ROOT
468 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
469 if [ "$1" = "1" ]; then
470 # remove ignore = vserver-packages inside vserver on first install
473 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
474 done </proc/self/status
476 if [ -z "$ctx" -o "$ctx" = "0" ]; then
481 if [ "$VSERVER" = "yes" ]; then
482 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
486 %postun -p /sbin/postshell
487 -/usr/sbin/fix-info-dir -c %{_infodir}
489 %post libs -p /sbin/ldconfig
490 %postun libs -p /sbin/ldconfig
492 %triggerpostun -- poldek < 0.30.1-8
493 # poldek < 0.30-0.20080225.00.1
494 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
495 %{__sed} -i -e '/^%%include source.conf/{
497 a# /etc/poldek/repos.d/*.conf
498 a%%includedir repos.d
499 }' %{_sysconfdir}/%{name}/poldek.conf
502 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
503 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
505 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
506 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
507 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
511 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
512 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
513 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
517 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
518 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
519 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
521 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
522 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
523 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
526 if [ $1 -le 1 ]; then
527 # revert change on --downgrade
528 %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
531 %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
534 %files -f %{name}.lang
535 %defattr(644,root,root,755)
536 %doc ChangeLog README* NEWS configs
537 %dir %{_sysconfdir}/%{name}
538 %dir %{_sysconfdir}/%{name}/pre-install.d
539 %{_sysconfdir}/%{name}/pre-install.d/README
540 %dir %{_sysconfdir}/%{name}/post-install.d
541 %{_sysconfdir}/%{name}/post-install.d/README
542 %dir %{_sysconfdir}/%{name}/repos.d
543 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
544 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
545 %attr(755,root,root) %{_bindir}/ipoldek
546 %attr(755,root,root) %{_bindir}/poldek
547 %attr(755,root,root) %{_bindir}/poldek-config
548 %attr(755,root,root) %{_bindir}/rpmvercmp
549 %dir %{pkglibexecdir}
550 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
551 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
552 %attr(755,root,root) %{pkglibexecdir}/vfcompr
553 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
554 %attr(755,root,root) %{pkglibexecdir}/vfsmb
555 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
556 %{_mandir}/man1/%{name}*.1*
557 %lang(pl) %{_mandir}/pl/man1/%{name}*
558 %{_infodir}/poldek.info*
560 %{_desktopdir}/%{name}.desktop
561 %{_pixmapsdir}/%{name}.png
563 %dir /var/cache/%{name}
565 %if %{without static}
567 %defattr(644,root,root,755)
568 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
569 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
570 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
571 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
572 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
573 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
574 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
575 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
576 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
577 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
581 %defattr(644,root,root,755)
582 %if %{without static}
583 %attr(755,root,root) %{_libdir}/libpoclidek.so
584 %attr(755,root,root) %{_libdir}/libpoldek.so
585 %attr(755,root,root) %{_libdir}/libtndb.so
586 %attr(755,root,root) %{_libdir}/libtrurl.so
587 %attr(755,root,root) %{_libdir}/libvfile.so
589 %{_libdir}/libpoclidek.la
590 %{_libdir}/libpoldek.la
591 %{_libdir}/libtndb.la
592 %{_libdir}/libtrurl.la
593 %{_libdir}/libvfile.la
594 %{_includedir}/poldek
598 %{_pkgconfigdir}/tndb.pc
599 %{_pkgconfigdir}/trurlib.pc
602 %defattr(644,root,root,755)
604 %{_libdir}/libtrurl.a
607 %files -n python-poldek
608 %defattr(644,root,root,755)
609 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
610 %{py_sitescriptdir}/poldek.py[co]
611 %{py_sitescriptdir}/poldekmod.py[co]