#
# TODO:
-# - make key infrastructure code fallback from keyutils to plain mode in case keyctl
-# returns -ENOSYS
-# - add macros for some ppc, mipsel, alpha and sparc
-#
# - when adopting, use 4.5 ticket for checklist: https://bugs.launchpad.net/pld-linux/+bug/262985
#
# Conditional build:
%bcond_without apidocs # don't generate documentation with doxygen
%bcond_without python # don't build python bindings
%bcond_without selinux # build without selinux support
-%bcond_without suggest_tags # build without Suggest tag (bootstrapping)
+%bcond_without recommends_tags # build without Recommends tag (bootstrapping)
%bcond_with db61 # use DB 6.1 instead of 5.3
-%bcond_with neon # build with HTTP/WebDAV support (neon library)
-%bcond_with sqlite # build with SQLite support
-%bcond_without system_pcre # use system pcre
-%bcond_with keyutils # build with keyutils support
-
-%if %{with sqlite}
-# Error: /lib64/librpmio-5.4.so: undefined symbol: sqlite3_enable_load_extension
-%define sqlite_build_version %(pkg-config --silence-errors --modversion sqlite3 2>/dev/null || echo ERROR)
-%endif
# versions of required libraries
%if %{with db61}
Source29: dbupgrade.sh
Source30: rubygems.rb
Source31: gem_helper.rb
-Patch0: %{name}-branch.patch
-Patch1: %{name}-man_pl.patch
-Patch2: %{name}-popt-aliases.patch
-Patch4: %{name}-perl-macros.patch
-Patch5: %{name}-perl-req-perlfile.patch
-Patch6: %{name}-scripts-closefds.patch
-Patch7: %{name}-php-macros.patch
-Patch9: %{name}-lua.patch
-Patch14: %{name}-perl_req-INC_dirs.patch
-Patch15: %{name}-debuginfo.patch
-Patch16: vendor-pld.patch
-Patch18: %{name}-javadeps.patch
-Patch20: %{name}-libtool-deps.patch
-Patch29: %{name}-builddir-readlink.patch
-Patch30: %{name}-changelog_order_check_nonfatal.patch
-Patch35: %{name}-namespace-compare.patch
-Patch37: %{name}-postun-nofail.patch
-Patch61: %{name}-clean-docdir.patch
-Patch64: %{name}-fix-compress-doc.patch
-Patch81: %{name}-perl-magic.patch
-Patch83: %{name}-ignore-missing-macro-files.patch
-Patch84: x32.patch
+Patch0: %{name}-man_pl.patch
+Patch1: %{name}-popt-aliases.patch
+Patch2: %{name}-perl-macros.patch
+Patch3: %{name}-perl-req-perlfile.patch
+Patch4: %{name}-scripts-closefds.patch
+Patch5: %{name}-php-macros.patch
+Patch6: %{name}-lua.patch
+Patch7: %{name}-perl_req-INC_dirs.patch
+Patch8: %{name}-debuginfo.patch
+Patch9: %{name}-javadeps.patch
+Patch10: %{name}-libtool-deps.patch
+Patch11: %{name}-builddir-readlink.patch
+Patch12: %{name}-changelog_order_check_nonfatal.patch
+Patch13: %{name}-postun-nofail.patch
+Patch14: %{name}-clean-docdir.patch
+Patch15: %{name}-perl-magic.patch
+Patch16: %{name}-ignore-missing-macro-files.patch
+Patch17: x32.patch
+Patch18: %{name}-fix-compress-doc.patch
+Patch19: vendor-pld.patch
URL: http://rpm5.org/
BuildRequires: %{reqdb_pkg}-devel >= %{reqdb_pkgver}
-%if %{with sqlite}
-BuildRequires: sqlite3-devel
-%else
BuildRequires: %{reqdb_pkg}-sql-devel >= %{reqdb_pkgver}
-%endif
BuildRequires: autoconf >= 2.63
BuildRequires: automake >= 1.4
BuildRequires: openssl-devel >= %{openssl_ver}
BuildRequires: bzip2-devel >= 1.0.2-17
BuildRequires: elfutils-devel >= 0.108
BuildRequires: gettext-tools >= 0.19.2
-%{?with_keyutils:BuildRequires: keyutils-devel}
+BuildRequires: libarchive-devel
BuildRequires: libmagic-devel
%if %{with selinux}
BuildRequires: libselinux-devel >= 2.1.0
# needed only for AM_PROG_CXX used for CXX substitution in rpm.macros
BuildRequires: libstdc++-devel
BuildRequires: libtool >= 1:1.4.2-9
-%if %{with neon}
-BuildRequires: libxml2-devel
-BuildRequires: neon-devel >= 0.25.5
-%endif
BuildRequires: lua53-devel >= 5.3.5
BuildRequires: ossp-uuid-devel
BuildRequires: patch >= 2.2
BuildRequires: tcl
BuildRequires: xz-devel
BuildRequires: zlib-devel
+BuildRequires: zstd-devel
%if %{with apidocs}
BuildRequires: doxygen
BuildRequires: ghostscript
%endif
BuildRequires: popt-static >= %{reqpopt_ver}
BuildRequires: zlib-static
+BuildRequires: zstd-static
%endif
Requires(posttrans): coreutils
Requires: FHS >= 3.0-2
%define _binary_payload w9.gzdio
# don't require very fresh rpm.macros to build
-%define __gettextize gettextize --copy --force --intl ; cp -f po/Makevars{.template,}
%define find_lang sh ./scripts/find-lang.sh $RPM_BUILD_ROOT
-%define ix86 i386 i486 i586 i686 athlon pentium3 pentium4
+%define ix86 i386 i486 i586 i686 athlon geode pentium3 pentium4
%define ppc ppc ppc7400 ppc7450
%define x8664 amd64 ia32e x86_64
Summary(pl.UTF-8): Biblioteki RPM-a
Group: Libraries
Requires: %{reqdb_pkg} >= %{reqdb_pkgver}
-%if %{with sqlite}
-Requires: sqlite3 >= %{sqlite_build_version}
-%else
Requires: %{reqdb_pkg}-sql >= %{reqdb_pkgver}
-%endif
Requires: openssl >= %{openssl_ver}
Requires: libmagic >= 1.15-2
%{?with_selinux:Requires: libselinux >= 2.1.0}
Requires: openssl-devel >= %{openssl_ver}
Requires: bzip2-devel
Requires: elfutils-devel
-%{?with_keyutils:Requires: keyutils-devel}
Requires: libmagic-devel
%if %{with selinux}
Requires: libselinux-devel
Requires: openssl-static >= %{openssl_ver}
Requires: bzip2-static
Requires: elfutils-static
-%{?with_keyutils:Requires: keyutils-static}
Requires: libmagic-static
%if %{with selinux}
Requires: libselinux-static
Group: Applications/File
Requires: %{name} = %{version}-%{release}
Requires: popt >= %{reqpopt_ver}
-%if %{with suggest_tags}
-Suggests: bzip2
-Suggests: gzip
+%if %{with recommends_tags}
+Recommends: bzip2
+Recommends: gzip
%endif
Conflicts: filesystem-debuginfo < 3.0-16
%prep
%setup -q -n %{name}-%{version}%{?subver}
-
-#patch0 -p1
+%patch0 -p1
%patch1 -p1
%patch2 -p1
+%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
-#%patch7 -p1
+%patch7 -p0
+%patch8 -p1
%patch9 -p1
-%patch14 -p0
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
%patch15 -p1
-#%patch16 -p1
+%patch16 -p1
+%patch17 -p1
#%patch18 -p1
-%patch20 -p1
-%patch29 -p1
-%patch30 -p1
-#%patch35 -p1
-%patch37 -p1
-%patch61 -p1
-#%patch64 -p1
-%patch81 -p1
-%patch83 -p1
-#%patch84 -p1
+#%patch19 -p1
install %{SOURCE2} pld.in
-#install %{SOURCE8} scripts/php.prov.in
-#install %{SOURCE9} scripts/php.req.in
+install %{SOURCE8} scripts/php.prov.in
+install %{SOURCE9} scripts/php.req.in
install %{SOURCE11} scripts/perl.prov.in
cp -p %{SOURCE30} scripts/rubygems.rb
cp -p %{SOURCE31} scripts/gem_helper.rb
install %{SOURCE26} tools/rpmdb_checkversion.c
install %{SOURCE28} tools/rpmdb_reset.c
-for extlib in openssl neon %{?with_system_pcre:pcre} popt; do
- [ -d $extlib ] && %{__rm} -r $extlib
-done
-
%{__sed} -i -e '1s,/usr/bin/python,%{__python},' scripts/pythondistdeps.py
%build
%{__libtoolize}
-#%{__autopoint}
%{__aclocal}
%{__autoheader}
%{__autoconf}
WITH_PERL_VERSION=no \
__GST_INSPECT=%{_bindir}/gst-inspect-1.0 \
__GPG=%{_bindir}/gpg \
+ %{?with_python:PYTHON=python%{py_ver}} \
--disable-silent-rules \
--enable-shared \
--enable-static \
- %{!?with_apidocs:--without-apidocs} \
+ --with-hackingdocs=%{!?with_apidocs:no}%{?with_apidocs:yes} \
+ --enable-bdb \
+ --enable-zstd \
--with-crypto=openssl \
- --with-bugreport="http://bugs.pld-linux.org/" \
- --with-bzip2=external \
- --with-db=external \
- --with-dbapi=db \
- --with-file=external \
- --with-keyutils=%{?with_keyutils:external}%{!?with_keyutils:no} \
- --with-libelf \
--with-lua \
- --with-lzma=external \
- --with-neon=%{?with_neon:external}%{!?with_neon:no} \
- --with-path-macros='%{_rpmlibdir}/macros:%{_rpmlibdir}/macros.d/pld:%{_rpmlibdir}/%%{_target}/macros:%{_rpmlibdir}/macros.build:%{_sysconfdir}/rpm/macros.*:%{_sysconfdir}/rpm/macros:%{_sysconfdir}/rpm/%%{_target}/macros:%{_sysconfdir}/rpm/macros.d/*.macros:~/etc/.rpmmacros:~/.rpmmacros' \
- --without-path-versioned \
- --with-pcre=%{!?with_system_pcre:internal}%{?with_system_pcre:external} \
- --with-popt=external \
- %{?with_python:--with-python=%{py_ver} --with-python-lib-dir=%{py_sitedir}} \
- %{!?with_python:--without-python} \
+ --with-cap \
+ --with-acl \
+ --with-audit \
+ --with-archive \
+ %{?with_python:--enable-python} \
--with-selinux=%{!?with_selinux:no}%{?with_selinux:yes} \
- --with-semanage=%{!?with_selinux:no}%{?with_selinux:external} \
- --with-sepol=%{!?with_selinux:no}%{?with_selinux:external} \
- --with-sqlite=%{?with_sqlite:yes}%{!?with_sqlite:no} \
- --with-uuid=%{_libdir}:%{_includedir}/ossp-uuid \
- --with-vendor=pld \
- --with-xz=external \
- --with-zlib=external
+ --with-vendor=pld
+
+# --enable-ndb (EXPERIMENTAL) enable the new rpm database format
+# --enable-lmdb=[yes/no/auto] (EXPERIMENTAL) build with LMDB rpm database format support (default=auto)
+# --with-imaevm build with imaevm support
%{__make}
# cleanup
%ifnarch %{ix86} %{x8664} x32
rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/athlon-linux/macros
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/geode-linux/macros
rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/i386-linux/macros
rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/i486-linux/macros
rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/i586-linux/macros
%endif
%ifnarch %{ppc}
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/m68k-linux/macros
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc32dy4-linux/macros
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc64*-linux/macros
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc8260-linux/macros
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc8560-linux/macros
rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc-linux/macros
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc*series-linux/macros
%endif
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/aarch64-linux/macros
rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/alpha*-linux/macros
rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/arm*-linux/macros
rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ia64-linux/macros
rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/mips*-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc*series-linux/macros
-rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc64*-linux/macros
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/riscv64-linux/macros
rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/s390*-linux/macros
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/sh*-linux/macros
rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/sparc*-linux/macros
-cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
-# first platform file entry can't contain regexps
-%ifarch x32
-%{_target_cpu}-%{_target_vendor}-linux-gnux32
-%else
-%{_target_cpu}-%{_target_vendor}-linux
-%endif
-
-%ifarch x86_64
-x86_64-[^-]*-[Ll]inux(-gnu)?
-amd64-[^-]*-[Ll]inux(-gnu)?
-x32-[^-]*-[Ll]inux(-gnu(x32)?)?
-%endif
-%ifarch amd64
-amd64-[^-]*-[Ll]inux(-gnu)?
-x86_64-[^-]*-[Ll]inux(-gnu)?
-x32-[^-]*-[Ll]inux(-gnu(x32)?)?
-%endif
-%ifarch ia32e
-ia32e-[^-]*-[Ll]inux(-gnu)?
-x86_64-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch x32
-x32-[^-]*-[Ll]inux(-gnu(x32)?)?
-x86_64-[^-]*-[Ll]inux(-gnu)?
-amd64-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch athlon %{x8664} x32
-athlon-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch pentium4 athlon %{x8664} x32
-pentium4-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch pentium3 pentium4 athlon %{x8664} x32
-pentium3-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch i686 pentium3 pentium4 athlon %{x8664} x32
-i686-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch i586 i686 pentium3 pentium4 athlon %{x8664} x32
-i586-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch i486 i586 i686 pentium3 pentium4 athlon %{x8664} x32
-i486-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch %{ix86} %{x8664} x32
-i386-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch alpha
-alpha-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch ia64
-ia64-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch ppc64
-powerpc64-[^-]*-[Ll]inux(-gnu)?
-ppc64-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch %{ppc} ppc64
-powerpc-[^-]*-[Ll]inux(-gnu)?
-ppc-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch s390x
-s390x-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch s390 s390x
-s390-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-%ifarch sparc64
-sparc64-[^-]*-[Ll]inux(-gnu)?
-sparcv8-[^-]*-[Ll]inux(-gnu)?
-sparcv9-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch sparcv9
-sparcv8-[^-]*-[Ll]inux(-gnu)?
-sparcv9-[^-]*-[Ll]inux(-gnu)?
-%endif
-%ifarch sparc sparcv9 sparc64
-sparc-[^-]*-[Ll]inux(-gnu)?
-%endif
-
-noarch-[^-]*-.*
-EOF
-
-# Squash Extra Blank Lines
-%{__sed} -i -e '/./,/^$/!d' $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
-
%{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/find-lang.sh
install %{SOURCE1} doc/manual/groups
install %{SOURCE7} $RPM_BUILD_ROOT%{_rpmlibdir}/compress-doc
install %{SOURCE12} $RPM_BUILD_ROOT%{_rpmlibdir}/user_group.sh
install %{SOURCE14} $RPM_BUILD_ROOT%{_rpmlibdir}/java-find-requires
-#install scripts/php.{prov,req} $RPM_BUILD_ROOT%{_rpmlibdir}
+install scripts/php.{prov,req} $RPM_BUILD_ROOT%{_rpmlibdir}
cp -p %{SOURCE25} $RPM_BUILD_ROOT%{_rpmlibdir}/php.req.php
install %{SOURCE17} $RPM_BUILD_ROOT%{_rpmlibdir}/mimetypedeps.sh
install %{SOURCE5} $RPM_BUILD_ROOT%{_rpmlibdir}/hrmib-cache
%py_ocomp $RPM_BUILD_ROOT%{py_sitedir}
%py_comp $RPM_BUILD_ROOT%{py_sitedir}
-#%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/rpm/*.{la,a,py}
+%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/rpm/*.{la,py}
%endif
# wrong location, not used anyway
%dir %{_sysconfdir}/rpm/sysinfo
# these are ok to be replaced
%config %verify(not md5 mtime size) %{_sysconfdir}/rpm/sysinfo/*
-%config %verify(not md5 mtime size) %{_sysconfdir}/rpm/platform
%{_mandir}/man8/rpm.8*
%lang(fr) %{_mandir}/fr/man8/rpm.8*
#%{_rpmlibdir}/macros.d/pld
%{_rpmlibdir}/platform/noarch-*
%ifarch %{ix86} %{x8664} x32
+%{_rpmlibdir}/platform/athlon*
+%{_rpmlibdir}/platform/geode*
%{_rpmlibdir}/platform/i?86*
%{_rpmlibdir}/platform/pentium*
-%{_rpmlibdir}/platform/athlon*
+%endif
+%ifarch %{x8664} x32
+%{_rpmlibdir}/platform/amd64*
+%{_rpmlibdir}/platform/ia32e*
+%{_rpmlibdir}/platform/x86_64*
+%{_rpmlibdir}/platform/x32*
%endif
%ifarch alpha
%{_rpmlibdir}/platform/alpha*
%ifarch sparc sparc64
%{_rpmlibdir}/platform/sparc*
%endif
-%ifarch %{x8664} x32
-%{_rpmlibdir}/platform/amd64*
-%{_rpmlibdir}/platform/ia32e*
-%{_rpmlibdir}/platform/x86_64*
-#%{_rpmlibdir}/platform/x32*
-%endif
%attr(755,root,root) %{_rpmlibdir}/hrmib-cache
#%attr(755,root,root) %{_rpmlibdir}/bin/semodule
#%attr(755,root,root) %{_rpmlibdir}/bin/spooktool
%endif
-%{?with_keyutils:%attr(755,root,root) %{_rpmlibdir}/bin/rpmkey}
#%attr(755,root,root) %{_rpmlibdir}/bin/rpmrepo
%{_mandir}/man8/rpm2cpio.8*
#%{_mandir}/man8/rpmconstant.8*
%attr(755,root,root) %{_rpmlibdir}/pkgconfigdeps.sh
#%attr(755,root,root) %{_rpmlibdir}/bin/api-sanity-autotest.pl
#%attr(755,root,root) %{_rpmlibdir}/bin/api-sanity-checker.pl
-#%{!?with_sqlite:%attr(755,root,root) %{_rpmlibdir}/bin/dbsql}
#%attr(755,root,root) %{_rpmlibdir}/bin/install-sh
#%attr(755,root,root) %{_rpmlibdir}/bin/mkinstalldirs
#%attr(755,root,root) %{_rpmlibdir}/bin/pom2spec
#%attr(755,root,root) %{_rpmlibdir}/bin/rpmspec
#%attr(755,root,root) %{_rpmlibdir}/bin/rpmspecdump
-#%attr(755,root,root) %{_rpmlibdir}/bin/sqlite3
#%attr(755,root,root) %{_rpmlibdir}/bin/wget
#%attr(755,root,root) %{_rpmlibdir}/vcheck
# not used yet ... these six depend on perl
%files php-pearprov
%defattr(644,root,root,755)
-#%attr(755,root,root) %{_rpmlibdir}/php.prov
-#%attr(755,root,root) %{_rpmlibdir}/php.req
+%attr(755,root,root) %{_rpmlibdir}/php.prov
+%attr(755,root,root) %{_rpmlibdir}/php.req
%attr(755,root,root) %{_rpmlibdir}/php.req.php
%if %{with python}
%files -n python-rpm
%defattr(644,root,root,755)
-#%dir %{py_sitedir}/rpm
-#%attr(755,root,root) %{py_sitedir}/rpm/*.so
-#%{py_sitedir}/rpm/*.py[co]
+%dir %{py_sitedir}/rpm
+%attr(755,root,root) %{py_sitedir}/rpm/*.so
+%{py_sitedir}/rpm/*.py[co]
%endif
%if %{with apidocs}