Revert "Modify eu-strip option to perform strip in post script of rpm package & add...
[platform/upstream/rpm.git] / packaging / rpm.spec
index 97e8f6f..9555fca 100644 (file)
@@ -1,4 +1,13 @@
+%define rpmlibdir %{_prefix}/lib
+%define rpmhome %{rpmlibdir}/rpm
+
 Name:           rpm
+Summary:        The Package Manager
+License:        GPL-2.0+
+Group:          Base/Package Management
+Version:        4.11.0.1
+Release:        0
+Url:            http://www.rpm.org
 BuildRequires:  binutils
 BuildRequires:  bzip2
 BuildRequires:  file-devel
@@ -8,49 +17,43 @@ BuildRequires:  gettext-tools
 BuildRequires:  glibc-devel
 BuildRequires:  gzip
 BuildRequires:  libacl-devel
-BuildRequires:  bzip2-devel
-BuildRequires:  libcap-devel
+BuildRequires:  libattr-devel
+BuildRequires:  pkgconfig(bzip2)
+BuildRequires:  pkgconfig(libcap)
 BuildRequires:  libelf-devel
 BuildRequires:  libtool
-BuildRequires:  lua-devel
+BuildRequires:  pkgconfig(lua)
 BuildRequires:  make
 BuildRequires:  pkgconfig(ncurses)
 BuildRequires:  patch
-BuildRequires:  popt-devel
+BuildRequires:  pkgconfig(popt)
 BuildRequires:  xz-devel
-BuildRequires:  zlib-devel
-BuildRequires:  nss-devel
-%if 0%{?enable_security}
+BuildRequires:  pkgconfig(zlib)
+BuildRequires:  pkgconfig(nss)
 BuildRequires:  uthash-devel
-BuildRequires:  libxml2-devel
-BuildRequires:  libattr-devel
-BuildRequires:  libsmack-devel
-%endif
+BuildRequires:  pkgconfig(libxml-2.0)
+BuildRequires:  pkgconfig(libsmack)
+BuildRequires:  fdupes
 
 Provides:       rpminst
-Provides:      rpm-libs
-Summary:        The RPM Package Manager
-License:        GPL-2.0+
-Group:          System/Packages
-Version:        4.10.90
-Release:        0
-Source0:        rpm-%{version}.tar.bz2
-Source1:               db-4.8.30.tar.bz2
-Source2:       db-4.8.30-integration.dif
+Provides:       rpm-libs
+
+Source1:        db-4.8.30.tar.bz2
+Source2:        db-4.8.30-integration.dif
 Source4:        rpm-tizen_macros
-Source5:        rpmsort
-Source6:        symset-table
 Source8:        rpmconfigcheck
-Source13:      find-docs.sh
-Source22:      device-sec-policy
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-#
+Source13:       find-docs.sh
+Source22:       device-sec-policy
+Source23:       find-provides.ksyms
+Source1001:     rpm.manifest
+Source0:        rpm-%{version}.tar.bz2
+
 # avoid bootstrapping problem
 %define _binary_payload w9.bzdio
 
 %description
 RPM Package Manager is the main tool for managing the software packages
-of the SuSE Linux distribution.
+of Tizen.
 
 RPM can be used to install and remove software packages. With rpm, it
 is easy to update packages.  RPM keeps track of all these manipulations
@@ -59,11 +62,8 @@ all installed packages.  RPM also supports database queries.
 
 %package devel
 Summary:        Include Files and Libraries mandatory for Development
-Group:          System/Packages
 Requires:       rpm = %{version}
-# for people confusing the one with the other
-#Recommends:     rpm-build = %{version}
-Requires:       popt-devel
+Requires:       pkgconfig(popt)
 
 %description devel
 This package contains the RPM C library and header files.  These
@@ -74,10 +74,8 @@ need an intimate knowledge of RPM packages in order to function.
 
 %package build
 Summary:        Tools and Scripts to create rpm packages
-Group:          System/Packages
 Requires:       rpm = %{version}
-Provides:       rpmbuild rpm:%_bindir/rpmbuild
-# SUSE's build essentials
+Provides:       rpmbuild rpm:%{_bindir}/rpmbuild
 Requires:       bzip2
 Requires:       xz
 Requires:       gzip
