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 URL: http://poldek.pld-linux.org/
71 BuildRequires: %{db_pkg}-devel >= %{ver_db}
72 BuildRequires: autoconf >= 2.63
73 BuildRequires: automake >= 1:1.11
74 BuildRequires: bzip2-devel
75 BuildRequires: check-devel
76 BuildRequires: docbook-dtd412-xml
77 BuildRequires: docbook2X
78 BuildRequires: gettext-tools >= 0.11.5
79 BuildRequires: libgomp-devel
80 BuildRequires: libtool
81 BuildRequires: libxml2-devel >= 2
82 BuildRequires: ncurses-devel
83 BuildRequires: openssl-devel >= 0.9.7d
84 BuildRequires: pcre-devel
85 BuildRequires: perl-XML-Simple
86 BuildRequires: perl-base
87 BuildRequires: perl-modules
88 BuildRequires: pkgconfig
89 BuildRequires: popt-devel
90 %{?with_python:BuildRequires: python-devel}
91 BuildRequires: readline-devel >= 5.0
92 BuildRequires: rpm-devel >= %{ver_rpm}
93 %{?with_python:BuildRequires: rpm-pythonprov}
94 BuildRequires: tar >= 1:1.22
95 BuildRequires: texinfo
98 BuildRequires: zlib-devel
99 BuildRequires: zstd-devel
101 BuildRequires: %{db_pkg}-static >= %{ver_db}
102 BuildRequires: bzip2-static
103 BuildRequires: glibc-static
104 BuildRequires: libxml2-static
105 BuildRequires: ncurses-static
106 BuildRequires: openssl-static
107 BuildRequires: pcre-static
108 BuildRequires: popt-static
109 BuildRequires: readline-static
110 BuildRequires: rpm-static
111 BuildRequires: zlib-static
112 BuildRequires: zstd-static
114 Requires(postun): awk
115 Requires(postun): sed >= 4.0
117 Requires: %{db_pkg} >= %{ver_db_devel}
119 Requires: %{db_pkg} >= %{ver_db}
120 Requires: rpm-db-ver = %{ver_db}
122 Requires: %{name}-libs = %{version}-%{release}
123 Requires: /bin/run-parts
124 Requires: rpm >= %{ver_rpm}
125 Requires: rpm-lib >= %{ver_rpm}
127 Conflicts: etckeeper < 1.18-2
128 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
130 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
131 %define pkglibexecdir %{_prefix}/lib/%{name}
134 poldek is an RPM package management tool which allows you to easily
135 perform package verification, installation (including system
136 installation from scratch), upgrading, and removal.
138 Program can be used in batch (like apt-get from Debian's APT) or
139 interactive mode. The interactive mode puts you into a readline
140 interface with command line autocompletion and history, similar to the
141 shell mode of Perl's CPAN.
143 %{?with_static:This version is statically linked.}
145 %{!?with_imode:This version hasn't got interactive mode.}
148 %description -l hu.UTF-8
149 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
150 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
151 nulláról), frissítést és eltávolítást.
153 A program használható parancssorból (mint a Debian apt-get programja)
154 vagy interaktív módban. Az interaktív mód egy readline környezetet
155 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
158 %{?with_static:Ez a verzió statikusan linkelt.}
160 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
162 %description -l pl.UTF-8
163 poldek jest narzędziem linii poleceń służącym do weryfikacji,
164 instalacji (włączając instalację systemu od zera), aktualizacji i
167 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
168 interaktywnym. Tryb interaktywny posiada interfejs readline z
169 dopełnianiem komend i historią, podobny do trybu shell perlowego
172 %{?with_static:Ta wersja jest konsolidowana statycznie.}
174 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
177 Summary: poldek libraries
178 Summary(hu.UTF-8): A poldek könyvtárai
179 Summary(pl.UTF-8): Biblioteki poldka
185 %description libs -l hu.UTF-8
188 %description libs -l pl.UTF-8
192 Summary: Header files for poldek libraries
193 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
194 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
195 Group: Development/Libraries
196 Requires: %{name}-libs = %{version}-%{release}
197 Requires: rpm-devel >= %{ver_rpm}
200 Header files for poldek libraries.
202 %description devel -l hu.UTF-8
203 A poldek könyvtár fejlesztői fájljai.
205 %description devel -l pl.UTF-8
206 Pliki nagłówkowe bibliotek poldka.
209 Summary: poldek static libraries
210 Summary(hu.UTF-8): poldek statikus könyvtárak
211 Summary(pl.UTF-8): Biblioteki statyczne poldka
212 Group: Development/Libraries
213 Requires: %{name}-devel = %{version}-%{release}
216 poldek static libraries.
218 %description static -l hu.UTF-8
219 poldek statikus könyvtárak.
221 %description static -l pl.UTF-8
222 Biblioteki statyczne poldka.
224 %package -n python-poldek
225 Summary: Python modules for poldek
226 Summary(hu.UTF-8): Python modulok poldek-hez
227 Summary(pl.UTF-8): Moduły języka Python dla poldka
228 Group: Libraries/Python
229 Requires: %{name}-libs = %{version}-%{release}
230 Requires: python-libs
232 %description -n python-poldek
233 Python modules for poldek.
235 %description -n python-poldek -l hu.UTF-8
236 Python modulok poldek-hez.
238 %description -n python-poldek -l pl.UTF-8
239 Moduły języka Python dla poldka.
262 %{__rm} doc/poldek.info
263 %{__rm} m4/libtool.m4 m4/lt*.m4
265 # cleanup backups after patching
266 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
267 chmod u+x ./configure ./doc/conf-xml2.sh
291 %{?with_static:--enable-static --disable-shared} \
292 %{!?with_imode:--disable-imode} \
293 --with-pkglibdir=%{pkglibexecdir} \
295 %{?with_python:--with-python}
298 %{__make} -C doc poldek.info
309 rm -rf $RPM_BUILD_ROOT
310 install -d $RPM_BUILD_ROOT/var/cache/%{name}
313 DESTDIR=$RPM_BUILD_ROOT
315 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
318 %{__make} -C python install \
319 DESTDIR=$RPM_BUILD_ROOT \
320 py_sitedir=%{py_sitedir}
323 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
325 %ifarch i486 i686 ppc sparc alpha athlon aarch64
326 %define ftp_arch %{_target_cpu}
329 %define ftp_arch x86_64
330 %define ftp_alt_arch i686
331 %define ftp_alt2_arch x32
335 %define ftp_alt_arch x86_64
336 %define ftp_alt2_arch i686
339 %define ftp_arch i486
341 %ifarch pentium2 pentium3 pentium4
342 %define ftp_arch i686
344 %ifarch sparcv9 sparc64
345 %define ftp_arch sparc
346 %define ftp_arch %{_target_cpu}
348 %define ftp_alt_arch sparcv9
352 %define pld_conf %{SOURCE1}
353 %define pld_debuginfo_conf %{SOURCE8}
354 %define pld_archive_conf %{SOURCE11}
357 %define pld_multilib_conf %{SOURCE2}
358 %define pld_multilib2_conf %{SOURCE2}
362 %ifarch sparcv9 sparc64
363 %define pld_conf %{SOURCE9}
364 %undefine pld_archive_conf
367 %define pld_multilib_conf %{SOURCE10}
370 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
372 %if 0%{?pld_multilib_conf:1}
373 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
376 %if 0%{?pld_multilib2_conf:1}
377 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
380 %if 0%{?pld_debuginfo_conf:1}
381 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
384 %if 0%{?pld_archive_conf:1}
385 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
388 # Always install snapshot configs
389 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
390 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
391 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
392 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
394 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
395 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
396 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
397 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
401 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
402 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
404 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
405 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
408 # create "all" meta repo
409 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
410 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
411 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
415 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
419 # th-2014 snap does not exist for x32 yet
420 %if "%{ftp_arch}" == "x32"
421 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
423 %if "%{ftp_alt2_arch}" == "x32"
424 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
427 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
430 # add desktop file and icon
431 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
432 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
433 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
436 # sources we don't package
437 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
438 # include them in %doc
441 %{__rm} -f configs/Makefile*
445 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
451 rm -rf $RPM_BUILD_ROOT
454 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
455 if [ "$1" = "1" ]; then
456 # remove ignore = vserver-packages inside vserver on first install
459 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
460 done </proc/self/status
462 if [ -z "$ctx" -o "$ctx" = "0" ]; then
467 if [ "$VSERVER" = "yes" ]; then
468 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
472 %postun -p /sbin/postshell
473 -/usr/sbin/fix-info-dir -c %{_infodir}
475 %post libs -p /sbin/ldconfig
476 %postun libs -p /sbin/ldconfig
478 %triggerpostun -- poldek < 0.30.1-8
479 # poldek < 0.30-0.20080225.00.1
480 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
481 %{__sed} -i -e '/^%%include source.conf/{
483 a# /etc/poldek/repos.d/*.conf
484 a%%includedir repos.d
485 }' %{_sysconfdir}/%{name}/poldek.conf
488 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
489 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
491 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
492 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
493 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
497 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
498 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
499 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
503 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
504 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
505 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
507 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
508 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
509 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
512 if [ $1 -le 1 ]; then
513 # revert change on --downgrade
514 %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
517 %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
520 %files -f %{name}.lang
521 %defattr(644,root,root,755)
522 %doc ChangeLog README* NEWS configs
523 %dir %{_sysconfdir}/%{name}
524 %dir %{_sysconfdir}/%{name}/pre-install.d
525 %{_sysconfdir}/%{name}/pre-install.d/README
526 %dir %{_sysconfdir}/%{name}/post-install.d
527 %{_sysconfdir}/%{name}/post-install.d/README
528 %dir %{_sysconfdir}/%{name}/repos.d
529 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
530 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
531 %attr(755,root,root) %{_bindir}/ipoldek
532 %attr(755,root,root) %{_bindir}/poldek
533 %attr(755,root,root) %{_bindir}/poldek-config
534 %attr(755,root,root) %{_bindir}/rpmvercmp
535 %dir %{pkglibexecdir}
536 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
537 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
538 %attr(755,root,root) %{pkglibexecdir}/vfcompr
539 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
540 %attr(755,root,root) %{pkglibexecdir}/vfsmb
541 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
542 %{_mandir}/man1/%{name}*.1*
543 %lang(pl) %{_mandir}/pl/man1/%{name}*
544 %{_infodir}/poldek.info*
546 %{_desktopdir}/%{name}.desktop
547 %{_pixmapsdir}/%{name}.png
549 %dir /var/cache/%{name}
551 %if %{without static}
553 %defattr(644,root,root,755)
554 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
555 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
556 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
557 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
558 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
559 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
560 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
561 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
562 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
563 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
567 %defattr(644,root,root,755)
568 %if %{without static}
569 %attr(755,root,root) %{_libdir}/libpoclidek.so
570 %attr(755,root,root) %{_libdir}/libpoldek.so
571 %attr(755,root,root) %{_libdir}/libtndb.so
572 %attr(755,root,root) %{_libdir}/libtrurl.so
573 %attr(755,root,root) %{_libdir}/libvfile.so
575 %{_libdir}/libpoclidek.la
576 %{_libdir}/libpoldek.la
577 %{_libdir}/libtndb.la
578 %{_libdir}/libtrurl.la
579 %{_libdir}/libvfile.la
580 %{_includedir}/poldek
584 %{_pkgconfigdir}/tndb.pc
585 %{_pkgconfigdir}/trurlib.pc
588 %defattr(644,root,root,755)
590 %{_libdir}/libtrurl.a
593 %files -n python-poldek
594 %defattr(644,root,root,755)
595 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
596 %{py_sitescriptdir}/poldek.py[co]
597 %{py_sitescriptdir}/poldekmod.py[co]