X-Git-Url: https://git.tld-linux.org/?p=packages%2Fpoldek.git;a=blobdiff_plain;f=poldek.spec;h=ee551c34eeaf2c2ee08daef41752ca9a19a73282;hp=c402ddbbe39065c351332433a887245e806c2db1;hb=HEAD;hpb=4e79f23b2520576c30dd5b069e46fc51d7dcc5ca diff --git a/poldek.spec b/poldek.spec index c402ddb..5d9f58a 100644 --- a/poldek.spec +++ b/poldek.spec @@ -1,67 +1,93 @@ -# -# TODO: -# -# - fails to build without poldek-devel - fix it ! -# +# TODO +# - fix config having escaped html entities: +# # package A requires capability foo >= 1.0 while package B provides "foo" + # Conditional build: %bcond_with static # don't use shared libraries %bcond_without imode # don't build interactive mode -%bcond_without python # don't build python bindings +%bcond_with python # don't build python bindings +%bcond_with tests # tests # required versions (forced to avoid SEGV with mixed db used by rpm and poldek) -%define ver_db 4.5.20 -%define ver_db_rel 8 -%define ver_rpm 4.5-49 +%define ver_rpm 1:4.14 -%define snap rc2 -%define rel 6 Summary: RPM packages management helper tool Summary(hu.UTF-8): RPM csomagkezelést segítő eszköz Summary(pl.UTF-8): Pomocnicze narzędzie do zarządzania pakietami RPM Name: poldek -Version: 0.30 -Release: 0.%{snap}.%{rel} +Version: 0.42.2 +Release: 18 License: GPL v2 Group: Applications/System #Source0: http://poldek.pld-linux.org/download/snapshots/%{name}-%{version}-cvs%{snap}.tar.bz2 -Source0: http://carme.pld-linux.org/~cactus/snaps/poldek/%{name}-%{version}%{snap}.tar.bz2 -# Source0-md5: 14135ae2960da09990c50d5b5342be64 -Source1: %{name}.conf -Source2: %{name}-multilib.conf -Source3: %{name}-aliases.conf -Source4: %{name}.desktop -Source5: %{name}.png -Patch0: %{name}-vserver-packages.patch -Patch1: %{name}-config.patch -Patch2: %{name}-size-type.patch -Patch3: %{name}-Os-fail-workaround.patch +Source0: https://github.com/poldek-pm/poldek/releases/download/v%{version}/%{name}-%{version}.tar.xz +# Source0-md5: 2759fe45bc50efb6084d5338d725411a +Source1: tld.conf +Source2: tld-multilib.conf +Source3: tld-debuginfo.conf +Source4: %{name}-config.sh +Source5: %{name}-aliases.conf +Source6: %{name}.desktop +Source7: %{name}.png +# Source7-md5: ee487abede50874e9eceb6495d5ee150 +Patch0: %{name}-config.patch +Patch1: pm-hooks.patch +Patch2: %{name}-ext-down-enable.patch +Patch3: %{name}-pc.patch +Patch4: %{name}-info.patch +Patch5: %{name}-multiarch-x32.patch +Patch6: rpm-4.15.patch +Patch7: db-index-format.patch +Patch8: rpm4-uname-deps.patch +Patch9: sqlite-rpmdb.patch +Patch10: rpm4-cpuinfo-deps.patch +Patch11: rpm4-no-dir-deps.patch +Patch12: rpm4-rpmvercmp.patch +Patch13: trurlib-shared.patch +Patch14: rpm4-script-req-workaround.patch +Patch15: skip-buildid-obsoletes.patch +Patch16: verify-signature.patch +Patch17: %{name}-rsa_sig_rpmorg.patch +Patch18: no-bdb-for-rpm-org.patch +Patch19: more-trace.patch +Patch20: boolean-deps.patch +Patch21: sorted-ls-upgradable.patch +Patch22: egrep-is-obsolete.patch +Patch23: minus.patch +Patch24: %{name}-https-redirect.patch URL: http://poldek.pld-linux.org/ -BuildRequires: autoconf -BuildRequires: automake +BuildRequires: autoconf >= 2.63 +BuildRequires: automake >= 1:1.11 BuildRequires: bzip2-devel BuildRequires: check-devel -BuildRequires: db-devel >= %{ver_db}-%{ver_db_rel} BuildRequires: docbook-dtd412-xml -BuildRequires: gettext-devel +BuildRequires: docbook2X +BuildRequires: gettext-tools >= 0.11.5 +BuildRequires: libgomp-devel BuildRequires: libtool -BuildRequires: libxml2-devel -BuildRequires: neon-devel +BuildRequires: libxml2-devel >= 2 +BuildRequires: lua54-devel +BuildRequires: ncurses-devel BuildRequires: openssl-devel >= 0.9.7d BuildRequires: pcre-devel +BuildRequires: perl-XML-Simple +BuildRequires: perl-base +BuildRequires: perl-modules BuildRequires: pkgconfig BuildRequires: popt-devel %{?with_python:BuildRequires: python-devel} BuildRequires: readline-devel >= 5.0 BuildRequires: rpm-devel >= %{ver_rpm} %{?with_python:BuildRequires: rpm-pythonprov} -BuildRequires: swig-python +BuildRequires: tar >= 1:1.22 +BuildRequires: texinfo BuildRequires: xmlto +BuildRequires: xz BuildRequires: zlib-devel +BuildRequires: zstd-devel %if %{with static} BuildRequires: bzip2-static -BuildRequires: db-static >= %{ver_db}-%{ver_db_rel} BuildRequires: glibc-static -BuildRequires: libselinux-static BuildRequires: libxml2-static BuildRequires: ncurses-static BuildRequires: openssl-static @@ -70,18 +96,21 @@ BuildRequires: popt-static BuildRequires: readline-static BuildRequires: rpm-static BuildRequires: zlib-static +BuildRequires: zstd-static %endif -Requires(triggerpostun): awk -Requires(triggerpostun): sed >= 4.0 +Requires(postun): awk +Requires(postun): sed >= 4.0 Requires: %{name}-libs = %{version}-%{release} -Requires: db >= %{ver_db}-%{ver_db_rel} +Requires: /bin/run-parts Requires: rpm >= %{ver_rpm} -Requires: rpm-db-ver = %{ver_db} -Requires: rpm-lib = %(rpm -q --qf '%{V}' rpm-lib) -# vf* scripts use sed +Requires: rpm-lib >= %{ver_rpm} Requires: sed +Conflicts: etckeeper < 1.18-2 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) +# it could be %{_libexecdir}/%{name}, but beware of compatibility (path hardcoded in configurations) +%define pkglibexecdir %{_prefix}/lib/%{name} + %description poldek is an RPM package management tool which allows you to easily perform package verification, installation (including system @@ -179,7 +208,7 @@ Summary(hu.UTF-8): Python modulok poldek-hez Summary(pl.UTF-8): Moduły języka Python dla poldka Group: Libraries/Python Requires: %{name}-libs = %{version}-%{release} -%pyrequires_eq python-libs +Requires: python-libs %description -n python-poldek Python modules for poldek. @@ -196,91 +225,139 @@ Moduły języka Python dla poldka. %patch1 -p1 %patch2 -p1 %patch3 -p1 - -rm -f m4/libtool.m4 m4/lt*.m4 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +cd trurlib +%patch13 -p1 +cd .. +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 + +%{__rm} doc/poldek.info +%{__rm} m4/libtool.m4 m4/lt*.m4 # cleanup backups after patching find . '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f chmod u+x ./configure ./doc/conf-xml2.sh %build +%{__gettextize} %{__libtoolize} %{__aclocal} -I m4 %{__autoheader} %{__autoconf} %{__automake} -cp -f config.sub trurlib +cd tndb +%{__libtoolize} +%{__aclocal} +%{__autoheader} +%{__autoconf} +%{__automake} +cd ../trurlib +%{__libtoolize} +%{__aclocal} +%{__autoheader} +%{__autoconf} +%{__automake} +cd .. -CPPFLAGS="-std=gnu99" %configure \ %{?with_static:--enable-static --disable-shared} \ %{!?with_imode:--disable-imode} \ + --with-pkglibdir=%{pkglibexecdir} \ --enable-nls \ %{?with_python:--with-python} %{__make} -# --enable-trace + +%{__make} -C doc poldek.info + +%if %{with python} +%{__make} -C python +%endif + +%if %{with tests} +%{__make} check +%endif %install rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d +install -d $RPM_BUILD_ROOT/var/cache/%{name} %{__make} install \ DESTDIR=$RPM_BUILD_ROOT +install -p %{SOURCE4} $RPM_BUILD_ROOT%{_bindir}/poldek-config + %if %{with python} %{__make} -C python install \ DESTDIR=$RPM_BUILD_ROOT \ - libdir=%{py_sitedir} + py_sitedir=%{py_sitedir} %endif -%{?with_static:rm -f $RPM_BUILD_ROOT%{_bindir}/rpmvercmp} +%{?with_static:%{__rm} $RPM_BUILD_ROOT%{_bindir}/rpmvercmp} -%ifarch i486 i686 ppc sparc alpha athlon - %define _ftp_arch %{_target_cpu} +%ifarch i686 aarch64 %{arm} + %define ftp_arch %{_target_cpu} %endif %ifarch %{x8664} - %define _ftp_arch x86_64 - %define _ftp_alt_arch i686 -%endif -%ifarch i586 - %define _ftp_arch i586 -%endif -%ifarch pentium2 pentium3 pentium4 - %define _ftp_arch i686 + %define ftp_arch x86_64 + %define ftp_alt_arch i686 %endif %define tld_conf %{SOURCE1} + %ifarch %{x8664} - %define tld_multilib_conf %{SOURCE2} + %define tld_multilib_conf %{SOURCE2} %endif -sed -e 's|%%ARCH%%|%{_ftp_arch}|g' < %{tld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/tld.conf +%define tld_debuginfo_conf %{SOURCE3} + +%{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{tld_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/tld.conf %if 0%{?tld_multilib_conf:1} - sed 's|%%ARCH%%|%{_ftp_alt_arch}|g' < %{tld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/tld-multilib.conf + %{__sed} 's|%%ARCH%%|%{ftp_alt_arch}|g' < %{tld_multilib_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/tld-multilib.conf %endif -cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf +%{__sed} -e 's|%%ARCH%%|%{ftp_arch}|g' < %{tld_debuginfo_conf} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/repos.d/tld-debuginfo.conf + +cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cli.conf %if %{with imode} # add desktop file and icon install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}} -cp -a %{SOURCE4} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop -cp -a %{SOURCE5} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png +cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop +cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png %endif # sources we don't package -rm -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{{rh,pld,fedora,centos}-source,repos.d/pld}.conf +%{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/{rh,fedora,centos}-source.conf # include them in %doc -rm -rf configs +%{__rm} -rf configs cp -a conf configs -rm -f configs/Makefile* +%{__rm} -f configs/Makefile* %if %{with python} %py_postclean -rm -f $RPM_BUILD_ROOT%{py_sitedir}/_poldekmod.la +%{__rm} $RPM_BUILD_ROOT%{_libdir}/_poldekmod.{la,so} %endif + %find_lang %{name} %clean @@ -311,50 +388,6 @@ fi %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig -%triggerpostun -- poldek < 0.19.0-1.20050613.22.0 -if [ -f /etc/poldek.conf.rpmsave ]; then - awk '/^source/ { - name = $3; - path = $4; - auto = "yes"; - autoup = "yes"; - type = "pdir"; - pri = ""; - - if (sub(",noauto", "", name)) { - auto = "no"; - } - - # process pri=\d+ - if (match(name, /,pri=[0-9]+/)) { - pri = substr(name, RSTART + 5, RLENGTH - 5); - name = substr(name, 1, RSTART - 1) substr(name, RSTART + RLENGTH); - } - - # skip ac sources. already in new config. - if (name !~ /^ac(-(ready|test|supported|updates-(general|security)))?$/) { - print ""; - print "[source]"; - print "name = " name; - print "type = " type; - print "path = " path; - print "auto = " auto; - print "autoup = " autoup; - if (pri) { - print "pri = " pri; - } - } - - }' < /etc/poldek.conf.rpmsave >> /etc/poldek/source.conf - echo "Converted old custom sources from /etc/poldek.conf.rpmsave to new poldek format in /etc/poldek/source.conf" - - # copy hold= - hold=$(grep ^hold /etc/poldek.conf.rpmsave) - if [ "$hold" ]; then - sed -i -e "/^#hold =/s/^.*/$hold/" /etc/poldek/poldek.conf - fi -fi - %triggerpostun -- poldek < 0.30-0.20080225.00.1 if ! grep -q '^%%includedir repos.d' %{_sysconfdir}/%{name}/poldek.conf; then %{__sed} -i -e '/^%%include source.conf/{ @@ -368,34 +401,63 @@ fi %{__sed} -i -e '/%%include %%{_distro}-multilib-source.conf/d' %{_sysconfdir}/%{name}/poldek.conf if [ -f %{_sysconfdir}/%{name}/tld-source.conf.rpmsave ]; then - cp -f %{_sysconfdir}/%{name}/repos.d/tld.conf{,.rpmnew} - cp -f %{_sysconfdir}/%{name}/tld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/tld.conf + %{__mv} -f %{_sysconfdir}/%{name}/repos.d/tld.conf{,.rpmnew} + %{__mv} -v %{_sysconfdir}/%{name}/tld-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/tld.conf fi %ifarch %{x8664} if [ -f %{_sysconfdir}/%{name}/tld-multilib-source.conf.rpmsave ]; then - cp -f %{_sysconfdir}/%{name}/repos.d/tld-multilib.conf{,.rpmnew} - cp -f %{_sysconfdir}/%{name}/tld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/tld-multilib.conf + %{__mv} -f %{_sysconfdir}/%{name}/repos.d/tld-multilib.conf{,.rpmnew} + %{__mv} -v %{_sysconfdir}/%{name}/tld-multilib-source.conf.rpmsave %{_sysconfdir}/%{name}/repos.d/tld-multilib.conf fi %endif +%triggerpostun -- %{name} < 0.30.1-8 +if [ $1 -le 1 ]; then + # revert change on --downgrade + %{__sed} -i -re 's,^pm command = %{pkglibexecdir}/pm-command.sh,#&,' %{_sysconfdir}/%{name}/%{name}.conf +else + # setup pm command + %{__sed} -i -re 's,#?(pm command =).*,\1 %{pkglibexecdir}/pm-command.sh,' %{_sysconfdir}/%{name}/%{name}.conf +fi + %files -f %{name}.lang %defattr(644,root,root,755) -%doc ChangeLog README* NEWS TODO configs +%doc ChangeLog README* NEWS configs %dir %{_sysconfdir}/%{name} +%dir %{_sysconfdir}/%{name}/pre-install.d +%{_sysconfdir}/%{name}/pre-install.d/README +%dir %{_sysconfdir}/%{name}/post-install.d +%{_sysconfdir}/%{name}/post-install.d/README %dir %{_sysconfdir}/%{name}/repos.d -%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/*.conf -%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/*.conf -%attr(755,root,root) %{_bindir}/* -%dir %{_libdir}/%{name} -%attr(755,root,root) %{_libdir}/%{name}/* -%{_mandir}/man1/%{name}* +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/cli.conf +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/fetch.conf +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/poldek.conf +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/source.conf +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/tld.conf +%if 0%{?tld_multilib_conf:1} +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/tld-multilib.conf +%endif +%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/repos.d/tld-debuginfo.conf +%attr(755,root,root) %{_bindir}/ipoldek +%attr(755,root,root) %{_bindir}/poldek +%attr(755,root,root) %{_bindir}/poldek-config +%attr(755,root,root) %{_bindir}/rpmvercmp +%dir %{pkglibexecdir} +%attr(755,root,root) %{pkglibexecdir}/pm-command.sh +%attr(755,root,root) %{pkglibexecdir}/poldekuser-setup.sh +%attr(755,root,root) %{pkglibexecdir}/vfcompr +%attr(755,root,root) %{pkglibexecdir}/vfjuggle +%attr(755,root,root) %{pkglibexecdir}/vfsmb +%attr(755,root,root) %{pkglibexecdir}/zlib-in-rpm.sh +%{_mandir}/man1/%{name}*.1* %lang(pl) %{_mandir}/pl/man1/%{name}* %{_infodir}/poldek.info* %if %{with imode} %{_desktopdir}/%{name}.desktop %{_pixmapsdir}/%{name}.png %endif +%dir /var/cache/%{name} %if %{without static} %files libs @@ -405,8 +467,8 @@ fi %attr(755,root,root) %{_libdir}/libtndb.so.*.*.* %attr(755,root,root) %{_libdir}/libtrurl.so.*.*.* %attr(755,root,root) %{_libdir}/libvfile.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.0 -%attr(755,root,root) %ghost %{_libdir}/libpoldek.so.2 +%attr(755,root,root) %ghost %{_libdir}/libpoclidek.so.1 +%attr(755,root,root) %ghost %{_libdir}/libpoldek.so.3 %attr(755,root,root) %ghost %{_libdir}/libtndb.so.0 %attr(755,root,root) %ghost %{_libdir}/libtrurl.so.0 %attr(755,root,root) %ghost %{_libdir}/libvfile.so.0 @@ -414,13 +476,29 @@ fi %files devel %defattr(644,root,root,755) -%{!?with_static:%attr(755,root,root) %{_libdir}/lib*.so} -%{_libdir}/lib*.la -%{_includedir}/* +%if %{without static} +%attr(755,root,root) %{_libdir}/libpoclidek.so +%attr(755,root,root) %{_libdir}/libpoldek.so +%attr(755,root,root) %{_libdir}/libtndb.so +%attr(755,root,root) %{_libdir}/libtrurl.so +%attr(755,root,root) %{_libdir}/libvfile.so +%endif +%{_libdir}/libpoclidek.la +%{_libdir}/libpoldek.la +%{_libdir}/libtndb.la +%{_libdir}/libtrurl.la +%{_libdir}/libvfile.la +%{_includedir}/poldek +%{_includedir}/tndb +%{_includedir}/trurl +%{_includedir}/vfile +%{_pkgconfigdir}/tndb.pc +%{_pkgconfigdir}/trurlib.pc %files static %defattr(644,root,root,755) -%{_libdir}/lib*.a +%{_libdir}/libtndb.a +%{_libdir}/libtrurl.a %if %{with python} %files -n python-poldek