#
# TODO:
-# - use system libmagic not internal libfmagic
-# - when really needed: _noauto{req,prov} for non-helper-generated deps
+# - consider using system libmagic not internal libfmagic
+# (but internal has different method of passing output)
+# - after ac drop amd64 patch and make x86_64 generic arch + subarchs amd64 and ia32e
#
# Conditional build:
%bcond_with static # build static rpmi (not supported at the moment)
-%bcond_without docs # don't generate documentation with doxygen
+%bcond_without doc # don't generate documentation with doxygen
%bcond_without python # don't build python bindings
+%bcond_without selinux # dont enable selinux support
# 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"
-%include /usr/lib/rpm/macros.python
-%define snap 20040107
+%include /usr/lib/rpm/macros.python
+%define snap 20040614
# versions of required libraries
%define reqdb_ver 4.2.50-1
%define reqpopt_ver 1.9
%define beecrypt_ver 3.0.0-0.20030610.1
-%define rpm_macros_rev 1.133
+%define rpm_macros_rev 1.158
Summary: RPM Package Manager
Summary(de): RPM Packet-Manager
Summary(es): Gestor de paquetes RPM
Summary(ru): íÅÎÅÄÖÅÒ ÐÁËÅÔÏ× ÏÔ RPM
Summary(uk): íÅÎÅÄÖÅÒ ÐÁËÅÔ¦× ×¦Ä RPM
Name: rpm
-%define ver 4.3
+%define ver 4.4
+%define sover 4.3
Version: %{ver}
-Release: 0.%{snap}.6
+Release: 0.%{snap}.0.3
License: GPL
Group: Base
#Source0: ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.2.x/%{name}-%{version}.%{snap}.tar.gz
Source0: ftp://distfiles.pld-linux.org/src/%{name}-%{version}.%{snap}.tar.bz2
-# Source0-md5: c1bc4a2ae441fbd4da8dd90149bab2f2
+# Source0-md5: a91b8e17f6e69208b188d2876e80aef9
Source1: %{name}.groups
Source2: %{name}.platform
Source3: %{name}-install-tree
Source30: builder
Source31: adapter.awk
Source32: pldnotify.awk
-Patch0: %{name}-pl.po.patch
Patch1: %{name}-rpmrc.patch
Patch2: %{name}-arch.patch
Patch3: %{name}-rpmpopt.patch
Patch4: %{name}-perl-macros.patch
Patch5: %{name}-perl-req-perlfile.patch
-Patch6: %{name}-glob.patch
Patch7: %{name}-noexpand.patch
Patch8: %{name}-scripts-closefds.patch
Patch9: %{name}-python-macros.patch
Patch31: %{name}-libdir64.patch
Patch32: %{name}-libdir-links.patch
Patch33: %{name}-context.patch
-Patch34: %{name}-nls-fixes.patch
Patch35: %{name}-missing-prototypes.patch
Patch36: %{name}-pld-autodep.patch
+Patch37: %{name}-rpmsq.patch
+Patch38: %{name}-file-readelf.patch
+Patch40: %{name}-epoch0.patch
+Patch41: %{name}-file-readelf-fix.patch
+Patch43: %{name}-perl_req-INC_dirs.patch
+Patch44: %{name}-debuginfo.patch
+Patch100: %{name}-pl.po.patch
URL: http://www.rpm.org/
Icon: rpm.gif
BuildRequires: autoconf >= 2.52
BuildRequires: beecrypt-devel >= %{beecrypt_ver}
BuildRequires: bzip2-devel >= 1.0.1
BuildRequires: db-devel >= %{reqdb_ver}
-%{?with_docs:BuildRequires: doxygen}
-BuildRequires: gettext-devel >= 0.11.4-2
+%{?with_doc:BuildRequires: doxygen}
BuildRequires: elfutils-devel
+BuildRequires: findutils
+BuildRequires: gettext-devel >= 0.11.4-2
#BuildRequires: libmagic-devel
-BuildRequires: libselinux-devel
+%{?with_selinux:BuildRequires: libselinux-devel}
+# needed only for AM_PROG_CXX used for CXX substitution in rpm.macros
+BuildRequires: libstdc++-devel
BuildRequires: libtool
+BuildRequires: libxml2-devel
BuildRequires: patch >= 2.2
BuildRequires: popt-devel >= %{reqpopt_ver}
%{?with_python:BuildRequires: python-devel >= 2.2}
BuildRequires: python-modules >= 2.2
+BuildRequires: readline-devel
BuildRequires: rpm-perlprov
BuildRequires: rpm-pythonprov
BuildRequires: zlib-devel
BuildRequires: glibc-static >= 2.2.94
BuildRequires: elfutils-static
#BuildRequires: libmagic-static
-BuildRequires: libselinux-static
+%{?with_selinux:BuildRequires: libselinux-static}
BuildRequires: popt-static >= %{reqpopt_ver}
BuildRequires: zlib-static
%endif
# don't require very fresh rpm.macros to build
%define __gettextize gettextize --copy --force --intl ; cp -f po/Makevars{.template,}
+%define ix86 i386 i486 i586 i686 athlon pentium3 pentium4
# stabilize new build environment
-%define __cc %{?force_cc}%{!?force_cc:%{_target_cpu}-pld-linux-gcc}
-%define __cxx %{?force_cxx}%{!?force_cxx:%{_target_cpu}-pld-linux-g++}
-%define __cpp %{?force_cpp}%{!?force_cpp:%{_target_cpu}-pld-linux-gcc -E}
+%define __newcc %{?force_cc}%{!?force_cc:%{_target_cpu}-pld-linux-gcc}
+%define __newcxx %{?force_cxx}%{!?force_cxx:%{_target_cpu}-pld-linux-g++}
+%define __newcpp %{?force_cpp}%{!?force_cpp:%{_target_cpu}-pld-linux-gcc -E}
%define _rpmlibdir /usr/lib/rpm
Requires: %{name}-lib = %{version}-%{release}
Requires: beecrypt-devel >= %{beecrypt_ver}
Requires: bzip2-devel
-Requires: db-devel
+Requires: db-devel >= %{reqdb_ver}
Requires: elfutils-devel
-Requires: libselinux-devel
+%{?with_selinux:Requires: libselinux-devel}
Requires: popt-devel >= %{reqpopt_ver}
Requires: zlib-devel
Requires: %{name}-devel = %{version}-%{release}
Requires: beecrypt-static >= %{beecrypt_ver}
Requires: bzip2-static
-Requires: db-static
+Requires: db-static >= %{reqdb_ver}
Requires: elfutils-static
Requires: popt-static >= %{reqpopt_ver}
Requires: zlib-static
Requires: /bin/id
Requires: awk
Requires: binutils
-Requires: chrpath
+Requires: chrpath >= 0.10-4
Requires: diffutils
Requires: file >= 4.01
Requires: fileutils
ÐÏÂÕÄÏ×É RPM'¦×.
%prep
-%setup -q
-%patch0 -p1
+%setup -q -n %{name}
+# UPDATE
+#%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
-%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
-%patch15 -p1
+# home-etc FIXME
+#%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch21 -p1
sed -e 's/^/@pld@/' %{SOURCE2} >>platform.in
cp -f platform.in macros.pld.in
-echo '%%define __perl_provides /usr/lib/rpm/perl.prov' > macros.perl
-echo '%%define __perl_requires /usr/lib/rpm/perl.req' >> macros.perl
+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
%patch31 -p1
%patch32 -p1
%patch33 -p1
-%patch34 -p1
%patch35 -p1
%patch36 -p1
+%patch37 -p1
+%patch38 -p1
+%patch40 -p1
+%patch41 -p1
+%patch43 -p0
+%patch44 -p1
+%patch100 -p1
cd scripts;
mv -f perl.req perl.req.in
mv -f ${f}.tmp $f
done
+# ... and make some cleanings
+rm -fr $(find ./ -type d -name CVS )
+rm -f $(find ./ -type f -name ".cvsignore" )
+
%build
cd file
%{__libtoolize}
# 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 -e 's|@host@|%{_target_cpu}-%{_target_vendor}-linux-gnu|' \
- -e 's|@host_cpu@|%{_target_cpu}|' macros.in > macros.tmp
+sed -e 's|@host@|%{_target_cpu}-%{_target_vendor}-linux-gnu|' \
+ -e 's|@host_cpu@|%{_target_cpu}|' macros.in > macros.tmp
mv -f macros.tmp macros.in
# pass CC and CXX too in case of building with some older configure macro
%configure \
- CC="%{__cc}" \
- CXX="%{__cxx}" \
- CPP="%{__cpp}" \
+ CC="%{__newcc}" \
+ CXX="%{__newcxx}" \
+ CPP="%{__newcpp}" \
--enable-shared \
--enable-static \
- %{?with_docs:--with-apidocs} \
+ %{?with_doc:--with-apidocs} \
%{?with_python:--with-python=auto} \
%{!?with_python:--without-python} \
+ %{!?with_selinux:--without-selinux} \
--without-db
# file_LDFLAGS, debugedit_LDADD - no need to link "file" and "debugedit" statically
%{__make} \
+ CC="%{__cc}" \
+ CXX="%{__cxx}" \
+ CPP="%{__cpp}" \
pylibdir=%{py_libdir} \
myLDFLAGS="%{rpmldflags}" \
file_LDFLAGS= \
install rpmio/ugid.h $RPM_BUILD_ROOT%{_includedir}/rpm
install -d $RPM_BUILD_ROOT%{_sysconfdir}/rpm
+
+%ifarch %{ix86}
+ix86re=$(echo "(%{ix86})"|sed 's/ /|/g')
+perl -p -i -e 's/^(buildarchtranslate: '"$ix86re"': ).*/\1%{_target_cpu}/' \
+ $RPM_BUILD_ROOT%{_rpmlibdir}/rpmrc
+%endif
+
cat > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros <<EOF
# customized rpm macros - global for host
#
#%%_install_langs pl_PL:en_US
%%distribution PLD
+#
+# remove or replace with file_contexts path if you want to use custom
+# SELinux file contexts policy instead of one stored in packages payload
+%%_install_file_context_path %%{nil}
+%%_verify_file_context_path %%{nil}
EOF
cat > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoprovfiles <<EOF
EOF
# for rpm -e|-U --repackage
-install -d $RPM_BUILD_ROOT/var/spool/repackage
+install -d $RPM_BUILD_ROOT/var/{spool/repackage,lock/rpm}
+touch $RPM_BUILD_ROOT/var/lock/rpm/transaction
# move libs to /lib
-for a in librpm-%{ver}.so librpmdb-%{ver}.so librpmio-%{ver}.so ; do
+for a in librpm-%{sover}.so librpmdb-%{sover}.so librpmio-%{sover}.so ; do
mv -f $RPM_BUILD_ROOT%{_libdir}/$a $RPM_BUILD_ROOT/%{_lib}
ln -s /%{_lib}/$a $RPM_BUILD_ROOT%{_libdir}/$a
done
%dir /var/lib/rpm
%dir %attr(700,root,root) /var/spool/repackage
+%dir /var/lock/rpm
+/var/lock/rpm/transaction
%dir %{_rpmlibdir}
#%attr(755,root,root) %{_rpmlibdir}/rpmd
#%attr(755,root,root) %{_rpmlibdir}/cpanflute
#%attr(755,root,root) %{_rpmlibdir}/cpanflute2
#%attr(755,root,root) %{_rpmlibdir}/Specfile.pm
-%attr(755,root,root) %{_rpmlibdir}/http.req
-%attr(755,root,root) %{_rpmlibdir}/magic.prov
-%attr(755,root,root) %{_rpmlibdir}/magic.req
%attr(755,root,root) %{_rpmlibdir}/u_pkg.sh
#%attr(755,root,root) %{_rpmlibdir}/vpkg-provides.sh
#%attr(755,root,root) %{_rpmlibdir}/vpkg-provides2.sh
%attr(755,root,root) %{_rpmlibdir}/rpmb
%attr(755,root,root) %{_rpmlibdir}/rpmt
%{_rpmlibdir}/noarch-*
-%ifarch i386 i486 i586 i686 athlon
+%ifarch %{ix86}
%{_rpmlibdir}/i?86*
+%{_rpmlibdir}/pentium*
%{_rpmlibdir}/athlon*
%endif
+%ifarch alpha
+%{_rpmlibdir}/alpha*
+%endif
%ifarch amd64
%{_rpmlibdir}/amd64*
-%{_rpmlibdir}/x86_64*
-%endif
-%ifarch sparc sparc64
-%{_rpmlibdir}/sparc*
%endif
-%ifarch alpha
-%{_rpmlibdir}/alpha*
+%ifarch ia64
+%{_rpmlibdir}/ia64*
%endif
%ifarch ppc
%{_rpmlibdir}/ppc*
%endif
+%ifarch sparc sparc64
+%{_rpmlibdir}/sparc*
+%endif
# must be here for "Requires: rpm-*prov" to work
%{_rpmlibdir}/macros.perl
%{_rpmlibdir}/macros.php
-# not used yet ...
-%{_rpmlibdir}/sql.prov
-%{_rpmlibdir}/sql.req
-%{_rpmlibdir}/tcl.req
+# not used yet ... these six depend on perl
+#%attr(755,root,root) %{_rpmlibdir}/http.req
+#%attr(755,root,root) %{_rpmlibdir}/magic.prov
+#%attr(755,root,root) %{_rpmlibdir}/magic.req
+#%{_rpmlibdir}/sql.prov
+#%{_rpmlibdir}/sql.req
+#%{_rpmlibdir}/tcl.req
%{_rpmlibdir}/trpm
%attr(755,root,root) %{_bindir}/javadeps