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_without python # don't build python bindings
9 %bcond_with snap # install configs for official Th snapshot
10 %bcond_with rpm4 # use rpm4 instead of rpm5
11 %bcond_without 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 | %{__sed} -ne 's/^rpm-db-ver = \\([.0-9]*\\)$/\\1/p')
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: f224a4f62cdedf0d8bcfe0ce6dd533b2
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: uniqe-package-names.patch
59 URL: http://poldek.pld-linux.org/
60 BuildRequires: %{db_pkg}-devel >= %{ver_db}
61 BuildRequires: autoconf >= 2.63
62 BuildRequires: automake >= 1:1.11
63 BuildRequires: bzip2-devel
64 BuildRequires: check-devel
65 BuildRequires: docbook-dtd412-xml
66 BuildRequires: gettext-tools >= 0.11.5
67 BuildRequires: libgomp-devel
68 BuildRequires: libtool
69 BuildRequires: libxml2-devel >= 2
70 BuildRequires: ncurses-devel
71 BuildRequires: openssl-devel >= 0.9.7d
72 BuildRequires: pcre-devel
73 BuildRequires: pkgconfig
74 BuildRequires: popt-devel
75 %{?with_python:BuildRequires: python-devel}
76 BuildRequires: readline-devel >= 5.0
77 BuildRequires: rpm >= %{ver_rpm}
78 BuildRequires: rpm-devel >= %{ver_rpm}
79 %{?with_python:BuildRequires: rpm-pythonprov}
80 BuildRequires: tar >= 1:1.22
83 BuildRequires: zlib-devel
84 BuildRequires: zstd-devel
86 BuildRequires: %{db_pkg}-static >= %{ver_db}
87 BuildRequires: bzip2-static
88 BuildRequires: glibc-static
89 BuildRequires: libxml2-static
90 BuildRequires: ncurses-static
91 BuildRequires: openssl-static
92 BuildRequires: pcre-static
93 BuildRequires: popt-static
94 BuildRequires: readline-static
95 BuildRequires: rpm-static
96 BuildRequires: zlib-static
97 BuildRequires: zstd-static
99 Requires(triggerpostun): awk
100 Requires(triggerpostun): sed >= 4.0
102 Requires: %{db_pkg} >= %{ver_db_devel}
104 Requires: %{db_pkg} >= %{ver_db}
105 Requires: rpm-db-ver = %{ver_db}
107 Requires: %{name}-libs = %{version}-%{release}
108 Requires: /bin/run-parts
109 Requires: rpm >= %{ver_rpm}
110 Requires: rpm-lib >= %{ver_rpm}
112 Conflicts: etckeeper < 1.18-2
113 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
115 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
116 %define pkglibexecdir %{_prefix}/lib/%{name}
119 poldek is an RPM package management tool which allows you to easily
120 perform package verification, installation (including system
121 installation from scratch), upgrading, and removal.
123 Program can be used in batch (like apt-get from Debian's APT) or
124 interactive mode. The interactive mode puts you into a readline
125 interface with command line autocompletion and history, similar to the
126 shell mode of Perl's CPAN.
128 %{?with_static:This version is statically linked.}
130 %{!?with_imode:This version hasn't got interactive mode.}
133 %description -l hu.UTF-8
134 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
135 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
136 nulláról), frissítést és eltávolítást.
138 A program használható parancssorból (mint a Debian apt-get programja)
139 vagy interaktív módban. Az interaktív mód egy readline környezetet
140 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
143 %{?with_static:Ez a verzió statikusan linkelt.}
145 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
147 %description -l pl.UTF-8
148 poldek jest narzędziem linii poleceń służącym do weryfikacji,
149 instalacji (włączając instalację systemu od zera), aktualizacji i
152 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
153 interaktywnym. Tryb interaktywny posiada interfejs readline z
154 dopełnianiem komend i historią, podobny do trybu shell perlowego
157 %{?with_static:Ta wersja jest konsolidowana statycznie.}
159 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
162 Summary: poldek libraries
163 Summary(hu.UTF-8): A poldek könyvtárai
164 Summary(pl.UTF-8): Biblioteki poldka
170 %description libs -l hu.UTF-8
173 %description libs -l pl.UTF-8
177 Summary: Header files for poldek libraries
178 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
179 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
180 Group: Development/Libraries
181 Requires: %{name}-libs = %{version}-%{release}
182 Requires: rpm-devel >= %{ver_rpm}
185 Header files for poldek libraries.
187 %description devel -l hu.UTF-8
188 A poldek könyvtár fejlesztői fájljai.
190 %description devel -l pl.UTF-8
191 Pliki nagłówkowe bibliotek poldka.
194 Summary: poldek static libraries
195 Summary(hu.UTF-8): poldek statikus könyvtárak
196 Summary(pl.UTF-8): Biblioteki statyczne poldka
197 Group: Development/Libraries
198 Requires: %{name}-devel = %{version}-%{release}
201 poldek static libraries.
203 %description static -l hu.UTF-8
204 poldek statikus könyvtárak.
206 %description static -l pl.UTF-8
207 Biblioteki statyczne poldka.
209 %package -n python-poldek
210 Summary: Python modules for poldek
211 Summary(hu.UTF-8): Python modulok poldek-hez
212 Summary(pl.UTF-8): Moduły języka Python dla poldka
213 Group: Libraries/Python
214 Requires: %{name}-libs = %{version}-%{release}
215 Requires: python-libs
217 %description -n python-poldek
218 Python modules for poldek.
220 %description -n python-poldek -l hu.UTF-8
221 Python modulok poldek-hez.
223 %description -n python-poldek -l pl.UTF-8
224 Moduły języka Python dla poldka.
234 %{__rm} m4/libtool.m4 m4/lt*.m4
236 # cleanup backups after patching
237 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
238 chmod u+x ./configure ./doc/conf-xml2.sh
262 %{?with_static:--enable-static --disable-shared} \
263 %{!?with_imode:--disable-imode} \
264 --with-pkglibdir=%{pkglibexecdir} \
266 %{?with_python:--with-python}
279 rm -rf $RPM_BUILD_ROOT
280 install -d $RPM_BUILD_ROOT/var/cache/%{name}
283 DESTDIR=$RPM_BUILD_ROOT
285 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
288 %{__make} -C python install \
289 DESTDIR=$RPM_BUILD_ROOT \
290 py_sitedir=%{py_sitedir}
293 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
295 %ifarch i486 i686 ppc sparc alpha athlon
296 %define ftp_arch %{_target_cpu}
299 %define ftp_arch x86_64
300 %define ftp_alt_arch i686
301 %define ftp_alt2_arch x32
305 %define ftp_alt_arch x86_64
306 %define ftp_alt2_arch i686
309 %define ftp_arch i486
311 %ifarch pentium2 pentium3 pentium4
312 %define ftp_arch i686
314 %ifarch sparcv9 sparc64
315 %define ftp_arch sparc
316 %define ftp_arch %{_target_cpu}
318 %define ftp_alt_arch sparcv9
322 %define pld_conf %{SOURCE1}
323 %define pld_debuginfo_conf %{SOURCE8}
324 %define pld_archive_conf %{SOURCE11}
327 %define pld_multilib_conf %{SOURCE2}
328 %define pld_multilib2_conf %{SOURCE2}
332 %ifarch sparcv9 sparc64
333 %define pld_conf %{SOURCE9}
334 %undefine pld_archive_conf
337 %define pld_multilib_conf %{SOURCE10}
340 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
342 %if 0%{?pld_multilib_conf:1}
343 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
346 %if 0%{?pld_multilib2_conf:1}
347 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
350 %if 0%{?pld_debuginfo_conf:1}
351 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
354 %if 0%{?pld_archive_conf:1}
355 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
358 # Always install snapshot configs
359 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
360 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
361 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
362 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
364 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
365 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
366 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
367 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
371 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
372 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
374 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
375 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
378 # create "all" meta repo
379 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
380 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
381 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
385 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
389 # th-2014 snap does not exist for x32 yet
390 %if "%{ftp_arch}" == "x32"
391 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
393 %if "%{ftp_alt2_arch}" == "x32"
394 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
397 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
400 # add desktop file and icon
401 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
402 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
403 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
406 # sources we don't package
407 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
408 # include them in %doc
411 %{__rm} -f configs/Makefile*
415 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
421 rm -rf $RPM_BUILD_ROOT
424 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
425 if [ "$1" = "1" ]; then
426 # remove ignore = vserver-packages inside vserver on first install
429 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
430 done </proc/self/status
432 if [ -z "$ctx" -o "$ctx" = "0" ]; then
437 if [ "$VSERVER" = "yes" ]; then
438 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
442 %postun -p /sbin/postshell
443 -/usr/sbin/fix-info-dir -c %{_infodir}
445 %post libs -p /sbin/ldconfig
446 %postun libs -p /sbin/ldconfig
448 %triggerpostun -- poldek < 0.30-0.20080225.00.1
449 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
450 %{__sed} -i -e '/^%%include source.conf/{
452 a# /etc/poldek/repos.d/*.conf
453 a%%includedir repos.d
454 }' %{_sysconfdir}/%{name}/poldek.conf
457 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
458 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
460 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
461 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
462 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
466 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
467 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
468 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
472 %triggerpostun -- poldek < 0.30.1-3
473 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
474 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
475 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
477 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
478 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
479 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
482 %triggerpostun -- %{name} < 0.30.1-8
483 if [ $1 -le 1 ]; then
484 # revert change on --downgrade
485 %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
488 %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
491 %files -f %{name}.lang
492 %defattr(644,root,root,755)
493 %doc ChangeLog README* NEWS configs
494 %dir %{_sysconfdir}/%{name}
495 %dir %{_sysconfdir}/%{name}/pre-install.d
496 %{_sysconfdir}/%{name}/pre-install.d/README
497 %dir %{_sysconfdir}/%{name}/post-install.d
498 %{_sysconfdir}/%{name}/post-install.d/README
499 %dir %{_sysconfdir}/%{name}/repos.d
500 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
501 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
502 %attr(755,root,root) %{_bindir}/ipoldek
503 %attr(755,root,root) %{_bindir}/poldek
504 %attr(755,root,root) %{_bindir}/poldek-config
505 %attr(755,root,root) %{_bindir}/rpmvercmp
506 %dir %{pkglibexecdir}
507 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
508 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
509 %attr(755,root,root) %{pkglibexecdir}/vfcompr
510 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
511 %attr(755,root,root) %{pkglibexecdir}/vfsmb
512 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
513 %{_mandir}/man1/%{name}*.1*
514 %lang(pl) %{_mandir}/pl/man1/%{name}*
515 %{_infodir}/poldek.info*
517 %{_desktopdir}/%{name}.desktop
518 %{_pixmapsdir}/%{name}.png
520 %dir /var/cache/%{name}
522 %if %{without static}
524 %defattr(644,root,root,755)
525 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
526 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
527 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
528 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
529 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
530 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
531 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
532 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
533 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
534 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
538 %defattr(644,root,root,755)
539 %if %{without static}
540 %attr(755,root,root) %{_libdir}/libpoclidek.so
541 %attr(755,root,root) %{_libdir}/libpoldek.so
542 %attr(755,root,root) %{_libdir}/libtndb.so
543 %attr(755,root,root) %{_libdir}/libtrurl.so
544 %attr(755,root,root) %{_libdir}/libvfile.so
546 %{_libdir}/libpoclidek.la
547 %{_libdir}/libpoldek.la
548 %{_libdir}/libtndb.la
549 %{_libdir}/libtrurl.la
550 %{_libdir}/libvfile.la
551 %{_includedir}/poldek
555 %{_pkgconfigdir}/tndb.pc
556 %{_pkgconfigdir}/trurlib.pc
559 %defattr(644,root,root,755)
561 %{_libdir}/libtrurl.a
564 %files -n python-poldek
565 %defattr(644,root,root,755)
566 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
567 %{py_sitescriptdir}/poldek.py[co]
568 %{py_sitescriptdir}/poldekmod.py[co]