@@ -90,35 +88,43 @@ Requires:       glibc-devel
 
 %description build
 If you want to build a rpm, you need this package. It provides rpmbuild
-and requires some packages that are usually required 
+and requires some packages that are usually required
 
 %package security-plugin
 Summary: MSM security plugin for rpm
-Group: Development/Libraries
 Requires: rpm = %{version}-%{release}
-Requires: libsmack
-Requires: libxml2
-Requires: file
-Requires: uthash
+Requires: smack
 Requires: nss
 
 %description security-plugin
 This package contains the MSM security plugin for rpm that performs
-security-related functionality. 
+security-related functionality.
 
+%package -n python-rpm
+Summary: Python Bindings for Manipulating RPM Packages
+Requires:       rpm = %{version}
+BuildRequires:  pkgconfig(python)
+
+%description -n python-rpm
+The python-rpm package contains a module that permits applications
+written in the Python programming language to use the interface
+supplied by RPM Package Manager libraries.
+
+This package should be installed if you want to develop Python programs
+that will manipulate RPM packages and databases.
 
 %prep
 %setup -q -n rpm-%{version}
+cp %{SOURCE1001} .
 rm -rf sqlite
 tar xjf %{S:1}
-ln -s db-4.8.30 db
+ln -sfn db-4.8.30 db
 chmod -R u+w db/*
 # will get linked from db3
 rm -f rpmdb/db.h
 patch -p0 < %{S:2}
-
-if [ -s /etc/rpm/tizen_macros ]; then
-       cp -a /etc/rpm/tizen_macros %{SOURCE4}
+if [ -s %{_sysconfdir}/rpm/tizen_macros ]; then
+    cp -a %{_sysconfdir}/rpm/tizen_macros %{SOURCE4}
 fi
 cp -a %{SOURCE4} tizen_macros
 rm -f m4/libtool.m4
@@ -126,145 +132,195 @@ rm -f m4/lt*.m4
 
 %build
 CPPFLAGS="$CPPFLAGS `pkg-config --cflags nss`"
-export CPPFLAGS 
+export CPPFLAGS
 export CFLAGS="%{optflags} -ffunction-sections"
-export LDFLAGS="-Wl,-Bsymbolic-functions -ffunction-sections"
+export LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic-functions -ffunction-sections"
 %ifarch armv5tel
 export CFLAGS="-g -O0 -fno-strict-aliasing -ffunction-sections"
 %endif
 
-%if %{_target_cpu}
-%ifarch %arm
-BUILDTARGET="--build=%{_target_cpu}-tizen-linux-gnueabi"
-%else
-BUILDTARGET="--build=%{_target_cpu}-tizen-linux"
-%endif
-%endif
-
-autoreconf -i -f
-./configure --disable-dependency-tracking --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
---libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var  --with-lua \
---with-acl --with-cap  --enable-shared %{?with_python: --enable-python} $BUILDTARGET
+%reconfigure \
+    --disable-dependency-tracking \
+    --with-lua \
+    --with-acl \
+    --with-cap \
+    --enable-shared \
+    --enable-python \
+    --with-vendor=tizen \
+    --with-msm 
 
 make %{?_smp_mflags}
 
 %install
-mkdir -p %{buildroot}/usr/lib
-mkdir -p %{buildroot}/usr/share/locale
-ln -s ../share/locale %{buildroot}/usr/lib/locale
+mkdir -p %{buildroot}%{rpmlibdir}
+mkdir -p %{buildroot}%{_datadir}/locale
+ln -s ../share/locale %{buildroot}%{rpmlibdir}/locale
 %make_install
-install -m 644 db3/db.h %{buildroot}/usr/include/rpm
-# remove .la file and the static variant of libpopt
-# have to remove the dependency from other .la files as well
-#for f in %{buildroot}/%{_libdir}/*.la; do
-#    sed -i -e "s,/%_lib/libpopt.la,-lpopt,g" $f
-#done
+install -m 644 db3/db.h %{buildroot}%{_includedir}/rpm
 mkdir -p %{buildroot}%{_sysconfdir}/rpm
-cp -a tizen_macros %{buildroot}/usr/lib/rpm
-mkdir -p %{buildroot}/usr/lib/rpm/tizen
-install -m 755 %{SOURCE13} %{buildroot}/usr/lib/rpm/tizen
-%if 0%{?enable_security}
-install -m 644 %{SOURCE22} ${RPM_BUILD_ROOT}%{_sysconfdir}/device-sec-policy
-%endif
-ln -s ../tizen_macros %{buildroot}/usr/lib/rpm/tizen/macros
+cp -a tizen_macros %{buildroot}%{rpmhome}
+mkdir -p %{buildroot}%{rpmhome}/tizen
+install -m 755 %{SOURCE13} %{buildroot}%{rpmhome}/tizen
+install -m 755 %{SOURCE23} %{buildroot}%{rpmhome}
+install -m 644 %{SOURCE22} %{buildroot}%{_sysconfdir}/device-sec-policy
+install -m 644 %{SOURCE22} %{buildroot}%{__plugindir}/msm-device-sec-policy
+ln -s ../tizen_macros %{buildroot}%{rpmhome}/tizen/macros
 for d in BUILD RPMS SOURCES SPECS SRPMS BUILDROOT ; do
-  mkdir -p %{buildroot}/usr/src/packages/$d
-  chmod 755 %{buildroot}/usr/src/packages/$d
+  mkdir -p %{buildroot}%{_usrsrc}/packages/$d
+  chmod 755 %{buildroot}%{_usrsrc}/packages/$d
 done
-for d in %{buildroot}/usr/lib/rpm/platform/*-linux/macros ; do
+for d in %{buildroot}%{rpmhome}/platform/*-linux/macros ; do
   dd=${d%%-linux/macros}
   dd=${dd##*/}
