]> git.pld-linux.org Git - packages/poldek.git/blob - poldek.spec
- add lock leak fix from LP#1042200
[packages/poldek.git] / poldek.spec
1 #
2 # Conditional build:
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
8 # current snapshot name
9 %define         SNAP    2012
10
11 # required versions (forced to avoid SEGV with mixed db used by rpm and poldek)
12 %define         ver_db          5.3
13 %define         ver_db_rel      1
14 %define         ver_rpm         5.4.10
15
16 %define         snap    rc5
17 %define         rel     14.2%{?with_snap:.%{SNAP}}
18 Summary:        RPM packages management helper tool
19 Summary(hu.UTF-8):      RPM csomagkezelést segítő eszköz
20 Summary(pl.UTF-8):      Pomocnicze narzędzie do zarządzania pakietami RPM
21 Name:           poldek
22 Version:        0.30
23 Release:        1.%{snap}.%{rel}
24 License:        GPL v2
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/~cactus/snaps/poldek/%{name}-%{version}%{snap}.tar.xz
28 # Source0-md5:  ab89926c28cfb6b7d72497fc37c16ac4
29 Source1:        %{name}.conf
30 Source2:        %{name}-multilib.conf
31 Source5:        %{name}-aliases.conf
32 Source6:        %{name}.desktop
33 Source7:        %{name}.png
34 Source8:        %{name}-debuginfo.conf
35 Source9:        %{name}-aidath.conf
36 Source10:       %{name}-multilib-aidath.conf
37 Source11:       %{name}-archive.conf
38 Source100:      %{name}-snap.conf
39 Source101:      %{name}-multilib-snap.conf
40 Source102:      %{name}-debuginfo-snap.conf
41 Patch0:         %{name}-vserver-packages.patch
42 Patch1:         %{name}-config.patch
43 Patch2:         %{name}-size-type.patch
44 Patch3:         %{name}-Os-fail-workaround.patch
45 Patch4:         %{name}-git.patch
46 Patch5:         %{name}-am.patch
47 Patch6:         https://bugs.launchpad.net/poldek/+bug/1031767/+attachment/3252805/+files/%{name}-ls-space-lp1031767.patch
48 # Patch6-md5:   9ba0f7abdb2ba1051e1a396f9daec606
49 Patch7:         https://bugs.launchpad.net/pld-linux/+bug/1042200/+attachment/3285885/+files/poldek-rpm54.patch
50 # Patch7-md5:   128afb37934a3f12077fff12fddaa3ec
51 Patch8:         https://bugs.launchpad.net/pld-linux/+bug/1042200/+attachment/3298948/+files/poldek-pkg-recno-type.patch
52 # Patch8-md5:   bdc855d84167592a1adef576eba75de6
53 Patch9:         %{name}-Werror-format-security.patch
54 Patch10:        https://bugs.launchpad.net/pld-linux/+bug/1042200/+attachment/3307962/+files/poldek-leaking-locks.patch
55 # Patch10-md5:  bdc855d84167592a1adef576eba75de6
56 URL:            http://poldek.pld-linux.org/
57 BuildRequires:  autoconf
58 BuildRequires:  automake
59 BuildRequires:  bzip2-devel
60 BuildRequires:  check-devel
61 BuildRequires:  db-devel >= %{ver_db}-%{ver_db_rel}
62 BuildRequires:  docbook-dtd412-xml
63 BuildRequires:  gettext-devel
64 BuildRequires:  libtool
65 BuildRequires:  libxml2-devel
66 BuildRequires:  neon-devel
67 BuildRequires:  openssl-devel >= 0.9.7d
68 BuildRequires:  pcre-devel
69 BuildRequires:  pkgconfig
70 BuildRequires:  popt-devel
71 %{?with_python:BuildRequires:   python-devel}
72 BuildRequires:  readline-devel >= 5.0
73 BuildRequires:  rpm-devel >= %{ver_rpm}
74 %{?with_python:BuildRequires:   rpm-pythonprov}
75 BuildRequires:  swig-python
76 BuildRequires:  xmlto
77 BuildRequires:  zlib-devel
78 %if %{with static}
79 BuildRequires:  bzip2-static
80 BuildRequires:  db-static >= %{ver_db}-%{ver_db_rel}
81 BuildRequires:  glibc-static
82 BuildRequires:  libselinux-static
83 BuildRequires:  libxml2-static
84 BuildRequires:  ncurses-static
85 BuildRequires:  openssl-static
86 BuildRequires:  pcre-static
87 BuildRequires:  popt-static
88 BuildRequires:  readline-static
89 BuildRequires:  rpm-static
90 BuildRequires:  zlib-static
91 %endif
92 Requires(triggerpostun):        awk
93 Requires(triggerpostun):        sed >= 4.0
94 Requires:       %{name}-libs = %{version}-%{release}
95 Requires:       db >= %{ver_db}-%{ver_db_rel}
96 Requires:       rpm >= %{ver_rpm}
97 Requires:       rpm-db-ver = %{ver_db}
98 Requires:       rpm-lib = %(rpm -q --qf '%{V}' rpm-lib)
99 # vf* scripts use sed
100 Requires:       sed
101 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
102
103 %description
104 poldek is an RPM package management tool which allows you to easily
105 perform package verification, installation (including system
106 installation from scratch), upgrading, and removal.
107
108 Program can be used in batch (like apt-get from Debian's APT) or
109 interactive mode. The interactive mode puts you into a readline
110 interface with command line autocompletion and history, similar to the
111 shell mode of Perl's CPAN.
112
113 %{?with_static:This version is statically linked.}
114
115 %{!?with_imode:This version hasn't got interactive mode.}
116 #'vim
117
118 %description -l hu.UTF-8
119 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
120 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
121 nulláról), frissítést és eltávolítást.
122
123 A program használható parancssorból (mint a Debian apt-get programja)
124 vagy interaktív módban. Az interaktív mód egy readline környezetet
125 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
126 shell módjához.
127
128 %{?with_static:Ez a verzió statikusan linkelt.}
129
130 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
131
132 %description -l pl.UTF-8
133 poldek jest narzędziem linii poleceń służącym do weryfikacji,
134 instalacji (włączając instalację systemu od zera), aktualizacji i
135 usuwania pakietów.
136
137 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
138 interaktywnym. Tryb interaktywny posiada interfejs readline z
139 dopełnianiem komend i historią, podobny do trybu shell perlowego
140 modułu CPAN.
141
142 %{?with_static:Ta wersja jest konsolidowana statycznie.}
143
144 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
145
146 %package libs
147 Summary:        poldek libraries
148 Summary(hu.UTF-8):      A poldek könyvtárai
149 Summary(pl.UTF-8):      Biblioteki poldka
150 Group:          Libraries
151
152 %description libs
153 poldek libraries.
154
155 %description libs -l hu.UTF-8
156 A poldek könyvtárai.
157
158 %description libs -l pl.UTF-8
159 Biblioteki poldka.
160
161 %package devel
162 Summary:        Header files for poldek libraries
163 Summary(hu.UTF-8):      A poldek könyvtár fejlesztői fájljai
164 Summary(pl.UTF-8):      Pliki nagłówkowe bibliotek poldka
165 Group:          Development/Libraries
166 Requires:       %{name}-libs = %{version}-%{release}
167 Requires:       rpm-devel >= %{ver_rpm}
168
169 %description devel
170 Header files for poldek libraries.
171
172 %description devel -l hu.UTF-8
173 A poldek könyvtár fejlesztői fájljai.
174
175 %description devel -l pl.UTF-8
176 Pliki nagłówkowe bibliotek poldka.
177
178 %package static
179 Summary:        poldek static libraries
180 Summary(hu.UTF-8):      poldek statikus könyvtárak
181 Summary(pl.UTF-8):      Biblioteki statyczne poldka
182 Group:          Development/Libraries
183 Requires:       %{name}-devel = %{version}-%{release}
184
185 %description static
186 poldek static libraries.
187
188 %description static -l hu.UTF-8
189 poldek statikus könyvtárak.
190
191 %description static -l pl.UTF-8
192 Biblioteki statyczne poldka.
193
194 %package -n python-poldek
195 Summary:        Python modules for poldek
196 Summary(hu.UTF-8):      Python modulok poldek-hez
197 Summary(pl.UTF-8):      Moduły języka Python dla poldka
198 Group:          Libraries/Python
199 Requires:       %{name}-libs = %{version}-%{release}
200 %pyrequires_eq  python-libs
201
202 %description -n python-poldek
203 Python modules for poldek.
204
205 %description -n python-poldek -l hu.UTF-8
206 Python modulok poldek-hez.
207
208 %description -n python-poldek -l pl.UTF-8
209 Moduły języka Python dla poldka.
210
211 %prep
212 %setup -q
213 %patch0 -p1
214 %patch1 -p1
215 %patch2 -p1
216 %patch3 -p1
217 %patch4 -p1
218 %patch5 -p1
219 %patch6 -p1
220 %patch7 -p1
221 %patch8 -p1
222 %patch9 -p1
223 %patch10 -p1
224
225 %{__rm} m4/libtool.m4 m4/lt*.m4
226
227 # cleanup backups after patching
228 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
229 chmod u+x ./configure ./doc/conf-xml2.sh
230
231 %build
232 %{__libtoolize}
233 %{__aclocal} -I m4
234 %{__autoheader}
235 %{__autoconf}
236 %{__automake}
237 cd tndb
238 %{__libtoolize}
239 %{__aclocal}
240 %{__autoheader}
241 %{__autoconf}
242 %{__automake}
243 cd ../trurlib
244 %{__libtoolize}
245 %{__aclocal}
246 %{__autoheader}
247 %{__autoconf}
248 %{__automake}
249 cd ..
250
251 CPPFLAGS="%{rpmcppflags} -std=gnu99"
252 %configure \
253         %{?with_static:--enable-static --disable-shared} \
254         %{!?with_imode:--disable-imode} \
255         --enable-nls \
256         %{?with_python:--with-python}
257 %{__make} -j1
258 #       --enable-trace
259
260 %install
261 rm -rf $RPM_BUILD_ROOT
262 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/%{name}/repos.d,/var/cache/%{name}}
263
264 %{__make} install -j1 \
265         DESTDIR=$RPM_BUILD_ROOT
266
267 %if %{with python}
268 %{__make} -C python -j1 install \
269         DESTDIR=$RPM_BUILD_ROOT \
270         libdir=%{py_sitedir}
271 %endif
272
273 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
274
275 %ifarch i486 i686 ppc sparc alpha athlon
276         %define         _ftp_arch       %{_target_cpu}
277 %endif
278 %ifarch %{x8664}
279         %define         _ftp_arch       x86_64
280         %define         _ftp_alt_arch   i686
281 %endif
282 %ifarch i586
283         %define         _ftp_arch       i486
284 %endif
285 %ifarch pentium2 pentium3 pentium4
286         %define         _ftp_arch       i686
287 %endif
288 %ifarch sparcv9 sparc64
289         %define         _ftp_arch       sparc
290         %define         _ftp_arch       %{_target_cpu}
291         %ifarch sparc64
292                 %define         _ftp_alt_arch   sparcv9
293         %endif
294 %endif
295
296 %define pld_conf %{SOURCE1}
297 %define pld_debuginfo_conf %{SOURCE8}
298 %define pld_archive_conf %{SOURCE11}
299
300 %ifarch %{x8664}
301         %define pld_multilib_conf %{SOURCE2}
302 %endif
303
304 # aidath
305 %ifarch sparcv9 sparc64
306         %define pld_conf %{SOURCE9}
307         %undefine pld_archive_conf
308 %endif
309 %ifarch sparc64
310         %define pld_multilib_conf %{SOURCE10}
311 %endif
312
313 %{__sed} -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
314
315 %if 0%{?pld_multilib_conf:1}
316         %{__sed} 's|%%ARCH%%|%{_ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
317 %endif
318
319 %if 0%{?pld_debuginfo_conf:1}
320 %{__sed} -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
321 %endif
322
323 %if 0%{?pld_archive_conf:1}
324 %{__sed} -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
325 %endif
326
327 # Always install snapshot configs
328 %{__sed} -e 's|%%ARCH%%|%{_ftp_arch}|g' \
329         -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE100} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
330 %{__sed} -e 's|%%ARCH%%|%{_ftp_arch}|g' \
331         -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE102} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-debuginfo.conf
332 %ifarch %{x8664}
333         %{__sed} -e 's|%%ARCH%%|%{_ftp_alt_arch}|g' \
334                 -e 's|%%SNAP%%|%{SNAP}|g' < %{SOURCE101} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}-multilib.conf
335 %endif
336
337 %if %{with snap}
338 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
339 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
340 %else
341 %{__sed} -i -e 's|@@SNAP@@||g' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-%{SNAP}.conf
342 %{__sed} -i '/@@SNAP@@.*/d' $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
343 %endif
344
345 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
346
347 %if %{with imode}
348 # add desktop file and icon
349 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
350 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
351 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
352 %endif
353
354 # sources we don't package
355 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
356 # include them in %doc
357 %{__rm} -rf configs
358 cp -a conf configs
359 %{__rm} -f configs/Makefile*
360
361 %if %{with python}
362 %py_postclean
363 %{__rm} $RPM_BUILD_ROOT%{py_sitedir}/_poldekmod.la
364 %endif
365
366 %find_lang %{name}
367
368 %clean
369 rm -rf $RPM_BUILD_ROOT
370
371 %post
372 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
373 if [ "$1" = "1" ]; then
374         # remove ignore = vserver-packages inside vserver on first install
375         {
376                 while read f ctx; do
377                         [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
378                 done </proc/self/status
379         } 2>/dev/null
380         if [ -z "$ctx" -o "$ctx" = "0" ]; then
381                 VSERVER=no
382         else
383                 VSERVER=yes
384         fi
385         if [ "$VSERVER" = "yes" ]; then
386                 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
387         fi
388 fi
389
390 %postun -p      /sbin/postshell
391 -/usr/sbin/fix-info-dir -c %{_infodir}
392
393 %post   libs -p /sbin/ldconfig
394 %postun libs -p /sbin/ldconfig
395
396 %triggerpostun -- poldek < 0.19.0-1.20050613.22.0
397 if [ -f /etc/poldek.conf.rpmsave ]; then
398         awk '/^source/ {
399         name = $3;
400         path = $4;
401         auto = "yes";
402         autoup = "yes";
403         type = "pdir";
404         pri = "";
405
406         if (sub(",noauto", "", name)) {
407                 auto = "no";
408         }
409
410         # process pri=\d+
411         if (match(name, /,pri=[0-9]+/)) {
412                 pri = substr(name, RSTART + 5, RLENGTH - 5);
413                 name = substr(name, 1, RSTART - 1) substr(name, RSTART + RLENGTH);
414         }
415
416         # skip ac sources. already in new config.
417         if (name !~ /^ac(-(ready|test|supported|updates-(general|security)))?$/) {
418                 print "";
419                 print "[source]";
420                 print "name = " name;
421                 print "type = " type;
422                 print "path = " path;
423                 print "auto = " auto;
424                 print "autoup = " autoup;
425                 if (pri) {
426                         print "pri = " pri;
427                 }
428         }
429
430         }' < /etc/poldek.conf.rpmsave >> /etc/poldek/source.conf
431         echo "Converted old custom sources from /etc/poldek.conf.rpmsave to new poldek format in /etc/poldek/source.conf"
432
433         # copy hold=
434         hold=$(grep ^hold /etc/poldek.conf.rpmsave)
435         if [ "$hold" ]; then
436                 %{__sed} -i -e "/^#hold =/s/^.*/$hold/" /etc/poldek/poldek.conf
437         fi
438 fi
439
440 %triggerpostun -- poldek < 0.30-0.20080225.00.1
441 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
442         %{__sed} -i -e '/^%%include source.conf/{
443                 a
444                 a# /etc/poldek/repos.d/*.conf
445                 a%%includedir repos.d
446         }' %{_sysconfdir}/%{name}/poldek.conf
447 fi
448
449 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
450 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
451
452 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
453         cp -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
454         cp -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
455 fi
456
457 %ifarch %{x8664}
458 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
459         cp -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
460         cp -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
461 fi
462 %endif
463
464 %files -f %{name}.lang
465 %defattr(644,root,root,755)
466 %doc ChangeLog README* NEWS TODO configs
467 %dir %{_sysconfdir}/%{name}
468 %dir %{_sysconfdir}/%{name}/repos.d
469 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
470 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
471 %attr(755,root,root) %{_bindir}/ipoldek
472 %attr(755,root,root) %{_bindir}/poldek
473 %attr(755,root,root) %{_bindir}/rpmvercmp
474 %dir %{_libdir}/%{name}
475 %attr(755,root,root) %{_libdir}/%{name}/*
476 %{_mandir}/man1/%{name}*.1*
477 %lang(pl) %{_mandir}/pl/man1/%{name}*
478 %{_infodir}/poldek.info*
479 %if %{with imode}
480 %{_desktopdir}/%{name}.desktop
481 %{_pixmapsdir}/%{name}.png
482 %endif
483 %dir /var/cache/%{name}
484
485 %if %{without static}
486 %files libs
487 %defattr(644,root,root,755)
488 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
489 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
490 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
491 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
492 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
493 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.0
494 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.2
495 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
496 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
497 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
498 %endif
499
500 %files devel
501 %defattr(644,root,root,755)
502 %if %{without static}
503 %attr(755,root,root) %{_libdir}/libpoclidek.so
504 %attr(755,root,root) %{_libdir}/libpoldek.so
505 %attr(755,root,root) %{_libdir}/libtndb.so
506 %attr(755,root,root) %{_libdir}/libtrurl.so
507 %attr(755,root,root) %{_libdir}/libvfile.so
508 %endif
509 %{_libdir}/libpoclidek.la
510 %{_libdir}/libpoldek.la
511 %{_libdir}/libtndb.la
512 %{_libdir}/libtrurl.la
513 %{_libdir}/libvfile.la
514 %{_includedir}/poldek
515 %{_includedir}/tndb
516 %{_includedir}/trurl
517 %{_includedir}/vfile
518 %{_pkgconfigdir}/tndb.pc
519
520 %files static
521 %defattr(644,root,root,755)
522 %{_libdir}/libtndb.a
523 %{_libdir}/libtrurl.a
524
525 %if %{with python}
526 %files -n python-poldek
527 %defattr(644,root,root,755)
528 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
529 %{py_sitescriptdir}/poldek.py[co]
530 %{py_sitescriptdir}/poldekmod.py[co]
531 %endif
This page took 0.079444 seconds and 4 git commands to generate.