]> git.pld-linux.org Git - packages/poldek.git/blob - poldek.spec
- added -Os-fail-workaround patch
[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    rc2
20 %define         rel     1
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:  98806c2c6c8b5b840e7cfde6164fdeb4
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 Source11:       %{name}-archive.conf
43 Patch0:         %{name}-vserver-packages.patch
44 Patch1:         %{name}-config.patch
45 Patch2:         %{name}-size-type.patch
46 Patch3:         ac-prog-libtool.patch
47 Patch4:         %{name}-Os-fail-workaround.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
207 rm -f m4/libtool.m4 m4/lt*.m4
208
209 # cleanup backups after patching
210 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
211
212 %build
213 %{__libtoolize}
214 %{__aclocal} -I m4
215 %{__autoheader}
216 %{__autoconf}
217 %{__automake}
218 cp -f config.sub trurlib
219
220 CPPFLAGS="-std=gnu99"
221 %configure \
222         %{?with_static:--enable-static --disable-shared} \
223         %{!?with_imode:--disable-imode} \
224         --enable-nls \
225         %{?with_python:--with-python}
226 %{__make}
227 #       --enable-trace
228
229 %install
230 rm -rf $RPM_BUILD_ROOT
231 install -d $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d
232
233 %{__make} install \
234         DESTDIR=$RPM_BUILD_ROOT
235
236 %if %{with python}
237 %{__make} -C python install \
238         DESTDIR=$RPM_BUILD_ROOT \
239         libdir=%{py_sitedir}
240 %endif
241
242 %{?with_static:rm -f $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
243
244 %ifarch i486 i686 ppc sparc alpha athlon
245         %define         _ftp_arch       %{_target_cpu}
246 %endif
247 %ifarch %{x8664}
248         %define         _ftp_arch       x86_64
249         %define         _ftp_alt_arch   i686
250 %endif
251 %ifarch i586
252         %if "%{pld_release}" == "ti"
253                 %define         _ftp_arch       i586
254         %else
255                 %define         _ftp_arch       i486
256         %endif
257 %endif
258 %ifarch pentium2 pentium3 pentium4
259         %define         _ftp_arch       i686
260 %endif
261 %ifarch sparcv9 sparc64
262         %define         _ftp_arch       sparc
263         %if "%{pld_release}" == "th"
264                 %define         _ftp_arch       %{_target_cpu}
265                 %ifarch sparc64
266                 %define         _ftp_alt_arch   sparcv9
267                 %endif
268         %endif
269 %endif
270
271 %if "%{pld_release}" == "ti"
272         %define pld_conf %{SOURCE3}
273         %ifarch %{x8664}
274                 %define pld_multilib_conf %{SOURCE4}
275         %endif
276 %endif
277
278 %if "%{pld_release}" == "th"
279         %define pld_conf %{SOURCE1}
280         %define pld_debuginfo_conf %{SOURCE8}
281         %define pld_archive_conf %{SOURCE11}
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                 %undefine pld_archive_conf
291         %endif
292         %ifarch sparc64
293                 %define pld_multilib_conf %{SOURCE10}
294         %endif
295 %endif
296
297 sed -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
298
299 %if 0%{?pld_multilib_conf:1}
300         sed 's|%%ARCH%%|%{_ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
301 %endif
302
303 %if 0%{?pld_debuginfo_conf:1}
304 sed -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
305 %endif
306
307 %if 0%{?pld_archive_conf:1}
308 sed -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
309 %endif
310
311 cp -a %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
312
313 %if %{with imode}
314 # add desktop file and icon
315 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
316 cp -a %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
317 cp -a %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
318 %endif
319
320 # sources we don't package
321 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,pld,fedora,centos}-source.conf
322 # include them in %doc
323 rm -rf configs
324 cp -a conf configs
325 rm -f configs/Makefile*
326
327 %if %{with python}
328 %py_postclean
329 rm -f $RPM_BUILD_ROOT%{py_sitedir}/_poldekmod.la
330 %endif
331
332 %find_lang %{name}
333
334 %clean
335 rm -rf $RPM_BUILD_ROOT
336
337 %post
338 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
339 if [ "$1" = "1" ]; then
340         # remove ignore = vserver-packages inside vserver on first install
341         {
342                 while read f ctx; do
343                         [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
344                 done </proc/self/status
345         } 2>/dev/null
346         if [ -z "$ctx" -o "$ctx" = "0" ]; then
347                 VSERVER=no
348         else
349                 VSERVER=yes
350         fi
351         if [ "$VSERVER" = "yes" ]; then
352                 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
353         fi
354 fi
355
356 %postun -p      /sbin/postshell
357 -/usr/sbin/fix-info-dir -c %{_infodir}
358
359 %post   libs -p /sbin/ldconfig
360 %postun libs -p /sbin/ldconfig
361
362 %triggerpostun -- poldek < 0.19.0-1.20050613.22.0
363 if [ -f /etc/poldek.conf.rpmsave ]; then
364         awk '/^source/ {
365         name = $3;
366         path = $4;
367         auto = "yes";
368         autoup = "yes";
369         type = "pdir";
370         pri = "";
371
372         if (sub(",noauto", "", name)) {
373                 auto = "no";
374         }
375
376         # process pri=\d+
377         if (match(name, /,pri=[0-9]+/)) {
378                 pri = substr(name, RSTART + 5, RLENGTH - 5);
379                 name = substr(name, 1, RSTART - 1) substr(name, RSTART + RLENGTH);
380         }
381
382         # skip ac sources. already in new config.
383         if (name !~ /^ac(-(ready|test|supported|updates-(general|security)))?$/) {
384                 print "";
385                 print "[source]";
386                 print "name = " name;
387                 print "type = " type;
388                 print "path = " path;
389                 print "auto = " auto;
390                 print "autoup = " autoup;
391                 if (pri) {
392                         print "pri = " pri;
393                 }
394         }
395
396         }' < /etc/poldek.conf.rpmsave >> /etc/poldek/source.conf
397         echo "Converted old custom sources from /etc/poldek.conf.rpmsave to new poldek format in /etc/poldek/source.conf"
398
399         # copy hold=
400         hold=$(grep ^hold /etc/poldek.conf.rpmsave)
401         if [ "$hold" ]; then
402                 sed -i -e "/^#hold =/s/^.*/$hold/" /etc/poldek/poldek.conf
403         fi
404 fi
405
406 %triggerpostun -- poldek < 0.30-0.20080225.00.1
407 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
408         %{__sed} -i -e '/^%%include source.conf/{
409                 a
410                 a# /etc/poldek/repos.d/*.conf
411                 a%%includedir repos.d
412         }' %{_sysconfdir}/%{name}/poldek.conf
413 fi
414
415 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
416 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
417
418 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
419         cp -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
420         cp -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
421 fi
422
423 %ifarch %{x8664}
424 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
425         cp -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
426         cp -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
427 fi
428 %endif
429
430 %files -f %{name}.lang
431 %defattr(644,root,root,755)
432 %doc ChangeLog README* NEWS TODO configs
433 %dir %{_sysconfdir}/%{name}
434 %dir %{_sysconfdir}/%{name}/repos.d
435 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
436 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
437 %attr(755,root,root) %{_bindir}/*
438 %dir %{_libdir}/%{name}
439 %attr(755,root,root) %{_libdir}/%{name}/*
440 %{_mandir}/man1/%{name}*
441 %lang(pl) %{_mandir}/pl/man1/%{name}*
442 %{_infodir}/poldek.info*
443 %if %{with imode}
444 %{_desktopdir}/%{name}.desktop
445 %{_pixmapsdir}/%{name}.png
446 %endif
447
448 %if %{without static}
449 %files libs
450 %defattr(644,root,root,755)
451 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
452 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
453 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
454 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
455 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
456 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.0
457 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.2
458 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
459 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
460 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
461 %endif
462
463 %files devel
464 %defattr(644,root,root,755)
465 %{!?with_static:%attr(755,root,root) %{_libdir}/lib*.so}
466 %{_libdir}/lib*.la
467 %{_includedir}/*
468
469 %files static
470 %defattr(644,root,root,755)
471 %{_libdir}/lib*.a
472
473 %if %{with python}
474 %files -n python-poldek
475 %defattr(644,root,root,755)
476 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
477 %{py_sitescriptdir}/poldek.py[co]
478 %{py_sitescriptdir}/poldekmod.py[co]
479 %endif
This page took 0.083657 seconds and 4 git commands to generate.