-  mkdir %{buildroot}/usr/src/packages/RPMS/$dd
-  chmod 755 %{buildroot}/usr/src/packages/RPMS/$dd
+  mkdir -p %{buildroot}%{_usrsrc}/packages/RPMS/$dd
+  chmod 755 %{buildroot}%{_usrsrc}/packages/RPMS/$dd
 done
-mkdir -p %{buildroot}/var/lib/rpm
-gzip -9 %{buildroot}/%{_mandir}/man[18]/*.[18]
+mkdir -p %{buildroot}%{_localstatedir}/lib/rpm
+gzip -9 %{buildroot}%{_mandir}/man[18]/*.[18]
 export RPM_BUILD_ROOT
 chmod 755 doc/manual
 rm -rf doc/manual/Makefile*
-rm -f %{buildroot}/usr/lib/rpmpopt
+rm -f %{buildroot}%{rpmlibdir}/rpmpopt
 rm -rf %{buildroot}%{_mandir}/{fr,ja,ko,pl,ru,sk}
-rm -f %{buildroot}%{_prefix}/share/locale/de/LC_MESSAGES/rpm.mo
-rm -f %{buildroot}/usr/lib/rpm/cpanflute %{buildroot}/usr/lib/rpm/cpanflute2
-install -m 755 %{SOURCE5} %{buildroot}/usr/lib/rpm
-install -m 755 %{SOURCE6} %{buildroot}/usr/lib/rpm
-install -m 755 scripts/find-supplements{,.ksyms} %{buildroot}/usr/lib/rpm
-install -m 755 scripts/firmware.prov %{buildroot}/usr/lib/rpm
-install -m 755 scripts/debuginfo.prov %{buildroot}/usr/lib/rpm
-rm -f %{buildroot}/usr/lib/locale %{buildroot}/usr/lib/rpmrc
-mkdir -p %{buildroot}/etc/rpm
-chmod 755 %{buildroot}/etc/rpm
+rm -f %{buildroot}%{_datadir}/locale/de/LC_MESSAGES/rpm.mo
+rm -f %{buildroot}%{rpmhome}/cpanflute %{buildroot}%{rpmhome}/cpanflute2
+install -m 755 scripts/find-supplements %{buildroot}%{rpmhome}
+install -m 755 scripts/find-supplements.ksyms %{buildroot}%{rpmhome}
+install -m 755 scripts/firmware.prov %{buildroot}%{rpmhome}
+install -m 755 scripts/debuginfo.prov %{buildroot}%{rpmhome}
+rm -f %{buildroot}%{rpmlibdir}/locale %{buildroot}%{rpmlibdir}/rpmrc
+mkdir -p %{buildroot}%{_sysconfdir}/rpm
+chmod 755 %{buildroot}%{_sysconfdir}/rpm
+mkdir -p %{buildroot}%{rpmhome}/macros.d
 # remove some nonsense or non-working scripts
-pushd %{buildroot}/usr/lib/rpm/
 for f in rpm2cpio.sh rpm.daily rpmdiff* rpm.log rpm.xinetd freshen.sh u_pkg.sh \
          magic magic.mgc magic.mime* rpmfile *.pl javadeps brp-redhat \
          brp-strip-static-archive vpkg-provides*.sh http.req sql.req tcl.req \
          rpmdb_* brp-sparc64-linux brp-strip-comment-note brp-java-gcjcompile
 do
-    rm -f $f
+    rm -f %{buildroot}%{rpmhome}/$f
 done
-for i in /usr/share/automake-*/*; do
-  if test -f "$i" && test -f "${i##*/}"; then
-    rm -f "${i##*/}"
+for i in %{_datadir}/automake-*/*; do
+  if test -f "$i" && test -f %{buildroot}%{rpmhome}/"${i##*/}"; then
+    rm -f %{buildroot}%{rpmhome}/"${i##*/}"
   fi
 done
