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 db60 # DB 6.0 instead of 5.2
9 # current snapshot name
12 # required versions (forced to avoid SEGV with mixed db used by rpm and poldek)
13 # NOTE: poldek links with "system db" (-ldb) anyway if it exists
23 %define ver_rpm 5.4.10
26 Summary: RPM packages management helper tool
27 Summary(hu.UTF-8): RPM csomagkezelést segítő eszköz
28 Summary(pl.UTF-8): Pomocnicze narzędzie do zarządzania pakietami RPM
31 Release: %{rel}%{?with_snap:.%{SNAP}}
33 Group: Applications/System
34 #Source0: http://poldek.pld-linux.org/download/snapshots/%{name}-%{version}-cvs%{snap}.tar.bz2
35 Source0: http://carme.pld-linux.org/~megabajt/releases/poldek/%{name}-%{version}.tar.xz
36 # Source0-md5: e569c8454df0932df53b09cee9998927
38 Source2: %{name}-multilib.conf
39 Source5: %{name}-aliases.conf
40 Source6: %{name}.desktop
42 Source8: %{name}-debuginfo.conf
43 Source9: %{name}-aidath.conf
44 Source10: %{name}-multilib-aidath.conf
45 Source11: %{name}-archive.conf
46 Source100: %{name}-snap.conf
47 Source101: %{name}-multilib-snap.conf
48 Source102: %{name}-debuginfo-snap.conf
49 Patch0: %{name}-size-type.patch
50 Patch1: %{name}-config.patch
51 URL: http://poldek.pld-linux.org/
52 BuildRequires: %{db_pkg}-devel >= %{ver_db}-%{ver_db_rel}
53 BuildRequires: autoconf
54 BuildRequires: automake >= 1:1.11
55 BuildRequires: bzip2-devel
56 BuildRequires: check-devel
57 BuildRequires: docbook-dtd412-xml
58 BuildRequires: gettext-devel
59 BuildRequires: libtool
60 BuildRequires: libxml2-devel
61 BuildRequires: neon-devel
62 BuildRequires: openssl-devel >= 0.9.7d
63 BuildRequires: pcre-devel
64 BuildRequires: pkgconfig
65 BuildRequires: popt-devel
66 %{?with_python:BuildRequires: python-devel}
67 BuildRequires: readline-devel >= 5.0
68 BuildRequires: rpm-devel >= %{ver_rpm}
69 %{?with_python:BuildRequires: rpm-pythonprov}
70 BuildRequires: swig-python
71 BuildRequires: tar >= 1:1.22
74 BuildRequires: zlib-devel
76 BuildRequires: %{db_pkg}-static >= %{ver_db}-%{ver_db_rel}
77 BuildRequires: bzip2-static
78 BuildRequires: glibc-static
79 BuildRequires: libxml2-static
80 BuildRequires: ncurses-static
81 BuildRequires: openssl-static
82 BuildRequires: pcre-static
83 BuildRequires: popt-static
84 BuildRequires: readline-static
85 BuildRequires: rpm-static
86 BuildRequires: zlib-static
88 Requires(triggerpostun): awk
89 Requires(triggerpostun): sed >= 4.0
90 Requires: %{db_pkg} >= %{ver_db}-%{ver_db_rel}
91 Requires: %{name}-libs = %{version}-%{release}
92 Requires: rpm >= %{ver_rpm}
93 Requires: rpm-db-ver = %{ver_db}
94 #Requires: rpm-lib = %(rpm -q --qf '%{V}' rpm-lib)
95 Requires: rpm-lib >= 5.4.10
98 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
100 %define _libexecdir %{_prefix}/lib/%{name}
103 poldek is an RPM package management tool which allows you to easily
104 perform package verification, installation (including system
105 installation from scratch), upgrading, and removal.
107 Program can be used in batch (like apt-get from Debian's APT) or
108 interactive mode. The interactive mode puts you into a readline
109 interface with command line autocompletion and history, similar to the
110 shell mode of Perl's CPAN.
112 %{?with_static:This version is statically linked.}
114 %{!?with_imode:This version hasn't got interactive mode.}
117 %description -l hu.UTF-8
118 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
119 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
120 nulláról), frissítést és eltávolítást.
122 A program használható parancssorból (mint a Debian apt-get programja)
123 vagy interaktív módban. Az interaktív mód egy readline környezetet
124 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
127 %{?with_static:Ez a verzió statikusan linkelt.}
129 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
131 %description -l pl.UTF-8
132 poldek jest narzędziem linii poleceń służącym do weryfikacji,
133 instalacji (włączając instalację systemu od zera), aktualizacji i
136 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
137 interaktywnym. Tryb interaktywny posiada interfejs readline z
138 dopełnianiem komend i historią, podobny do trybu shell perlowego
141 %{?with_static:Ta wersja jest konsolidowana statycznie.}
143 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
146 Summary: poldek libraries
147 Summary(hu.UTF-8): A poldek könyvtárai
148 Summary(pl.UTF-8): Biblioteki poldka
154 %description libs -l hu.UTF-8
157 %description libs -l pl.UTF-8
161 Summary: Header files for poldek libraries
162 Summary(hu.UTF-8): A poldek könyvtár fejlesztői fájljai
163 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
164 Group: Development/Libraries
165 Requires: %{name}-libs = %{version}-%{release}
166 Requires: rpm-devel >= %{ver_rpm}
169 Header files for poldek libraries.
171 %description devel -l hu.UTF-8
172 A poldek könyvtár fejlesztői fájljai.
174 %description devel -l pl.UTF-8
175 Pliki nagłówkowe bibliotek poldka.
178 Summary: poldek static libraries
179 Summary(hu.UTF-8): poldek statikus könyvtárak
180 Summary(pl.UTF-8): Biblioteki statyczne poldka
181 Group: Development/Libraries
182 Requires: %{name}-devel = %{version}-%{release}
185 poldek static libraries.
187 %description static -l hu.UTF-8
188 poldek statikus könyvtárak.
190 %description static -l pl.UTF-8
191 Biblioteki statyczne poldka.
193 %package -n python-poldek
194 Summary: Python modules for poldek
195 Summary(hu.UTF-8): Python modulok poldek-hez
196 Summary(pl.UTF-8): Moduły języka Python dla poldka
197 Group: Libraries/Python
198 Requires: %{name}-libs = %{version}-%{release}
199 Requires: python-libs
201 %description -n python-poldek
202 Python modules for poldek.
204 %description -n python-poldek -l hu.UTF-8
205 Python modulok poldek-hez.
207 %description -n python-poldek -l pl.UTF-8
208 Moduły języka Python dla poldka.
215 %{__rm} m4/libtool.m4 m4/lt*.m4
217 # cleanup backups after patching
218 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
219 chmod u+x ./configure ./doc/conf-xml2.sh
242 CPPFLAGS="%{rpmcppflags} -std=gnu99 -fgnu89-inline"
244 %{?with_static:--enable-static --disable-shared} \
245 %{!?with_imode:--disable-imode} \
246 --with-pkglibdir=%{_libexecdir} \
248 %{?with_python:--with-python}
253 rm -rf $RPM_BUILD_ROOT
254 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/repos.d,/var/cache/%{name}}
256 %{__make} install -j1 \
257 DESTDIR=$RPM_BUILD_ROOT
260 %{__make} -C python -j1 install \
261 DESTDIR=$RPM_BUILD_ROOT \
265 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
267 %ifarch i486 i686 ppc sparc alpha athlon
268 %define _ftp_arch %{_target_cpu}
271 %define _ftp_arch x86_64
272 %define _ftp_alt_arch i686
275 %define _ftp_arch i486
277 %ifarch pentium2 pentium3 pentium4
278 %define _ftp_arch i686
280 %ifarch sparcv9 sparc64
281 %define _ftp_arch sparc
282 %define _ftp_arch %{_target_cpu}
284 %define _ftp_alt_arch sparcv9
288 %define pld_conf %{SOURCE1}
289 %define pld_debuginfo_conf %{SOURCE8}
290 %define pld_archive_conf %{SOURCE11}
293 %define pld_multilib_conf %{SOURCE2}
297 %ifarch sparcv9 sparc64
298 %define pld_conf %{SOURCE9}
299 %undefine pld_archive_conf
302 %define pld_multilib_conf %{SOURCE10}
305 %{__sed} -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
307 %if 0%{?pld_multilib_conf:1}
308 %{__sed} 's|%%ARCH%%|%{_ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
311 %if 0%{?pld_debuginfo_conf:1}
312 %{__sed} -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
315 %if 0%{?pld_archive_conf:1}
316 %{__sed} -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
319 # Always install snapshot configs
320 %{__sed} -e 's|%%ARCH%%|%{_ftp_arch}|g' \
321 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
322 %{__sed} -e 's|%%ARCH%%|%{_ftp_arch}|g' \
323 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
325 %{__sed} -e 's|%%ARCH%%|%{_ftp_alt_arch}|g' \
326 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf
330 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
331 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
333 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
334 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
337 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
340 # add desktop file and icon
341 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
342 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
343 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
346 # sources we don't package
347 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
348 # include them in %doc
351 %{__rm} -f configs/Makefile*
355 %{__rm} $RPM_BUILD_ROOT%{py_sitedir}/_poldekmod.la
361 rm -rf $RPM_BUILD_ROOT
364 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
365 if [ "$1" = "1" ]; then
366 # remove ignore = vserver-packages inside vserver on first install
369 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
370 done </proc/self/status
372 if [ -z "$ctx" -o "$ctx" = "0" ]; then
377 if [ "$VSERVER" = "yes" ]; then
378 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
382 %postun -p /sbin/postshell
383 -/usr/sbin/fix-info-dir -c %{_infodir}
385 %post libs -p /sbin/ldconfig
386 %postun libs -p /sbin/ldconfig
388 %triggerpostun -- poldek < 0.19.0-1.20050613.22.0
389 if [ -f /etc/poldek.conf.rpmsave ]; then
398 if (sub(",noauto", "", name)) {
403 if (match(name, /,pri=[0-9]+/)) {
404 pri = substr(name, RSTART + 5, RLENGTH - 5);
405 name = substr(name, 1, RSTART - 1) substr(name, RSTART + RLENGTH);
408 # skip ac sources. already in new config.
409 if (name !~ /^ac(-(ready|test|supported|updates-(general|security)))?$/) {
412 print "name = " name;
413 print "type = " type;
414 print "path = " path;
415 print "auto = " auto;
416 print "autoup = " autoup;
422 }' < /etc/poldek.conf.rpmsave >> /etc/poldek/source.conf
423 echo "Converted old custom sources from /etc/poldek.conf.rpmsave to new poldek format in /etc/poldek/source.conf"
426 hold=$(grep ^hold /etc/poldek.conf.rpmsave)
428 %{__sed} -i -e "/^#hold =/s/^.*/$hold/" /etc/poldek/poldek.conf
432 %triggerpostun -- poldek < 0.30-0.20080225.00.1
433 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
434 %{__sed} -i -e '/^%%include source.conf/{
436 a# /etc/poldek/repos.d/*.conf
437 a%%includedir repos.d
438 }' %{_sysconfdir}/%{name}/poldek.conf
441 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
442 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
444 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
445 cp -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
446 cp -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
450 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
451 cp -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
452 cp -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
456 %files -f %{name}.lang
457 %defattr(644,root,root,755)
458 %doc ChangeLog README* NEWS TODO configs
459 %dir %{_sysconfdir}/%{name}
460 %dir %{_sysconfdir}/%{name}/repos.d
461 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
462 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
463 %attr(755,root,root) %{_bindir}/ipoldek
464 %attr(755,root,root) %{_bindir}/poldek
465 %attr(755,root,root) %{_bindir}/rpmvercmp
467 %attr(755,root,root) %{_libexecdir}/*
468 %{_mandir}/man1/%{name}*.1*
469 %lang(pl) %{_mandir}/pl/man1/%{name}*
470 %{_infodir}/poldek.info*
472 %{_desktopdir}/%{name}.desktop
473 %{_pixmapsdir}/%{name}.png
475 %dir /var/cache/%{name}
477 %if %{without static}
479 %defattr(644,root,root,755)
480 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
481 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
482 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
483 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
484 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
485 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.0
486 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.2
487 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
488 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
489 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
493 %defattr(644,root,root,755)
494 %if %{without static}
495 %attr(755,root,root) %{_libdir}/libpoclidek.so
496 %attr(755,root,root) %{_libdir}/libpoldek.so
497 %attr(755,root,root) %{_libdir}/libtndb.so
498 %attr(755,root,root) %{_libdir}/libtrurl.so
499 %attr(755,root,root) %{_libdir}/libvfile.so
501 %{_libdir}/libpoclidek.la
502 %{_libdir}/libpoldek.la
503 %{_libdir}/libtndb.la
504 %{_libdir}/libtrurl.la
505 %{_libdir}/libvfile.la
506 %{_includedir}/poldek
510 %{_pkgconfigdir}/tndb.pc
511 %{_pkgconfigdir}/trurlib.pc
514 %defattr(644,root,root,755)
516 %{_libdir}/libtrurl.a
519 %files -n python-poldek
520 %defattr(644,root,root,755)
521 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
522 %{py_sitescriptdir}/poldek.py[co]
523 %{py_sitescriptdir}/poldekmod.py[co]