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 Patch6: rpm-4.15.patch
61 URL: http://poldek.pld-linux.org/
62 BuildRequires: %{db_pkg}-devel >= %{ver_db}
63 BuildRequires: autoconf >= 2.63
64 BuildRequires: automake >= 1:1.11
65 BuildRequires: bzip2-devel
66 BuildRequires: check-devel
67 BuildRequires: docbook-dtd412-xml
68 BuildRequires: docbook2X
69 BuildRequires: gettext-tools >= 0.11.5
70 BuildRequires: libgomp-devel
71 BuildRequires: libtool
72 BuildRequires: libxml2-devel >= 2
73 BuildRequires: ncurses-devel
74 BuildRequires: openssl-devel >= 0.9.7d
75 BuildRequires: pcre-devel
76 BuildRequires: perl-XML-Simple
77 BuildRequires: perl-base
78 BuildRequires: perl-modules
79 BuildRequires: pkgconfig
80 BuildRequires: popt-devel
81 %{?with_python:BuildRequires: python-devel}
82 BuildRequires: readline-devel >= 5.0
83 BuildRequires: rpm-devel >= %{ver_rpm}
84 %{?with_python:BuildRequires: rpm-pythonprov}
85 BuildRequires: tar >= 1:1.22
86 BuildRequires: texinfo
89 BuildRequires: zlib-devel
90 BuildRequires: zstd-devel
92 BuildRequires: %{db_pkg}-static >= %{ver_db}
93 BuildRequires: bzip2-static
94 BuildRequires: glibc-static
95 BuildRequires: libxml2-static
96 BuildRequires: ncurses-static
97 BuildRequires: openssl-static
98 BuildRequires: pcre-static
99 BuildRequires: popt-static
100 BuildRequires: readline-static
101 BuildRequires: rpm-static
102 BuildRequires: zlib-static
103 BuildRequires: zstd-static
105 Requires(postun): awk
106 Requires(postun): sed >= 4.0
108 Requires: %{db_pkg} >= %{ver_db_devel}
110 Requires: %{db_pkg} >= %{ver_db}
111 Requires: rpm-db-ver = %{ver_db}
113 Requires: %{name}-libs = %{version}-%{release}
114 Requires: /bin/run-parts
115 Requires: rpm >= %{ver_rpm}
116 Requires: rpm-lib >= %{ver_rpm}
118 Conflicts: etckeeper < 1.18-2
119 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
121 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
122 %define pkglibexecdir %{_prefix}/lib/%{name}
125 poldek is an RPM package management tool which allows you to easily
126 perform package verification, installation (including system
127 installation from scratch), upgrading, and removal.
129 Program can be used in batch (like apt-get from Debian's APT) or
130 interactive mode. The interactive mode puts you into a readline
131 interface with command line autocompletion and history, similar to the
132 shell mode of Perl's CPAN.
134 %{?with_static:This version is statically linked.}
136 %{!?with_imode:This version hasn't got interactive mode.}
139 %description -l hu.UTF-8
140 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
141 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
142 nulláról), frissítést és eltávolítást.
144 A program használható parancssorból (mint a Debian apt-get programja)
145 vagy interaktív módban. Az interaktív mód egy readline környezetet
146 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
149 %{?with_static:Ez a verzió statikusan linkelt.}
151 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
153 %description -l pl.UTF-8
154 poldek jest narzędziem linii poleceń służącym do weryfikacji,
155 instalacji (włączając instalację systemu od zera), aktualizacji i
158 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
159 interaktywnym. Tryb interaktywny posiada interfejs readline z
160 dopełnianiem komend i historią, podobny do trybu shell perlowego
163 %{?with_static:Ta wersja jest konsolidowana statycznie.}
165 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
168 Summary: poldek libraries
169 Summary(hu.UTF-8): A poldek könyvtárai
170 Summary(pl.UTF-8): Biblioteki poldka
176 %description libs -l hu.UTF-8
179 %description libs -l pl.UTF-8
183 Summary: Header files for poldek libraries
184 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
185 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
186 Group: Development/Libraries
187 Requires: %{name}-libs = %{version}-%{release}
188 Requires: rpm-devel >= %{ver_rpm}
191 Header files for poldek libraries.
193 %description devel -l hu.UTF-8
194 A poldek könyvtár fejlesztői fájljai.
196 %description devel -l pl.UTF-8
197 Pliki nagłówkowe bibliotek poldka.
200 Summary: poldek static libraries
201 Summary(hu.UTF-8): poldek statikus könyvtárak
202 Summary(pl.UTF-8): Biblioteki statyczne poldka
203 Group: Development/Libraries
204 Requires: %{name}-devel = %{version}-%{release}
207 poldek static libraries.
209 %description static -l hu.UTF-8
210 poldek statikus könyvtárak.
212 %description static -l pl.UTF-8
213 Biblioteki statyczne poldka.
215 %package -n python-poldek
216 Summary: Python modules for poldek
217 Summary(hu.UTF-8): Python modulok poldek-hez
218 Summary(pl.UTF-8): Moduły języka Python dla poldka
219 Group: Libraries/Python
220 Requires: %{name}-libs = %{version}-%{release}
221 Requires: python-libs
223 %description -n python-poldek
224 Python modules for poldek.
226 %description -n python-poldek -l hu.UTF-8
227 Python modulok poldek-hez.
229 %description -n python-poldek -l pl.UTF-8
230 Moduły języka Python dla poldka.
242 %{__rm} doc/poldek.info
243 %{__rm} m4/libtool.m4 m4/lt*.m4
245 # cleanup backups after patching
246 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
247 chmod u+x ./configure ./doc/conf-xml2.sh
271 %{?with_static:--enable-static --disable-shared} \
272 %{!?with_imode:--disable-imode} \
273 --with-pkglibdir=%{pkglibexecdir} \
275 %{?with_python:--with-python}
278 %{__make} -C doc poldek.info
289 rm -rf $RPM_BUILD_ROOT
290 install -d $RPM_BUILD_ROOT/var/cache/%{name}
293 DESTDIR=$RPM_BUILD_ROOT
295 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
298 %{__make} -C python install \
299 DESTDIR=$RPM_BUILD_ROOT \
300 py_sitedir=%{py_sitedir}
303 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
305 %ifarch i486 i686 ppc sparc alpha athlon aarch64
306 %define ftp_arch %{_target_cpu}
309 %define ftp_arch x86_64
310 %define ftp_alt_arch i686
311 %define ftp_alt2_arch x32
315 %define ftp_alt_arch x86_64
316 %define ftp_alt2_arch i686
319 %define ftp_arch i486
321 %ifarch pentium2 pentium3 pentium4
322 %define ftp_arch i686
324 %ifarch sparcv9 sparc64
325 %define ftp_arch sparc
326 %define ftp_arch %{_target_cpu}
328 %define ftp_alt_arch sparcv9
332 %define pld_conf %{SOURCE1}
333 %define pld_debuginfo_conf %{SOURCE8}
334 %define pld_archive_conf %{SOURCE11}
337 %define pld_multilib_conf %{SOURCE2}
338 %define pld_multilib2_conf %{SOURCE2}
342 %ifarch sparcv9 sparc64
343 %define pld_conf %{SOURCE9}
344 %undefine pld_archive_conf
347 %define pld_multilib_conf %{SOURCE10}
350 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
352 %if 0%{?pld_multilib_conf:1}
353 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
356 %if 0%{?pld_multilib2_conf:1}
357 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
360 %if 0%{?pld_debuginfo_conf:1}
361 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
364 %if 0%{?pld_archive_conf:1}
365 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
368 # Always install snapshot configs
369 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
370 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
371 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
372 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
374 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
375 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
376 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
377 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
381 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
382 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
384 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
385 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
388 # create "all" meta repo
389 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
390 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
391 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
395 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
399 # th-2014 snap does not exist for x32 yet
400 %if "%{ftp_arch}" == "x32"
401 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
403 %if "%{ftp_alt2_arch}" == "x32"
404 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
407 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
410 # add desktop file and icon
411 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
412 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
413 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
416 # sources we don't package
417 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
418 # include them in %doc
421 %{__rm} -f configs/Makefile*
425 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
431 rm -rf $RPM_BUILD_ROOT
434 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
435 if [ "$1" = "1" ]; then
436 # remove ignore = vserver-packages inside vserver on first install
439 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
440 done </proc/self/status
442 if [ -z "$ctx" -o "$ctx" = "0" ]; then
447 if [ "$VSERVER" = "yes" ]; then
448 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
452 %postun -p /sbin/postshell
453 -/usr/sbin/fix-info-dir -c %{_infodir}
455 %post libs -p /sbin/ldconfig
456 %postun libs -p /sbin/ldconfig
458 %triggerpostun -- poldek < 0.30.1-8
459 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
460 %{__sed} -i -e '/^%%include source.conf/{
462 a# /etc/poldek/repos.d/*.conf
463 a%%includedir repos.d
464 }' %{_sysconfdir}/%{name}/poldek.conf
467 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
468 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
470 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
471 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
472 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
476 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
477 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
478 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
482 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
483 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
484 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
486 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
487 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
488 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
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]