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
7 # required versions (forced to avoid SEGV with mixed db used by rpm and poldek)
8 %if "%{pld_release}" == "ti"
17 %define snap 20080820.23
19 Summary: RPM packages management helper tool
20 Summary(pl.UTF-8): Pomocnicze narzędzie do zarządzania pakietami RPM
23 Release: 0.%{snap}.%{rel}
25 Group: Applications/System
26 #Source0: http://poldek.pld-linux.org/download/snapshots/%{name}-%{version}-cvs%{snap}.tar.bz2
27 Source0: http://carme.pld-linux.org/~megabajt/snaps/poldek/%{name}-%{version}-cvs%{snap}.tar.bz2
28 # Source0-md5: 2738eb3996f1cdf1e5d74b913d6e7414
30 Source2: %{name}-multilib.conf
31 Source3: %{name}-ti.conf
32 Source4: %{name}-multilib-ti.conf
33 Source5: %{name}-aliases.conf
34 Source6: %{name}.desktop
36 Source8: %{name}-debuginfo.conf
37 Source9: %{name}-aidath.conf
38 Source10: %{name}-multilib-aidath.conf
39 Patch0: %{name}-vserver-packages.patch
40 Patch1: %{name}-config.patch
41 Patch2: %{name}-abort-on-upgrade.patch
42 Patch3: %{name}-inline.patch
43 Patch4: %{name}-ls-llu.patch
44 Patch5: %{name}-op-ldalldesc.patch
45 Patch6: %{name}-nocolor-upgrade.patch
46 Patch7: %{name}-upgrade-dist.patch
47 Patch8: %{name}-keep-reinstalled-provides.patch
48 Patch9: %{name}-dont-ask-for-suggests-on-errors.patch
49 Patch10: %{name}-crash-on-invalid-locale.patch
50 Patch11: %{name}-noutf8.patch
51 Patch12: %{name}-dont-suggests-required-packages.patch
52 Patch13: %{name}-tty-for-erasures.patch
53 Patch14: %{name}-both_langs.patch
54 Patch15: %{name}-317130.patch
55 Patch16: %{name}-321546.patch
56 Patch17: %{name}-size-type.patch
57 Patch18: %{name}-no-inlines.patch
58 Patch19: %{name}-export-missing-symbol.patch
59 Patch20: %{name}-skip-suggests-on-upgrade.patch
60 Patch21: %{name}-po.patch
61 Patch22: %{name}-refcnt.patch
62 Patch23: %{name}-assertion-failed.patch
63 Patch24: %{name}-unescape-urlencoded-strings.patch
64 Patch25: %{name}-ls-source-rpm.patch
65 Patch26: %{name}-add-arch-match.patch
66 Patch27: %{name}-multilib-upgrade.patch
67 Patch28: %{name}-score-reqs-marked-to-install.patch
68 Patch29: %{name}-dont-be-greedy.patch
69 Patch30: %{name}-dont-lose-deps.patch
70 Patch31: %{name}-ls-queryfmt.patch
71 Patch32: %{name}-prepare_url_fix.patch
72 Patch33: %{name}-noloop_on_terminal_loos.patch
73 Patch34: %{name}-show_only_relative_used_space.patch
74 Patch35: %{name}-zlib.patch
75 Patch36: %{name}-show_approx_sets.patch
76 URL: http://poldek.pld-linux.org/
77 BuildRequires: autoconf
78 BuildRequires: automake
79 BuildRequires: bzip2-devel
80 BuildRequires: db-devel >= %{ver_db}-%{ver_db_rel}
81 BuildRequires: gettext-devel
82 BuildRequires: libtool
83 BuildRequires: libxml2-devel
84 BuildRequires: openssl-devel >= 0.9.7d
85 BuildRequires: pcre-devel
86 BuildRequires: pkgconfig
87 BuildRequires: popt-devel
88 %{?with_python:BuildRequires: python-devel}
89 BuildRequires: readline-devel >= 5.0
90 BuildRequires: rpm-devel >= %{ver_rpm}
91 %{?with_python:BuildRequires: rpm-pythonprov}
92 BuildRequires: zlib-devel
94 BuildRequires: bzip2-static
95 BuildRequires: db-static >= %{ver_db}-%{ver_db_rel}
96 BuildRequires: glibc-static
97 BuildRequires: libselinux-static
98 BuildRequires: libxml2-static
99 BuildRequires: ncurses-static
100 BuildRequires: openssl-static
101 BuildRequires: pcre-static
102 BuildRequires: popt-static
103 BuildRequires: readline-static
104 BuildRequires: rpm-static
105 BuildRequires: zlib-static
107 Requires(triggerpostun): awk
108 Requires(triggerpostun): sed >= 4.0
109 Requires: %{name}-libs = %{version}-%{release}
110 Requires: db >= %{ver_db}-%{ver_db_rel}
111 Requires: rpm >= %{ver_rpm}
112 Requires: rpm-db-ver = %{ver_db}
113 Requires: rpm-lib = %(rpm -q --qf '%{V}' rpm-lib)
114 # vf* scripts use sed
116 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
119 poldek is an RPM package management tool which allows you to easily
120 perform package verification, installation (including system
121 installation from scratch), upgrading, and removal.
123 Program can be used in batch (like apt-get from Debian's APT) or
124 interactive mode. The interactive mode puts you into a readline
125 interface with command line autocompletion and history, similar to the
126 shell mode of Perl's CPAN.
128 %{?with_static:This version is statically linked.}
130 %{!?with_imode:This version hasn't got interactive mode.}
133 %description -l pl.UTF-8
134 poldek jest narzędziem linii poleceń służącym do weryfikacji,
135 instalacji (włączając instalację systemu od zera), aktualizacji i
138 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
139 interaktywnym. Tryb interaktywny posiada interfejs readline z
140 dopełnianiem komend i historią, podobny do trybu shell perlowego
143 %{?with_static:Ta wersja jest konsolidowana statycznie.}
145 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
148 Summary: poldek libraries
149 Summary(pl.UTF-8): Biblioteki poldka
155 %description libs -l pl.UTF-8
159 Summary: Header files for poldek libraries
160 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek poldka
161 Group: Development/Libraries
162 Requires: %{name}-libs = %{version}-%{release}
163 Requires: rpm-devel >= %{ver_rpm}
166 Header files for poldek libraries.
168 %description devel -l pl.UTF-8
169 Pliki nagłówkowe bibliotek poldka.
172 Summary: poldek static libraries
173 Summary(pl.UTF-8): Biblioteki statyczne poldka
174 Group: Development/Libraries
175 Requires: %{name}-devel = %{version}-%{release}
178 poldek static libraries.
180 %description static -l pl.UTF-8
181 Biblioteki statyczne poldka.
183 %package -n python-poldek
184 Summary: Python modules for poldek
185 Summary(pl.UTF-8): Moduły języka Python dla poldka
186 Group: Libraries/Python
187 Requires: %{name}-libs = %{version}-%{release}
188 %pyrequires_eq python-libs
190 %description -n python-poldek
191 Python modules for poldek.
193 %description -n python-poldek -l pl.UTF-8
194 Moduły języka Python dla poldka.
197 %setup -q -n %{name}-%{version}%{?snap:-cvs%{snap}}
223 # LP#392984: add source rpm to ls
229 # score reqs already marked to install
231 # dont be greedy if upgraded pkg has needed capabilities
233 # http://lists.pld-linux.org/mailman/pipermail/pld-devel-pl/2009-November/150519.html
235 # LP#392984: add query format to ls
241 # do not info. about amount of transaction space req. but relative to already installed
243 # fixes failures with zlib >= 1.2.3.7
245 # shows the approximate number of sets to install
248 # cleanup backups after patching
249 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
257 cp -f config.sub trurlib
259 CPPFLAGS="-std=gnu99"
261 %{?with_static:--enable-static --disable-shared} \
262 %{!?with_imode:--disable-imode} \
264 %{?with_python:--with-python}
269 rm -rf $RPM_BUILD_ROOT
270 install -d $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d
273 DESTDIR=$RPM_BUILD_ROOT
276 %{__make} -C python install \
277 DESTDIR=$RPM_BUILD_ROOT \
281 %{?with_static:rm -f $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
283 %ifarch i486 i686 ppc sparc alpha athlon
284 %define _ftp_arch %{_target_cpu}
287 %define _ftp_arch x86_64
288 %define _ftp_alt_arch i686
291 %if "%{pld_release}" == "ti"
292 %define _ftp_arch i586
294 %define _ftp_arch i486
297 %ifarch pentium2 pentium3 pentium4
298 %define _ftp_arch i686
300 %ifarch sparcv9 sparc64
301 %define _ftp_arch sparc
302 %if "%{pld_release}" == "th"
303 %define _ftp_arch %{_target_cpu}
305 %define _ftp_alt_arch sparcv9
310 %{?with_static:rm -f $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
312 %if "%{pld_release}" == "ti"
314 s|%%ARCH%%|%{_ftp_arch}|g
315 ' < %{SOURCE3} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
319 s|%%ARCH%%|%{_ftp_alt_arch}|g
320 ' < %{SOURCE4} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
324 %ifarch sparcv9 sparc64
326 s|%%ARCH%%|%{_ftp_arch}|g
327 ' < %{SOURCE9} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
331 s|%%ARCH%%|%{_ftp_alt_arch}|g
332 ' < %{SOURCE10} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
337 s|%%ARCH%%|%{_ftp_arch}|g
338 ' < %{SOURCE1} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
340 s|%%ARCH%%|%{_ftp_arch}|g
341 ' < %{SOURCE8} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
345 s|%%ARCH%%|%{_ftp_alt_arch}|g
346 ' < %{SOURCE2} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
351 install %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
354 # add desktop file and icon
355 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
356 install %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
357 install %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
360 # sources we don't package
361 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,pld,fedora,centos}-source.conf
362 # include them in %doc
365 rm -f configs/Makefile*
369 rm -f $RPM_BUILD_ROOT%{py_sitedir}/_poldekmod.la
375 rm -rf $RPM_BUILD_ROOT
378 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
379 if [ "$1" = "1" ]; then
380 # remove ignore = vserver-packages inside vserver on first install
383 [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
384 done </proc/self/status
386 if [ -z "$ctx" -o "$ctx" = "0" ]; then
391 if [ "$VSERVER" = "yes" ]; then
392 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
396 %postun -p /sbin/postshell
397 -/usr/sbin/fix-info-dir -c %{_infodir}
399 %post libs -p /sbin/ldconfig
400 %postun libs -p /sbin/ldconfig
402 %triggerpostun -- poldek < 0.19.0-1.20050613.22.0
403 if [ -f /etc/poldek.conf.rpmsave ]; then
412 if (sub(",noauto", "", name)) {
417 if (match(name, /,pri=[0-9]+/)) {
418 pri = substr(name, RSTART + 5, RLENGTH - 5);
419 name = substr(name, 1, RSTART - 1) substr(name, RSTART + RLENGTH);
422 # skip ac sources. already in new config.
423 if (name !~ /^ac(-(ready|test|supported|updates-(general|security)))?$/) {
426 print "name = " name;
427 print "type = " type;
428 print "path = " path;
429 print "auto = " auto;
430 print "autoup = " autoup;
436 }' < /etc/poldek.conf.rpmsave >> /etc/poldek/source.conf
437 echo "Converted old custom sources from /etc/poldek.conf.rpmsave to new poldek format in /etc/poldek/source.conf"
440 hold=$(grep ^hold /etc/poldek.conf.rpmsave)
442 sed -i -e "/^#hold =/s/^.*/$hold/" /etc/poldek/poldek.conf
446 %triggerpostun -- poldek < 0.30-0.20080225.00.1
447 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
448 %{__sed} -i -e '/^%%include source.conf/{
450 a# /etc/poldek/repos.d/*.conf
451 a%%includedir repos.d
452 }' %{_sysconfdir}/%{name}/poldek.conf
455 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
456 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
458 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
459 cp -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
460 cp -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
464 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
465 cp -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
466 cp -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
470 %files -f %{name}.lang
471 %defattr(644,root,root,755)
472 %doc README* NEWS TODO configs
473 %dir %{_sysconfdir}/%{name}
474 %dir %{_sysconfdir}/%{name}/repos.d
475 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
476 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
477 %attr(755,root,root) %{_bindir}/*
478 %dir %{_libdir}/%{name}
479 %attr(755,root,root) %{_libdir}/%{name}/*
480 %{_mandir}/man1/%{name}*
481 %lang(pl) %{_mandir}/pl/man1/%{name}*
482 %{_infodir}/poldek.info*
484 %{_desktopdir}/%{name}.desktop
485 %{_pixmapsdir}/%{name}.png
488 %if %{without static}
490 %defattr(644,root,root,755)
491 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
492 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
493 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
494 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
495 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
496 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.0
497 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.2
498 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
499 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
500 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
504 %defattr(644,root,root,755)
505 %{!?with_static:%attr(755,root,root) %{_libdir}/lib*.so}
510 %defattr(644,root,root,755)
514 %files -n python-poldek
515 %defattr(644,root,root,755)
516 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
517 %{py_sitescriptdir}/poldek.py[co]
518 %{py_sitescriptdir}/poldekmod.py[co]