3 %bcond_with static # don't use shared libraries
4 %bcond_without imode # don't build interactive mode
5 %bcond_without python # don't build python bindings
6 %bcond_with snap # install configs for official Th snapshot
7 %bcond_with db61 # DB 6.1 instead of 5.2
8 %bcond_with rpm4 # use rpm4/db4.7 instead of rpm5
10 # current snapshot name
13 # required versions (forced to avoid SEGV with mixed db used by rpm and poldek)
14 # NOTE: poldek links with "system db" (-ldb) anyway if it exists
29 %define ver_rpm 4.5-49
31 %define ver_rpm 5.4.10
35 Summary: RPM packages management helper tool
36 Summary(hu.UTF-8): RPM csomagkezelést segítő eszköz
37 Summary(pl.UTF-8): Pomocnicze narzędzie do zarządzania pakietami RPM
40 Release: %{rel}%{?with_snap:.%{SNAP}}
42 Group: Applications/System
43 #Source0: http://poldek.pld-linux.org/download/snapshots/%{name}-%{version}-cvs%{snap}.tar.bz2
44 Source0: http://carme.pld-linux.org/~megabajt/releases/poldek/%{name}-%{version}.tar.xz
45 # Source0-md5: e569c8454df0932df53b09cee9998927
47 Source2: %{name}-multilib.conf
48 Source5: %{name}-aliases.conf
49 Source6: %{name}.desktop
51 Source8: %{name}-debuginfo.conf
52 Source9: %{name}-aidath.conf
53 Source10: %{name}-multilib-aidath.conf
54 Source11: %{name}-archive.conf
55 Source100: %{name}-snap.conf
56 Source101: %{name}-multilib-snap.conf
57 Source102: %{name}-debuginfo-snap.conf
58 Patch0: %{name}-size-type.patch
59 Patch1: %{name}-config.patch
60 Patch2: %{name}-missing-include.patch
61 Patch3: pm-hooks.patch
62 Patch4: %{name}-setenv-null.patch
63 Patch5: %{name}-assert-sigint.patch
64 URL: http://poldek.pld-linux.org/
65 BuildRequires: %{db_pkg}-devel >= %{ver_db}-%{ver_db_rel}
66 BuildRequires: autoconf
67 BuildRequires: automake >= 1:1.11
68 BuildRequires: bzip2-devel
69 BuildRequires: check-devel
70 BuildRequires: docbook-dtd412-xml
71 BuildRequires: gettext-tools
72 BuildRequires: libgomp-devel
73 BuildRequires: libtool
74 BuildRequires: libxml2-devel
75 BuildRequires: neon-devel
76 BuildRequires: openssl-devel >= 0.9.7d
77 BuildRequires: pcre-devel
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: swig-python
85 BuildRequires: tar >= 1:1.22
88 BuildRequires: zlib-devel
90 BuildRequires: %{db_pkg}-static >= %{ver_db}-%{ver_db_rel}
91 BuildRequires: bzip2-static
92 BuildRequires: glibc-static
93 BuildRequires: libxml2-static
94 BuildRequires: ncurses-static
95 BuildRequires: openssl-static
96 BuildRequires: pcre-static
97 BuildRequires: popt-static
98 BuildRequires: readline-static
99 BuildRequires: rpm-static
100 BuildRequires: zlib-static
102 Requires(triggerpostun): awk
103 Requires(triggerpostun): sed >= 4.0
104 Requires: %{db_pkg} >= %{ver_db}-%{ver_db_rel}
105 Requires: %{name}-libs = %{version}-%{release}
106 Requires: /bin/run-parts
107 Requires: rpm >= %{ver_rpm}
108 Requires: rpm-db-ver = %{ver_db}
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.
233 %{__rm} m4/libtool.m4 m4/lt*.m4
235 # cleanup backups after patching
236 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
237 chmod u+x ./configure ./doc/conf-xml2.sh
260 CPPFLAGS="%{rpmcppflags} -std=gnu99 -fgnu89-inline"
262 %{?with_static:--enable-static --disable-shared} \
263 %{!?with_imode:--disable-imode} \
264 --with-pkglibdir=%{_libexecdir} \
266 %{?with_python:--with-python}
271 rm -rf $RPM_BUILD_ROOT
272 install -d $RPM_BUILD_ROOT/var/cache/%{name}
274 %{__make} install -j1 \
275 DESTDIR=$RPM_BUILD_ROOT
278 %{__make} -C python -j1 install \
279 DESTDIR=$RPM_BUILD_ROOT \
283 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
285 %ifarch i486 i686 ppc sparc alpha athlon
286 %define ftp_arch %{_target_cpu}
289 %define ftp_arch x86_64
290 %define ftp_alt_arch i686
291 %define ftp_alt2_arch x32
295 %define ftp_alt_arch x86_64
296 %define ftp_alt2_arch i686
299 %define ftp_arch i486
301 %ifarch pentium2 pentium3 pentium4
302 %define ftp_arch i686
304 %ifarch sparcv9 sparc64
305 %define ftp_arch sparc
306 %define ftp_arch %{_target_cpu}
308 %define ftp_alt_arch sparcv9
312 %define pld_conf %{SOURCE1}
313 %define pld_debuginfo_conf %{SOURCE8}
314 %define pld_archive_conf %{SOURCE11}
317 %define pld_multilib_conf %{SOURCE2}
318 %define pld_multilib2_conf %{SOURCE2}
322 %ifarch sparcv9 sparc64
323 %define pld_conf %{SOURCE9}
324 %undefine pld_archive_conf
327 %define pld_multilib_conf %{SOURCE10}
330 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
332 %if 0%{?pld_multilib_conf:1}
333 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
336 %if 0%{?pld_multilib2_conf:1}
337 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
340 %if 0%{?pld_debuginfo_conf:1}
341 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
344 %if 0%{?pld_archive_conf:1}
345 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
348 # Always install snapshot configs
349 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
350 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
351 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
352 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
354 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
355 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
356 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
357 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
361 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
362 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
364 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
365 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
368 # create "all" meta repo
369 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
370 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
371 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
375 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
379 # th-2014 snap does not exist for x32 yet
380 %if "%{ftp_arch}" == "x32"
381 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
383 %if "%{ftp_alt2_arch}" == "x32"
384 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
387 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
390 # add desktop file and icon
391 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
392 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
393 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
396 # sources we don't package
397 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
398 # include them in %doc
401 %{__rm} -f configs/Makefile*
405 %{__rm} $RPM_BUILD_ROOT%{py_sitedir}/_poldekmod.la
411 rm -rf $RPM_BUILD_ROOT
414 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
415 if [ "$1" = "1" ]; then
416 # remove ignore = vserver-packages inside vserver on first install
419 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
420 done </proc/self/status
422 if [ -z "$ctx" -o "$ctx" = "0" ]; then
427 if [ "$VSERVER" = "yes" ]; then
428 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
432 %postun -p /sbin/postshell
433 -/usr/sbin/fix-info-dir -c %{_infodir}
435 %post libs -p /sbin/ldconfig
436 %postun libs -p /sbin/ldconfig
438 %triggerpostun -- poldek < 0.30-0.20080225.00.1
439 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
440 %{__sed} -i -e '/^%%include source.conf/{
442 a# /etc/poldek/repos.d/*.conf
443 a%%includedir repos.d
444 }' %{_sysconfdir}/%{name}/poldek.conf
447 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
448 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
450 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
451 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
452 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
456 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
457 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
458 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
462 %triggerpostun -- poldek < 0.30.1-3
463 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
464 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
465 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
467 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
468 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
469 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
472 %triggerpostun -- %{name} < 0.30.1-8
473 if [ $1 -le 1 ]; then
474 # revert change on --downgrade
475 %{__sed} -i -re 's,^pm command = %{_libexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
478 %{__sed} -i -re 's,#?(pm command =).*,\1 %{_libexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
481 %files -f %{name}.lang
482 %defattr(644,root,root,755)
483 %doc ChangeLog README* NEWS TODO configs
484 %dir %{_sysconfdir}/%{name}
485 %dir %{_sysconfdir}/%{name}/pre-install.d
486 %{_sysconfdir}/%{name}/pre-install.d/README
487 %dir %{_sysconfdir}/%{name}/post-install.d
488 %{_sysconfdir}/%{name}/post-install.d/README
489 %dir %{_sysconfdir}/%{name}/repos.d
490 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
491 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
492 %attr(755,root,root) %{_bindir}/ipoldek
493 %attr(755,root,root) %{_bindir}/poldek
494 %attr(755,root,root) %{_bindir}/rpmvercmp
496 %attr(755,root,root) %{_libexecdir}/pm-command.sh
497 %attr(755,root,root) %{_libexecdir}/poldekuser-setup.sh
498 %attr(755,root,root) %{_libexecdir}/vfcompr
499 %attr(755,root,root) %{_libexecdir}/vfjuggle
500 %attr(755,root,root) %{_libexecdir}/vfsmb
501 %attr(755,root,root) %{_libexecdir}/zlib-in-rpm.sh
502 %{_mandir}/man1/%{name}*.1*
503 %lang(pl) %{_mandir}/pl/man1/%{name}*
504 %{_infodir}/poldek.info*
506 %{_desktopdir}/%{name}.desktop
507 %{_pixmapsdir}/%{name}.png
509 %dir /var/cache/%{name}
511 %if %{without static}
513 %defattr(644,root,root,755)
514 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
515 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
516 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
517 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
518 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
519 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.0
520 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.2
521 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
522 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
523 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
527 %defattr(644,root,root,755)
528 %if %{without static}
529 %attr(755,root,root) %{_libdir}/libpoclidek.so
530 %attr(755,root,root) %{_libdir}/libpoldek.so
531 %attr(755,root,root) %{_libdir}/libtndb.so
532 %attr(755,root,root) %{_libdir}/libtrurl.so
533 %attr(755,root,root) %{_libdir}/libvfile.so
535 %{_libdir}/libpoclidek.la
536 %{_libdir}/libpoldek.la
537 %{_libdir}/libtndb.la
538 %{_libdir}/libtrurl.la
539 %{_libdir}/libvfile.la
540 %{_includedir}/poldek
544 %{_pkgconfigdir}/tndb.pc
545 %{_pkgconfigdir}/trurlib.pc
548 %defattr(644,root,root,755)
550 %{_libdir}/libtrurl.a
553 %files -n python-poldek
554 %defattr(644,root,root,755)
555 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
556 %{py_sitescriptdir}/poldek.py[co]
557 %{py_sitescriptdir}/poldekmod.py[co]