]> TLD Linux GIT Repositories - packages/poldek.git/blobdiff - poldek.spec
- https-redirect.patch from PLD
[packages/poldek.git] / poldek.spec
index c402ddbbe39065c351332433a887245e806c2db1..5d9f58a60b88c6b3866c918796b679d7ffff5958 100644 (file)
@@ -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