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