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 rpm4 # use rpm4 instead of rpm5
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 URL: http://poldek.pld-linux.org/
69 BuildRequires: %{db_pkg}-devel >= %{ver_db}
70 BuildRequires: autoconf >= 2.63
71 BuildRequires: automake >= 1:1.11
72 BuildRequires: bzip2-devel
73 BuildRequires: check-devel
74 BuildRequires: docbook-dtd412-xml
75 BuildRequires: docbook2X
76 BuildRequires: gettext-tools >= 0.11.5
77 BuildRequires: libgomp-devel
78 BuildRequires: libtool
79 BuildRequires: libxml2-devel >= 2
80 BuildRequires: ncurses-devel
81 BuildRequires: openssl-devel >= 0.9.7d
82 BuildRequires: pcre-devel
83 BuildRequires: perl-XML-Simple
84 BuildRequires: perl-base
85 BuildRequires: perl-modules
86 BuildRequires: pkgconfig
87 BuildRequires: popt-devel
88 %{?with_python:BuildRequires: python-devel}
89 BuildRequires: readline-devel >= 5.0
90 BuildRequires: rpm-devel >= %{ver_rpm}
91 %{?with_python:BuildRequires: rpm-pythonprov}
92 BuildRequires: tar >= 1:1.22
93 BuildRequires: texinfo
96 BuildRequires: zlib-devel
97 BuildRequires: zstd-devel
99 BuildRequires: %{db_pkg}-static >= %{ver_db}
100 BuildRequires: bzip2-static
101 BuildRequires: glibc-static
102 BuildRequires: libxml2-static
103 BuildRequires: ncurses-static
104 BuildRequires: openssl-static
105 BuildRequires: pcre-static
106 BuildRequires: popt-static
107 BuildRequires: readline-static
108 BuildRequires: rpm-static
109 BuildRequires: zlib-static
110 BuildRequires: zstd-static
112 Requires(postun): awk
113 Requires(postun): sed >= 4.0
115 Requires: %{db_pkg} >= %{ver_db_devel}
117 Requires: %{db_pkg} >= %{ver_db}
118 Requires: rpm-db-ver = %{ver_db}
120 Requires: %{name}-libs = %{version}-%{release}
121 Requires: /bin/run-parts
122 Requires: rpm >= %{ver_rpm}
123 Requires: rpm-lib >= %{ver_rpm}
125 Conflicts: etckeeper < 1.18-2
126 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
128 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
129 %define pkglibexecdir %{_prefix}/lib/%{name}
132 poldek is an RPM package management tool which allows you to easily
133 perform package verification, installation (including system
134 installation from scratch), upgrading, and removal.
136 Program can be used in batch (like apt-get from Debian's APT) or
137 interactive mode. The interactive mode puts you into a readline
138 interface with command line autocompletion and history, similar to the
139 shell mode of Perl's CPAN.
141 %{?with_static:This version is statically linked.}
143 %{!?with_imode:This version hasn't got interactive mode.}
146 %description -l hu.UTF-8
147 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
148 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
149 nulláról), frissítést és eltávolítást.
151 A program használható parancssorból (mint a Debian apt-get programja)
152 vagy interaktív módban. Az interaktív mód egy readline környezetet
153 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
156 %{?with_static:Ez a verzió statikusan linkelt.}
158 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
160 %description -l pl.UTF-8
161 poldek jest narzędziem linii poleceń służącym do weryfikacji,
162 instalacji (włączając instalację systemu od zera), aktualizacji i
165 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
166 interaktywnym. Tryb interaktywny posiada interfejs readline z
167 dopełnianiem komend i historią, podobny do trybu shell perlowego
170 %{?with_static:Ta wersja jest konsolidowana statycznie.}
172 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
175 Summary: poldek libraries
176 Summary(hu.UTF-8): A poldek könyvtárai
177 Summary(pl.UTF-8): Biblioteki poldka
183 %description libs -l hu.UTF-8
186 %description libs -l pl.UTF-8
190 Summary: Header files for poldek libraries
191 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
192 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
193 Group: Development/Libraries
194 Requires: %{name}-libs = %{version}-%{release}
195 Requires: rpm-devel >= %{ver_rpm}
198 Header files for poldek libraries.
200 %description devel -l hu.UTF-8
201 A poldek könyvtár fejlesztői fájljai.
203 %description devel -l pl.UTF-8
204 Pliki nagłówkowe bibliotek poldka.
207 Summary: poldek static libraries
208 Summary(hu.UTF-8): poldek statikus könyvtárak
209 Summary(pl.UTF-8): Biblioteki statyczne poldka
210 Group: Development/Libraries
211 Requires: %{name}-devel = %{version}-%{release}
214 poldek static libraries.
216 %description static -l hu.UTF-8
217 poldek statikus könyvtárak.
219 %description static -l pl.UTF-8
220 Biblioteki statyczne poldka.
222 %package -n python-poldek
223 Summary: Python modules for poldek
224 Summary(hu.UTF-8): Python modulok poldek-hez
225 Summary(pl.UTF-8): Moduły języka Python dla poldka
226 Group: Libraries/Python
227 Requires: %{name}-libs = %{version}-%{release}
228 Requires: python-libs
230 %description -n python-poldek
231 Python modules for poldek.
233 %description -n python-poldek -l hu.UTF-8
234 Python modulok poldek-hez.
236 %description -n python-poldek -l pl.UTF-8
237 Moduły języka Python dla poldka.
258 %{__rm} doc/poldek.info
259 %{__rm} m4/libtool.m4 m4/lt*.m4
261 # cleanup backups after patching
262 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
263 chmod u+x ./configure ./doc/conf-xml2.sh
287 %{?with_static:--enable-static --disable-shared} \
288 %{!?with_imode:--disable-imode} \
289 --with-pkglibdir=%{pkglibexecdir} \
291 %{?with_python:--with-python}
294 %{__make} -C doc poldek.info
305 rm -rf $RPM_BUILD_ROOT
306 install -d $RPM_BUILD_ROOT/var/cache/%{name}
309 DESTDIR=$RPM_BUILD_ROOT
311 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
314 %{__make} -C python install \
315 DESTDIR=$RPM_BUILD_ROOT \
316 py_sitedir=%{py_sitedir}
319 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
321 %ifarch i486 i686 ppc sparc alpha athlon aarch64
322 %define ftp_arch %{_target_cpu}
325 %define ftp_arch x86_64
326 %define ftp_alt_arch i686
327 %define ftp_alt2_arch x32
331 %define ftp_alt_arch x86_64
332 %define ftp_alt2_arch i686
335 %define ftp_arch i486
337 %ifarch pentium2 pentium3 pentium4
338 %define ftp_arch i686
340 %ifarch sparcv9 sparc64
341 %define ftp_arch sparc
342 %define ftp_arch %{_target_cpu}
344 %define ftp_alt_arch sparcv9
348 %define pld_conf %{SOURCE1}
349 %define pld_debuginfo_conf %{SOURCE8}
350 %define pld_archive_conf %{SOURCE11}
353 %define pld_multilib_conf %{SOURCE2}
354 %define pld_multilib2_conf %{SOURCE2}
358 %ifarch sparcv9 sparc64
359 %define pld_conf %{SOURCE9}
360 %undefine pld_archive_conf
363 %define pld_multilib_conf %{SOURCE10}
366 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
368 %if 0%{?pld_multilib_conf:1}
369 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
372 %if 0%{?pld_multilib2_conf:1}
373 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
376 %if 0%{?pld_debuginfo_conf:1}
377 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
380 %if 0%{?pld_archive_conf:1}
381 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
384 # Always install snapshot configs
385 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
386 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
387 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
388 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
390 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
391 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
392 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
393 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
397 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
398 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
400 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
401 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
404 # create "all" meta repo
405 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
406 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
407 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
411 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
415 # th-2014 snap does not exist for x32 yet
416 %if "%{ftp_arch}" == "x32"
417 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
419 %if "%{ftp_alt2_arch}" == "x32"
420 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
423 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
426 # add desktop file and icon
427 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
428 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
429 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
432 # sources we don't package
433 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
434 # include them in %doc
437 %{__rm} -f configs/Makefile*
441 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
447 rm -rf $RPM_BUILD_ROOT
450 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
451 if [ "$1" = "1" ]; then
452 # remove ignore = vserver-packages inside vserver on first install
455 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
456 done </proc/self/status
458 if [ -z "$ctx" -o "$ctx" = "0" ]; then
463 if [ "$VSERVER" = "yes" ]; then
464 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
468 %postun -p /sbin/postshell
469 -/usr/sbin/fix-info-dir -c %{_infodir}
471 %post libs -p /sbin/ldconfig
472 %postun libs -p /sbin/ldconfig
474 %triggerpostun -- poldek < 0.30.1-8
475 # poldek < 0.30-0.20080225.00.1
476 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
477 %{__sed} -i -e '/^%%include source.conf/{
479 a# /etc/poldek/repos.d/*.conf
480 a%%includedir repos.d
481 }' %{_sysconfdir}/%{name}/poldek.conf
484 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
485 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
487 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
488 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
489 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
493 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
494 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
495 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
499 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
500 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
501 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
503 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
504 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
505 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
508 if [ $1 -le 1 ]; then
509 # revert change on --downgrade
510 %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
513 %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
516 %files -f %{name}.lang
517 %defattr(644,root,root,755)
518 %doc ChangeLog README* NEWS configs
519 %dir %{_sysconfdir}/%{name}
520 %dir %{_sysconfdir}/%{name}/pre-install.d
521 %{_sysconfdir}/%{name}/pre-install.d/README
522 %dir %{_sysconfdir}/%{name}/post-install.d
523 %{_sysconfdir}/%{name}/post-install.d/README
524 %dir %{_sysconfdir}/%{name}/repos.d
525 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
526 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
527 %attr(755,root,root) %{_bindir}/ipoldek
528 %attr(755,root,root) %{_bindir}/poldek
529 %attr(755,root,root) %{_bindir}/poldek-config
530 %attr(755,root,root) %{_bindir}/rpmvercmp
531 %dir %{pkglibexecdir}
532 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
533 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
534 %attr(755,root,root) %{pkglibexecdir}/vfcompr
535 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
536 %attr(755,root,root) %{pkglibexecdir}/vfsmb
537 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
538 %{_mandir}/man1/%{name}*.1*
539 %lang(pl) %{_mandir}/pl/man1/%{name}*
540 %{_infodir}/poldek.info*
542 %{_desktopdir}/%{name}.desktop
543 %{_pixmapsdir}/%{name}.png
545 %dir /var/cache/%{name}
547 %if %{without static}
549 %defattr(644,root,root,755)
550 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
551 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
552 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
553 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
554 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
555 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
556 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
557 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
558 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
559 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
563 %defattr(644,root,root,755)
564 %if %{without static}
565 %attr(755,root,root) %{_libdir}/libpoclidek.so
566 %attr(755,root,root) %{_libdir}/libpoldek.so
567 %attr(755,root,root) %{_libdir}/libtndb.so
568 %attr(755,root,root) %{_libdir}/libtrurl.so
569 %attr(755,root,root) %{_libdir}/libvfile.so
571 %{_libdir}/libpoclidek.la
572 %{_libdir}/libpoldek.la
573 %{_libdir}/libtndb.la
574 %{_libdir}/libtrurl.la
575 %{_libdir}/libvfile.la
576 %{_includedir}/poldek
580 %{_pkgconfigdir}/tndb.pc
581 %{_pkgconfigdir}/trurlib.pc
584 %defattr(644,root,root,755)
586 %{_libdir}/libtrurl.a
589 %files -n python-poldek
590 %defattr(644,root,root,755)
591 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
592 %{py_sitescriptdir}/poldek.py[co]
593 %{py_sitescriptdir}/poldekmod.py[co]