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