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