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 URL: http://poldek.pld-linux.org/
73 %{?with_rpm5:BuildRequires: %{db_pkg}-devel >= %{ver_db}}
74 BuildRequires: autoconf >= 2.63
75 BuildRequires: automake >= 1:1.11
76 BuildRequires: bzip2-devel
77 BuildRequires: check-devel
78 BuildRequires: docbook-dtd412-xml
79 BuildRequires: docbook2X
80 BuildRequires: gettext-tools >= 0.11.5
81 BuildRequires: libgomp-devel
82 BuildRequires: libtool
83 BuildRequires: libxml2-devel >= 2
84 BuildRequires: lua54-devel
85 BuildRequires: ncurses-devel
86 BuildRequires: openssl-devel >= 0.9.7d
87 BuildRequires: pcre-devel
88 BuildRequires: perl-XML-Simple
89 BuildRequires: perl-base
90 BuildRequires: perl-modules
91 BuildRequires: pkgconfig
92 BuildRequires: popt-devel
93 %{?with_python:BuildRequires: python-devel}
94 BuildRequires: readline-devel >= 5.0
95 BuildRequires: rpm-devel >= %{ver_rpm}
96 %{?with_python:BuildRequires: rpm-pythonprov}
97 BuildRequires: tar >= 1:1.22
98 BuildRequires: texinfo
101 BuildRequires: zlib-devel
102 BuildRequires: zstd-devel
104 %{?with_rpm5:BuildRequires: %{db_pkg}-static >= %{ver_db}}
105 BuildRequires: bzip2-static
106 BuildRequires: glibc-static
107 BuildRequires: libxml2-static
108 BuildRequires: ncurses-static
109 BuildRequires: openssl-static
110 BuildRequires: pcre-static
111 BuildRequires: popt-static
112 BuildRequires: readline-static
113 BuildRequires: rpm-static
114 BuildRequires: zlib-static
115 BuildRequires: zstd-static
117 Requires(postun): awk
118 Requires(postun): sed >= 4.0
120 Requires: %{db_pkg} >= %{ver_db}
121 Requires: rpm-db-ver = %{ver_db}
123 Requires: %{name}-libs = %{version}-%{release}
124 Requires: /bin/run-parts
125 Requires: rpm >= %{ver_rpm}
126 Requires: rpm-lib >= %{ver_rpm}
128 Conflicts: etckeeper < 1.18-2
129 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
131 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
132 %define pkglibexecdir %{_prefix}/lib/%{name}
135 poldek is an RPM package management tool which allows you to easily
136 perform package verification, installation (including system
137 installation from scratch), upgrading, and removal.
139 Program can be used in batch (like apt-get from Debian's APT) or
140 interactive mode. The interactive mode puts you into a readline
141 interface with command line autocompletion and history, similar to the
142 shell mode of Perl's CPAN.
144 %{?with_static:This version is statically linked.}
146 %{!?with_imode:This version hasn't got interactive mode.}
149 %description -l hu.UTF-8
150 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
151 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
152 nulláról), frissítést és eltávolítást.
154 A program használható parancssorból (mint a Debian apt-get programja)
155 vagy interaktív módban. Az interaktív mód egy readline környezetet
156 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
159 %{?with_static:Ez a verzió statikusan linkelt.}
161 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
163 %description -l pl.UTF-8
164 poldek jest narzędziem linii poleceń służącym do weryfikacji,
165 instalacji (włączając instalację systemu od zera), aktualizacji i
168 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
169 interaktywnym. Tryb interaktywny posiada interfejs readline z
170 dopełnianiem komend i historią, podobny do trybu shell perlowego
173 %{?with_static:Ta wersja jest konsolidowana statycznie.}
175 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
178 Summary: poldek libraries
179 Summary(hu.UTF-8): A poldek könyvtárai
180 Summary(pl.UTF-8): Biblioteki poldka
186 %description libs -l hu.UTF-8
189 %description libs -l pl.UTF-8
193 Summary: Header files for poldek libraries
194 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
195 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
196 Group: Development/Libraries
197 Requires: %{name}-libs = %{version}-%{release}
198 Requires: rpm-devel >= %{ver_rpm}
201 Header files for poldek libraries.
203 %description devel -l hu.UTF-8
204 A poldek könyvtár fejlesztői fájljai.
206 %description devel -l pl.UTF-8
207 Pliki nagłówkowe bibliotek poldka.
210 Summary: poldek static libraries
211 Summary(hu.UTF-8): poldek statikus könyvtárak
212 Summary(pl.UTF-8): Biblioteki statyczne poldka
213 Group: Development/Libraries
214 Requires: %{name}-devel = %{version}-%{release}
217 poldek static libraries.
219 %description static -l hu.UTF-8
220 poldek statikus könyvtárak.
222 %description static -l pl.UTF-8
223 Biblioteki statyczne poldka.
225 %package -n python-poldek
226 Summary: Python modules for poldek
227 Summary(hu.UTF-8): Python modulok poldek-hez
228 Summary(pl.UTF-8): Moduły języka Python dla poldka
229 Group: Libraries/Python
230 Requires: %{name}-libs = %{version}-%{release}
231 Requires: python-libs
233 %description -n python-poldek
234 Python modules for poldek.
236 %description -n python-poldek -l hu.UTF-8
237 Python modulok poldek-hez.
239 %description -n python-poldek -l pl.UTF-8
240 Moduły języka Python dla poldka.
268 %{__rm} doc/poldek.info
269 %{__rm} m4/libtool.m4 m4/lt*.m4
271 # cleanup backups after patching
272 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
273 chmod u+x ./configure ./doc/conf-xml2.sh
297 %{?with_static:--enable-static --disable-shared} \
298 %{!?with_imode:--disable-imode} \
299 --with-pkglibdir=%{pkglibexecdir} \
301 %{?with_python:--with-python}
304 %{__make} -C doc poldek.info
315 rm -rf $RPM_BUILD_ROOT
316 install -d $RPM_BUILD_ROOT/var/cache/%{name}
319 DESTDIR=$RPM_BUILD_ROOT
321 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
324 %{__make} -C python install \
325 DESTDIR=$RPM_BUILD_ROOT \
326 py_sitedir=%{py_sitedir}
329 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
331 %ifarch i486 i686 ppc sparc alpha athlon aarch64 %{arm}
332 %define ftp_arch %{_target_cpu}
335 %define ftp_arch x86_64
336 %define ftp_alt_arch i686
337 %define ftp_alt2_arch x32
341 %define ftp_alt_arch x86_64
342 %define ftp_alt2_arch i686
345 %define ftp_arch i486
347 %ifarch pentium2 pentium3 pentium4
348 %define ftp_arch i686
350 %ifarch sparcv9 sparc64
351 %define ftp_arch sparc
352 %define ftp_arch %{_target_cpu}
354 %define ftp_alt_arch sparcv9
358 %define pld_conf %{SOURCE1}
359 %define pld_debuginfo_conf %{SOURCE8}
360 %define pld_archive_conf %{SOURCE11}
363 %define pld_multilib_conf %{SOURCE2}
364 %define pld_multilib2_conf %{SOURCE2}
368 %ifarch sparcv9 sparc64
369 %define pld_conf %{SOURCE9}
370 %undefine pld_archive_conf
373 %define pld_multilib_conf %{SOURCE10}
376 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
378 %if 0%{?pld_multilib_conf:1}
379 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
382 %if 0%{?pld_multilib2_conf:1}
383 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
386 %if 0%{?pld_debuginfo_conf:1}
387 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
390 %if 0%{?pld_archive_conf:1}
391 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
394 # Always install snapshot configs
395 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
396 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
397 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
398 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
400 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
401 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
402 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
403 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
407 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
408 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
410 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
411 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
414 # create "all" meta repo
415 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
416 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
417 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
421 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
425 # th-2014 snap does not exist for x32 yet
426 %if "%{ftp_arch}" == "x32"
427 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
429 %if "%{ftp_alt2_arch}" == "x32"
430 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
433 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
436 # add desktop file and icon
437 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
438 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
439 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
442 # sources we don't package
443 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
444 # include them in %doc
447 %{__rm} -f configs/Makefile*
451 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
457 rm -rf $RPM_BUILD_ROOT
460 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
461 if [ "$1" = "1" ]; then
462 # remove ignore = vserver-packages inside vserver on first install
465 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
466 done </proc/self/status
468 if [ -z "$ctx" -o "$ctx" = "0" ]; then
473 if [ "$VSERVER" = "yes" ]; then
474 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
478 %postun -p /sbin/postshell
479 -/usr/sbin/fix-info-dir -c %{_infodir}
481 %post libs -p /sbin/ldconfig
482 %postun libs -p /sbin/ldconfig
484 %triggerpostun -- poldek < 0.30.1-8
485 # poldek < 0.30-0.20080225.00.1
486 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
487 %{__sed} -i -e '/^%%include source.conf/{
489 a# /etc/poldek/repos.d/*.conf
490 a%%includedir repos.d
491 }' %{_sysconfdir}/%{name}/poldek.conf
494 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
495 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
497 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
498 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
499 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
503 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
504 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
505 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
509 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
510 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
511 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
513 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
514 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
515 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
518 if [ $1 -le 1 ]; then
519 # revert change on --downgrade
520 %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
523 %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
526 %files -f %{name}.lang
527 %defattr(644,root,root,755)
528 %doc ChangeLog README* NEWS configs
529 %dir %{_sysconfdir}/%{name}
530 %dir %{_sysconfdir}/%{name}/pre-install.d
531 %{_sysconfdir}/%{name}/pre-install.d/README
532 %dir %{_sysconfdir}/%{name}/post-install.d
533 %{_sysconfdir}/%{name}/post-install.d/README
534 %dir %{_sysconfdir}/%{name}/repos.d
535 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
536 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
537 %attr(755,root,root) %{_bindir}/ipoldek
538 %attr(755,root,root) %{_bindir}/poldek
539 %attr(755,root,root) %{_bindir}/poldek-config
540 %attr(755,root,root) %{_bindir}/rpmvercmp
541 %dir %{pkglibexecdir}
542 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
543 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
544 %attr(755,root,root) %{pkglibexecdir}/vfcompr
545 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
546 %attr(755,root,root) %{pkglibexecdir}/vfsmb
547 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
548 %{_mandir}/man1/%{name}*.1*
549 %lang(pl) %{_mandir}/pl/man1/%{name}*
550 %{_infodir}/poldek.info*
552 %{_desktopdir}/%{name}.desktop
553 %{_pixmapsdir}/%{name}.png
555 %dir /var/cache/%{name}
557 %if %{without static}
559 %defattr(644,root,root,755)
560 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
561 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
562 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
563 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
564 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
565 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
566 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
567 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
568 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
569 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
573 %defattr(644,root,root,755)
574 %if %{without static}
575 %attr(755,root,root) %{_libdir}/libpoclidek.so
576 %attr(755,root,root) %{_libdir}/libpoldek.so
577 %attr(755,root,root) %{_libdir}/libtndb.so
578 %attr(755,root,root) %{_libdir}/libtrurl.so
579 %attr(755,root,root) %{_libdir}/libvfile.so
581 %{_libdir}/libpoclidek.la
582 %{_libdir}/libpoldek.la
583 %{_libdir}/libtndb.la
584 %{_libdir}/libtrurl.la
585 %{_libdir}/libvfile.la
586 %{_includedir}/poldek
590 %{_pkgconfigdir}/tndb.pc
591 %{_pkgconfigdir}/trurlib.pc
594 %defattr(644,root,root,755)
596 %{_libdir}/libtrurl.a
599 %files -n python-poldek
600 %defattr(644,root,root,755)
601 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
602 %{py_sitescriptdir}/poldek.py[co]
603 %{py_sitescriptdir}/poldekmod.py[co]