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 URL: http://poldek.pld-linux.org/
73 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 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_devel}
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.
267 %{__rm} doc/poldek.info
268 %{__rm} m4/libtool.m4 m4/lt*.m4
270 # cleanup backups after patching
271 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
272 chmod u+x ./configure ./doc/conf-xml2.sh
296 %{?with_static:--enable-static --disable-shared} \
297 %{!?with_imode:--disable-imode} \
298 --with-pkglibdir=%{pkglibexecdir} \
300 %{?with_python:--with-python}
303 %{__make} -C doc poldek.info
314 rm -rf $RPM_BUILD_ROOT
315 install -d $RPM_BUILD_ROOT/var/cache/%{name}
318 DESTDIR=$RPM_BUILD_ROOT
320 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
323 %{__make} -C python install \
324 DESTDIR=$RPM_BUILD_ROOT \
325 py_sitedir=%{py_sitedir}
328 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
330 %ifarch i486 i686 ppc sparc alpha athlon aarch64 %{arm}
331 %define ftp_arch %{_target_cpu}
334 %define ftp_arch x86_64
335 %define ftp_alt_arch i686
336 %define ftp_alt2_arch x32
340 %define ftp_alt_arch x86_64
341 %define ftp_alt2_arch i686
344 %define ftp_arch i486
346 %ifarch pentium2 pentium3 pentium4
347 %define ftp_arch i686
349 %ifarch sparcv9 sparc64
350 %define ftp_arch sparc
351 %define ftp_arch %{_target_cpu}
353 %define ftp_alt_arch sparcv9
357 %define pld_conf %{SOURCE1}
358 %define pld_debuginfo_conf %{SOURCE8}
359 %define pld_archive_conf %{SOURCE11}
362 %define pld_multilib_conf %{SOURCE2}
363 %define pld_multilib2_conf %{SOURCE2}
367 %ifarch sparcv9 sparc64
368 %define pld_conf %{SOURCE9}
369 %undefine pld_archive_conf
372 %define pld_multilib_conf %{SOURCE10}
375 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
377 %if 0%{?pld_multilib_conf:1}
378 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
381 %if 0%{?pld_multilib2_conf:1}
382 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
385 %if 0%{?pld_debuginfo_conf:1}
386 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
389 %if 0%{?pld_archive_conf:1}
390 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
393 # Always install snapshot configs
394 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
395 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
396 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
397 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
399 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
400 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
401 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
402 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
406 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
407 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
409 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
410 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
413 # create "all" meta repo
414 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
415 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
416 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
420 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
424 # th-2014 snap does not exist for x32 yet
425 %if "%{ftp_arch}" == "x32"
426 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
428 %if "%{ftp_alt2_arch}" == "x32"
429 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
432 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
435 # add desktop file and icon
436 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
437 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
438 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
441 # sources we don't package
442 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
443 # include them in %doc
446 %{__rm} -f configs/Makefile*
450 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
456 rm -rf $RPM_BUILD_ROOT
459 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
460 if [ "$1" = "1" ]; then
461 # remove ignore = vserver-packages inside vserver on first install
464 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
465 done </proc/self/status
467 if [ -z "$ctx" -o "$ctx" = "0" ]; then
472 if [ "$VSERVER" = "yes" ]; then
473 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
477 %postun -p /sbin/postshell
478 -/usr/sbin/fix-info-dir -c %{_infodir}
480 %post libs -p /sbin/ldconfig
481 %postun libs -p /sbin/ldconfig
483 %triggerpostun -- poldek < 0.30.1-8
484 # poldek < 0.30-0.20080225.00.1
485 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
486 %{__sed} -i -e '/^%%include source.conf/{
488 a# /etc/poldek/repos.d/*.conf
489 a%%includedir repos.d
490 }' %{_sysconfdir}/%{name}/poldek.conf
493 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
494 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
496 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
497 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
498 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
502 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
503 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
504 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
508 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
509 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
510 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
512 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
513 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
514 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
517 if [ $1 -le 1 ]; then
518 # revert change on --downgrade
519 %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
522 %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
525 %files -f %{name}.lang
526 %defattr(644,root,root,755)
527 %doc ChangeLog README* NEWS configs
528 %dir %{_sysconfdir}/%{name}
529 %dir %{_sysconfdir}/%{name}/pre-install.d
530 %{_sysconfdir}/%{name}/pre-install.d/README
531 %dir %{_sysconfdir}/%{name}/post-install.d
532 %{_sysconfdir}/%{name}/post-install.d/README
533 %dir %{_sysconfdir}/%{name}/repos.d
534 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
535 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
536 %attr(755,root,root) %{_bindir}/ipoldek
537 %attr(755,root,root) %{_bindir}/poldek
538 %attr(755,root,root) %{_bindir}/poldek-config
539 %attr(755,root,root) %{_bindir}/rpmvercmp
540 %dir %{pkglibexecdir}
541 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
542 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
543 %attr(755,root,root) %{pkglibexecdir}/vfcompr
544 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
545 %attr(755,root,root) %{pkglibexecdir}/vfsmb
546 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
547 %{_mandir}/man1/%{name}*.1*
548 %lang(pl) %{_mandir}/pl/man1/%{name}*
549 %{_infodir}/poldek.info*
551 %{_desktopdir}/%{name}.desktop
552 %{_pixmapsdir}/%{name}.png
554 %dir /var/cache/%{name}
556 %if %{without static}
558 %defattr(644,root,root,755)
559 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
560 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
561 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
562 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
563 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
564 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
565 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
566 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
567 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
568 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
572 %defattr(644,root,root,755)
573 %if %{without static}
574 %attr(755,root,root) %{_libdir}/libpoclidek.so
575 %attr(755,root,root) %{_libdir}/libpoldek.so
576 %attr(755,root,root) %{_libdir}/libtndb.so
577 %attr(755,root,root) %{_libdir}/libtrurl.so
578 %attr(755,root,root) %{_libdir}/libvfile.so
580 %{_libdir}/libpoclidek.la
581 %{_libdir}/libpoldek.la
582 %{_libdir}/libtndb.la
583 %{_libdir}/libtrurl.la
584 %{_libdir}/libvfile.la
585 %{_includedir}/poldek
589 %{_pkgconfigdir}/tndb.pc
590 %{_pkgconfigdir}/trurlib.pc
593 %defattr(644,root,root,755)
595 %{_libdir}/libtrurl.a
598 %files -n python-poldek
599 %defattr(644,root,root,755)
600 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
601 %{py_sitescriptdir}/poldek.py[co]
602 %{py_sitescriptdir}/poldekmod.py[co]