]> git.pld-linux.org Git - packages/poldek.git/blob - poldek.spec
- BR: check-devel, perl-tools-pod
[packages/poldek.git] / poldek.spec
1 # TODO:
2 # - fails to build without poldek-devel - fix it !
3 #
4 # Conditional build:
5 %bcond_with     static  # don't use shared libraries
6 %bcond_without  imode   # don't build interactive mode
7 %bcond_without  python  # don't build python bindings
8 #
9 # required versions (forced to avoid SEGV with mixed db used by rpm and poldek)
10 %if "%{pld_release}" == "ti"
11 %define ver_db  4.5.20
12 %define ver_db_rel      8
13 %else
14 %define ver_db  4.7.25
15 %define ver_db_rel      1
16 %endif
17 %define ver_rpm 4.5-5
18 #
19 %define         snap    20080820.23
20 %define         rel             43
21 Summary:        RPM packages management helper tool
22 Summary(pl.UTF-8):      Pomocnicze narzędzie do zarządzania pakietami RPM
23 Name:           poldek
24 Version:        0.30
25 Release:        0.%{snap}.%{rel}
26 License:        GPL v2
27 Group:          Applications/System
28 #Source0:       http://poldek.pld-linux.org/download/snapshots/%{name}-%{version}-cvs%{snap}.tar.bz2
29 Source0:        http://carme.pld-linux.org/~megabajt/snaps/poldek/%{name}-%{version}-cvs%{snap}.tar.bz2
30 # Source0-md5:  2738eb3996f1cdf1e5d74b913d6e7414
31 Source1:        %{name}.conf
32 Source2:        %{name}-multilib.conf
33 Source3:        %{name}-ti.conf
34 Source4:        %{name}-multilib-ti.conf
35 Source5:        %{name}-aliases.conf
36 Source6:        %{name}.desktop
37 Source7:        %{name}.png
38 Source8:        %{name}-debuginfo.conf
39 Source9:        %{name}-aidath.conf
40 Source10:       %{name}-multilib-aidath.conf
41 Patch0:         %{name}-vserver-packages.patch
42 Patch1:         %{name}-config.patch
43 Patch2:         %{name}-abort-on-upgrade.patch
44 Patch3:         %{name}-inline.patch
45 Patch4:         %{name}-ls-llu.patch
46 Patch5:         %{name}-op-ldalldesc.patch
47 Patch6:         %{name}-nocolor-upgrade.patch
48 Patch7:         %{name}-upgrade-dist.patch
49 Patch8:         %{name}-keep-reinstalled-provides.patch
50 Patch9:         %{name}-dont-ask-for-suggests-on-errors.patch
51 Patch10:        %{name}-crash-on-invalid-locale.patch
52 Patch11:        %{name}-noutf8.patch
53 Patch12:        %{name}-dont-suggests-required-packages.patch
54 Patch13:        %{name}-tty-for-erasures.patch
55 Patch14:        %{name}-both_langs.patch
56 Patch15:        %{name}-317130.patch
57 Patch16:        %{name}-321546.patch
58 Patch17:        %{name}-size-type.patch
59 Patch18:        %{name}-no-inlines.patch
60 Patch19:        %{name}-export-missing-symbol.patch
61 Patch20:        %{name}-skip-suggests-on-upgrade.patch
62 Patch21:        %{name}-po.patch
63 Patch22:        %{name}-refcnt.patch
64 Patch23:        %{name}-assertion-failed.patch
65 Patch24:        %{name}-unescape-urlencoded-strings.patch
66 Patch25:        %{name}-ls-source-rpm.patch
67 Patch26:        %{name}-add-arch-match.patch
68 Patch27:        %{name}-multilib-upgrade.patch
69 Patch28:        %{name}-score-reqs-marked-to-install.patch
70 Patch29:        %{name}-dont-be-greedy.patch
71 Patch30:        %{name}-dont-lose-deps.patch
72 Patch31:        %{name}-ls-queryfmt.patch
73 Patch32:        %{name}-prepare_url_fix.patch
74 Patch33:        %{name}-noloop_on_terminal_loos.patch
75 Patch34:        %{name}-show_only_relative_used_space.patch
76 Patch35:        %{name}-zlib.patch
77 URL:            http://poldek.pld-linux.org/
78 BuildRequires:  autoconf
79 BuildRequires:  automake
80 BuildRequires:  bzip2-devel
81 BuildRequires:  check-devel
82 BuildRequires:  db-devel >= %{ver_db}-%{ver_db_rel}
83 BuildRequires:  gettext-devel
84 BuildRequires:  libtool
85 BuildRequires:  libxml2-devel
86 BuildRequires:  openssl-devel >= 0.9.7d
87 BuildRequires:  pcre-devel
88 BuildRequires:  perl-tools-pod
89 BuildRequires:  pkgconfig
90 BuildRequires:  popt-devel
91 %{?with_python:BuildRequires:   python-devel}
92 BuildRequires:  readline-devel >= 5.0
93 BuildRequires:  rpm-devel >= %{ver_rpm}
94 %{?with_python:BuildRequires:   rpm-pythonprov}
95 BuildRequires:  zlib-devel
96 %if %{with static}
97 BuildRequires:  bzip2-static
98 BuildRequires:  db-static >= %{ver_db}-%{ver_db_rel}
99 BuildRequires:  glibc-static
100 BuildRequires:  libselinux-static
101 BuildRequires:  libxml2-static
102 BuildRequires:  ncurses-static
103 BuildRequires:  openssl-static
104 BuildRequires:  pcre-static
105 BuildRequires:  popt-static
106 BuildRequires:  readline-static
107 BuildRequires:  rpm-static
108 BuildRequires:  zlib-static
109 %endif
110 Requires(triggerpostun):        awk
111 Requires(triggerpostun):        sed >= 4.0
112 Requires:       %{name}-libs = %{version}-%{release}
113 Requires:       db >= %{ver_db}-%{ver_db_rel}
114 Requires:       rpm >= %{ver_rpm}
115 Requires:       rpm-db-ver = %{ver_db}
116 Requires:       rpm-lib = %(rpm -q --qf '%{V}' rpm-lib)
117 # vf* scripts use sed
118 Requires:       sed
119 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
120
121 %description
122 poldek is an RPM package management tool which allows you to easily
123 perform package verification, installation (including system
124 installation from scratch), upgrading, and removal.
125
126 Program can be used in batch (like apt-get from Debian's APT) or
127 interactive mode. The interactive mode puts you into a readline
128 interface with command line autocompletion and history, similar to the
129 shell mode of Perl's CPAN.
130
131 %{?with_static:This version is statically linked.}
132
133 %{!?with_imode:This version hasn't got interactive mode.}
134 #'vim
135
136 %description -l pl.UTF-8
137 poldek jest narzędziem linii poleceń służącym do weryfikacji,
138 instalacji (włączając instalację systemu od zera), aktualizacji i
139 usuwania pakietów.
140
141 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
142 interaktywnym. Tryb interaktywny posiada interfejs readline z
143 dopełnianiem komend i historią, podobny do trybu shell perlowego
144 modułu CPAN.
145
146 %{?with_static:Ta wersja jest konsolidowana statycznie.}
147
148 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
149
150 %package libs
151 Summary:        poldek libraries
152 Summary(pl.UTF-8):      Biblioteki poldka
153 Group:          Libraries
154
155 %description libs
156 poldek libraries.
157
158 %description libs -l pl.UTF-8
159 Biblioteki poldka.
160
161 %package devel
162 Summary:        Header files for poldek libraries
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}
167
168 %description devel
169 Header files for poldek libraries.
170
171 %description devel -l pl.UTF-8
172 Pliki nagłówkowe bibliotek poldka.
173
174 %package static
175 Summary:        poldek static libraries
176 Summary(pl.UTF-8):      Biblioteki statyczne poldka
177 Group:          Development/Libraries
178 Requires:       %{name}-devel = %{version}-%{release}
179
180 %description static
181 poldek static libraries.
182
183 %description static -l pl.UTF-8
184 Biblioteki statyczne poldka.
185
186 %package -n python-poldek
187 Summary:        Python modules for poldek
188 Summary(pl.UTF-8):      Moduły języka Python dla poldka
189 Group:          Libraries/Python
190 Requires:       %{name}-libs = %{version}-%{release}
191 %pyrequires_eq  python-libs
192
193 %description -n python-poldek
194 Python modules for poldek.
195
196 %description -n python-poldek -l pl.UTF-8
197 Moduły języka Python dla poldka.
198
199 %prep
200 %setup -q -n %{name}-%{version}%{?snap:-cvs%{snap}}
201 %patch0 -p1
202 %patch1 -p1
203 %patch2 -p1
204 %patch3 -p1
205 %patch4 -p1
206 %patch5 -p1
207 %patch6 -p0
208 %patch7 -p0
209 %patch8 -p0
210 %patch9 -p0
211 %patch10 -p1
212 %patch11 -p1
213 %patch12 -p1
214 %patch13 -p1
215 %patch14 -p1
216 %patch15 -p1
217 %patch16 -p1
218 %patch17 -p1
219 %patch18 -p1
220 %patch19 -p0
221 %patch20 -p1
222 %patch21 -p1
223 %patch22 -p0
224 %patch23 -p1
225 %patch24 -p1
226 # LP#392984: add source rpm to ls
227 %patch25 -p1
228 # LP#408036
229 %patch26 -p1
230 # LP#408034
231 %patch27 -p1
232 # score reqs already marked to install
233 %patch28 -p1
234 # dont be greedy if upgraded pkg has needed capabilities
235 %patch29 -p1
236 # http://lists.pld-linux.org/mailman/pipermail/pld-devel-pl/2009-November/150519.html
237 %patch30 -p1
238 # LP#392984: add query format to ls
239 %patch31 -p1
240 # LP#506568
241 %patch32 -p0
242 # LP#499504
243 %patch33 -p1
244 # do not info. about amount of transaction space req. but relative to already installed
245 %patch34 -p1
246 # fixes failures with zlib >= 1.2.3.7
247 %patch35 -p0
248
249 # cleanup backups after patching
250 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
251
252 %build
253 %{__libtoolize}
254 %{__autoheader}
255 %{__aclocal} -I m4
256 %{__autoconf}
257 %{__automake}
258 cp -f config.sub trurlib
259
260 CPPFLAGS="-std=gnu99"
261 %configure \
262         %{?with_static:--enable-static --disable-shared} \
263         %{!?with_imode:--disable-imode} \
264         --enable-nls \
265         %{?with_python:--with-python}
266 %{__make}
267 #       --enable-trace
268
269 %install
270 rm -rf $RPM_BUILD_ROOT
271 install -d $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d
272
273 %{__make} install \
274         DESTDIR=$RPM_BUILD_ROOT
275
276 %if %{with python}
277 %{__make} -C python install \
278         DESTDIR=$RPM_BUILD_ROOT \
279         libdir=%{py_sitedir}
280 %endif
281
282 %{?with_static:rm -f $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
283
284 %ifarch i486 i686 ppc sparc alpha athlon
285 %define         _ftp_arch       %{_target_cpu}
286 %endif
287 %ifarch %{x8664}
288 %define         _ftp_arch       x86_64
289 %define         _ftp_alt_arch   i686
290 %endif
291 %ifarch i586
292 %if "%{pld_release}" == "ti"
293 %define         _ftp_arch       i586
294 %else
295 %define         _ftp_arch       i486
296 %endif
297 %endif
298 %ifarch pentium2 pentium3 pentium4
299 %define         _ftp_arch       i686
300 %endif
301 %ifarch sparcv9 sparc64
302 %define         _ftp_arch       sparc
303 %if "%{pld_release}" == "th"
304 %define         _ftp_arch       %{_target_cpu}
305 %ifarch sparc64
306 %define         _ftp_alt_arch   sparcv9
307 %endif
308 %endif
309 %endif
310
311 %{?with_static:rm -f $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
312
313 %if "%{pld_release}" == "ti"
314 sed -e '
315         s|%%ARCH%%|%{_ftp_arch}|g
316 ' < %{SOURCE3} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
317
318 %ifarch %{x8664}
319 sed '
320         s|%%ARCH%%|%{_ftp_alt_arch}|g
321 ' < %{SOURCE4} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
322 %endif
323 %else
324 # pld_release = th
325 %ifarch sparcv9 sparc64
326 sed -e '
327         s|%%ARCH%%|%{_ftp_arch}|g
328 ' < %{SOURCE9} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
329
330 %ifarch sparc64
331 sed '
332         s|%%ARCH%%|%{_ftp_alt_arch}|g
333 ' < %{SOURCE10} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
334 %endif
335
336 %else
337 sed -e '
338         s|%%ARCH%%|%{_ftp_arch}|g
339 ' < %{SOURCE1} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
340 sed -e '
341         s|%%ARCH%%|%{_ftp_arch}|g
342 ' < %{SOURCE8} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
343
344 %ifarch %{x8664}
345 sed '
346         s|%%ARCH%%|%{_ftp_alt_arch}|g
347 ' < %{SOURCE2} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
348 %endif
349 %endif
350 %endif
351
352 install %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
353
354 %if %{with imode}
355 # add desktop file and icon
356 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
357 install %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
358 install %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
359 %endif
360
361 # sources we don't package
362 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,pld,fedora,centos}-source.conf
363 # include them in %doc
364 rm -rf configs
365 cp -a conf configs
366 rm -f configs/Makefile*
367
368 %if %{with python}
369 %py_postclean
370 rm -f $RPM_BUILD_ROOT%{py_sitedir}/_poldekmod.la
371 %endif
372
373 %find_lang %{name}
374
375 %clean
376 rm -rf $RPM_BUILD_ROOT
377
378 %post
379 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
380 if [ "$1" = "1" ]; then
381         # remove ignore = vserver-packages inside vserver on first install
382         {
383                 while read f ctx; do
384                         [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
385                 done </proc/self/status
386         } 2>/dev/null
387         if [ -z "$ctx" -o "$ctx" = "0" ]; then
388                 VSERVER=no
389         else
390                 VSERVER=yes
391         fi
392         if [ "$VSERVER" = "yes" ]; then
393                 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
394         fi
395 fi
396
397 %postun -p      /sbin/postshell
398 -/usr/sbin/fix-info-dir -c %{_infodir}
399
400 %post   libs -p /sbin/ldconfig
401 %postun libs -p /sbin/ldconfig
402
403 %triggerpostun -- poldek < 0.19.0-1.20050613.22.0
404 if [ -f /etc/poldek.conf.rpmsave ]; then
405         awk '/^source/ {
406         name = $3;
407         path = $4;
408         auto = "yes";
409         autoup = "yes";
410         type = "pdir";
411         pri = "";
412
413         if (sub(",noauto", "", name)) {
414                 auto = "no";
415         }
416
417         # process pri=\d+
418         if (match(name, /,pri=[0-9]+/)) {
419                 pri = substr(name, RSTART + 5, RLENGTH - 5);
420                 name = substr(name, 1, RSTART - 1) substr(name, RSTART + RLENGTH);
421         }
422
423         # skip ac sources. already in new config.
424         if (name !~ /^ac(-(ready|test|supported|updates-(general|security)))?$/) {
425                 print "";
426                 print "[source]";
427                 print "name = " name;
428                 print "type = " type;
429                 print "path = " path;
430                 print "auto = " auto;
431                 print "autoup = " autoup;
432                 if (pri) {
433                         print "pri = " pri;
434                 }
435         }
436
437         }' < /etc/poldek.conf.rpmsave >> /etc/poldek/source.conf
438         echo "Converted old custom sources from /etc/poldek.conf.rpmsave to new poldek format in /etc/poldek/source.conf"
439
440         # copy hold=
441         hold=$(grep ^hold /etc/poldek.conf.rpmsave)
442         if [ "$hold" ]; then
443                 sed -i -e "/^#hold =/s/^.*/$hold/" /etc/poldek/poldek.conf
444         fi
445 fi
446
447 %triggerpostun -- poldek < 0.30-0.20080225.00.1
448 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
449         %{__sed} -i -e '/^%%include source.conf/{
450                 a
451                 a# /etc/poldek/repos.d/*.conf
452                 a%%includedir repos.d
453         }' %{_sysconfdir}/%{name}/poldek.conf
454 fi
455
456 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
457 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
458
459 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
460         cp -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
461         cp -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
462 fi
463
464 %ifarch %{x8664}
465 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
466         cp -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
467         cp -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
468 fi
469 %endif
470
471 %files -f %{name}.lang
472 %defattr(644,root,root,755)
473 %doc README* NEWS TODO configs
474 %dir %{_sysconfdir}/%{name}
475 %dir %{_sysconfdir}/%{name}/repos.d
476 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
477 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
478 %attr(755,root,root) %{_bindir}/*
479 %dir %{_libdir}/%{name}
480 %attr(755,root,root) %{_libdir}/%{name}/*
481 %{_mandir}/man1/%{name}*
482 %lang(pl) %{_mandir}/pl/man1/%{name}*
483 %{_infodir}/poldek.info*
484 %if %{with imode}
485 %{_desktopdir}/%{name}.desktop
486 %{_pixmapsdir}/%{name}.png
487 %endif
488
489 %if %{without static}
490 %files libs
491 %defattr(644,root,root,755)
492 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
493 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
494 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
495 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
496 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
497 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.0
498 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.2
499 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
500 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
501 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
502 %endif
503
504 %files devel
505 %defattr(644,root,root,755)
506 %{!?with_static:%attr(755,root,root) %{_libdir}/lib*.so}
507 %{_libdir}/lib*.la
508 %{_includedir}/*
509
510 %files static
511 %defattr(644,root,root,755)
512 %{_libdir}/lib*.a
513
514 %if %{with python}
515 %files -n python-poldek
516 %defattr(644,root,root,755)
517 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
518 %{py_sitescriptdir}/poldek.py[co]
519 %{py_sitescriptdir}/poldekmod.py[co]
520 %endif
This page took 0.116366 seconds and 4 git commands to generate.