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