#
# TODO:
-# - python(abi) cap is not provided automatically (because /usr/bin/python matches
-# ELF first; it should be provided by python-libs not binary anyway)
+# - python(abi) cap is not provided automatically because /usr/lib*/libpython2*.so.*
+# matches ELF first
# - repackaging when lzma is not installed (todo: fix digest signature of header)
# rpmbuild computes digest when writing package to temporary file, then adds a few
# tags (incl. digest) and writes whole package to destination file;
%bcond_without python # don't build python bindings
%bcond_without selinux # build without selinux support
%bcond_without system_libmagic # don't use system libmagic
+%bcond_without suggest_tags # build without Suggest tag (bootstrapping)
%bcond_with neon # build with HTTP/WebDAV support (neon library)
# force_cc - force using __cc other than "%{_target_cpu}-pld-linux-gcc"
# force_cxx - force using __cxx other than "%{_target_cpu}-pld-linux-g++"
# force_cpp - force using __cpp other than "%{_target_cpu}-pld-linux-gcc -E"
# versions of required libraries
-%define reqdb_ver 4.4.20
-%define reqpopt_ver 1.10.6
+%define reqdb_ver 4.6.18
+%define reqpopt_ver 1.10.8
%define beecrypt_ver 2:4.1.2-4
%define sover 4.4
Summary: RPM Package Manager
Summary(ru.UTF-8): Менеджер пакетов от RPM
Summary(uk.UTF-8): Менеджер пакетів від RPM
Name: rpm
-Version: 4.4.7
-Release: 13
+Version: 4.4.9
+Release: 5
License: GPL
Group: Base
-Source0: ftp://jbj.org/pub/rpm-4.4.x/%{name}-%{version}.tar.gz
-# Source0-md5: d012c81b5169f7377ea4a36607e1445e
+Source0: http://rpm5.org/files/rpm/rpm-4.4/%{name}-%{version}.tar.gz
+# Source0-md5: 210b768006e7d88dd8a3bcd498ea27f6
Source1: %{name}.groups
Source2: %{name}.platform
Source3: %{name}-install-tree
Source12: perl.prov
Source13: %{name}-user_group.sh
Source14: %{name}.sysconfig
+Source15: %{name}-macros.java
+Source16: %{name}-java-requires
Source30: builder
Source31: adapter.awk
Source32: pldnotify.awk
Patch8: %{name}-python-macros.patch
Patch9: %{name}-gettext-in-header.patch
Patch10: %{name}-compress-doc.patch
-Patch11: %{name}-rpmdeps-segv.patch
+Patch11: %{name}-Nmalloc.patch
Patch12: %{name}-system_libs.patch
Patch13: %{name}-bb-and-short-circuit.patch
Patch14: %{name}-etc_dir.patch
Patch20: %{name}-magic-usesystem.patch
Patch21: %{name}-dontneedutils.patch
Patch22: %{name}-provides-dont-obsolete.patch
-Patch23: %{name}-examplesaredoc.patch
+Patch23: %{name}-pkgconfigdeps.patch
Patch24: %{name}-po.patch
-Patch25: %{name}-getcwd.patch
+Patch25: %{name}-rpm2cpio-payload.patch
Patch26: %{name}-notsc.patch
Patch27: %{name}-hack-norpmlibdep.patch
Patch28: %{name}-makefile-no_myLDADD_deps.patch
-Patch29: %{name}-libdir64.patch
-Patch30: %{name}-libdir-links.patch
+Patch29: %{name}-macros-dbhash.patch
Patch31: %{name}-missing-prototypes.patch
Patch32: %{name}-pld-autodep.patch
Patch33: %{name}-arch-x86_64.patch
Patch35: %{name}-perl_req-INC_dirs.patch
Patch36: %{name}-debuginfo.patch
Patch37: %{name}-doxygen_hack.patch
-Patch38: %{name}-empty-rpmlock-path.patch
-Patch39: %{name}-pythondeps.patch
-Patch40: %{name}-vendor.patch
+
Patch41: %{name}-reduce-stack-usage.patch
Patch42: %{name}-old-fileconflicts-behaviour.patch
-Patch43: %{name}-patch-quote.patch
+
Patch44: %{name}-no-neon.patch
Patch45: %{name}-no-sqlite.patch
Patch46: %{name}-mono.patch
+Patch47: %{name}-javadeps.patch
-Patch48: %{name}-requireseq.patch
Patch49: %{name}-p4.patch
Patch50: %{name}-macros.patch
Patch51: %{name}-cleanlibdirs.patch
Patch52: %{name}-morearchs.patch
-Patch53: %{name}-lzma.patch
-Patch54: %{name}-lzma2.patch
+
Patch55: %{name}-truncate-cvslog.patch
-Patch56: %{name}-skip-backups.patch
+
Patch57: %{name}-as_needed-fix.patch
Patch58: %{name}-repackage-wo-lzma.patch
Patch59: %{name}-libtool-deps.patch
-Patch60: %{name}-CVE-2006-5466.patch
-Patch61: %{name}-build-failure-error.patch
-Patch62: %{name}-mcontext.patch
-Patch63: %{name}-FileDigestParameterized.patch
-Patch64: %{name}-iconv-translit.patch
-URL: http://wraptastic.org/
+Patch60: %{name}-obsolete-rpmrc.patch
+Patch61: %{name}-sparc64.patch
+Patch62: %{name}-rpmdb.patch
+URL: http://rpm5.org/
BuildRequires: autoconf >= 2.57
-BuildRequires: automake
+BuildRequires: automake >= 1.4
BuildRequires: beecrypt-devel >= %{beecrypt_ver}
BuildRequires: bzip2-devel >= 1.0.2-17
BuildRequires: db-devel >= %{reqdb_ver}
BuildRequires: elfutils-devel >= 0.108
+%ifnarch sparc64
+# -fPIE/-pie
+BuildRequires: gcc >= 5:3.4
+%endif
BuildRequires: gettext-devel >= 0.11.4-2
%{?with_system_libmagic:BuildRequires: libmagic-devel}
%{?with_selinux:BuildRequires: libselinux-devel >= 1.18}
%{!?with_static:Obsoletes: rpm-utils-static}
Conflicts: glibc < 2.2.92
# ABI changes in rpm, new poldek needed
-Conflicts: poldek < 0.20.1-0.20070105.0
+Conflicts: poldek < 0.20.1-0.20070108.1.4
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _binary_payload w9.gzdio
Obsoletes: rpm-libs
# avoid SEGV caused by mixed db versions
Conflicts: poldek < 0.18.1-16
-Suggests: lzma
+%{?with_suggest_tags:Suggests: lzma}
%description lib
RPMs library.
бібліотека RPM.
%package utils
-Summary: Additional utilities for managing rpm packages and database
+Summary: Additional utilities for managing RPM packages and database
Summary(de.UTF-8): Zusatzwerkzeuge für Verwaltung RPM-Pakete und Datenbanken
Summary(pl.UTF-8): Dodatkowe narzędzia do zarządzania bazą RPM-a i pakietami
Group: Applications/File
Requires: popt >= %{reqpopt_ver}
%description utils
-Additional utilities for managing rpm packages and database.
+Additional utilities for managing RPM packages and database.
%description utils -l de.UTF-8
Zusatzwerkzeuge für Verwaltung RPM-Pakete und Datenbanken.
Dodatkowe narzędzia do zarządzania bazą RPM-a i pakietami.
%package utils-perl
-Summary: Additional utilities for managing rpm packages and database
+Summary: Additional utilities for managing RPM packages and database
Summary(de.UTF-8): Zusatzwerkzeuge für Verwaltung RPM-Pakete und Datenbanken
Summary(pl.UTF-8): Dodatkowe narzędzia do zarządzania bazą RPM-a i pakietami
Group: Applications/File
Requires: popt >= %{reqpopt_ver}
%description utils-perl
-Additional utilities for managing rpm packages and database.
+Additional utilities for managing RPM packages and database.
%description utils-perl -l de.UTF-8
Zusatzwerkzeuge für Verwaltung RPM-Pakete und Datenbanken.
Різноманітні допоміжні скрипти та утиліти, які використовуються для
побудови RPM'ів.
+%package javaprov
+Summary: Additional utilities for checking Java provides/requires in RPM packages
+Summary(pl.UTF-8): Dodatkowe narzędzia do sprawdzania zależności kodu w Javie w pakietach RPM
+Group: Applications/File
+Requires: %{name} = %{version}-%{release}
+Requires: file
+Requires: findutils >= 1:4.2.26
+Requires: mktemp
+Requires: unzip
+
+%description javaprov
+Additional utilities for checking Java provides/requires in RPM
+packages.
+
+%description javaprov -l pl.UTF-8
+Dodatkowe narzędzia do sprawdzania zależności kodu w Javie w pakietach
+RPM.
+
%package perlprov
-Summary: Additional utilities for checking perl provides/requires in rpm packages
+Summary: Additional utilities for checking Perl provides/requires in RPM packages
Summary(de.UTF-8): Zusatzwerkzeuge fürs Nachsehen Perl-Abhängigkeiten in RPM-Paketen
-Summary(pl.UTF-8): Dodatkowe narzędzia do sprawdzenia zależności skryptów perla w pakietach rpm
+Summary(pl.UTF-8): Dodatkowe narzędzia do sprawdzenia zależności skryptów Perla w pakietach RPM
Group: Applications/File
Requires: %{name} = %{version}-%{release}
Requires: perl-devel
Requires: perl-modules
%description perlprov
-Additional utilities for checking perl provides/requires in rpm
+Additional utilities for checking Perl provides/requires in RPM
packages.
%description perlprov -l de.UTF-8
Zusatzwerkzeuge fürs Nachsehen Perl-Abhängigkeiten in RPM-Paketen.
%description perlprov -l pl.UTF-8
-Dodatkowe narzędzia do sprawdzenia zależności skryptów perla w
-pakietach rpm.
+Dodatkowe narzędzia do sprawdzenia zależności skryptów Perla w
+pakietach RPM.
%package pythonprov
-Summary: Python macros, which simplifies creation of rpm packages with Python software
-Summary(pl.UTF-8): Makra ułatwiające tworzenie pakietów rpm z programami napisanymi w Pythonie
+Summary: Python macros, which simplifies creation of RPM packages with Python software
+Summary(pl.UTF-8): Makra ułatwiające tworzenie pakietów RPM z programami napisanymi w Pythonie
Group: Applications/File
Requires: %{name} = %{version}-%{release}
Requires: python
Requires: python-modules
%description pythonprov
-Python macros, which simplifies creation of rpm packages with Python
+Python macros, which simplifies creation of RPM packages with Python
software.
%description pythonprov -l pl.UTF-8
-Makra ułatwiające tworzenie pakietów rpm z programami napisanymi w
+Makra ułatwiające tworzenie pakietów RPM z programami napisanymi w
Pythonie.
%package php-pearprov
-Summary: Additional utilities for managing rpm packages and database
-Summary(pl.UTF-8): Dodatkowe narzędzia do sprawdzania zależności skryptów php w rpm
+Summary: Additional utilities for checking PHP PEAR provides/requires in RPM packages
+Summary(pl.UTF-8): Dodatkowe narzędzia do sprawdzania zależności skryptów php w RPM
Group: Applications/File
Requires: %{name} = %{version}-%{release}
Requires: sed >= 4.0
%description php-pearprov
-Additional utilities for checking php pear provides/requires in rpm
+Additional utilities for checking PHP PEAR provides/requires in RPM
packages.
%description php-pearprov -l pl.UTF-8
-Dodatkowe narzędzia do sprawdzenia zależności skryptów php pear w
-pakietach rpm.
+Dodatkowe narzędzia do sprawdzenia zależności skryptów PHP PEAR w
+pakietach RPM.
%package -n python-rpm
Summary: Python interface to RPM library
%patch27 -p1
%patch28 -p1
%patch29 -p1
-%patch30 -p1
%patch31 -p1
%patch32 -p1
%patch33 -p1
%patch35 -p0
%patch36 -p1
%patch37 -p1
-%patch38 -p1
-%patch39 -p1
-%patch40 -p0
%patch41 -p1
%patch42 -p1
-%patch43 -p1
%{!?with_neon:%patch44 -p1}
%patch45 -p1
%patch46 -p1
-%patch48 -p1
+%patch47 -p1
%patch49 -p1
%patch50 -p1
%patch51 -p1
#%patch52 -p1
-%patch53 -p1
-%patch54 -p1
%patch55 -p1
-%patch56 -p1
%patch57 -p1
%patch58 -p1
%patch59 -p1
-%patch60 -p0
-%patch61 -p0
+%patch60 -p1
+%ifarch sparc64
+%patch61 -p1
+%endif
%patch62 -p1
-%patch63 -p0
-%patch64 -p1
cd scripts
mv -f perl.req perl.req.in
# rpm checks for CPU type at runtime, but it looks better
sed -i -e 's|@host@|%{_target_cpu}-%{_target_vendor}-linux-gnu|' -e 's|@host_cpu@|%{_target_cpu}|' macros.in
-CPPFLAGS="-Dglob=rpm_glob -Dglobfree=rpm_globfree"; export CPPFLAGS
-
# pass CC and CXX too in case of building with some older configure macro
# disable perl-RPM2 build, we have it in separate spec
%configure \
debugedit_LDADD="\$(WITH_LIBELF_LIB) -lpopt" \
staticLDFLAGS=%{?with_static:-all-static}
-%{?with_apidocs:%{__make} doxygen}
-
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{/%{_lib},/etc/sysconfig,%{_sysconfdir}/rpm,/var/lib/banner}
pylibdir=%{py_libdir} \
pkgbindir="%{_bindir}"
-echo "%{_target_cpu}-%{_target_vendor}-linux-gnu" > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+# first platform file entry can't contain regexps
+echo "%{_target_cpu}-%{_target_vendor}-linux" > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+
+# x86_64 things
+%ifarch x86_64
+echo "amd64-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+echo "x86_64-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+%endif
+
+%ifarch amd64
+echo "amd64-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+echo "x86_64-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+%endif
+
+%ifarch ia32e
+echo "ia32e-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+echo "x86_64-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+%endif
+
+# x86 things
+%ifarch athlon %{x8664}
+echo "athlon-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+%endif
+%ifarch pentium4 athlon %{x8664}
+echo "pentium4-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+%endif
+%ifarch pentium3 pentium4 athlon %{x8664}
+echo "pentium3-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+%endif
+%ifarch i686 pentium3 pentium4 athlon %{x8664}
+echo "i686-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+%endif
+%ifarch i586 i686 pentium3 pentium4 athlon %{x8664}
+echo "i586-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+%endif
+%ifarch i486 i586 i686 pentium3 pentium4 athlon %{x8664}
+echo "i486-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+%endif
+%ifarch %{ix86} %{x8664}
+echo "i386-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+%endif
+
+# ppc
+%ifarch ppc
+echo "ppc-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+echo "powerpc-[^-]*-linux(-gnu)?" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+%endif
+
+# noarch
+echo "noarch-[^-]*-.*" >> $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
%ifarch %{ppc}
#sed -e '/_target_platform/s/[%]{_target_cpu}/ppc/' \
rm $RPM_BUILD_ROOT%{_rpmlibdir}/find-{prov,req}.pl
rm $RPM_BUILD_ROOT%{_rpmlibdir}/find-{provides,requires}.perl
+# not installed since 4.4.8 (-tools-perl subpackage)
+install scripts/rpmdiff scripts/rpmdiff.cgi $RPM_BUILD_ROOT%{_rpmlibdir}
+
install macros.perl $RPM_BUILD_ROOT%{_rpmlibdir}/macros.perl
install macros.python $RPM_BUILD_ROOT%{_rpmlibdir}/macros.python
install macros.php $RPM_BUILD_ROOT%{_rpmlibdir}/macros.php
install macros.mono $RPM_BUILD_ROOT%{_rpmlibdir}/macros.mono
+install %{SOURCE15} $RPM_BUILD_ROOT%{_rpmlibdir}/macros.java
install %{SOURCE1} doc/manual/groups
install %{SOURCE3} $RPM_BUILD_ROOT%{_rpmlibdir}/install-build-tree
install %{SOURCE7} $RPM_BUILD_ROOT%{_rpmlibdir}/compress-doc
install %{SOURCE8} $RPM_BUILD_ROOT%{_rpmlibdir}/check-files
install %{SOURCE13} $RPM_BUILD_ROOT%{_rpmlibdir}/user_group.sh
+install %{SOURCE16} $RPM_BUILD_ROOT%{_rpmlibdir}/java-find-requires
install scripts/find-php* $RPM_BUILD_ROOT%{_rpmlibdir}
install scripts/php.{prov,req} $RPM_BUILD_ROOT%{_rpmlibdir}
install %{SOURCE14} $RPM_BUILD_ROOT/etc/sysconfig/rpm
install %{SOURCE11} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo
-install rpmio/ugid.h $RPM_BUILD_ROOT%{_includedir}/rpm
-
# obsolete but still installed
rm $RPM_BUILD_ROOT%{_rpmlibdir}/rpmrc
rm -f $RPM_BUILD_ROOT%{_rpmlibdir}/{Specfile.pm,cpanflute,cpanflute2,find-provides,find-requires,freshen.sh,http.req,magic.prov,magic.req,perldeps.pl,sql.prov,sql.req,tcl.req}
# wrong location, not used anyway
rm -f $RPM_BUILD_ROOT%{_rpmlibdir}/rpm.{daily,log,xinetd}
+# manuals for utils dropped in 4.4.8 (?)
+#rm -f $RPM_BUILD_ROOT%{_mandir}/{,*/}/man8/{rpmcache,rpmgraph}.8
%find_lang %{name}
%files -f %{name}.lang
%defattr(644,root,root,755)
-%doc RPM-PGP-KEY CHANGES manual/*
+%doc CHANGES CREDITS README wdj/JBJ-GPG-KEY manual/*
%attr(755,root,root) /bin/rpm
#%attr(755,root,root) %{_bindir}/rpmdb
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/debugedit
%attr(755,root,root) %{_bindir}/rpm2cpio
-%attr(755,root,root) %{_bindir}/rpmcache
%attr(755,root,root) %{_bindir}/rpmdeps
-%attr(755,root,root) %{_bindir}/rpmdigest
-%attr(755,root,root) %{_bindir}/rpmgraph
%{!?with_system_libmagic:%attr(755,root,root) %{_bindir}/rpmfile}
%attr(755,root,root) %{_rpmlibdir}/find-debuginfo.sh
-%attr(755,root,root) %{_rpmlibdir}/rpm2cpio.sh
%attr(755,root,root) %{_rpmlibdir}/tgpg
%attr(755,root,root) %{_rpmlibdir}/rpmdb_loadcvt
%{_mandir}/man8/rpm2cpio.8*
%{_mandir}/man8/rpmdeps.8*
-%{_mandir}/man8/rpmcache.8*
-%{_mandir}/man8/rpmgraph.8*
+#%{_mandir}/man8/rpmcache.8*
+#%{_mandir}/man8/rpmgraph.8*
%lang(ja) %{_mandir}/ja/man8/rpm2cpio.8*
-%lang(ja) %{_mandir}/ja/man8/rpmcache.8*
-%lang(ja) %{_mandir}/ja/man8/rpmgraph.8*
+#%lang(ja) %{_mandir}/ja/man8/rpmcache.8*
+#%lang(ja) %{_mandir}/ja/man8/rpmgraph.8*
%lang(ko) %{_mandir}/ko/man8/rpm2cpio.8*
%lang(pl) %{_mandir}/pl/man8/rpm2cpio.8*
%lang(pl) %{_mandir}/pl/man8/rpmdeps.8*
-%lang(pl) %{_mandir}/pl/man8/rpmcache.8*
-%lang(pl) %{_mandir}/pl/man8/rpmgraph.8*
+#%lang(pl) %{_mandir}/pl/man8/rpmcache.8*
+#%lang(pl) %{_mandir}/pl/man8/rpmgraph.8*
%lang(ru) %{_mandir}/ru/man8/rpm2cpio.8*
%files utils-perl
%attr(755,root,root) %{_rpmlibdir}/mkinstalldirs
%attr(755,root,root) %{_rpmlibdir}/u_pkg.sh
%attr(755,root,root) %{_rpmlibdir}/executabledeps.sh
-# needs jar (any jdk), jcf-dump (gcc-java) to work
-%attr(755,root,root) %{_rpmlibdir}/javadeps.sh
%attr(755,root,root) %{_rpmlibdir}/libtooldeps.sh
# needs hacked pkg-config to return anything
%attr(755,root,root) %{_rpmlibdir}/pkgconfigdeps.sh
%{_rpmlibdir}/sparc*
%endif
%ifarch %{x8664}
+%{_rpmlibdir}/amd64*
+%{_rpmlibdir}/ia32e*
%{_rpmlibdir}/x86_64*
%endif
# must be here for "Requires: rpm-*prov" to work
+%{_rpmlibdir}/macros.java
%{_rpmlibdir}/macros.mono
%{_rpmlibdir}/macros.perl
%{_rpmlibdir}/macros.php
#%{_rpmlibdir}/sql.prov
#%{_rpmlibdir}/sql.req
#%{_rpmlibdir}/tcl.req
-%{_rpmlibdir}/trpm
-%attr(755,root,root) %{_bindir}/javadeps
%attr(755,root,root) %{_bindir}/gendiff
%attr(755,root,root) %{_bindir}/rpmbuild
%attr(755,root,root) %{_bindir}/adapter.awk
%attr(755,root,root) %{_bindir}/pldnotify.awk
+%files javaprov
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_rpmlibdir}/java-find-requires
+# needs jar (any jdk), jcf-dump (gcc-java) to work
+%attr(755,root,root) %{_rpmlibdir}/javadeps.sh
+
%files perlprov
%defattr(644,root,root,755)
%attr(755,root,root) %{_rpmlibdir}/perl.*