-popd
-gzip -9 CHANGES
-rm -rf %{buildroot}/%{_libdir}/python%{py_ver}
+%ifarch aarch64 ppc64le
+install -m 755 config.guess %{buildroot}/usr/lib/rpm
+install -m 755 config.sub %{buildroot}/usr/lib/rpm
+%endif
 rm -f %{buildroot}%{_libdir}/*.la
-rm -f %{buildroot}%{_libdir}/rpm-plugins/*.la
-sh %{buildroot}/usr/lib/rpm/find-lang.sh %{buildroot} rpm
-%ifarch armv7hl
-# rpm is using the host_cpu as default for the platform, but armv7hl is not known by the kernel.
+rm -f %{buildroot}%{__plugindir}/*.la
+
+%fdupes %{buildroot}%{rpmhome}/platform
+
+sh %{buildroot}%{rpmhome}/find-lang.sh %{buildroot} rpm
+
+%ifarch armv7hl armv7l
+# rpm is using the host_cpu as default for the platform,
+#but armv7hl is not known by the kernel.
 # so we need to enforce the platform here.
-# We don't want to use armv7l because it would make us incompatible to Fedora and MeeGo plattforms.
-echo -n armv7hl-suse-linux> %{buildroot}/etc/rpm/platform
+echo -n %{_target_cpu}-tizen-linux-gnueabi > %{buildroot}%{_sysconfdir}/rpm/platform
 %endif
 
 %post
-test -f var/lib/rpm/Packages || rpm --initdb
-rm -f var/lib/rpm/Filemd5s var/lib/rpm/Filedigests var/lib/rpm/Requireversion var/lib/rpm/Provideversion
+/sbin/ldconfig
+test -f %{_dbpath}/Packages || rpm --initdb
+rm -f %{_dbpath}/Filemd5s \
+      %{_dbpath}/Filedigests \
+      %{_dbpath}/Requireversion \
+      %{_dbpath}/Provideversion
 
+%postun
+/sbin/ldconfig
 
-%files -f rpm.lang
+%files
+%manifest %{name}.manifest
 %defattr(-,root,root)
-%doc   COPYING GROUPS
-       /etc/rpm
-       /bin/rpm
-       /usr/bin/*
-        %exclude /usr/bin/rpmbuild
-       /usr/lib/rpm
-%dir   %{_libdir}/rpm-plugins
-       %{_libdir}/rpm-plugins/exec.so
-       %{_libdir}/librpm.so.*
-       %{_libdir}/librpmbuild.so.*
-       %{_libdir}/librpmio.so.*
-       %{_libdir}/librpmsign.so.*
-%doc   %{_mandir}/man[18]/*.[18]*
-%dir   /var/lib/rpm
-%dir   %attr(755,root,root) /usr/src/packages/BUILD
-%dir   %attr(755,root,root) /usr/src/packages/SPECS
-%dir   %attr(755,root,root) /usr/src/packages/SOURCES
-%dir   %attr(755,root,root) /usr/src/packages/SRPMS
-%dir   %attr(755,root,root) /usr/src/packages/RPMS
-%dir   %attr(755,root,root) /usr/src/packages/BUILDROOT
-%dir   %attr(755,root,root) /usr/src/packages/RPMS/*
+%license COPYING
+%{_sysconfdir}/rpm
+/bin/rpm
+%{_bindir}/rpm2cpio
+%{_bindir}/rpmdb
+%{_bindir}/rpmkeys
+%{_bindir}/rpmquery
+%{_bindir}/rpmverify
+%{_bindir}/rpmqpack
+%attr(0755, root, root) %dir %{rpmhome}
+%{rpmhome}/macros
+%{rpmhome}/macros.d
+%{rpmhome}/rpmpopt*
+%{rpmhome}/rpmrc
+%{rpmhome}/tizen/macros
+%{rpmhome}/tizen_macros
+%{rpmhome}/rpm.supp
+%{rpmhome}/tgpg
+%{rpmhome}/platform
+%dir    %{__plugindir}
+%{__plugindir}/exec.so
+%{_libdir}/librpm.so.*
+%{_libdir}/librpmio.so.*
+%{_libdir}/librpmbuild.so.*
+%{_libdir}/librpmsign.so.*
+%dir    %{_localstatedir}/lib/rpm
+%dir    %attr(755,root,root) %{_usrsrc}/packages/BUILD
+%dir    %attr(755,root,root) %{_usrsrc}/packages/SPECS
+%dir    %attr(755,root,root) %{_usrsrc}/packages/SOURCES
+%dir    %attr(755,root,root) %{_usrsrc}/packages/SRPMS
+%dir    %attr(755,root,root) %{_usrsrc}/packages/RPMS
+%dir    %attr(755,root,root) %{_usrsrc}/packages/BUILDROOT
+%dir    %attr(755,root,root) %{_usrsrc}/packages/RPMS/*
 
 %files build
+%manifest %{name}.manifest
 %defattr(-,root,root)
-/usr/bin/rpmbuild
+%{_bindir}/rpmbuild
+%{_bindir}/gendiff
+%{_bindir}/rpmspec
+%{_bindir}/rpmsign
+%{rpmhome}/tizen/find-*
+%{rpmhome}/brp-*
+%{rpmhome}/find-supplements*
+%{rpmhome}/check-*
+%{rpmhome}/debugedit
+%{rpmhome}/find-debuginfo.sh
+%{rpmhome}/find-lang.sh
+%{rpmhome}/find-provides.ksyms
+%{rpmhome}/*provides*
+%{rpmhome}/*requires*
+%{rpmhome}/*deps*
+%{rpmhome}/*.prov
+%{rpmhome}/*.req
+%{rpmhome}/macros.*
+%{rpmhome}/fileattrs
+%ifarch aarch64 ppc64le
+%{rpmhome}/config.*
+%endif
 
 %files devel
+%manifest %{name}.manifest
 %defattr(644,root,root,755)
-       /usr/include/rpm
-        %{_libdir}/librpm.so
-        %{_libdir}/librpmbuild.so
-        %{_libdir}/librpmio.so
-        %{_libdir}/librpmsign.so
-        %{_libdir}/pkgconfig/rpm.pc
-%if 0%{?enable_security}
+%attr(755,root,root) %{_bindir}/rpmgraph
+%{_includedir}/rpm
+%{_libdir}/librpm.so
+%{_libdir}/librpmbuild.so
+%{_libdir}/librpmio.so
+%{_libdir}/librpmsign.so
+%{_libdir}/pkgconfig/rpm.pc
+
 %files security-plugin
+%manifest %{name}.manifest
 %defattr(-,root,root)
-%{_libdir}/rpm-plugins/msm.so
+%{__plugindir}/msm.so
+%{__plugindir}/msm-device-sec-policy
 %config(noreplace) %{_sysconfdir}/device-sec-policy
-%endif
+
+%files -n python-rpm
+%defattr(-,root,root)
+%{python_sitearch}/rpm
+%attr(755,root,root) %{python_sitearch}/rpm/transaction.py
+
+%lang_package
+
+%docs_package
+%doc     GROUPS