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
12 # current snapshot name
15 # 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)
26 %define ver_rpm 5.4.10
30 Summary: RPM packages management helper tool
31 Summary(hu.UTF-8): RPM csomagkezelést segítő eszköz
32 Summary(pl.UTF-8): Pomocnicze narzędzie do zarządzania pakietami RPM
35 Release: %{rel}%{?with_snap:.%{SNAP}}
37 Group: Applications/System
38 #Source0: http://poldek.pld-linux.org/download/snapshots/%{name}-%{version}-cvs%{snap}.tar.bz2
39 Source0: https://launchpad.net/poldek/master/head/+download/%{name}-%{version}.tar.xz
40 # Source0-md5: c88f3ada99799d0e1af78aeda428d041
42 Source2: %{name}-multilib.conf
43 Source3: %{name}-config.sh
44 Source5: %{name}-aliases.conf
45 Source6: %{name}.desktop
47 # Source7-md5: ee487abede50874e9eceb6495d5ee150
48 Source8: %{name}-debuginfo.conf
49 Source9: %{name}-aidath.conf
50 Source10: %{name}-multilib-aidath.conf
51 Source11: %{name}-archive.conf
52 Source100: %{name}-snap.conf
53 Source101: %{name}-multilib-snap.conf
54 Source102: %{name}-debuginfo-snap.conf
55 Patch0: %{name}-config.patch
56 Patch1: pm-hooks.patch
57 Patch2: poldek-ext-down-enable.patch
58 Patch3: multiple-options.patch
59 Patch4: rpm.org-system-db.patch
60 URL: http://poldek.pld-linux.org/
61 BuildRequires: %{db_pkg}-devel >= %{ver_db}-%{ver_db_rel}
62 BuildRequires: autoconf
63 BuildRequires: automake >= 1:1.11
64 BuildRequires: bzip2-devel
65 BuildRequires: check-devel
66 BuildRequires: docbook-dtd412-xml
67 BuildRequires: gettext-tools
68 BuildRequires: libgomp-devel
69 BuildRequires: libtool
70 BuildRequires: libxml2-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-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}-%{ver_db_rel}
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}-%{ver_db_rel}
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 %define _libexecdir %{_prefix}/lib/%{name}
117 poldek is an RPM package management tool which allows you to easily
118 perform package verification, installation (including system
119 installation from scratch), upgrading, and removal.
121 Program can be used in batch (like apt-get from Debian's APT) or
122 interactive mode. The interactive mode puts you into a readline
123 interface with command line autocompletion and history, similar to the
124 shell mode of Perl's CPAN.
126 %{?with_static:This version is statically linked.}
128 %{!?with_imode:This version hasn't got interactive mode.}
131 %description -l hu.UTF-8
132 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
133 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
134 nulláról), frissítést és eltávolítást.
136 A program használható parancssorból (mint a Debian apt-get programja)
137 vagy interaktív módban. Az interaktív mód egy readline környezetet
138 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
141 %{?with_static:Ez a verzió statikusan linkelt.}
143 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
145 %description -l pl.UTF-8
146 poldek jest narzędziem linii poleceń służącym do weryfikacji,
147 instalacji (włączając instalację systemu od zera), aktualizacji i
150 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
151 interaktywnym. Tryb interaktywny posiada interfejs readline z
152 dopełnianiem komend i historią, podobny do trybu shell perlowego
155 %{?with_static:Ta wersja jest konsolidowana statycznie.}
157 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
160 Summary: poldek libraries
161 Summary(hu.UTF-8): A poldek könyvtárai
162 Summary(pl.UTF-8): Biblioteki poldka
168 %description libs -l hu.UTF-8
171 %description libs -l pl.UTF-8
175 Summary: Header files for poldek libraries
176 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
177 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
178 Group: Development/Libraries
179 Requires: %{name}-libs = %{version}-%{release}
180 Requires: rpm-devel >= %{ver_rpm}
183 Header files for poldek libraries.
185 %description devel -l hu.UTF-8
186 A poldek könyvtár fejlesztői fájljai.
188 %description devel -l pl.UTF-8
189 Pliki nagłówkowe bibliotek poldka.
192 Summary: poldek static libraries
193 Summary(hu.UTF-8): poldek statikus könyvtárak
194 Summary(pl.UTF-8): Biblioteki statyczne poldka
195 Group: Development/Libraries
196 Requires: %{name}-devel = %{version}-%{release}
199 poldek static libraries.
201 %description static -l hu.UTF-8
202 poldek statikus könyvtárak.
204 %description static -l pl.UTF-8
205 Biblioteki statyczne poldka.
207 %package -n python-poldek
208 Summary: Python modules for poldek
209 Summary(hu.UTF-8): Python modulok poldek-hez
210 Summary(pl.UTF-8): Moduły języka Python dla poldka
211 Group: Libraries/Python
212 Requires: %{name}-libs = %{version}-%{release}
213 Requires: python-libs
215 %description -n python-poldek
216 Python modules for poldek.
218 %description -n python-poldek -l hu.UTF-8
219 Python modulok poldek-hez.
221 %description -n python-poldek -l pl.UTF-8
222 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
259 CPPFLAGS="%{rpmcppflags} -std=gnu99 -fgnu89-inline -D_GNU_SOURCE=1"
261 %{?with_static:--enable-static --disable-shared} \
262 %{!?with_imode:--disable-imode} \
263 --with-pkglibdir=%{_libexecdir} \
265 %{?with_python:--with-python}
274 rm -rf $RPM_BUILD_ROOT
275 install -d $RPM_BUILD_ROOT/var/cache/%{name}
277 %{__make} install -j1 \
278 DESTDIR=$RPM_BUILD_ROOT
280 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
283 %{__make} -C python -j1 install \
284 DESTDIR=$RPM_BUILD_ROOT \
285 py_sitedir=%{py_sitedir}
288 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
290 %ifarch i486 i686 ppc sparc alpha athlon
291 %define ftp_arch %{_target_cpu}
294 %define ftp_arch x86_64
295 %define ftp_alt_arch i686
296 %define ftp_alt2_arch x32
300 %define ftp_alt_arch x86_64
301 %define ftp_alt2_arch i686
304 %define ftp_arch i486
306 %ifarch pentium2 pentium3 pentium4
307 %define ftp_arch i686
309 %ifarch sparcv9 sparc64
310 %define ftp_arch sparc
311 %define ftp_arch %{_target_cpu}
313 %define ftp_alt_arch sparcv9
317 %define pld_conf %{SOURCE1}
318 %define pld_debuginfo_conf %{SOURCE8}
319 %define pld_archive_conf %{SOURCE11}
322 %define pld_multilib_conf %{SOURCE2}
323 %define pld_multilib2_conf %{SOURCE2}
327 %ifarch sparcv9 sparc64
328 %define pld_conf %{SOURCE9}
329 %undefine pld_archive_conf
332 %define pld_multilib_conf %{SOURCE10}
335 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
337 %if 0%{?pld_multilib_conf:1}
338 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
341 %if 0%{?pld_multilib2_conf:1}
342 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
345 %if 0%{?pld_debuginfo_conf:1}
346 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
349 %if 0%{?pld_archive_conf:1}
350 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
353 # Always install snapshot configs
354 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
355 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
356 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
357 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
359 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
360 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
361 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
362 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
366 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
367 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
369 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
370 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
373 # create "all" meta repo
374 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
375 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
376 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
380 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
384 # th-2014 snap does not exist for x32 yet
385 %if "%{ftp_arch}" == "x32"
386 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
388 %if "%{ftp_alt2_arch}" == "x32"
389 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
392 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
395 # add desktop file and icon
396 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
397 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
398 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
401 # sources we don't package
402 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
403 # include them in %doc
406 %{__rm} -f configs/Makefile*
410 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
416 rm -rf $RPM_BUILD_ROOT
419 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
420 if [ "$1" = "1" ]; then
421 # remove ignore = vserver-packages inside vserver on first install
424 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
425 done </proc/self/status
427 if [ -z "$ctx" -o "$ctx" = "0" ]; then
432 if [ "$VSERVER" = "yes" ]; then
433 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
437 %postun -p /sbin/postshell
438 -/usr/sbin/fix-info-dir -c %{_infodir}
440 %post libs -p /sbin/ldconfig
441 %postun libs -p /sbin/ldconfig
443 %triggerpostun -- poldek < 0.30-0.20080225.00.1
444 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
445 %{__sed} -i -e '/^%%include source.conf/{
447 a# /etc/poldek/repos.d/*.conf
448 a%%includedir repos.d
449 }' %{_sysconfdir}/%{name}/poldek.conf
452 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
453 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
455 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
456 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
457 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
461 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
462 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
463 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
467 %triggerpostun -- poldek < 0.30.1-3
468 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
469 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
470 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
472 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
473 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
474 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
477 %triggerpostun -- %{name} < 0.30.1-8
478 if [ $1 -le 1 ]; then
479 # revert change on --downgrade
480 %{__sed} -i -re 's,^pm command = %{_libexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
483 %{__sed} -i -re 's,#?(pm command =).*,\1 %{_libexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
486 %files -f %{name}.lang
487 %defattr(644,root,root,755)
488 %doc ChangeLog README* NEWS TODO configs
489 %dir %{_sysconfdir}/%{name}
490 %dir %{_sysconfdir}/%{name}/pre-install.d
491 %{_sysconfdir}/%{name}/pre-install.d/README
492 %dir %{_sysconfdir}/%{name}/post-install.d
493 %{_sysconfdir}/%{name}/post-install.d/README
494 %dir %{_sysconfdir}/%{name}/repos.d
495 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
496 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
497 %attr(755,root,root) %{_bindir}/ipoldek
498 %attr(755,root,root) %{_bindir}/poldek
499 %attr(755,root,root) %{_bindir}/poldek-config
500 %attr(755,root,root) %{_bindir}/rpmvercmp
502 %attr(755,root,root) %{_libexecdir}/pm-command.sh
503 %attr(755,root,root) %{_libexecdir}/poldekuser-setup.sh
504 %attr(755,root,root) %{_libexecdir}/vfcompr
505 %attr(755,root,root) %{_libexecdir}/vfjuggle
506 %attr(755,root,root) %{_libexecdir}/vfsmb
507 %attr(755,root,root) %{_libexecdir}/zlib-in-rpm.sh
508 %{_mandir}/man1/%{name}*.1*
509 %lang(pl) %{_mandir}/pl/man1/%{name}*
510 %{_infodir}/poldek.info*
512 %{_desktopdir}/%{name}.desktop
513 %{_pixmapsdir}/%{name}.png
515 %dir /var/cache/%{name}
517 %if %{without static}
519 %defattr(644,root,root,755)
520 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
521 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
522 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
523 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
524 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
525 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.0
526 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.2
527 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
528 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
529 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
533 %defattr(644,root,root,755)
534 %if %{without static}
535 %attr(755,root,root) %{_libdir}/libpoclidek.so
536 %attr(755,root,root) %{_libdir}/libpoldek.so
537 %attr(755,root,root) %{_libdir}/libtndb.so
538 %attr(755,root,root) %{_libdir}/libtrurl.so
539 %attr(755,root,root) %{_libdir}/libvfile.so
541 %{_libdir}/libpoclidek.la
542 %{_libdir}/libpoldek.la
543 %{_libdir}/libtndb.la
544 %{_libdir}/libtrurl.la
545 %{_libdir}/libvfile.la
546 %{_includedir}/poldek
550 %{_pkgconfigdir}/tndb.pc
551 %{_pkgconfigdir}/trurlib.pc
554 %defattr(644,root,root,755)
556 %{_libdir}/libtrurl.a
559 %files -n python-poldek
560 %defattr(644,root,root,755)
561 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
562 %{py_sitescriptdir}/poldek.py[co]
563 %{py_sitescriptdir}/poldekmod.py[co]