aboutsummaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorMark Hatle <mhatle@windriver.com>2010-08-20 08:32:08 -0700
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-20 23:39:31 +0100
commit5d2e88c3c233352d5724aa87b1fb6e08ac4693b4 (patch)
tree7b7fb5a7e60f02672c18b361afd0c66b7698f049 /meta
parent6c12afd57d2d25f532285cad6ab09a37eb3f548c (diff)
downloadopenembedded-core-contrib-5d2e88c3c233352d5724aa87b1fb6e08ac4693b4.tar.gz
rpm: Update the rpm integration to support per-file dependencies
Update the RPM package integration to support per-file dependencies This adds additional configuration options to RPM, as well as provides a helper script "perfile_rpmdeps.sh" that the build system can use to gather the dependency information. Signed-off-by: Mark Hatle <mhatle@windriver.com>
Diffstat (limited to 'meta')
-rw-r--r--meta/packages/rpm/rpm/no_parentdir_ordering.patch11
-rwxr-xr-xmeta/packages/rpm/rpm/perfile_rpmdeps.sh50
-rw-r--r--meta/packages/rpm/rpm_5.1.9.bb47
3 files changed, 103 insertions, 5 deletions
diff --git a/meta/packages/rpm/rpm/no_parentdir_ordering.patch b/meta/packages/rpm/rpm/no_parentdir_ordering.patch
new file mode 100644
index 0000000000..2ceb020a4e
--- /dev/null
+++ b/meta/packages/rpm/rpm/no_parentdir_ordering.patch
@@ -0,0 +1,11 @@
+--- rpm-5.1.9/lib/depends.c.orig 2009-04-12 12:46:17.000000000 -0700
++++ rpm-5.1.9/lib/depends.c 2010-08-14 11:28:11.000000000 -0700
+@@ -2257,7 +2257,7 @@
+ #define isAuto(_x) ((_x) & _autobits)
+
+ /*@unchecked@*/
+-static int slashDepth = 100; /* #slashes pemitted in parentdir deps. */
++static int slashDepth = 0; /* #slashes pemitted in parentdir deps. */
+
+ static int countSlashes(const char * dn)
+ /*@*/
diff --git a/meta/packages/rpm/rpm/perfile_rpmdeps.sh b/meta/packages/rpm/rpm/perfile_rpmdeps.sh
new file mode 100755
index 0000000000..b72c9f0265
--- /dev/null
+++ b/meta/packages/rpm/rpm/perfile_rpmdeps.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+: ${RPMDEPS:=rpmdeps}
+
+process() {
+ while read file_name ; do
+ printf "%s\t" ${file_name}
+ if [ ! -d $file_name ]; then
+ printf "%s " $($RPMDEPS $1 $file_name | sed -e 's,rpmlib(.*,,' -e 's,\([<>\=]\+ \+[^ ]*\),(\1),g')
+ fi
+ printf "\n"
+ done
+}
+
+usage() {
+ echo "$0 {-P|--provides} {-R|--requires} FILE ..."
+}
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ --rpmdeps)
+ RPMDEPS=$2
+ shift
+ shift
+ ;;
+ -R|--requires)
+ process_type=--requires
+ shift
+ ;;
+ -P|--provides)
+ process_type=--provides
+ shift
+ ;;
+ *)
+ break;
+ ;;
+ esac
+done
+
+if [ -z "$process_type" ]; then
+ usage
+ exit 1
+fi
+
+if [ $# -gt 0 ]; then
+ find "$@" | process $process_type
+ exit $?
+fi
+
+process $process_type
diff --git a/meta/packages/rpm/rpm_5.1.9.bb b/meta/packages/rpm/rpm_5.1.9.bb
index 9ba1126533..bf8ceb6d90 100644
--- a/meta/packages/rpm/rpm_5.1.9.bb
+++ b/meta/packages/rpm/rpm_5.1.9.bb
@@ -1,11 +1,14 @@
DESCRIPTION = "The RPM Package Manager - relaunched"
+DESCRIPTION_rpm-build = "The RPM Package Manager rpmbuild and related commands."
HOMEPAGE = "http://rpm5.org/"
LICENSE = "LGPL 2.1"
-DEPENDS = "zlib perl popt beecrypt python libpcre"
-PR = "r0"
+DEPENDS = "zlib perl popt beecrypt python libpcre elfutils"
+PR = "r2"
SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.1/${BPN}-${PV}.tar.gz \
file://remove-compiled-tests.patch;apply=no \
+ file://perfile_rpmdeps.sh \
+ file://no_parentdir_ordering.patch \
"
inherit autotools gettext
@@ -19,6 +22,8 @@ EXTRA_OECONF = "--with-python=$PYTHONVER \
--with-python-lib-dir=${libdir}/python$PYTHONVER \
--with-db=internal \
--with-db-tools-integrated \
+ --with-libelf \
+ --with-file=internal \
--without-apidocs \
--without-selinux \
--without-lua \
@@ -26,12 +31,32 @@ EXTRA_OECONF = "--with-python=$PYTHONVER \
--without-efence \
--without-neon \
--with-pcre=${libdir} \
- --with-path-macros=${rpm_macros}"
+ --with-path-macros=${rpm_macros} \
+ --with-bugreport=http://bugzilla.pokylinux.org"
CFLAGS_append = " -DRPM_VENDOR_WINDRIVER"
-PACKAGES += "python-rpm"
-FILES_python-rpm = "${libdir}/python*/site-packages/rpm/_*"
+PACKAGES =+ "rpm-build python-rpm python-rpm-dbg"
+
+SOLIBS = "5.0.so"
+
+FILES_rpm-build = "${bindir}/*-rpmbuild \
+ ${bindir}/*-gendiff \
+ ${bindir}/*-rpmspecdump \
+ ${libdir}/rpm/helpers/* \
+ ${libdir}/rpm/*brp* \
+ ${libdir}/rpm/*check-files \
+ ${libdir}/rpm/*cross-build \
+ ${libdir}/rpm/*debugedit \
+ ${libdir}/rpm/*dep* \
+ ${libdir}/rpm/*prov* \
+ ${libdir}/rpm/*req* \
+ ${libdir}/rpm/*find* \
+ ${libdir}/rpm/qf/* \
+ "
+
+FILES_python-rpm = "${libdir}/python*/rpm/_*"
+FILES_python-rpm-dbg = "${libdir}/python*/rpm/.debug/_*"
# The mutex needs to be POSIX/pthreads/library or we can't
# share a database between host and target environments
@@ -78,6 +103,18 @@ INSTALL_ACTIONS_virtclass-native="sed -i -e 's,rpm,${HOST_SYS}-rpm,' ${D}/${libd
do_install_append() {
${INSTALL_ACTIONS}
sed -i -e 's,%__check_files,#%%__check_files,' ${D}/${libdir}/rpm/macros
+ sed -i -e 's,pythondeps.sh,${HOST_SYS}-pythondeps.sh,' ${D}/${libdir}/rpm/macros
+ sed -i -e 's,phpdeps.sh,${HOST_SYS}-phpdeps.sh,' ${D}/${libdir}/rpm/macros
+ sed -i -e 's,javadeps.sh,${HOST_SYS}-javadeps.sh,' ${D}/${libdir}/rpm/macros
+ sed -i -e 's,libtooldeps.sh,${HOST_SYS}-libtooldeps.sh,' ${D}/${libdir}/rpm/macros
+ sed -i -e 's,pkgconfigdeps.sh,${HOST_SYS}-pkgconfigdeps.sh,' ${D}/${libdir}/rpm/macros
+ sed -i -e 's,executabledeps.sh,${HOST_SYS}-executabledeps.sh,' ${D}/${libdir}/rpm/macros
+
+ install -m 0755 ${WORKDIR}/perfile_rpmdeps.sh ${D}/${libdir}/rpm/perfile_rpmdeps.sh
+
+ mv ${D}/${libdir}/python$PYTHONVER/rpm/${HOST_SYS}-__init__.py \
+ ${D}/${libdir}/python$PYTHONVER/rpm/__init__.py
+
}
def rpm_python_version(d):