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: 85de8f1fc2a0b5dfae7e98bb83065c05
47 Source2: %{name}-multilib.conf
48 Source3: %{name}-config.sh
49 Source5: %{name}-aliases.conf
50 Source6: %{name}.desktop
52 # Source7-md5: ee487abede50874e9eceb6495d5ee150
53 Source8: %{name}-debuginfo.conf
54 Source9: %{name}-aidath.conf
55 Source10: %{name}-multilib-aidath.conf
56 Source11: %{name}-archive.conf
57 Source100: %{name}-snap.conf
58 Source101: %{name}-multilib-snap.conf
59 Source102: %{name}-debuginfo-snap.conf
60 Patch0: %{name}-size-type.patch
61 Patch1: %{name}-config.patch
62 Patch2: pm-hooks.patch
63 URL: http://poldek.pld-linux.org/
64 BuildRequires: %{db_pkg}-devel >= %{ver_db}-%{ver_db_rel}
65 BuildRequires: autoconf
66 BuildRequires: automake >= 1:1.11
67 BuildRequires: bzip2-devel
68 BuildRequires: check-devel
69 BuildRequires: docbook-dtd412-xml
70 BuildRequires: gettext-tools
71 BuildRequires: libgomp-devel
72 BuildRequires: libtool
73 BuildRequires: libxml2-devel
74 BuildRequires: openssl-devel >= 0.9.7d
75 BuildRequires: pcre-devel
76 BuildRequires: pkgconfig
77 BuildRequires: popt-devel
78 %{?with_python:BuildRequires: python-devel}
79 BuildRequires: readline-devel >= 5.0
80 BuildRequires: rpm-devel >= %{ver_rpm}
81 %{?with_python:BuildRequires: rpm-pythonprov}
82 BuildRequires: tar >= 1:1.22
85 BuildRequires: zlib-devel
87 BuildRequires: %{db_pkg}-static >= %{ver_db}-%{ver_db_rel}
88 BuildRequires: bzip2-static
89 BuildRequires: glibc-static
90 BuildRequires: libxml2-static
91 BuildRequires: ncurses-static
92 BuildRequires: openssl-static
93 BuildRequires: pcre-static
94 BuildRequires: popt-static
95 BuildRequires: readline-static
96 BuildRequires: rpm-static
97 BuildRequires: zlib-static
99 Requires(triggerpostun): awk
100 Requires(triggerpostun): sed >= 4.0
101 Requires: %{db_pkg} >= %{ver_db}-%{ver_db_rel}
102 Requires: %{name}-libs = %{version}-%{release}
103 Requires: /bin/run-parts
104 Requires: rpm >= %{ver_rpm}
105 Requires: rpm-db-ver = %{ver_db}
106 Requires: rpm-lib >= %{ver_rpm}
108 Conflicts: etckeeper < 1.18-2
109 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
111 %define _libexecdir %{_prefix}/lib/%{name}
114 poldek is an RPM package management tool which allows you to easily
115 perform package verification, installation (including system
116 installation from scratch), upgrading, and removal.
118 Program can be used in batch (like apt-get from Debian's APT) or
119 interactive mode. The interactive mode puts you into a readline
120 interface with command line autocompletion and history, similar to the
121 shell mode of Perl's CPAN.
123 %{?with_static:This version is statically linked.}
125 %{!?with_imode:This version hasn't got interactive mode.}
128 %description -l hu.UTF-8
129 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
130 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
131 nulláról), frissítést és eltávolítást.
133 A program használható parancssorból (mint a Debian apt-get programja)
134 vagy interaktív módban. Az interaktív mód egy readline környezetet
135 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
138 %{?with_static:Ez a verzió statikusan linkelt.}
140 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
142 %description -l pl.UTF-8
143 poldek jest narzędziem linii poleceń służącym do weryfikacji,
144 instalacji (włączając instalację systemu od zera), aktualizacji i
147 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
148 interaktywnym. Tryb interaktywny posiada interfejs readline z
149 dopełnianiem komend i historią, podobny do trybu shell perlowego
152 %{?with_static:Ta wersja jest konsolidowana statycznie.}
154 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
157 Summary: poldek libraries
158 Summary(hu.UTF-8): A poldek könyvtárai
159 Summary(pl.UTF-8): Biblioteki poldka
165 %description libs -l hu.UTF-8
168 %description libs -l pl.UTF-8
172 Summary: Header files for poldek libraries
173 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
174 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
175 Group: Development/Libraries
176 Requires: %{name}-libs = %{version}-%{release}
177 Requires: rpm-devel >= %{ver_rpm}
180 Header files for poldek libraries.
182 %description devel -l hu.UTF-8
183 A poldek könyvtár fejlesztői fájljai.
185 %description devel -l pl.UTF-8
186 Pliki nagłówkowe bibliotek poldka.
189 Summary: poldek static libraries
190 Summary(hu.UTF-8): poldek statikus könyvtárak
191 Summary(pl.UTF-8): Biblioteki statyczne poldka
192 Group: Development/Libraries
193 Requires: %{name}-devel = %{version}-%{release}
196 poldek static libraries.
198 %description static -l hu.UTF-8
199 poldek statikus könyvtárak.
201 %description static -l pl.UTF-8
202 Biblioteki statyczne poldka.
204 %package -n python-poldek
205 Summary: Python modules for poldek
206 Summary(hu.UTF-8): Python modulok poldek-hez
207 Summary(pl.UTF-8): Moduły języka Python dla poldka
208 Group: Libraries/Python
209 Requires: %{name}-libs = %{version}-%{release}
210 Requires: python-libs
212 %description -n python-poldek
213 Python modules for poldek.
215 %description -n python-poldek -l hu.UTF-8
216 Python modulok poldek-hez.
218 %description -n python-poldek -l pl.UTF-8
219 Moduły języka Python dla poldka.
227 %{__rm} m4/libtool.m4 m4/lt*.m4
229 # cleanup backups after patching
230 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
231 chmod u+x ./configure ./doc/conf-xml2.sh
254 CPPFLAGS="%{rpmcppflags} -std=gnu99 -fgnu89-inline"
256 %{?with_static:--enable-static --disable-shared} \
257 %{!?with_imode:--disable-imode} \
258 --with-pkglibdir=%{_libexecdir} \
260 %{?with_python:--with-python}
265 rm -rf $RPM_BUILD_ROOT
266 install -d $RPM_BUILD_ROOT/var/cache/%{name}
268 %{__make} install -j1 \
269 DESTDIR=$RPM_BUILD_ROOT
271 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/poldek-config
274 %{__make} -C python -j1 install \
275 DESTDIR=$RPM_BUILD_ROOT \
279 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
281 %ifarch i486 i686 ppc sparc alpha athlon
282 %define ftp_arch %{_target_cpu}
285 %define ftp_arch x86_64
286 %define ftp_alt_arch i686
287 %define ftp_alt2_arch x32
291 %define ftp_alt_arch x86_64
292 %define ftp_alt2_arch i686
295 %define ftp_arch i486
297 %ifarch pentium2 pentium3 pentium4
298 %define ftp_arch i686
300 %ifarch sparcv9 sparc64
301 %define ftp_arch sparc
302 %define ftp_arch %{_target_cpu}
304 %define ftp_alt_arch sparcv9
308 %define pld_conf %{SOURCE1}
309 %define pld_debuginfo_conf %{SOURCE8}
310 %define pld_archive_conf %{SOURCE11}
313 %define pld_multilib_conf %{SOURCE2}
314 %define pld_multilib2_conf %{SOURCE2}
318 %ifarch sparcv9 sparc64
319 %define pld_conf %{SOURCE9}
320 %undefine pld_archive_conf
323 %define pld_multilib_conf %{SOURCE10}
326 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
328 %if 0%{?pld_multilib_conf:1}
329 %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
332 %if 0%{?pld_multilib2_conf:1}
333 %{__sed} 's|%%ARCH%%|%{ftp_alt2_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt2_arch}.conf
336 %if 0%{?pld_debuginfo_conf:1}
337 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
340 %if 0%{?pld_archive_conf:1}
341 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
344 # Always install snapshot configs
345 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
346 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
347 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' \
348 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
350 %{__sed} -e 's|%%ARCH%%|%{ftp_alt_arch}|g' \
351 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
352 %{__sed} -e 's|%%ARCH%%|%{ftp_alt2_arch}|g' \
353 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt2_arch}.conf
357 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
358 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
360 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
361 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
364 # create "all" meta repo
365 %if 0%{?ftp_alt_arch:1}%{?ftp_alt2_arch:1}
366 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-all.conf
367 # group source for referring th+th-multiarch sources together, i.e poldek -n th-all
371 sources = th %{?ftp_alt_arch:th-%{ftp_alt_arch}} %{?ftp_alt2_arch:th-%{ftp_alt2_arch}}
375 # th-2014 snap does not exist for x32 yet
376 %if "%{ftp_arch}" == "x32"
377 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
379 %if "%{ftp_alt2_arch}" == "x32"
380 rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-x32.conf
383 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
386 # add desktop file and icon
387 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
388 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
389 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
392 # sources we don't package
393 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
394 # include them in %doc
397 %{__rm} -f configs/Makefile*
401 %{__rm} $RPM_BUILD_ROOT%{py_sitedir}/_poldekmod.la
407 rm -rf $RPM_BUILD_ROOT
410 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
411 if [ "$1" = "1" ]; then
412 # remove ignore = vserver-packages inside vserver on first install
415 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
416 done </proc/self/status
418 if [ -z "$ctx" -o "$ctx" = "0" ]; then
423 if [ "$VSERVER" = "yes" ]; then
424 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
428 %postun -p /sbin/postshell
429 -/usr/sbin/fix-info-dir -c %{_infodir}
431 %post libs -p /sbin/ldconfig
432 %postun libs -p /sbin/ldconfig
434 %triggerpostun -- poldek < 0.30-0.20080225.00.1
435 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
436 %{__sed} -i -e '/^%%include source.conf/{
438 a# /etc/poldek/repos.d/*.conf
439 a%%includedir repos.d
440 }' %{_sysconfdir}/%{name}/poldek.conf
443 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
444 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
446 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
447 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
448 %{__mv} -v %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
452 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
453 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
454 %{__mv} -v %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
458 %triggerpostun -- poldek < 0.30.1-3
459 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave ]; then
460 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf{,.rpmnew}
461 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{ftp_alt_arch}.conf
463 if [ -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave ]; then
464 %{__mv} -f %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf{,.rpmnew}
465 %{__mv} -v %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-%{ftp_alt_arch}.conf
468 %triggerpostun -- %{name} < 0.30.1-8
469 if [ $1 -le 1 ]; then
470 # revert change on --downgrade
471 %{__sed} -i -re 's,^pm command = %{_libexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
474 %{__sed} -i -re 's,#?(pm command =).*,\1 %{_libexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
477 %files -f %{name}.lang
478 %defattr(644,root,root,755)
479 %doc ChangeLog README* NEWS TODO configs
480 %dir %{_sysconfdir}/%{name}
481 %dir %{_sysconfdir}/%{name}/pre-install.d
482 %{_sysconfdir}/%{name}/pre-install.d/README
483 %dir %{_sysconfdir}/%{name}/post-install.d
484 %{_sysconfdir}/%{name}/post-install.d/README
485 %dir %{_sysconfdir}/%{name}/repos.d
486 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
487 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
488 %attr(755,root,root) %{_bindir}/ipoldek
489 %attr(755,root,root) %{_bindir}/poldek
490 %attr(755,root,root) %{_bindir}/poldek-config
491 %attr(755,root,root) %{_bindir}/rpmvercmp
493 %attr(755,root,root) %{_libexecdir}/pm-command.sh
494 %attr(755,root,root) %{_libexecdir}/poldekuser-setup.sh
495 %attr(755,root,root) %{_libexecdir}/vfcompr
496 %attr(755,root,root) %{_libexecdir}/vfjuggle
497 %attr(755,root,root) %{_libexecdir}/vfsmb
498 %attr(755,root,root) %{_libexecdir}/zlib-in-rpm.sh
499 %{_mandir}/man1/%{name}*.1*
500 %lang(pl) %{_mandir}/pl/man1/%{name}*
501 %{_infodir}/poldek.info*
503 %{_desktopdir}/%{name}.desktop
504 %{_pixmapsdir}/%{name}.png
506 %dir /var/cache/%{name}
508 %if %{without static}
510 %defattr(644,root,root,755)
511 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
512 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
513 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
514 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
515 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
516 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.0
517 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.2
518 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
519 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
520 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
524 %defattr(644,root,root,755)
525 %if %{without static}
526 %attr(755,root,root) %{_libdir}/libpoclidek.so
527 %attr(755,root,root) %{_libdir}/libpoldek.so
528 %attr(755,root,root) %{_libdir}/libtndb.so
529 %attr(755,root,root) %{_libdir}/libtrurl.so
530 %attr(755,root,root) %{_libdir}/libvfile.so
532 %{_libdir}/libpoclidek.la
533 %{_libdir}/libpoldek.la
534 %{_libdir}/libtndb.la
535 %{_libdir}/libtrurl.la
536 %{_libdir}/libvfile.la
537 %{_includedir}/poldek
541 %{_pkgconfigdir}/tndb.pc
542 %{_pkgconfigdir}/trurlib.pc
545 %defattr(644,root,root,755)
547 %{_libdir}/libtrurl.a
550 %files -n python-poldek
551 %defattr(644,root,root,755)
552 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
553 %{py_sitescriptdir}/poldek.py[co]
554 %{py_sitescriptdir}/poldekmod.py[co]