]> TLD Linux GIT Repositories - packages/poldek.git/blob - poldek.spec
- https-redirect.patch from PLD
[packages/poldek.git] / poldek.spec
1 # TODO
2 # - fix config having escaped html entities:
3 #   # package A requires capability foo >= 1.0 while package B provides "foo"
4
5 # Conditional build:
6 %bcond_with     static  # don't use shared libraries
7 %bcond_without  imode   # don't build interactive mode
8 %bcond_with     python  # don't build python bindings
9 %bcond_with     tests   # tests
10
11 # required versions (forced to avoid SEGV with mixed db used by rpm and poldek)
12 %define         ver_rpm         1:4.14
13
14 Summary:        RPM packages management helper tool
15 Summary(hu.UTF-8):      RPM csomagkezelést segítő eszköz
16 Summary(pl.UTF-8):      Pomocnicze narzędzie do zarządzania pakietami RPM
17 Name:           poldek
18 Version:        0.42.2
19 Release:        17
20 License:        GPL v2
21 Group:          Applications/System
22 #Source0:       http://poldek.pld-linux.org/download/snapshots/%{name}-%{version}-cvs%{snap}.tar.bz2
23 Source0:        https://github.com/poldek-pm/poldek/releases/download/v%{version}/%{name}-%{version}.tar.xz
24 # Source0-md5:  2759fe45bc50efb6084d5338d725411a
25 Source1:        tld.conf
26 Source2:        tld-multilib.conf
27 Source3:        tld-debuginfo.conf
28 Source4:        %{name}-config.sh
29 Source5:        %{name}-aliases.conf
30 Source6:        %{name}.desktop
31 Source7:        %{name}.png
32 # Source7-md5:  ee487abede50874e9eceb6495d5ee150
33 Patch0:         %{name}-config.patch
34 Patch1:         pm-hooks.patch
35 Patch2:         %{name}-ext-down-enable.patch
36 Patch3:         %{name}-pc.patch
37 Patch4:         %{name}-info.patch
38 Patch5:         %{name}-multiarch-x32.patch
39 Patch6:         rpm-4.15.patch
40 Patch7:         db-index-format.patch
41 Patch8:         rpm4-uname-deps.patch
42 Patch9:         sqlite-rpmdb.patch
43 Patch10:        rpm4-cpuinfo-deps.patch
44 Patch11:        rpm4-no-dir-deps.patch
45 Patch12:        rpm4-rpmvercmp.patch
46 Patch13:        trurlib-shared.patch
47 Patch14:        rpm4-script-req-workaround.patch
48 Patch15:        skip-buildid-obsoletes.patch
49 Patch16:        verify-signature.patch
50 Patch17:        %{name}-rsa_sig_rpmorg.patch
51 Patch18:        no-bdb-for-rpm-org.patch
52 Patch19:        more-trace.patch
53 Patch20:        boolean-deps.patch
54 Patch21:        sorted-ls-upgradable.patch
55 Patch22:        egrep-is-obsolete.patch
56 Patch23:        minus.patch
57 URL:            http://poldek.pld-linux.org/
58 BuildRequires:  autoconf >= 2.63
59 BuildRequires:  automake >= 1:1.11
60 BuildRequires:  bzip2-devel
61 BuildRequires:  check-devel
62 BuildRequires:  docbook-dtd412-xml
63 BuildRequires:  docbook2X
64 BuildRequires:  gettext-tools >= 0.11.5
65 BuildRequires:  libgomp-devel
66 BuildRequires:  libtool
67 BuildRequires:  libxml2-devel >= 2
68 BuildRequires:  lua54-devel
69 BuildRequires:  ncurses-devel
70 BuildRequires:  openssl-devel >= 0.9.7d
71 BuildRequires:  pcre-devel
72 BuildRequires:  perl-XML-Simple
73 BuildRequires:  perl-base
74 BuildRequires:  perl-modules
75 BuildRequires:  pkgconfig
76 BuildRequires:  popt-devel
77 %{?with_python:BuildRequires:   python-devel}
78 BuildRequires:  readline-devel >= 5.0
79 BuildRequires:  rpm-devel >= %{ver_rpm}
80 %{?with_python:BuildRequires:   rpm-pythonprov}
81 BuildRequires:  tar >= 1:1.22
82 BuildRequires:  texinfo
83 BuildRequires:  xmlto
84 BuildRequires:  xz
85 BuildRequires:  zlib-devel
86 BuildRequires:  zstd-devel
87 %if %{with static}
88 BuildRequires:  bzip2-static
89 BuildRequires:  glibc-static
90 BuildRequires:  libxml2-static
91 BuildRequires:  ncurses-static
92 BuildRequires:  openssl-static
93 BuildRequires:  pcre-static
94 BuildRequires:  popt-static
95 BuildRequires:  readline-static
96 BuildRequires:  rpm-static
97 BuildRequires:  zlib-static
98 BuildRequires:  zstd-static
99 %endif
100 Requires(postun):       awk
101 Requires(postun):       sed >= 4.0
102 Requires:       %{name}-libs = %{version}-%{release}
103 Requires:       /bin/run-parts
104 Requires:       rpm >= %{ver_rpm}
105 Requires:       rpm-lib >= %{ver_rpm}
106 Requires:       sed
107 Conflicts:      etckeeper < 1.18-2
108 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
109
110 # it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations)
111 %define         pkglibexecdir   %{_prefix}/lib/%{name}
112
113 %description
114 poldek is an RPM package management tool which allows you to easily
115 perform package verification, installation (including system
116 installation from scratch), upgrading, and removal.
117
118 Program can be used in batch (like apt-get from Debian's APT) or
119 interactive mode. The interactive mode puts you into a readline
120 interface with command line autocompletion and history, similar to the
121 shell mode of Perl's CPAN.
122
123 %{?with_static:This version is statically linked.}
124
125 %{!?with_imode:This version hasn't got interactive mode.}
126 #'vim
127
128 %description -l hu.UTF-8
129 poldek egy RPM csomagkezelő eszköz, amely megkönnyíti a
130 csomagellenőrzést, telepítést (beleértve a rendszertelepítést a
131 nulláról), frissítést és eltávolítást.
132
133 A program használható parancssorból (mint a Debian apt-get programja)
134 vagy interaktív módban. Az interaktív mód egy readline környezetet
135 jelent, parancskiegészítéssel és előzményekkel, hasonlóan a Perl CPAN
136 shell módjához.
137
138 %{?with_static:Ez a verzió statikusan linkelt.}
139
140 %{!?with_imode:Ennek a verziónak nincs interaktív módja.}
141
142 %description -l pl.UTF-8
143 poldek jest narzędziem linii poleceń służącym do weryfikacji,
144 instalacji (włączając instalację systemu od zera), aktualizacji i
145 usuwania pakietów.
146
147 Program może być używany w trybie wsadowym (jak debianowy apt-get) lub
148 interaktywnym. Tryb interaktywny posiada interfejs readline z
149 dopełnianiem komend i historią, podobny do trybu shell perlowego
150 modułu CPAN.
151
152 %{?with_static:Ta wersja jest konsolidowana statycznie.}
153
154 %{!?with_imode:Ta wersja nie posiada trybu interaktywnego.}
155
156 %package libs
157 Summary:        poldek libraries
158 Summary(hu.UTF-8):      A poldek könyvtárai
159 Summary(pl.UTF-8):      Biblioteki poldka
160 Group:          Libraries
161
162 %description libs
163 poldek libraries.
164
165 %description libs -l hu.UTF-8
166 A poldek könyvtárai.
167
168 %description libs -l pl.UTF-8
169 Biblioteki poldka.
170
171 %package devel
172 Summary:        Header files for poldek libraries
173 Summary(hu.UTF-8):      A poldek könyvtár fejlesztői fájljai
174 Summary(pl.UTF-8):      Pliki nagłówkowe bibliotek poldka
175 Group:          Development/Libraries
176 Requires:       %{name}-libs = %{version}-%{release}
177 Requires:       rpm-devel >= %{ver_rpm}
178
179 %description devel
180 Header files for poldek libraries.
181
182 %description devel -l hu.UTF-8
183 A poldek könyvtár fejlesztői fájljai.
184
185 %description devel -l pl.UTF-8
186 Pliki nagłówkowe bibliotek poldka.
187
188 %package static
189 Summary:        poldek static libraries
190 Summary(hu.UTF-8):      poldek statikus könyvtárak
191 Summary(pl.UTF-8):      Biblioteki statyczne poldka
192 Group:          Development/Libraries
193 Requires:       %{name}-devel = %{version}-%{release}
194
195 %description static
196 poldek static libraries.
197
198 %description static -l hu.UTF-8
199 poldek statikus könyvtárak.
200
201 %description static -l pl.UTF-8
202 Biblioteki statyczne poldka.
203
204 %package -n python-poldek
205 Summary:        Python modules for poldek
206 Summary(hu.UTF-8):      Python modulok poldek-hez
207 Summary(pl.UTF-8):      Moduły języka Python dla poldka
208 Group:          Libraries/Python
209 Requires:       %{name}-libs = %{version}-%{release}
210 Requires:       python-libs
211
212 %description -n python-poldek
213 Python modules for poldek.
214
215 %description -n python-poldek -l hu.UTF-8
216 Python modulok poldek-hez.
217
218 %description -n python-poldek -l pl.UTF-8
219 Moduły języka Python dla poldka.
220
221 %prep
222 %setup -q
223 %patch0 -p1
224 %patch1 -p1
225 %patch2 -p1
226 %patch3 -p1
227 %patch4 -p1
228 %patch5 -p1
229 %patch6 -p1
230 %patch7 -p1
231 %patch8 -p1
232 %patch9 -p1
233 %patch10 -p1
234 %patch11 -p1
235 %patch12 -p1
236 cd trurlib
237 %patch13 -p1
238 cd ..
239 %patch14 -p1
240 %patch15 -p1
241 %patch16 -p1
242 %patch17 -p1
243 %patch18 -p1
244 %patch19 -p1
245 %patch20 -p1
246 %patch21 -p1
247 %patch22 -p1
248 %patch23 -p1
249
250 %{__rm} doc/poldek.info
251 %{__rm} m4/libtool.m4 m4/lt*.m4
252
253 # cleanup backups after patching
254 find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
255 chmod u+x ./configure ./doc/conf-xml2.sh
256
257 %build
258 %{__gettextize}
259 %{__libtoolize}
260 %{__aclocal} -I m4
261 %{__autoheader}
262 %{__autoconf}
263 %{__automake}
264 cd tndb
265 %{__libtoolize}
266 %{__aclocal}
267 %{__autoheader}
268 %{__autoconf}
269 %{__automake}
270 cd ../trurlib
271 %{__libtoolize}
272 %{__aclocal}
273 %{__autoheader}
274 %{__autoconf}
275 %{__automake}
276 cd ..
277
278 %configure \
279         %{?with_static:--enable-static --disable-shared} \
280         %{!?with_imode:--disable-imode} \
281         --with-pkglibdir=%{pkglibexecdir} \
282         --enable-nls \
283         %{?with_python:--with-python}
284 %{__make}
285
286 %{__make} -C doc poldek.info
287
288 %if %{with python}
289 %{__make} -C python
290 %endif
291
292 %if %{with tests}
293 %{__make} check
294 %endif
295
296 %install
297 rm -rf $RPM_BUILD_ROOT
298 install -d $RPM_BUILD_ROOT/var/cache/%{name}
299
300 %{__make} install \
301         DESTDIR=$RPM_BUILD_ROOT
302
303 install -p %{SOURCE4} $RPM_BUILD_ROOT%{_bindir}/poldek-config
304
305 %if %{with python}
306 %{__make} -C python install \
307         DESTDIR=$RPM_BUILD_ROOT \
308         py_sitedir=%{py_sitedir}
309 %endif
310
311 %{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp}
312
313 %ifarch i686 aarch64 %{arm}
314         %define         ftp_arch        %{_target_cpu}
315 %endif
316 %ifarch %{x8664}
317         %define         ftp_arch        x86_64
318         %define         ftp_alt_arch    i686
319 %endif
320
321 %define tld_conf %{SOURCE1}
322
323 %ifarch %{x8664}
324         %define         tld_multilib_conf       %{SOURCE2}
325 %endif
326
327 %define tld_debuginfo_conf %{SOURCE3}
328
329 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{tld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/tld.conf
330
331 %if 0%{?tld_multilib_conf:1}
332         %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{tld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/tld-multilib.conf
333 %endif
334
335 %{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{tld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/tld-debuginfo.conf
336
337 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf
338
339 %if %{with imode}
340 # add desktop file and icon
341 install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
342 cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
343 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
344 %endif
345
346 # sources we don't package
347 %{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf
348 # include them in %doc
349 %{__rm} -rf configs
350 cp -a conf configs
351 %{__rm} -f configs/Makefile*
352
353 %if %{with python}
354 %py_postclean
355 %{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so}
356 %endif
357
358
359 %find_lang %{name}
360
361 %clean
362 rm -rf $RPM_BUILD_ROOT
363
364 %post
365 [ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
366 if [ "$1" = "1" ]; then
367         # remove ignore = vserver-packages inside vserver on first install
368         {
369                 while read f ctx; do
370                         [ "$f" = "VxID:" -o "$f" = "s_context:" ] && break
371                 done </proc/self/status
372         } 2>/dev/null
373         if [ -z "$ctx" -o "$ctx" = "0" ]; then
374                 VSERVER=no
375         else
376                 VSERVER=yes
377         fi
378         if [ "$VSERVER" = "yes" ]; then
379                 %{__sed} -i -e '/^ignore/s/vserver-packages//' %{_sysconfdir}/%{name}/poldek.conf
380         fi
381 fi
382
383 %postun -p      /sbin/postshell
384 -/usr/sbin/fix-info-dir -c %{_infodir}
385
386 %post   libs -p /sbin/ldconfig
387 %postun libs -p /sbin/ldconfig
388
389 %triggerpostun -- poldek < 0.30-0.20080225.00.1
390 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then
391         %{__sed} -i -e '/^%%include source.conf/{
392                 a
393                 a# /etc/poldek/repos.d/*.conf
394                 a%%includedir repos.d
395         }' %{_sysconfdir}/%{name}/poldek.conf
396 fi
397
398 %{__sed} -i -e '/%%include %%{_distro}-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
399 %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf
400
401 if [ -f %{_sysconfdir}/%{name}/tld-source.conf.rpmsave ]; then
402         %{__mv} -f %{_sysconfdir}/%{name}/repos.d/tld.conf{,.rpmnew}
403         %{__mv} -v %{_sysconfdir}/%{name}/tld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/tld.conf
404 fi
405
406 %ifarch %{x8664}
407 if [ -f %{_sysconfdir}/%{name}/tld-multilib-source.conf.rpmsave ]; then
408         %{__mv} -f %{_sysconfdir}/%{name}/repos.d/tld-multilib.conf{,.rpmnew}
409         %{__mv} -v %{_sysconfdir}/%{name}/tld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/tld-multilib.conf
410 fi
411 %endif
412
413 %triggerpostun -- %{name} < 0.30.1-8
414 if [ $1 -le 1 ]; then
415         # revert change on  --downgrade
416         %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf
417 else
418         # setup pm command
419         %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf
420 fi
421
422 %files -f %{name}.lang
423 %defattr(644,root,root,755)
424 %doc ChangeLog README* NEWS configs
425 %dir %{_sysconfdir}/%{name}
426 %dir %{_sysconfdir}/%{name}/pre-install.d
427 %{_sysconfdir}/%{name}/pre-install.d/README
428 %dir %{_sysconfdir}/%{name}/post-install.d
429 %{_sysconfdir}/%{name}/post-install.d/README
430 %dir %{_sysconfdir}/%{name}/repos.d
431 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/cli.conf
432 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/fetch.conf
433 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/poldek.conf
434 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/source.conf
435 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/tld.conf
436 %if 0%{?tld_multilib_conf:1}
437 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/tld-multilib.conf
438 %endif
439 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/tld-debuginfo.conf
440 %attr(755,root,root) %{_bindir}/ipoldek
441 %attr(755,root,root) %{_bindir}/poldek
442 %attr(755,root,root) %{_bindir}/poldek-config
443 %attr(755,root,root) %{_bindir}/rpmvercmp
444 %dir %{pkglibexecdir}
445 %attr(755,root,root) %{pkglibexecdir}/pm-command.sh
446 %attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh
447 %attr(755,root,root) %{pkglibexecdir}/vfcompr
448 %attr(755,root,root) %{pkglibexecdir}/vfjuggle
449 %attr(755,root,root) %{pkglibexecdir}/vfsmb
450 %attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh
451 %{_mandir}/man1/%{name}*.1*
452 %lang(pl) %{_mandir}/pl/man1/%{name}*
453 %{_infodir}/poldek.info*
454 %if %{with imode}
455 %{_desktopdir}/%{name}.desktop
456 %{_pixmapsdir}/%{name}.png
457 %endif
458 %dir /var/cache/%{name}
459
460 %if %{without static}
461 %files libs
462 %defattr(644,root,root,755)
463 %attr(755,root,root) %{_libdir}/libpoclidek.so.*.*.*
464 %attr(755,root,root) %{_libdir}/libpoldek.so.*.*.*
465 %attr(755,root,root) %{_libdir}/libtndb.so.*.*.*
466 %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.*
467 %attr(755,root,root) %{_libdir}/libvfile.so.*.*.*
468 %attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1
469 %attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3
470 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0
471 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0
472 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0
473 %endif
474
475 %files devel
476 %defattr(644,root,root,755)
477 %if %{without static}
478 %attr(755,root,root) %{_libdir}/libpoclidek.so
479 %attr(755,root,root) %{_libdir}/libpoldek.so
480 %attr(755,root,root) %{_libdir}/libtndb.so
481 %attr(755,root,root) %{_libdir}/libtrurl.so
482 %attr(755,root,root) %{_libdir}/libvfile.so
483 %endif
484 %{_libdir}/libpoclidek.la
485 %{_libdir}/libpoldek.la
486 %{_libdir}/libtndb.la
487 %{_libdir}/libtrurl.la
488 %{_libdir}/libvfile.la
489 %{_includedir}/poldek
490 %{_includedir}/tndb
491 %{_includedir}/trurl
492 %{_includedir}/vfile
493 %{_pkgconfigdir}/tndb.pc
494 %{_pkgconfigdir}/trurlib.pc
495
496 %files static
497 %defattr(644,root,root,755)
498 %{_libdir}/libtndb.a
499 %{_libdir}/libtrurl.a
500
501 %if %{with python}
502 %files -n python-poldek
503 %defattr(644,root,root,755)
504 %attr(755,root,root) %{py_sitedir}/_poldekmod.so
505 %{py_sitescriptdir}/poldek.py[co]
506 %{py_sitescriptdir}/poldekmod.py[co]
507 %endif