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 URL: http://poldek.pld-linux.org/
59 BuildRequires: %{db_pkg}-devel >= %{ver_db}
60 BuildRequires: autoconf >= 2.63
61 BuildRequires: automake >= 1:1.11
62 BuildRequires: bzip2-devel
63 BuildRequires: check-devel
64 BuildRequires: docbook-dtd412-xml
65 BuildRequires: gettext-tools >= 0.11.5
66 BuildRequires: libgomp-devel
67 BuildRequires: libtool
68 BuildRequires: libxml2-devel >= 2
69 BuildRequires: ncurses-devel
70 BuildRequires: openssl-devel >= 0.9.7d
71 BuildRequires: pcre-devel
72 BuildRequires: pkgconfig
73 BuildRequires: popt-devel
74 %{?with_python:BuildRequires: python-devel}
75 BuildRequires: readline-devel >= 5.0
76 BuildRequires: rpm >= %{ver_rpm}
77 BuildRequires: rpm-devel >= %{ver_rpm}
78 %{?with_python:BuildRequires: rpm-pythonprov}
79 BuildRequires: tar >= 1:1.22
82 BuildRequires: zlib-devel
83 BuildRequires: zstd-devel
85 BuildRequires: %{db_pkg}-static >= %{ver_db}
86 BuildRequires: bzip2-static
87 BuildRequires: glibc-static
88 BuildRequires: libxml2-static
89 BuildRequires: ncurses-static
90 BuildRequires: openssl-static
91 BuildRequires: pcre-static
92 BuildRequires: popt-static
93 BuildRequires: readline-static
94 BuildRequires: rpm-static
95 BuildRequires: zlib-static
96 BuildRequires: zstd-static
98 Requires(triggerpostun): awk
99 Requires(triggerpostun): sed >= 4.0
101 Requires: %{db_pkg} >= %{ver_db_devel}
103 Requires: %{db_pkg} >= %{ver_db}
104 Requires: rpm-db-ver = %{ver_db}
106 Requires: %{name}-libs = %{version}-%{release}
107 Requires: /bin/run-parts
108 Requires: rpm >= %{ver_rpm}
109 Requires: rpm-lib >= %{ver_rpm}
111 Conflicts: etckeeper < 1.18-2
112 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
114 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
115 %define pkglibexecdir %{_prefix}/lib/%{name}
118 poldek is an RPM package management tool which allows you to easily
119 perform package verification, installation (including system
120 installation from scratch), upgrading, and removal.
122 Program can be used in batch (like apt-get from Debian's APT) or
123 interactive mode. The interactive mode puts you into a readline
124 interface with command line autocompletion and history, similar to the
125 shell mode of Perl's CPAN.
127 %{?with_static:This version is statically linked.}
129 %{!?with_imode:This version hasn't got interactive mode.}
132 %description -l hu.UTF-8
133 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
134 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
135 nulláról), frissítést és eltávolítást.
137 A program használható parancssorból (mint a Debian apt-get programja)
138 vagy interaktív módban. Az interaktív mód egy readline környezetet
139 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
142 %{?with_static:Ez a verzió statikusan linkelt.}
144 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
146 %description -l pl.UTF-8
147 poldek jest narzędziem linii poleceń służącym do weryfikacji,
148 instalacji (włączając instalację systemu od zera), aktualizacji i
151 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
152 interaktywnym. Tryb interaktywny posiada interfejs readline z
153 dopełnianiem komend i historią, podobny do trybu shell perlowego
156 %{?with_static:Ta wersja jest konsolidowana statycznie.}
158 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
161 Summary: poldek libraries
162 Summary(hu.UTF-8): A poldek könyvtárai
163 Summary(pl.UTF-8): Biblioteki poldka
169 %description libs -l hu.UTF-8
172 %description libs -l pl.UTF-8
176 Summary: Header files for poldek libraries
177 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
178 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
179 Group: Development/Libraries
180 Requires: %{name}-libs = %{version}-%{release}
181 Requires: rpm-devel >= %{ver_rpm}
184 Header files for poldek libraries.
186 %description devel -l hu.UTF-8
187 A poldek könyvtár fejlesztői fájljai.
189 %description devel -l pl.UTF-8
190 Pliki nagłówkowe bibliotek poldka.
193 Summary: poldek static libraries
194 Summary(hu.UTF-8): poldek statikus könyvtárak
195 Summary(pl.UTF-8): Biblioteki statyczne poldka
196 Group: Development/Libraries
197 Requires: %{name}-devel = %{version}-%{release}
200 poldek static libraries.
202 %description static -l hu.UTF-8
203 poldek statikus könyvtárak.
205 %description static -l pl.UTF-8
206 Biblioteki statyczne poldka.
208 %package -n python-poldek
209 Summary: Python modules for poldek
210 Summary(hu.UTF-8): Python modulok poldek-hez
211 Summary(pl.UTF-8): Moduły języka Python dla poldka
212 Group: Libraries/Python
213 Requires: %{name}-libs = %{version}-%{release}
214 Requires: python-libs
216 %description -n python-poldek
217 Python modules for poldek.
219 %description -n python-poldek -l hu.UTF-8
220 Python modulok poldek-hez.
222 %description -n python-poldek -l pl.UTF-8
223 Moduły języka Python dla poldka.
232 %{__rm} m4/libtool.m4 m4/lt*.m4
234 # cleanup backups after patching
235 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
236 chmod u+x ./configure ./doc/conf-xml2.sh
260 %{?with_static:--enable-static --disable-shared} \
261 %{!?with_imode:--disable-imode} \
262 --with-pkglibdir=%{pkglibexecdir} \
264 %{?with_python:--with-python}
277 rm -rf $RPM_BUILD_ROOT
278 install -d $RPM_BUILD_ROOT/var/cache/%{name}
281 DESTDIR=$RPM_BUILD_ROOT
283 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
286 %{__make} -C python install \
287 DESTDIR=$RPM_BUILD_ROOT \
288 py_sitedir=%{py_sitedir}
291 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
293 %ifarch i486 i686 ppc sparc alpha athlon
294 %define ftp_arch %{_target_cpu}
297 %define ftp_arch x86_64
298 %define ftp_alt_arch i686
299 %define ftp_alt2_arch x32
303 %define ftp_alt_arch x86_64
304 %define ftp_alt2_arch i686
307 %define ftp_arch i486
309 %ifarch pentium2 pentium3 pentium4
310 %define ftp_arch i686
312 %ifarch sparcv9 sparc64
313 %define ftp_arch sparc
314 %define ftp_arch %{_target_cpu}
316 %define ftp_alt_arch sparcv9
320 %define pld_conf %{SOURCE1}
321 %define pld_debuginfo_conf %{SOURCE8}
322 %define pld_archive_conf %{SOURCE11}
325 %define pld_multilib_conf %{SOURCE2}
326 %define pld_multilib2_conf %{SOURCE2}
330 %ifarch sparcv9 sparc64
331 %define pld_conf %{SOURCE9}
332 %undefine pld_archive_conf
335 %define pld_multilib_conf %{SOURCE10}
338 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
340 %if 0%{?pld_multilib_conf:1}
341 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
344 %if 0%{?pld_multilib2_conf:1}
345 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
348 %if 0%{?pld_debuginfo_conf:1}
349 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
352 %if 0%{?pld_archive_conf:1}
353 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
356 # Always install snapshot configs
357 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
358 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
359 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
360 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
362 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
363 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
364 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
365 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
369 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
370 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
372 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
373 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
376 # create "all" meta repo
377 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
378 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
379 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
383 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
387 # th-2014 snap does not exist for x32 yet
388 %if "%{ftp_arch}" == "x32"
389 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
391 %if "%{ftp_alt2_arch}" == "x32"
392 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
395 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
398 # add desktop file and icon
399 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
400 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
401 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
404 # sources we don't package
405 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
406 # include them in %doc
409 %{__rm} -f configs/Makefile*
413 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
419 rm -rf $RPM_BUILD_ROOT
422 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
423 if [ "$1" = "1" ]; then
424 # remove ignore = vserver-packages inside vserver on first install
427 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
428 done </proc/self/status
430 if [ -z "$ctx" -o "$ctx" = "0" ]; then
435 if [ "$VSERVER" = "yes" ]; then
436 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
440 %postun -p /sbin/postshell
441 -/usr/sbin/fix-info-dir -c %{_infodir}
443 %post libs -p /sbin/ldconfig
444 %postun libs -p /sbin/ldconfig
446 %triggerpostun -- poldek < 0.30-0.20080225.00.1
447 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
448 %{__sed} -i -e '/^%%include source.conf/{
450 a# /etc/poldek/repos.d/*.conf
451 a%%includedir repos.d
452 }' %{_sysconfdir}/%{name}/poldek.conf
455 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
456 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
458 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
459 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
460 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
464 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
465 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
466 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
470 %triggerpostun -- poldek < 0.30.1-3
471 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
472 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
473 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
475 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
476 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
477 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
480 %triggerpostun -- %{name} < 0.30.1-8
481 if [ $1 -le 1 ]; then
482 # revert change on --downgrade
483 %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
486 %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
489 %files -f %{name}.lang
490 %defattr(644,root,root,755)
491 %doc ChangeLog README* NEWS configs
492 %dir %{_sysconfdir}/%{name}
493 %dir %{_sysconfdir}/%{name}/pre-install.d
494 %{_sysconfdir}/%{name}/pre-install.d/README
495 %dir %{_sysconfdir}/%{name}/post-install.d
496 %{_sysconfdir}/%{name}/post-install.d/README
497 %dir %{_sysconfdir}/%{name}/repos.d
498 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
499 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
500 %attr(755,root,root) %{_bindir}/ipoldek
501 %attr(755,root,root) %{_bindir}/poldek
502 %attr(755,root,root) %{_bindir}/poldek-config
503 %attr(755,root,root) %{_bindir}/rpmvercmp
504 %dir %{pkglibexecdir}
505 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
506 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
507 %attr(755,root,root) %{pkglibexecdir}/vfcompr
508 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
509 %attr(755,root,root) %{pkglibexecdir}/vfsmb
510 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
511 %{_mandir}/man1/%{name}*.1*
512 %lang(pl) %{_mandir}/pl/man1/%{name}*
513 %{_infodir}/poldek.info*
515 %{_desktopdir}/%{name}.desktop
516 %{_pixmapsdir}/%{name}.png
518 %dir /var/cache/%{name}
520 %if %{without static}
522 %defattr(644,root,root,755)
523 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
524 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
525 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
526 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
527 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
528 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
529 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
530 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
531 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
532 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
536 %defattr(644,root,root,755)
537 %if %{without static}
538 %attr(755,root,root) %{_libdir}/libpoclidek.so
539 %attr(755,root,root) %{_libdir}/libpoldek.so
540 %attr(755,root,root) %{_libdir}/libtndb.so
541 %attr(755,root,root) %{_libdir}/libtrurl.so
542 %attr(755,root,root) %{_libdir}/libvfile.so
544 %{_libdir}/libpoclidek.la
545 %{_libdir}/libpoldek.la
546 %{_libdir}/libtndb.la
547 %{_libdir}/libtrurl.la
548 %{_libdir}/libvfile.la
549 %{_includedir}/poldek
553 %{_pkgconfigdir}/tndb.pc
554 %{_pkgconfigdir}/trurlib.pc
557 %defattr(644,root,root,755)
559 %{_libdir}/libtrurl.a
562 %files -n python-poldek
563 %defattr(644,root,root,755)
564 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
565 %{py_sitescriptdir}/poldek.py[co]
566 %{py_sitescriptdir}/poldekmod.py[co]