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