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)
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 Patch9: sqlite-rpmdb.patch
64 Patch10: rpm4-cpuinfo-deps.patch
65 Patch11: rpm4-no-dir-deps.patch
66 Patch12: rpm4-rpmvercmp.patch
67 Patch13: trurlib-shared.patch
68 Patch14: rpm4-script-req-workaround.patch
69 Patch15: skip-buildid-obsoletes.patch
70 Patch16: verify-signature.patch
71 Patch17: %{name}-rsa_sig_rpmorg.patch
72 Patch18: no-bdb-for-rpm-org.patch
73 URL: http://poldek.pld-linux.org/
74 BuildRequires: %{db_pkg}-devel >= %{ver_db}
75 BuildRequires: autoconf >= 2.63
76 BuildRequires: automake >= 1:1.11
77 BuildRequires: bzip2-devel
78 BuildRequires: check-devel
79 BuildRequires: docbook-dtd412-xml
80 BuildRequires: docbook2X
81 BuildRequires: gettext-tools >= 0.11.5
82 BuildRequires: libgomp-devel
83 BuildRequires: libtool
84 BuildRequires: libxml2-devel >= 2
85 BuildRequires: lua54-devel
86 BuildRequires: ncurses-devel
87 BuildRequires: openssl-devel >= 0.9.7d
88 BuildRequires: pcre-devel
89 BuildRequires: perl-XML-Simple
90 BuildRequires: perl-base
91 BuildRequires: perl-modules
92 BuildRequires: pkgconfig
93 BuildRequires: popt-devel
94 %{?with_python:BuildRequires: python-devel}
95 BuildRequires: readline-devel >= 5.0
96 BuildRequires: rpm-devel >= %{ver_rpm}
97 %{?with_python:BuildRequires: rpm-pythonprov}
98 BuildRequires: tar >= 1:1.22
99 BuildRequires: texinfo
102 BuildRequires: zlib-devel
103 BuildRequires: zstd-devel
105 BuildRequires: %{db_pkg}-static >= %{ver_db}
106 BuildRequires: bzip2-static
107 BuildRequires: glibc-static
108 BuildRequires: libxml2-static
109 BuildRequires: ncurses-static
110 BuildRequires: openssl-static
111 BuildRequires: pcre-static
112 BuildRequires: popt-static
113 BuildRequires: readline-static
114 BuildRequires: rpm-static
115 BuildRequires: zlib-static
116 BuildRequires: zstd-static
118 Requires(postun): awk
119 Requires(postun): sed >= 4.0
121 Requires: %{db_pkg} >= %{ver_db_devel}
123 Requires: %{db_pkg} >= %{ver_db}
124 Requires: rpm-db-ver = %{ver_db}
126 Requires: %{name}-libs = %{version}-%{release}
127 Requires: /bin/run-parts
128 Requires: rpm >= %{ver_rpm}
129 Requires: rpm-lib >= %{ver_rpm}
131 Conflicts: etckeeper < 1.18-2
132 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
134 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
135 %define pkglibexecdir %{_prefix}/lib/%{name}
138 poldek is an RPM package management tool which allows you to easily
139 perform package verification, installation (including system
140 installation from scratch), upgrading, and removal.
142 Program can be used in batch (like apt-get from Debian's APT) or
143 interactive mode. The interactive mode puts you into a readline
144 interface with command line autocompletion and history, similar to the
145 shell mode of Perl's CPAN.
147 %{?with_static:This version is statically linked.}
149 %{!?with_imode:This version hasn't got interactive mode.}
152 %description -l hu.UTF-8
153 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
154 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
155 nulláról), frissítést és eltávolítást.
157 A program használható parancssorból (mint a Debian apt-get programja)
158 vagy interaktív módban. Az interaktív mód egy readline környezetet
159 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
162 %{?with_static:Ez a verzió statikusan linkelt.}
164 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
166 %description -l pl.UTF-8
167 poldek jest narzędziem linii poleceń służącym do weryfikacji,
168 instalacji (włączając instalację systemu od zera), aktualizacji i
171 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
172 interaktywnym. Tryb interaktywny posiada interfejs readline z
173 dopełnianiem komend i historią, podobny do trybu shell perlowego
176 %{?with_static:Ta wersja jest konsolidowana statycznie.}
178 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
181 Summary: poldek libraries
182 Summary(hu.UTF-8): A poldek könyvtárai
183 Summary(pl.UTF-8): Biblioteki poldka
189 %description libs -l hu.UTF-8
192 %description libs -l pl.UTF-8
196 Summary: Header files for poldek libraries
197 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
198 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
199 Group: Development/Libraries
200 Requires: %{name}-libs = %{version}-%{release}
201 Requires: rpm-devel >= %{ver_rpm}
204 Header files for poldek libraries.
206 %description devel -l hu.UTF-8
207 A poldek könyvtár fejlesztői fájljai.
209 %description devel -l pl.UTF-8
210 Pliki nagłówkowe bibliotek poldka.
213 Summary: poldek static libraries
214 Summary(hu.UTF-8): poldek statikus könyvtárak
215 Summary(pl.UTF-8): Biblioteki statyczne poldka
216 Group: Development/Libraries
217 Requires: %{name}-devel = %{version}-%{release}
220 poldek static libraries.
222 %description static -l hu.UTF-8
223 poldek statikus könyvtárak.
225 %description static -l pl.UTF-8
226 Biblioteki statyczne poldka.
228 %package -n python-poldek
229 Summary: Python modules for poldek
230 Summary(hu.UTF-8): Python modulok poldek-hez
231 Summary(pl.UTF-8): Moduły języka Python dla poldka
232 Group: Libraries/Python
233 Requires: %{name}-libs = %{version}-%{release}
234 Requires: python-libs
236 %description -n python-poldek
237 Python modules for poldek.
239 %description -n python-poldek -l hu.UTF-8
240 Python modulok poldek-hez.
242 %description -n python-poldek -l pl.UTF-8
243 Moduły języka Python dla poldka.
269 %{__rm} doc/poldek.info
270 %{__rm} m4/libtool.m4 m4/lt*.m4
272 # cleanup backups after patching
273 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
274 chmod u+x ./configure ./doc/conf-xml2.sh
298 %{?with_static:--enable-static --disable-shared} \
299 %{!?with_imode:--disable-imode} \
300 --with-pkglibdir=%{pkglibexecdir} \
302 %{?with_python:--with-python}
305 %{__make} -C doc poldek.info
316 rm -rf $RPM_BUILD_ROOT
317 install -d $RPM_BUILD_ROOT/var/cache/%{name}
320 DESTDIR=$RPM_BUILD_ROOT
322 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
325 %{__make} -C python install \
326 DESTDIR=$RPM_BUILD_ROOT \
327 py_sitedir=%{py_sitedir}
330 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
332 %ifarch i486 i686 ppc sparc alpha athlon aarch64 %{arm}
333 %define ftp_arch %{_target_cpu}
336 %define ftp_arch x86_64
337 %define ftp_alt_arch i686
338 %define ftp_alt2_arch x32
342 %define ftp_alt_arch x86_64
343 %define ftp_alt2_arch i686
346 %define ftp_arch i486
348 %ifarch pentium2 pentium3 pentium4
349 %define ftp_arch i686
351 %ifarch sparcv9 sparc64
352 %define ftp_arch sparc
353 %define ftp_arch %{_target_cpu}
355 %define ftp_alt_arch sparcv9
359 %define pld_conf %{SOURCE1}
360 %define pld_debuginfo_conf %{SOURCE8}
361 %define pld_archive_conf %{SOURCE11}
364 %define pld_multilib_conf %{SOURCE2}
365 %define pld_multilib2_conf %{SOURCE2}
369 %ifarch sparcv9 sparc64
370 %define pld_conf %{SOURCE9}
371 %undefine pld_archive_conf
374 %define pld_multilib_conf %{SOURCE10}
377 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
379 %if 0%{?pld_multilib_conf:1}
380 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
383 %if 0%{?pld_multilib2_conf:1}
384 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
387 %if 0%{?pld_debuginfo_conf:1}
388 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
391 %if 0%{?pld_archive_conf:1}
392 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
395 # Always install snapshot configs
396 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
397 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
398 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
399 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
401 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
402 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
403 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
404 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
408 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
409 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
411 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
412 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
415 # create "all" meta repo
416 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
417 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
418 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
422 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
426 # th-2014 snap does not exist for x32 yet
427 %if "%{ftp_arch}" == "x32"
428 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
430 %if "%{ftp_alt2_arch}" == "x32"
431 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
434 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
437 # add desktop file and icon
438 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
439 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
440 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
443 # sources we don't package
444 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
445 # include them in %doc
448 %{__rm} -f configs/Makefile*
452 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
458 rm -rf $RPM_BUILD_ROOT
461 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
462 if [ "$1" = "1" ]; then
463 # remove ignore = vserver-packages inside vserver on first install
466 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
467 done </proc/self/status
469 if [ -z "$ctx" -o "$ctx" = "0" ]; then
474 if [ "$VSERVER" = "yes" ]; then
475 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
479 %postun -p /sbin/postshell
480 -/usr/sbin/fix-info-dir -c %{_infodir}
482 %post libs -p /sbin/ldconfig
483 %postun libs -p /sbin/ldconfig
485 %triggerpostun -- poldek < 0.30.1-8
486 # poldek < 0.30-0.20080225.00.1
487 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
488 %{__sed} -i -e '/^%%include source.conf/{
490 a# /etc/poldek/repos.d/*.conf
491 a%%includedir repos.d
492 }' %{_sysconfdir}/%{name}/poldek.conf
495 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
496 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
498 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
499 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
500 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
504 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
505 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
506 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
510 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
511 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
512 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
514 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
515 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
516 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
519 if [ $1 -le 1 ]; then
520 # revert change on --downgrade
521 %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
524 %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
527 %files -f %{name}.lang
528 %defattr(644,root,root,755)
529 %doc ChangeLog README* NEWS configs
530 %dir %{_sysconfdir}/%{name}
531 %dir %{_sysconfdir}/%{name}/pre-install.d
532 %{_sysconfdir}/%{name}/pre-install.d/README
533 %dir %{_sysconfdir}/%{name}/post-install.d
534 %{_sysconfdir}/%{name}/post-install.d/README
535 %dir %{_sysconfdir}/%{name}/repos.d
536 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
537 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
538 %attr(755,root,root) %{_bindir}/ipoldek
539 %attr(755,root,root) %{_bindir}/poldek
540 %attr(755,root,root) %{_bindir}/poldek-config
541 %attr(755,root,root) %{_bindir}/rpmvercmp
542 %dir %{pkglibexecdir}
543 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
544 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
545 %attr(755,root,root) %{pkglibexecdir}/vfcompr
546 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
547 %attr(755,root,root) %{pkglibexecdir}/vfsmb
548 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
549 %{_mandir}/man1/%{name}*.1*
550 %lang(pl) %{_mandir}/pl/man1/%{name}*
551 %{_infodir}/poldek.info*
553 %{_desktopdir}/%{name}.desktop
554 %{_pixmapsdir}/%{name}.png
556 %dir /var/cache/%{name}
558 %if %{without static}
560 %defattr(644,root,root,755)
561 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
562 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
563 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
564 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
565 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
566 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
567 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
568 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
569 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
570 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
574 %defattr(644,root,root,755)
575 %if %{without static}
576 %attr(755,root,root) %{_libdir}/libpoclidek.so
577 %attr(755,root,root) %{_libdir}/libpoldek.so
578 %attr(755,root,root) %{_libdir}/libtndb.so
579 %attr(755,root,root) %{_libdir}/libtrurl.so
580 %attr(755,root,root) %{_libdir}/libvfile.so
582 %{_libdir}/libpoclidek.la
583 %{_libdir}/libpoldek.la
584 %{_libdir}/libtndb.la
585 %{_libdir}/libtrurl.la
586 %{_libdir}/libvfile.la
587 %{_includedir}/poldek
591 %{_pkgconfigdir}/tndb.pc
592 %{_pkgconfigdir}/trurlib.pc
595 %defattr(644,root,root,755)
597 %{_libdir}/libtrurl.a
600 %files -n python-poldek
601 %defattr(644,root,root,755)
602 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
603 %{py_sitescriptdir}/poldek.py[co]
604 %{py_sitescriptdir}/poldekmod.py[co]