# preserving payload format and compressor from original rpm, _not_ current settings
# /usr/bin/install: cannot stat `./it.gmo': No such file or directory
# /usr/bin/install: cannot stat `./sr@Latn.gmo': No such file or directory
+# - maybe? http://rpm.org/gitweb?p=rpm.git;a=commitdiff;h=cfcd1f9bd98d5d0fc46a84931984efec3b9d47e2
+# - fix linking, rpm is beeing linked against installed rpmio
#
# Conditional build:
%bcond_with static # build static rpm+rpmi
%bcond_without apidocs # don't generate documentation with doxygen
-%bcond_with internal_db # internal db (db 4.5.20)
+%bcond_with internal_db # internal db (db 4.5.20)
%if "%{pld_release}" == "ac"
%bcond_without autoreqdep # autogenerate package name deps in addition to sonames/perl(X)
-%bcond_with nptl # internal db: don't use process-shared POSIX mutexes (NPTL provides full interface)
+%bcond_with nptl # internal db: don't use process-shared POSIX mutexes (NPTL provides full interface)
%else
-%bcond_with autoreqdep # autogenerate package name deps in addition to sonames/perl(X)
-%bcond_without nptl # internal db: don't use process-shared POSIX mutexes (NPTL provides full interface)
+%bcond_with autoreqdep # autogenerate package name deps in addition to sonames/perl(X)
+%bcond_without nptl # internal db: don't use process-shared POSIX mutexes (NPTL provides full interface)
%endif
%bcond_without python # don't build python bindings
%bcond_without selinux # build without selinux support
# 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"
+%ifarch sparc sparcv9 sparc64
+%undefine with_apidocs
+%endif
+
# versions of required libraries
%if "%{pld_release}" == "th"
+%define reqdb_pkg db4.7
%define reqdb_ver 4.7.25
%else
+%define reqdb_pkg db4.5
%define reqdb_ver 4.5.20
%endif
%define reqpopt_ver 1.10.8
%define beecrypt_ver 2:4.1.2-4
%define sover 4.5
+
Summary: RPM Package Manager
Summary(de.UTF-8): RPM Packet-Manager
Summary(es.UTF-8): Gestor de paquetes RPM
Summary(uk.UTF-8): Менеджер пакетів від RPM
Name: rpm
Version: 4.5
-Release: 12
+Release: 70
License: LGPL
Group: Base
Source0: %{name}-%{version}.tar.gz
# http://svn.pld-linux.org/banner.sh/
Source18: banner.sh
Source19: %{name}-macros.gstreamer
+Source20: macros.php
+Source21: %{name}-php-requires.php
+Patch1000: %{name}-new-debuginfo.patch
Patch1067: %{name}-disable-features.patch
Patch1070: %{name}-rpmrc-ac.patch
#Patch0: %{name}-pl.po.patch
Patch4: %{name}-perl-macros.patch
Patch6: %{name}-noexpand.patch
Patch7: %{name}-scripts-closefds.patch
+Patch8: %{name}-db.patch
Patch9: %{name}-gettext-in-header.patch
Patch10: %{name}-compress-doc.patch
Patch11: %{name}-rpm5-patchset-8074.patch
Patch12: %{name}-system_libs.patch
+Patch13: %{name}-unglobal.patch
Patch14: %{name}-etc_dir.patch
Patch15: %{name}-system_libs-more.patch
+Patch16: %{name}-libmagic-locale.patch
Patch17: %{name}-ldconfig-always.patch
Patch18: %{name}-macros-ac.patch
Patch19: %{name}-macros-th.patch
Patch36: %{name}-debuginfo.patch
Patch37: %{name}-doxygen_hack.patch
Patch39: %{name}-popt-coreutils.patch
+Patch40: %{name}-helperEVR-noassert.patch
Patch42: %{name}-old-fileconflicts-behaviour.patch
Patch43: %{name}-rpm5-patchset-8637.patch
Patch44: %{name}-no-neon.patch
Patch90: %{name}-gstreamer.patch
Patch91: %{name}-gendiff.patch
Patch92: %{name}-set-failed-on-reopen.patch
+Patch93: %{name}-debugedit-workaround.patch
+Patch94: %{name}-shescape-memfault.patch
+Patch95: %{name}-gid-uucp.patch
+Patch96: %{name}-disable-hkp.patch
+Patch97: %{name}-sigpad.patch
+Patch98: %{name}-debugdir.patch
+Patch99: %{name}-pkgconfig.patch
+Patch100: %{name}-rpm5-debugedit.patch
+Patch101: %{name}-builddir-readlink.patch
+Patch102: pythondeps-speedup.patch
+Patch103: %{name}-lua-exit-chroot-correctly.patch
+Patch104: %{name}-glob.patch
+Patch105: %{name}-am.patch
+Patch106: %{name}-automake_1.12.patch
+Patch107: %{name}-debugedit-dwarf4.patch
+Patch108: %{name}-changelog_order_check_nonfatal.patch
URL: http://rpm5.org/
BuildRequires: autoconf >= 2.57
BuildRequires: automake >= 1.4
%{!?with_internal_db:BuildRequires: db-devel >= %{reqdb_ver}}
BuildRequires: elfutils-devel >= 0.108
BuildRequires: gettext-devel >= 0.11.4-2
+BuildRequires: keyutils-devel
%{?with_system_libmagic:BuildRequires: libmagic-devel}
%{?with_selinux:BuildRequires: libselinux-devel >= 1.18}
# needed only for AM_PROG_CXX used for CXX substitution in rpm.macros
BuildRequires: libxml2-devel
BuildRequires: neon-devel >= 0.25.5
%endif
-BuildRequires: ossp-uuid-devel >= 1.6.2-6
+BuildRequires: ossp-uuid-devel >= 1.6.2-8
BuildRequires: patch >= 2.2
BuildRequires: popt-devel >= %{reqpopt_ver}
%{?with_python:BuildRequires: python-devel >= 1:2.3}
%{?with_python:BuildRequires: rpm-pythonprov}
BuildRequires: rpmbuild(macros) >= 1.351
BuildRequires: tar >= 1:1.15.1
-BuildRequires: zlib-devel
+BuildRequires: zlib-devel >= 1.2.3.3
%if %{with apidocs}
BuildRequires: doxygen
BuildRequires: ghostscript
# Require static library only for static build
BuildRequires: beecrypt-static >= %{beecrypt_ver}
BuildRequires: bzip2-static >= 1.0.2-17
-%{!?with_internal_db:BuildRequires: db-static >= %{reqdb_ver}}
+%{!?with_internal_db:BuildRequires: %{reqdb_pkg}-static >= %{reqdb_ver}}
BuildRequires: elfutils-static
BuildRequires: glibc-static >= 2.2.94
%{?with_system_libmagic:BuildRequires: libmagic-static}
%{?with_selinux:BuildRequires: libselinux-static >= 1.18}
BuildRequires: popt-static >= %{reqpopt_ver}
-BuildRequires: zlib-static
+BuildRequires: zlib-static >= 1.2.3.3
%endif
Requires: %{name}-base = %{version}-%{release}
Requires: %{name}-lib = %{version}-%{release}
Summary(pl.UTF-8): Biblioteki RPM-a
Group: Libraries
Requires: beecrypt >= %{beecrypt_ver}
-%{!?with_internal_db:Requires: db >= %{reqdb_ver}}
+%{!?with_internal_db:Requires: %{reqdb_pkg} >= %{reqdb_ver}}
%{?with_system_libmagic:Requires: libmagic >= 1.15-2}
%{?with_selinux:Requires: libselinux >= 1.18}
Requires: ossp-uuid >= 1.6.2-4
Requires: popt >= %{reqpopt_ver}
%{?with_internal_db:%{?with_nptl:Requires: uname(release) >= 2.6.0}}
-Requires: zlib >= 1.2.3
-%{?with_suggest_tags:Suggests: lzma}
+Requires: zlib >= 1.2.3.3
+%{?with_suggest_tags:Suggests: xz}
Obsoletes: rpm-libs
# avoid installing with incompatible (non-tukaani) lzma
# avoid incompatible (-M0 not supported) lzma
Requires: %{name}-lib = %{version}-%{release}
Requires: beecrypt-devel >= %{beecrypt_ver}
Requires: bzip2-devel
-%{!?with_internal_db:Requires: db-devel >= %{reqdb_ver}}
+%{!?with_internal_db:Requires: %{reqdb_pkg}-devel >= %{reqdb_ver}}
Requires: elfutils-devel
+Requires: keyutils-devel
%{?with_system_libmagic:Requires: libmagic-devel}
%{?with_selinux:Requires: libselinux-devel}
+Requires: ossp-uuid-devel >= 1.6.2-6
Requires: popt-devel >= %{reqpopt_ver}
-Requires: zlib-devel
+Requires: zlib-devel >= 1.2.3.3
%description devel
The RPM packaging system includes C libraries that make it easy to
Requires: %{name}-devel = %{version}-%{release}
Requires: beecrypt-static >= %{beecrypt_ver}
Requires: bzip2-static
-%{!?with_internal_db:Requires: db-static >= %{reqdb_ver}}
+%{!?with_internal_db:Requires: %{reqdb_pkg}-static >= %{reqdb_ver}}
Requires: elfutils-static
+Requires: keyutils-static
%{?with_system_libmagic:Requires: libmagic-static}
Requires: popt-static >= %{reqpopt_ver}
-Requires: zlib-static
+Requires: zlib-static >= 1.2.3.3
%description static
RPM static libraries.
Summary(uk.UTF-8): Скрипти та утиліти, необхідні для побудови пакетів
Group: Applications/File
Requires(pretrans): findutils
-Requires: %{name}-build-macros >= 1.486
+Requires: %{name}-build-macros >= 1.636
Requires: %{name}-utils = %{version}-%{release}
Requires: /bin/id
Requires: awk
%endif
%else
# rpmrc patch adds flags specific to gcc >= 3.4
-Requires: gcc >= 5:3.4
+Requires: gcc >= 6:4.7.0
%endif
Requires: glibc-devel
Requires: grep
Requires: gzip
-Requires: lzma
Requires: make
Requires: patch
Requires: sed
Requires: sh-utils
Requires: tar
Requires: textutils
+Requires: xz
Provides: rpmbuild(monoautodeps)
Provides: rpmbuild(noauto) = 3
%ifarch %{x8664}
%prep
%setup -q
+%patch1000 -p1
#%patch0 -p1
-%patch1 -p1
%patch2 -p1
+%patch1 -p1
%patch3 -p1
%patch4 -p1
%patch6 -p1
%patch7 -p1
+%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1 -R
%patch12 -p1
+%patch13 -p1
%patch14 -p1
+%patch16 -p1
%patch17 -p1
sed -e 's/^/@pld@/' %{SOURCE2} >>platform.in
echo '%%define __perl_provides %%{__perl} /usr/lib/rpm/perl.prov' > macros.perl
echo '%%define __perl_requires %%{__perl} /usr/lib/rpm/perl.req' >> macros.perl
echo '# obsoleted file' > macros.python
-echo '%%define __php_provides /usr/lib/rpm/php.prov' > macros.php
-echo '%%define __php_requires /usr/lib/rpm/php.req' >> macros.php
+cp -p %{SOURCE20} macros.php
echo '%%define __mono_provides /usr/lib/rpm/mono-find-provides' > macros.mono
echo '%%define __mono_requires /usr/lib/rpm/mono-find-requires' >> macros.mono
install %{SOURCE10} scripts/php.prov
%patch36 -p1
%patch37 -p1
%patch39 -p1
+%patch40 -p1
%patch42 -p1
%patch43 -p1
%patch82 -p1
%endif
%patch51 -p1
#%patch52 -p1
-%patch53 -p1
%patch55 -p1
%patch56 -p1
%patch57 -p1
%patch73 -p1
%patch74 -p1
%patch75 -p0
-%if "%{pld_release}" == "ac"
-%patch76 -p1
-%endif
+# having .py sources in -debuginfo needs more testing
+#%patch76 -p1
%patch77 -p0
%patch79 -p1
%patch80 -p1
%patch90 -p1
%patch91 -p1
%patch92 -p1
+%patch93 -p1
+%patch94 -p1
+%patch95 -p1
+%patch96 -p1
+%patch97 -p1
+%patch98 -p1
+%patch99 -p1
+%patch53 -p1
+%patch100 -p1
+%patch101 -p1
+%patch102 -p1
+%patch103 -p1
+%patch104 -p1
+%patch105 -p1
+%patch106 -p1
+%patch107 -p1
+%patch108 -p1
mv -f po/{sr,sr@Latn}.po
rm -rf sqlite zlib popt
cd ..
%endif
-# config.guess doesn't handle athlon, so we have to change it by hand.
# 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
+sed -i \
+ -e 's|@host@|%{_target_cpu}-%{_target_vendor}-%{_target_os}|' \
+ -e 's|@host_cpu@|%{_target_cpu}|' \
+ -e 's|@host_os@|%{_target_os}|' \
+ macros.in
# pass CC and CXX too in case of building with some older configure macro
# disable perl-RPM2 build, we have it in separate spec
-CPPFLAGS=-I/usr/include/oosp-uuid
+CPPFLAGS="%{rpmcppflags} -I/usr/include/ossp-uuid -I/usr/include/%{reqdb_pkg}"
%configure \
CC="%{__newcc}" \
CXX="%{__newcxx}" \
CC="%{__cc}" \
CXX="%{__cxx}" \
CPP="%{__cpp}" \
- libdb_la=%{_libdir}/libdb.la \
+ libdb_la=%{_libdir}/libdb-%(echo %{reqdb_pkg} | sed -e 's/^db//').la \
pylibdir=%{py_libdir} \
myLDFLAGS="%{rpmldflags}" \
staticLDFLAGS=%{?with_static:-all-static}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT \
staticLDFLAGS=%{?with_static:-all-static} \
- pylibdir=%{py_libdir} \
- pkgbindir="%{_bindir}"
+ pylibdir=%{py_libdir}
cat <<'EOF' > $RPM_BUILD_ROOT/etc/tmpwatch/rpm.conf
# Cleanup 90-days old repackage files.
%ifarch sparc64
sparc64-[^-]*-[Ll]inux(-gnu)?
-sparcv8-[^-]*-[Ll]inux(-gnu)?
-sparcv9-[^-]*-[Ll]inux(-gnu)?
%endif
-%ifarch sparcv9
-sparcv8-[^-]*-[Ll]inux(-gnu)?
+%ifarch sparcv9 sparc64
sparcv9-[^-]*-[Ll]inux(-gnu)?
%endif
%ifarch sparc sparcv9 sparc64
sparc-[^-]*-[Ll]inux(-gnu)?
%endif
+%ifarch armv6l
+armv6l-[^-]*-[Ll]inux(-gnu)?
+%endif
+%ifarch armv5tel
+armv5tel-[^-]*-[Ll]inux(-gnu)?
+%endif
+%ifarch armv4t armv5tel
+armv4t-[^-]*-[Ll]inux(-gnu)?
+%endif
+%ifarch armv3t armv4t armv5tel
+armv3t-[^-]*-[Ll]inux(-gnu)?
+%endif
+%ifarch armv5teb
+armv5teb-[^-]*-[Ll]inux(-gnu)?
+%endif
+%ifarch armv4b armv5teb
+armv4b-[^-]*-[Ll]inux(-gnu)?
+%endif
# noarch
noarch-[^-]*-.*
rm $RPM_BUILD_ROOT%{_rpmlibdir}/find-lang.sh
# 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 %{SOURCE16} $RPM_BUILD_ROOT%{_rpmlibdir}/macros.java
-install %{SOURCE19} $RPM_BUILD_ROOT%{_rpmlibdir}/macros.gstreamer
-
-install %{SOURCE1} doc/manual/groups
-install %{SOURCE3} $RPM_BUILD_ROOT%{_rpmlibdir}/install-build-tree
-install %{SOURCE4} $RPM_BUILD_ROOT%{_rpmlibdir}/find-spec-bcond
-install %{SOURCE7} $RPM_BUILD_ROOT%{_rpmlibdir}/compress-doc
-install %{SOURCE14} $RPM_BUILD_ROOT%{_rpmlibdir}/user_group.sh
-install %{SOURCE17} $RPM_BUILD_ROOT%{_rpmlibdir}/java-find-requires
-install scripts/php.{prov,req} $RPM_BUILD_ROOT%{_rpmlibdir}
-install %{SOURCE5} $RPM_BUILD_ROOT%{_rpmlibdir}/hrmib-cache
-install %{SOURCE15} $RPM_BUILD_ROOT/etc/sysconfig/rpm
-
-install %{SOURCE18} $RPM_BUILD_ROOT%{_bindir}/banner.sh
+install -p scripts/rpmdiff scripts/rpmdiff.cgi $RPM_BUILD_ROOT%{_rpmlibdir}
+
+cp -a macros.perl $RPM_BUILD_ROOT%{_rpmlibdir}/macros.perl
+cp -a macros.python $RPM_BUILD_ROOT%{_rpmlibdir}/macros.python
+cp -a macros.php $RPM_BUILD_ROOT%{_rpmlibdir}/macros.php
+cp -a macros.mono $RPM_BUILD_ROOT%{_rpmlibdir}/macros.mono
+cp -a %{SOURCE16} $RPM_BUILD_ROOT%{_rpmlibdir}/macros.java
+cp -a %{SOURCE19} $RPM_BUILD_ROOT%{_rpmlibdir}/macros.gstreamer
+
+install -p %{SOURCE3} $RPM_BUILD_ROOT%{_rpmlibdir}/install-build-tree
+install -p %{SOURCE4} $RPM_BUILD_ROOT%{_rpmlibdir}/find-spec-bcond
+install -p %{SOURCE7} $RPM_BUILD_ROOT%{_rpmlibdir}/compress-doc
+install -p %{SOURCE14} $RPM_BUILD_ROOT%{_rpmlibdir}/user_group.sh
+install -p %{SOURCE17} $RPM_BUILD_ROOT%{_rpmlibdir}/java-find-requires
+install -p scripts/php.{prov,req} $RPM_BUILD_ROOT%{_rpmlibdir}
+cp -p %{SOURCE21} $RPM_BUILD_ROOT%{_rpmlibdir}/php.req.php
+install -p %{SOURCE5} $RPM_BUILD_ROOT%{_rpmlibdir}/hrmib-cache
+install -p %{SOURCE18} $RPM_BUILD_ROOT%{_bindir}/banner.sh
+cp -a %{SOURCE15} $RPM_BUILD_ROOT/etc/sysconfig/rpm
install -d $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo
touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Conflictname
touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Dirnames
-install %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Filelinktos
+cp -a %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Filelinktos
touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Obsoletename
touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Providename
touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Requirename
%%_verify_file_context_path %%{nil}
# If non-zero, all erasures will be automagically repackaged.
-#%%_repackage_all_erasures 1
+#%%_repackage_all_erasures 0
# If non-zero, create debuginfo packages
-#%%_enable_debug_packages 1
+#%%_enable_debug_packages 0
# Boolean (i.e. 1 == "yes", 0 == "no") that controls whether files
# marked as %doc should be installed.
#%%_excludedocs 1
+
+# For static /dev not to update perms if upgraded and tmpfs mounted
+#%%_netsharedpath /dev/shm
EOF
cat > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.lang <<EOF
rm -rf manual
cp -a doc/manual manual
+cp -a %{SOURCE1} manual/groups
rm -f manual/Makefile*
%clean
rm -f /etc/vservers/*/apps/pkgmgmt/base/rpm/state/__*
fi
echo >&2 "You should rebuild your rpmdb: rpm --rebuilddb to avoid random rpmdb errors"
+%if "%{pld_release}" == "th"
+echo >&2 "You probably want to remove db4.5 package now"
+%endif
%triggerpostun -- %{name} < 4.4.9-44
%{_rpmlibdir}/hrmib-cache
%{_libdir}/librpmdb.la
%{_libdir}/librpmio.la
%{_includedir}/rpm
+%{_pkgconfigdir}/rpm.pc
%files static
%defattr(644,root,root,755)
%ifarch %{ppc}
%{_rpmlibdir}/ppc*
%endif
-%ifarch sparc sparc64
+%ifarch sparc sparcv9 sparc64
%{_rpmlibdir}/sparc*
%endif
%ifarch %{x8664}
%{_rpmlibdir}/ia32e*
%{_rpmlibdir}/x86_64*
%endif
+%ifarch armv6l armv5tel armv4t armv3t armv5teb armv4b
+%{_rpmlibdir}/arm*
+%endif
# must be here for "Requires: rpm-*prov" to work
%{_rpmlibdir}/macros.gstreamer
%{_rpmlibdir}/macros.java