]> TLD Linux GIT Repositories - packages/poldek.git/blob - poldek.spec
c7950078324c7545dea45c5b3ab5744523586ee4
[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     3
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 pld_conf %{SOURCE1}
254 %ifarch %{x8664}
255         %define pld_multilib_conf %{SOURCE2}
256 %endif
257
258 sed -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld.conf
259
260 %if 0%{?pld_multilib_conf:1}
261         sed 's|%%ARCH%%|%{_ftp_alt_arch}|g' < %{pld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
262 %endif
263
264 %if 0%{?pld_debuginfo_conf:1}
265 sed -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-debuginfo.conf
266 %endif
267
268 %if 0%{?pld_archive_conf:1}
269 sed -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{pld_archive_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/pld-archive.conf
270 %endif
271
272 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
273
274 %if %{with imode}
275 # add desktop file and icon
276 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
277 cp -a %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
278 cp -a %{SOURCE5} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
279 %endif
280
281 # sources we don't package
282 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,pld,fedora,centos}-source.conf
283 # include them in %doc
284 rm -rf configs
285 cp -a conf configs
286 rm -f configs/Makefile*
287
288 %if %{with python}
289 %py_postclean
290 rm -f $RPM_BUILD_ROOT%{py_sitedir}/_poldekmod.la
291 %endif
292
293 %find_lang %{name}
294
295 %clean
296 rm -rf $RPM_BUILD_ROOT
297
298 %post
299 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
300 if [ "$1" = "1" ]; then
301         # remove ignore = vserver-packages inside vserver on first install
302         {
303                 while read f ctx; do
304                         [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
305                 done </proc/self/status
306         } 2>/dev/null
307         if [ -z "$ctx" -o "$ctx" = "0" ]; then
308                 VSERVER=no
309         else
310                 VSERVER=yes
311         fi
312         if [ "$VSERVER" = "yes" ]; then
313                 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
314         fi
315 fi
316
317 %postun -p      /sbin/postshell
318 -/usr/sbin/fix-info-dir -c %{_infodir}
319
320 %post   libs -p /sbin/ldconfig
321 %postun libs -p /sbin/ldconfig
322
323 %triggerpostun -- poldek < 0.19.0-1.20050613.22.0
324 if [ -f /etc/poldek.conf.rpmsave ]; then
325         awk '/^source/ {
326         name = $3;
327         path = $4;
328         auto = "yes";
329         autoup = "yes";
330         type = "pdir";
331         pri = "";
332
333         if (sub(",noauto", "", name)) {
334                 auto = "no";
335         }
336
337         # process pri=\d+
338         if (match(name, /,pri=[0-9]+/)) {
339                 pri = substr(name, RSTART + 5, RLENGTH - 5);
340                 name = substr(name, 1, RSTART - 1) substr(name, RSTART + RLENGTH);
341         }
342
343         # skip ac sources. already in new config.
344         if (name !~ /^ac(-(ready|test|supported|updates-(general|security)))?$/) {
345                 print "";
346                 print "[source]";
347                 print "name = " name;
348                 print "type = " type;
349                 print "path = " path;
350                 print "auto = " auto;
351                 print "autoup = " autoup;
352                 if (pri) {
353                         print "pri = " pri;
354                 }
355         }
356
357         }' < /etc/poldek.conf.rpmsave >> /etc/poldek/source.conf
358         echo "Converted old custom sources from /etc/poldek.conf.rpmsave to new poldek format in /etc/poldek/source.conf"
359
360         # copy hold=
361         hold=$(grep ^hold /etc/poldek.conf.rpmsave)
362         if [ "$hold" ]; then
363                 sed -i -e "/^#hold =/s/^.*/$hold/" /etc/poldek/poldek.conf
364         fi
365 fi
366
367 %triggerpostun -- poldek < 0.30-0.20080225.00.1
368 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
369         %{__sed} -i -e '/^%%include source.conf/{
370                 a
371                 a# /etc/poldek/repos.d/*.conf
372                 a%%includedir repos.d
373         }' %{_sysconfdir}/%{name}/poldek.conf
374 fi
375
376 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
377 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
378
379 if [ -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave ]; then
380         cp -f %{_sysconfdir}/%{name}/repos.d/pld.conf{,.rpmnew}
381         cp -f %{_sysconfdir}/%{name}/pld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld.conf
382 fi
383
384 %ifarch %{x8664}
385 if [ -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave ]; then
386         cp -f %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf{,.rpmnew}
387         cp -f %{_sysconfdir}/%{name}/pld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/pld-multilib.conf
388 fi
389 %endif
390
391 %files -f %{name}.lang
392 %defattr(644,root,root,755)
393 %doc ChangeLog README* NEWS TODO configs
394 %dir %{_sysconfdir}/%{name}
395 %dir %{_sysconfdir}/%{name}/repos.d
396 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf
397 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf
398 %attr(755,root,root) %{_bindir}/*
399 %dir %{_libdir}/%{name}
400 %attr(755,root,root) %{_libdir}/%{name}/*
401 %{_mandir}/man1/%{name}*
402 %lang(pl) %{_mandir}/pl/man1/%{name}*
403 %{_infodir}/poldek.info*
404 %if %{with imode}
405 %{_desktopdir}/%{name}.desktop
406 %{_pixmapsdir}/%{name}.png
407 %endif
408
409 %if %{without static}
410 %files libs
411 %defattr(644,root,root,755)
412 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
413 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
414 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
415 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
416 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
417 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.0
418 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.2
419 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
420 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
421 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
422 %endif
423
424 %files devel
425 %defattr(644,root,root,755)
426 %{!?with_static:%attr(755,root,root) %{_libdir}/lib*.so}
427 %{_libdir}/lib*.la
428 %{_includedir}/*
429
430 %files static
431 %defattr(644,root,root,755)
432 %{_libdir}/lib*.a
433
434 %if %{with python}
435 %files -n python-poldek
436 %defattr(644,root,root,755)
437 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
438 %{py_sitescriptdir}/poldek.py[co]
439 %{py_sitescriptdir}/poldekmod.py[co]
440 %endif