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)
21 %define ver_rpm 1:4.14
22 %define ver_db_devel %(rpm -q --qf '%|E?{%{E}:}|%{V}-%{R}' --what-provides db-devel)
27 %define ver_rpm 5.4.10
31 Summary: RPM packages management helper tool
32 Summary(hu.UTF-8): RPM csomagkezelést segítő eszköz
33 Summary(pl.UTF-8): Pomocnicze narzędzie do zarządzania pakietami RPM
36 Release: %{rel}%{?with_snap:.%{SNAP}}
38 Group: Applications/System
39 #Source0: http://poldek.pld-linux.org/download/snapshots/%{name}-%{version}-cvs%{snap}.tar.bz2
40 Source0: https://github.com/poldek-pm/poldek/releases/download/v%{version}/%{name}-%{version}.tar.xz
41 # Source0-md5: f224a4f62cdedf0d8bcfe0ce6dd533b2
43 Source2: %{name}-multilib.conf
44 Source3: %{name}-config.sh
45 Source5: %{name}-aliases.conf
46 Source6: %{name}.desktop
48 # Source7-md5: ee487abede50874e9eceb6495d5ee150
49 Source8: %{name}-debuginfo.conf
50 Source9: %{name}-aidath.conf
51 Source10: %{name}-multilib-aidath.conf
52 Source11: %{name}-archive.conf
53 Source100: %{name}-snap.conf
54 Source101: %{name}-multilib-snap.conf
55 Source102: %{name}-debuginfo-snap.conf
56 Patch0: %{name}-config.patch
57 Patch1: pm-hooks.patch
58 Patch2: poldek-ext-down-enable.patch
59 URL: http://poldek.pld-linux.org/
60 BuildRequires: %{db_pkg}-devel >= %{ver_db}-%{ver_db_rel}
61 BuildRequires: autoconf
62 BuildRequires: automake >= 1:1.11
63 BuildRequires: bzip2-devel
64 BuildRequires: check-devel
65 BuildRequires: docbook-dtd412-xml
66 BuildRequires: gettext-tools
67 BuildRequires: libgomp-devel
68 BuildRequires: libtool
69 BuildRequires: libxml2-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-devel >= %{ver_rpm}
77 %{?with_python:BuildRequires: rpm-pythonprov}
78 BuildRequires: tar >= 1:1.22
81 BuildRequires: zlib-devel
82 BuildRequires: zstd-devel
84 BuildRequires: %{db_pkg}-static >= %{ver_db}-%{ver_db_rel}
85 BuildRequires: bzip2-static
86 BuildRequires: glibc-static
87 BuildRequires: libxml2-static
88 BuildRequires: ncurses-static
89 BuildRequires: openssl-static
90 BuildRequires: pcre-static
91 BuildRequires: popt-static
92 BuildRequires: readline-static
93 BuildRequires: rpm-static
94 BuildRequires: zlib-static
95 BuildRequires: zstd-static
97 Requires(triggerpostun): awk
98 Requires(triggerpostun): sed >= 4.0
100 Requires: %{db_pkg} >= %{ver_db_devel}
102 Requires: %{db_pkg} >= %{ver_db}-%{ver_db_rel}
103 Requires: rpm-db-ver = %{ver_db}
105 Requires: %{name}-libs = %{version}-%{release}
106 Requires: /bin/run-parts
107 Requires: rpm >= %{ver_rpm}
108 Requires: rpm-lib >= %{ver_rpm}
110 Conflicts: etckeeper < 1.18-2
111 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
113 %define _libexecdir %{_prefix}/lib/%{name}
116 poldek is an RPM package management tool which allows you to easily
117 perform package verification, installation (including system
118 installation from scratch), upgrading, and removal.
120 Program can be used in batch (like apt-get from Debian's APT) or
121 interactive mode. The interactive mode puts you into a readline
122 interface with command line autocompletion and history, similar to the
123 shell mode of Perl's CPAN.
125 %{?with_static:This version is statically linked.}
127 %{!?with_imode:This version hasn't got interactive mode.}
130 %description -l hu.UTF-8
131 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
132 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
133 nulláról), frissítést és eltávolítást.
135 A program használható parancssorból (mint a Debian apt-get programja)
136 vagy interaktív módban. Az interaktív mód egy readline környezetet
137 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
140 %{?with_static:Ez a verzió statikusan linkelt.}
142 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
144 %description -l pl.UTF-8
145 poldek jest narzędziem linii poleceń służącym do weryfikacji,
146 instalacji (włączając instalację systemu od zera), aktualizacji i
149 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
150 interaktywnym. Tryb interaktywny posiada interfejs readline z
151 dopełnianiem komend i historią, podobny do trybu shell perlowego
154 %{?with_static:Ta wersja jest konsolidowana statycznie.}
156 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
159 Summary: poldek libraries
160 Summary(hu.UTF-8): A poldek könyvtárai
161 Summary(pl.UTF-8): Biblioteki poldka
167 %description libs -l hu.UTF-8
170 %description libs -l pl.UTF-8
174 Summary: Header files for poldek libraries
175 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
176 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
177 Group: Development/Libraries
178 Requires: %{name}-libs = %{version}-%{release}
179 Requires: rpm-devel >= %{ver_rpm}
182 Header files for poldek libraries.
184 %description devel -l hu.UTF-8
185 A poldek könyvtár fejlesztői fájljai.
187 %description devel -l pl.UTF-8
188 Pliki nagłówkowe bibliotek poldka.
191 Summary: poldek static libraries
192 Summary(hu.UTF-8): poldek statikus könyvtárak
193 Summary(pl.UTF-8): Biblioteki statyczne poldka
194 Group: Development/Libraries
195 Requires: %{name}-devel = %{version}-%{release}
198 poldek static libraries.
200 %description static -l hu.UTF-8
201 poldek statikus könyvtárak.
203 %description static -l pl.UTF-8
204 Biblioteki statyczne poldka.
206 %package -n python-poldek
207 Summary: Python modules for poldek
208 Summary(hu.UTF-8): Python modulok poldek-hez
209 Summary(pl.UTF-8): Moduły języka Python dla poldka
210 Group: Libraries/Python
211 Requires: %{name}-libs = %{version}-%{release}
212 Requires: python-libs
214 %description -n python-poldek
215 Python modules for poldek.
217 %description -n python-poldek -l hu.UTF-8
218 Python modulok poldek-hez.
220 %description -n python-poldek -l pl.UTF-8
221 Moduły języka Python dla poldka.
229 %{__rm} m4/libtool.m4 m4/lt*.m4
231 # cleanup backups after patching
232 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
233 chmod u+x ./configure ./doc/conf-xml2.sh
256 CPPFLAGS="%{rpmcppflags} -std=gnu99 -fgnu89-inline -D_GNU_SOURCE=1"
258 %{?with_static:--enable-static --disable-shared} \
259 %{!?with_imode:--disable-imode} \
260 --with-pkglibdir=%{_libexecdir} \
262 %{?with_python:--with-python}
275 rm -rf $RPM_BUILD_ROOT
276 install -d $RPM_BUILD_ROOT/var/cache/%{name}
278 %{__make} install -j1 \
279 DESTDIR=$RPM_BUILD_ROOT
281 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
284 %{__make} -C python -j1 install \
285 DESTDIR=$RPM_BUILD_ROOT \
286 py_sitedir=%{py_sitedir}
289 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
291 %ifarch i486 i686 ppc sparc alpha athlon
292 %define ftp_arch %{_target_cpu}
295 %define ftp_arch x86_64
296 %define ftp_alt_arch i686
297 %define ftp_alt2_arch x32
301 %define ftp_alt_arch x86_64
302 %define ftp_alt2_arch i686
305 %define ftp_arch i486
307 %ifarch pentium2 pentium3 pentium4
308 %define ftp_arch i686
310 %ifarch sparcv9 sparc64
311 %define ftp_arch sparc
312 %define ftp_arch %{_target_cpu}
314 %define ftp_alt_arch sparcv9
318 %define pld_conf %{SOURCE1}
319 %define pld_debuginfo_conf %{SOURCE8}
320 %define pld_archive_conf %{SOURCE11}
323 %define pld_multilib_conf %{SOURCE2}
324 %define pld_multilib2_conf %{SOURCE2}
328 %ifarch sparcv9 sparc64
329 %define pld_conf %{SOURCE9}
330 %undefine pld_archive_conf
333 %define pld_multilib_conf %{SOURCE10}
336 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
338 %if 0%{?pld_multilib_conf:1}
339 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
342 %if 0%{?pld_multilib2_conf:1}
343 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
346 %if 0%{?pld_debuginfo_conf:1}
347 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
350 %if 0%{?pld_archive_conf:1}
351 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
354 # Always install snapshot configs
355 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
356 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
357 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
358 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
360 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
361 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
362 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
363 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
367 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
368 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
370 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
371 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
374 # create "all" meta repo
375 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
376 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
377 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
381 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
385 # th-2014 snap does not exist for x32 yet
386 %if "%{ftp_arch}" == "x32"
387 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
389 %if "%{ftp_alt2_arch}" == "x32"
390 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
393 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
396 # add desktop file and icon
397 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
398 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
399 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
402 # sources we don't package
403 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
404 # include them in %doc
407 %{__rm} -f configs/Makefile*
411 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
417 rm -rf $RPM_BUILD_ROOT
420 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
421 if [ "$1" = "1" ]; then
422 # remove ignore = vserver-packages inside vserver on first install
425 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
426 done </proc/self/status
428 if [ -z "$ctx" -o "$ctx" = "0" ]; then
433 if [ "$VSERVER" = "yes" ]; then
434 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
438 %postun -p /sbin/postshell
439 -/usr/sbin/fix-info-dir -c %{_infodir}
441 %post libs -p /sbin/ldconfig
442 %postun libs -p /sbin/ldconfig
444 %triggerpostun -- poldek < 0.30-0.20080225.00.1
445 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
446 %{__sed} -i -e '/^%%include source.conf/{
448 a# /etc/poldek/repos.d/*.conf
449 a%%includedir repos.d
450 }' %{_sysconfdir}/%{name}/poldek.conf
453 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
454 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
456 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
457 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
458 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
462 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
463 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
464 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
468 %triggerpostun -- poldek < 0.30.1-3
469 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
470 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
471 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
473 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
474 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
475 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
478 %triggerpostun -- %{name} < 0.30.1-8
479 if [ $1 -le 1 ]; then
480 # revert change on --downgrade
481 %{__sed} -i -re 's,^pm command = %{_libexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
484 %{__sed} -i -re 's,#?(pm command =).*,\1 %{_libexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
487 %files -f %{name}.lang
488 %defattr(644,root,root,755)
489 %doc ChangeLog README* NEWS configs
490 %dir %{_sysconfdir}/%{name}
491 %dir %{_sysconfdir}/%{name}/pre-install.d
492 %{_sysconfdir}/%{name}/pre-install.d/README
493 %dir %{_sysconfdir}/%{name}/post-install.d
494 %{_sysconfdir}/%{name}/post-install.d/README
495 %dir %{_sysconfdir}/%{name}/repos.d
496 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
497 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
498 %attr(755,root,root) %{_bindir}/ipoldek
499 %attr(755,root,root) %{_bindir}/poldek
500 %attr(755,root,root) %{_bindir}/poldek-config
501 %attr(755,root,root) %{_bindir}/rpmvercmp
503 %attr(755,root,root) %{_libexecdir}/pm-command.sh
504 %attr(755,root,root) %{_libexecdir}/poldekuser-setup.sh
505 %attr(755,root,root) %{_libexecdir}/vfcompr
506 %attr(755,root,root) %{_libexecdir}/vfjuggle
507 %attr(755,root,root) %{_libexecdir}/vfsmb
508 %attr(755,root,root) %{_libexecdir}/zlib-in-rpm.sh
509 %{_mandir}/man1/%{name}*.1*
510 %lang(pl) %{_mandir}/pl/man1/%{name}*
511 %{_infodir}/poldek.info*
513 %{_desktopdir}/%{name}.desktop
514 %{_pixmapsdir}/%{name}.png
516 %dir /var/cache/%{name}
518 %if %{without static}
520 %defattr(644,root,root,755)
521 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
522 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
523 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
524 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
525 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
526 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
527 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
528 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
529 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
530 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
534 %defattr(644,root,root,755)
535 %if %{without static}
536 %attr(755,root,root) %{_libdir}/libpoclidek.so
537 %attr(755,root,root) %{_libdir}/libpoldek.so
538 %attr(755,root,root) %{_libdir}/libtndb.so
539 %attr(755,root,root) %{_libdir}/libtrurl.so
540 %attr(755,root,root) %{_libdir}/libvfile.so
542 %{_libdir}/libpoclidek.la
543 %{_libdir}/libpoldek.la
544 %{_libdir}/libtndb.la
545 %{_libdir}/libtrurl.la
546 %{_libdir}/libvfile.la
547 %{_includedir}/poldek
551 %{_pkgconfigdir}/tndb.pc
552 %{_pkgconfigdir}/trurlib.pc
555 %defattr(644,root,root,755)
557 %{_libdir}/libtrurl.a
560 %files -n python-poldek
561 %defattr(644,root,root,755)
562 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
563 %{py_sitescriptdir}/poldek.py[co]
564 %{py_sitescriptdir}/poldekmod.py[co]