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_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 URL: http://poldek.pld-linux.org/
61 BuildRequires: %{db_pkg}-devel >= %{ver_db}
62 BuildRequires: autoconf >= 2.63
63 BuildRequires: automake >= 1:1.11
64 BuildRequires: bzip2-devel
65 BuildRequires: check-devel
66 BuildRequires: docbook-dtd412-xml
67 BuildRequires: docbook2X
68 BuildRequires: gettext-tools >= 0.11.5
69 BuildRequires: libgomp-devel
70 BuildRequires: libtool
71 BuildRequires: libxml2-devel >= 2
72 BuildRequires: ncurses-devel
73 BuildRequires: openssl-devel >= 0.9.7d
74 BuildRequires: pcre-devel
75 BuildRequires: perl-XML-Simple
76 BuildRequires: perl-base
77 BuildRequires: perl-modules
78 BuildRequires: pkgconfig
79 BuildRequires: popt-devel
80 %{?with_python:BuildRequires: python-devel}
81 BuildRequires: readline-devel >= 5.0
82 BuildRequires: rpm-devel >= %{ver_rpm}
83 %{?with_python:BuildRequires: rpm-pythonprov}
84 BuildRequires: tar >= 1:1.22
85 BuildRequires: texinfo
88 BuildRequires: zlib-devel
89 BuildRequires: zstd-devel
91 BuildRequires: %{db_pkg}-static >= %{ver_db}
92 BuildRequires: bzip2-static
93 BuildRequires: glibc-static
94 BuildRequires: libxml2-static
95 BuildRequires: ncurses-static
96 BuildRequires: openssl-static
97 BuildRequires: pcre-static
98 BuildRequires: popt-static
99 BuildRequires: readline-static
100 BuildRequires: rpm-static
101 BuildRequires: zlib-static
102 BuildRequires: zstd-static
104 Requires(triggerpostun): awk
105 Requires(triggerpostun): sed >= 4.0
107 Requires: %{db_pkg} >= %{ver_db_devel}
109 Requires: %{db_pkg} >= %{ver_db}
110 Requires: rpm-db-ver = %{ver_db}
112 Requires: %{name}-libs = %{version}-%{release}
113 Requires: /bin/run-parts
114 Requires: rpm >= %{ver_rpm}
115 Requires: rpm-lib >= %{ver_rpm}
117 Conflicts: etckeeper < 1.18-2
118 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
120 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
121 %define pkglibexecdir %{_prefix}/lib/%{name}
124 poldek is an RPM package management tool which allows you to easily
125 perform package verification, installation (including system
126 installation from scratch), upgrading, and removal.
128 Program can be used in batch (like apt-get from Debian's APT) or
129 interactive mode. The interactive mode puts you into a readline
130 interface with command line autocompletion and history, similar to the
131 shell mode of Perl's CPAN.
133 %{?with_static:This version is statically linked.}
135 %{!?with_imode:This version hasn't got interactive mode.}
138 %description -l hu.UTF-8
139 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
140 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
141 nulláról), frissítést és eltávolítást.
143 A program használható parancssorból (mint a Debian apt-get programja)
144 vagy interaktív módban. Az interaktív mód egy readline környezetet
145 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
148 %{?with_static:Ez a verzió statikusan linkelt.}
150 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
152 %description -l pl.UTF-8
153 poldek jest narzędziem linii poleceń służącym do weryfikacji,
154 instalacji (włączając instalację systemu od zera), aktualizacji i
157 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
158 interaktywnym. Tryb interaktywny posiada interfejs readline z
159 dopełnianiem komend i historią, podobny do trybu shell perlowego
162 %{?with_static:Ta wersja jest konsolidowana statycznie.}
164 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
167 Summary: poldek libraries
168 Summary(hu.UTF-8): A poldek könyvtárai
169 Summary(pl.UTF-8): Biblioteki poldka
175 %description libs -l hu.UTF-8
178 %description libs -l pl.UTF-8
182 Summary: Header files for poldek libraries
183 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
184 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
185 Group: Development/Libraries
186 Requires: %{name}-libs = %{version}-%{release}
187 Requires: rpm-devel >= %{ver_rpm}
190 Header files for poldek libraries.
192 %description devel -l hu.UTF-8
193 A poldek könyvtár fejlesztői fájljai.
195 %description devel -l pl.UTF-8
196 Pliki nagłówkowe bibliotek poldka.
199 Summary: poldek static libraries
200 Summary(hu.UTF-8): poldek statikus könyvtárak
201 Summary(pl.UTF-8): Biblioteki statyczne poldka
202 Group: Development/Libraries
203 Requires: %{name}-devel = %{version}-%{release}
206 poldek static libraries.
208 %description static -l hu.UTF-8
209 poldek statikus könyvtárak.
211 %description static -l pl.UTF-8
212 Biblioteki statyczne poldka.
214 %package -n python-poldek
215 Summary: Python modules for poldek
216 Summary(hu.UTF-8): Python modulok poldek-hez
217 Summary(pl.UTF-8): Moduły języka Python dla poldka
218 Group: Libraries/Python
219 Requires: %{name}-libs = %{version}-%{release}
220 Requires: python-libs
222 %description -n python-poldek
223 Python modules for poldek.
225 %description -n python-poldek -l hu.UTF-8
226 Python modulok poldek-hez.
228 %description -n python-poldek -l pl.UTF-8
229 Moduły języka Python dla poldka.
240 %{__rm} doc/poldek.info
241 %{__rm} m4/libtool.m4 m4/lt*.m4
243 # cleanup backups after patching
244 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
245 chmod u+x ./configure ./doc/conf-xml2.sh
269 %{?with_static:--enable-static --disable-shared} \
270 %{!?with_imode:--disable-imode} \
271 --with-pkglibdir=%{pkglibexecdir} \
273 %{?with_python:--with-python}
276 %{__make} -C doc poldek.info
287 rm -rf $RPM_BUILD_ROOT
288 install -d $RPM_BUILD_ROOT/var/cache/%{name}
291 DESTDIR=$RPM_BUILD_ROOT
293 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
296 %{__make} -C python install \
297 DESTDIR=$RPM_BUILD_ROOT \
298 py_sitedir=%{py_sitedir}
301 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
303 %ifarch i486 i686 ppc sparc alpha athlon aarch64
304 %define ftp_arch %{_target_cpu}
307 %define ftp_arch x86_64
308 %define ftp_alt_arch i686
309 %define ftp_alt2_arch x32
313 %define ftp_alt_arch x86_64
314 %define ftp_alt2_arch i686
317 %define ftp_arch i486
319 %ifarch pentium2 pentium3 pentium4
320 %define ftp_arch i686
322 %ifarch sparcv9 sparc64
323 %define ftp_arch sparc
324 %define ftp_arch %{_target_cpu}
326 %define ftp_alt_arch sparcv9
330 %define pld_conf %{SOURCE1}
331 %define pld_debuginfo_conf %{SOURCE8}
332 %define pld_archive_conf %{SOURCE11}
335 %define pld_multilib_conf %{SOURCE2}
336 %define pld_multilib2_conf %{SOURCE2}
340 %ifarch sparcv9 sparc64
341 %define pld_conf %{SOURCE9}
342 %undefine pld_archive_conf
345 %define pld_multilib_conf %{SOURCE10}
348 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
350 %if 0%{?pld_multilib_conf:1}
351 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
354 %if 0%{?pld_multilib2_conf:1}
355 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
358 %if 0%{?pld_debuginfo_conf:1}
359 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
362 %if 0%{?pld_archive_conf:1}
363 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
366 # Always install snapshot configs
367 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
368 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
369 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
370 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
372 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
373 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
374 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
375 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
379 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
380 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
382 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
383 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
386 # create "all" meta repo
387 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
388 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
389 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
393 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
397 # th-2014 snap does not exist for x32 yet
398 %if "%{ftp_arch}" == "x32"
399 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
401 %if "%{ftp_alt2_arch}" == "x32"
402 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
405 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
408 # add desktop file and icon
409 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
410 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
411 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
414 # sources we don't package
415 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
416 # include them in %doc
419 %{__rm} -f configs/Makefile*
423 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
429 rm -rf $RPM_BUILD_ROOT
432 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
433 if [ "$1" = "1" ]; then
434 # remove ignore = vserver-packages inside vserver on first install
437 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
438 done </proc/self/status
440 if [ -z "$ctx" -o "$ctx" = "0" ]; then
445 if [ "$VSERVER" = "yes" ]; then
446 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
450 %postun -p /sbin/postshell
451 -/usr/sbin/fix-info-dir -c %{_infodir}
453 %post libs -p /sbin/ldconfig
454 %postun libs -p /sbin/ldconfig
456 %triggerpostun -- poldek < 0.30-0.20080225.00.1
457 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
458 %{__sed} -i -e '/^%%include source.conf/{
460 a# /etc/poldek/repos.d/*.conf
461 a%%includedir repos.d
462 }' %{_sysconfdir}/%{name}/poldek.conf
465 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
466 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
468 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
469 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
470 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
474 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
475 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
476 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
480 %triggerpostun -- poldek < 0.30.1-3
481 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
482 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
483 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
485 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
486 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
487 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
490 %triggerpostun -- %{name} < 0.30.1-8
491 if [ $1 -le 1 ]; then
492 # revert change on --downgrade
493 %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
496 %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
499 %files -f %{name}.lang
500 %defattr(644,root,root,755)
501 %doc ChangeLog README* NEWS configs
502 %dir %{_sysconfdir}/%{name}
503 %dir %{_sysconfdir}/%{name}/pre-install.d
504 %{_sysconfdir}/%{name}/pre-install.d/README
505 %dir %{_sysconfdir}/%{name}/post-install.d
506 %{_sysconfdir}/%{name}/post-install.d/README
507 %dir %{_sysconfdir}/%{name}/repos.d
508 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
509 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
510 %attr(755,root,root) %{_bindir}/ipoldek
511 %attr(755,root,root) %{_bindir}/poldek
512 %attr(755,root,root) %{_bindir}/poldek-config
513 %attr(755,root,root) %{_bindir}/rpmvercmp
514 %dir %{pkglibexecdir}
515 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
516 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
517 %attr(755,root,root) %{pkglibexecdir}/vfcompr
518 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
519 %attr(755,root,root) %{pkglibexecdir}/vfsmb
520 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
521 %{_mandir}/man1/%{name}*.1*
522 %lang(pl) %{_mandir}/pl/man1/%{name}*
523 %{_infodir}/poldek.info*
525 %{_desktopdir}/%{name}.desktop
526 %{_pixmapsdir}/%{name}.png
528 %dir /var/cache/%{name}
530 %if %{without static}
532 %defattr(644,root,root,755)
533 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
534 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
535 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
536 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
537 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
538 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
539 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
540 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
541 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
542 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
546 %defattr(644,root,root,755)
547 %if %{without static}
548 %attr(755,root,root) %{_libdir}/libpoclidek.so
549 %attr(755,root,root) %{_libdir}/libpoldek.so
550 %attr(755,root,root) %{_libdir}/libtndb.so
551 %attr(755,root,root) %{_libdir}/libtrurl.so
552 %attr(755,root,root) %{_libdir}/libvfile.so
554 %{_libdir}/libpoclidek.la
555 %{_libdir}/libpoldek.la
556 %{_libdir}/libtndb.la
557 %{_libdir}/libtrurl.la
558 %{_libdir}/libvfile.la
559 %{_includedir}/poldek
563 %{_pkgconfigdir}/tndb.pc
564 %{_pkgconfigdir}/trurlib.pc
567 %defattr(644,root,root,755)
569 %{_libdir}/libtrurl.a
572 %files -n python-poldek
573 %defattr(644,root,root,755)
574 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
575 %{py_sitescriptdir}/poldek.py[co]
576 %{py_sitescriptdir}/poldekmod.py[co]