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
74 URL: http://poldek.pld-linux.org/
75 %{?with_rpm5:BuildRequires: %{db_pkg}-devel >= %{ver_db}}
76 BuildRequires: autoconf >= 2.63
77 BuildRequires: automake >= 1:1.11
78 BuildRequires: bzip2-devel
79 BuildRequires: check-devel
80 BuildRequires: docbook-dtd412-xml
81 BuildRequires: docbook2X
82 BuildRequires: gettext-tools >= 0.11.5
83 BuildRequires: libgomp-devel
84 BuildRequires: libtool
85 BuildRequires: libxml2-devel >= 2
86 BuildRequires: lua54-devel
87 BuildRequires: ncurses-devel
88 BuildRequires: openssl-devel >= 0.9.7d
89 BuildRequires: pcre-devel
90 BuildRequires: perl-XML-Simple
91 BuildRequires: perl-base
92 BuildRequires: perl-modules
93 BuildRequires: pkgconfig
94 BuildRequires: popt-devel
95 %{?with_python:BuildRequires: python-devel}
96 BuildRequires: readline-devel >= 5.0
97 BuildRequires: rpm-devel >= %{ver_rpm}
98 %{?with_python:BuildRequires: rpm-pythonprov}
99 BuildRequires: tar >= 1:1.22
100 BuildRequires: texinfo
103 BuildRequires: zlib-devel
104 BuildRequires: zstd-devel
106 %{?with_rpm5:BuildRequires: %{db_pkg}-static >= %{ver_db}}
107 BuildRequires: bzip2-static
108 BuildRequires: glibc-static
109 BuildRequires: libxml2-static
110 BuildRequires: ncurses-static
111 BuildRequires: openssl-static
112 BuildRequires: pcre-static
113 BuildRequires: popt-static
114 BuildRequires: readline-static
115 BuildRequires: rpm-static
116 BuildRequires: zlib-static
117 BuildRequires: zstd-static
119 Requires(postun): awk
120 Requires(postun): sed >= 4.0
122 Requires: %{db_pkg} >= %{ver_db}
123 Requires: rpm-db-ver = %{ver_db}
125 Requires: %{name}-libs = %{version}-%{release}
126 Requires: /bin/run-parts
127 Requires: rpm >= %{ver_rpm}
128 Requires: rpm-lib >= %{ver_rpm}
130 Conflicts: etckeeper < 1.18-2
131 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
133 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
134 %define pkglibexecdir %{_prefix}/lib/%{name}
137 poldek is an RPM package management tool which allows you to easily
138 perform package verification, installation (including system
139 installation from scratch), upgrading, and removal.
141 Program can be used in batch (like apt-get from Debian's APT) or
142 interactive mode. The interactive mode puts you into a readline
143 interface with command line autocompletion and history, similar to the
144 shell mode of Perl's CPAN.
146 %{?with_static:This version is statically linked.}
148 %{!?with_imode:This version hasn't got interactive mode.}
151 %description -l hu.UTF-8
152 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
153 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
154 nulláról), frissítést és eltávolítást.
156 A program használható parancssorból (mint a Debian apt-get programja)
157 vagy interaktív módban. Az interaktív mód egy readline környezetet
158 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
161 %{?with_static:Ez a verzió statikusan linkelt.}
163 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
165 %description -l pl.UTF-8
166 poldek jest narzędziem linii poleceń służącym do weryfikacji,
167 instalacji (włączając instalację systemu od zera), aktualizacji i
170 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
171 interaktywnym. Tryb interaktywny posiada interfejs readline z
172 dopełnianiem komend i historią, podobny do trybu shell perlowego
175 %{?with_static:Ta wersja jest konsolidowana statycznie.}
177 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
180 Summary: poldek libraries
181 Summary(hu.UTF-8): A poldek könyvtárai
182 Summary(pl.UTF-8): Biblioteki poldka
188 %description libs -l hu.UTF-8
191 %description libs -l pl.UTF-8
195 Summary: Header files for poldek libraries
196 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
197 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
198 Group: Development/Libraries
199 Requires: %{name}-libs = %{version}-%{release}
200 Requires: rpm-devel >= %{ver_rpm}
203 Header files for poldek libraries.
205 %description devel -l hu.UTF-8
206 A poldek könyvtár fejlesztői fájljai.
208 %description devel -l pl.UTF-8
209 Pliki nagłówkowe bibliotek poldka.
212 Summary: poldek static libraries
213 Summary(hu.UTF-8): poldek statikus könyvtárak
214 Summary(pl.UTF-8): Biblioteki statyczne poldka
215 Group: Development/Libraries
216 Requires: %{name}-devel = %{version}-%{release}
219 poldek static libraries.
221 %description static -l hu.UTF-8
222 poldek statikus könyvtárak.
224 %description static -l pl.UTF-8
225 Biblioteki statyczne poldka.
227 %package -n python-poldek
228 Summary: Python modules for poldek
229 Summary(hu.UTF-8): Python modulok poldek-hez
230 Summary(pl.UTF-8): Moduły języka Python dla poldka
231 Group: Libraries/Python
232 Requires: %{name}-libs = %{version}-%{release}
233 Requires: python-libs
235 %description -n python-poldek
236 Python modules for poldek.
238 %description -n python-poldek -l hu.UTF-8
239 Python modulok poldek-hez.
241 %description -n python-poldek -l pl.UTF-8
242 Moduły języka Python dla poldka.
272 %{__rm} doc/poldek.info
273 %{__rm} m4/libtool.m4 m4/lt*.m4
275 # cleanup backups after patching
276 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
277 chmod u+x ./configure ./doc/conf-xml2.sh
301 %{?with_static:--enable-static --disable-shared} \
302 %{!?with_imode:--disable-imode} \
303 --with-pkglibdir=%{pkglibexecdir} \
305 %{?with_python:--with-python}
308 %{__make} -C doc poldek.info
319 rm -rf $RPM_BUILD_ROOT
320 install -d $RPM_BUILD_ROOT/var/cache/%{name}
323 DESTDIR=$RPM_BUILD_ROOT
325 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
328 %{__make} -C python install \
329 DESTDIR=$RPM_BUILD_ROOT \
330 py_sitedir=%{py_sitedir}
333 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
335 %ifarch i486 i686 ppc sparc alpha athlon aarch64 %{arm}
336 %define ftp_arch %{_target_cpu}
339 %define ftp_arch x86_64
340 %define ftp_alt_arch i686
341 %define ftp_alt2_arch x32
345 %define ftp_alt_arch x86_64
346 %define ftp_alt2_arch i686
349 %define ftp_arch i486
351 %ifarch pentium2 pentium3 pentium4
352 %define ftp_arch i686
354 %ifarch sparcv9 sparc64
355 %define ftp_arch sparc
356 %define ftp_arch %{_target_cpu}
358 %define ftp_alt_arch sparcv9
362 %define pld_conf %{SOURCE1}
363 %define pld_debuginfo_conf %{SOURCE8}
364 %define pld_archive_conf %{SOURCE11}
367 %define pld_multilib_conf %{SOURCE2}
368 %define pld_multilib2_conf %{SOURCE2}
372 %ifarch sparcv9 sparc64
373 %define pld_conf %{SOURCE9}
374 %undefine pld_archive_conf
377 %define pld_multilib_conf %{SOURCE10}
380 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
382 %if 0%{?pld_multilib_conf:1}
383 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
386 %if 0%{?pld_multilib2_conf:1}
387 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
390 %if 0%{?pld_debuginfo_conf:1}
391 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
394 %if 0%{?pld_archive_conf:1}
395 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
398 # Always install snapshot configs
399 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
400 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
401 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
402 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
404 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
405 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
406 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
407 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
411 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
412 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
414 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
415 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
418 # create "all" meta repo
419 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
420 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
421 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
425 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
429 # th-2014 snap does not exist for x32 yet
430 %if "%{ftp_arch}" == "x32"
431 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
433 %if "%{ftp_alt2_arch}" == "x32"
434 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
437 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
440 # add desktop file and icon
441 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
442 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
443 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
446 # sources we don't package
447 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
448 # include them in %doc
451 %{__rm} -f configs/Makefile*
455 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
461 rm -rf $RPM_BUILD_ROOT
464 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
465 if [ "$1" = "1" ]; then
466 # remove ignore = vserver-packages inside vserver on first install
469 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
470 done </proc/self/status
472 if [ -z "$ctx" -o "$ctx" = "0" ]; then
477 if [ "$VSERVER" = "yes" ]; then
478 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
482 %postun -p /sbin/postshell
483 -/usr/sbin/fix-info-dir -c %{_infodir}
485 %post libs -p /sbin/ldconfig
486 %postun libs -p /sbin/ldconfig
488 %triggerpostun -- poldek < 0.30.1-8
489 # poldek < 0.30-0.20080225.00.1
490 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
491 %{__sed} -i -e '/^%%include source.conf/{
493 a# /etc/poldek/repos.d/*.conf
494 a%%includedir repos.d
495 }' %{_sysconfdir}/%{name}/poldek.conf
498 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
499 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
501 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
502 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
503 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
507 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
508 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
509 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
513 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
514 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
515 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
517 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
518 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
519 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
522 if [ $1 -le 1 ]; then
523 # revert change on --downgrade
524 %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
527 %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
530 %files -f %{name}.lang
531 %defattr(644,root,root,755)
532 %doc ChangeLog README* NEWS configs
533 %dir %{_sysconfdir}/%{name}
534 %dir %{_sysconfdir}/%{name}/pre-install.d
535 %{_sysconfdir}/%{name}/pre-install.d/README
536 %dir %{_sysconfdir}/%{name}/post-install.d
537 %{_sysconfdir}/%{name}/post-install.d/README
538 %dir %{_sysconfdir}/%{name}/repos.d
539 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
540 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
541 %attr(755,root,root) %{_bindir}/ipoldek
542 %attr(755,root,root) %{_bindir}/poldek
543 %attr(755,root,root) %{_bindir}/poldek-config
544 %attr(755,root,root) %{_bindir}/rpmvercmp
545 %dir %{pkglibexecdir}
546 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
547 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
548 %attr(755,root,root) %{pkglibexecdir}/vfcompr
549 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
550 %attr(755,root,root) %{pkglibexecdir}/vfsmb
551 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
552 %{_mandir}/man1/%{name}*.1*
553 %lang(pl) %{_mandir}/pl/man1/%{name}*
554 %{_infodir}/poldek.info*
556 %{_desktopdir}/%{name}.desktop
557 %{_pixmapsdir}/%{name}.png
559 %dir /var/cache/%{name}
561 %if %{without static}
563 %defattr(644,root,root,755)
564 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
565 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
566 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
567 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
568 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
569 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
570 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
571 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
572 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
573 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
577 %defattr(644,root,root,755)
578 %if %{without static}
579 %attr(755,root,root) %{_libdir}/libpoclidek.so
580 %attr(755,root,root) %{_libdir}/libpoldek.so
581 %attr(755,root,root) %{_libdir}/libtndb.so
582 %attr(755,root,root) %{_libdir}/libtrurl.so
583 %attr(755,root,root) %{_libdir}/libvfile.so
585 %{_libdir}/libpoclidek.la
586 %{_libdir}/libpoldek.la
587 %{_libdir}/libtndb.la
588 %{_libdir}/libtrurl.la
589 %{_libdir}/libvfile.la
590 %{_includedir}/poldek
594 %{_pkgconfigdir}/tndb.pc
595 %{_pkgconfigdir}/trurlib.pc
598 %defattr(644,root,root,755)
600 %{_libdir}/libtrurl.a
603 %files -n python-poldek
604 %defattr(644,root,root,755)
605 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
606 %{py_sitescriptdir}/poldek.py[co]
607 %{py_sitescriptdir}/poldekmod.py[co]