All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 0/3] Remove RPM 4
@ 2016-03-11 14:07 Joshua Lock
  2016-03-11 14:07 ` [RFC PATCH 1/3] rpm: remove " Joshua Lock
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Joshua Lock @ 2016-03-11 14:07 UTC (permalink / raw)
  To: openembedded-core

This series removes RPM 4 and code to support it from OE Core. There are
several known issues with using RPM 4 and it seems better to acknowledge it's
unsupported by removing it from OE-Core than to leave  it in a non-functional
state.

Please review the following changes for suitability for inclusion. If you have
any objections or suggestions for improvement, please respond to the patches. If
you agree with the changes, please provide your Acked-by.

Regards,

Joshua

The following changes since commit 00d3fd571a8d261d065b43f5cf3076a381843984:

  siteinfo: Add ppc64le support. (2016-03-10 23:06:46 +0000)

are available in the git repository at:

  git://git.openembedded.org/openembedded-core-contrib joshuagl/rmrpm
  http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=joshuagl/rmrpm

Joshua Lock (3):
  rpm: remove RPM 4
  smartpm: remove rpm4 patch
  lib/package_manager: remove RPM4 support code

 meta/lib/oe/package_manager.py                     |  94 ++---
 .../smart-add-for-rpm-ignoresize-check.patch       |  20 +-
 .../python/python-smartpm/smart-rpm4-fixes.patch   |  49 ---
 meta/recipes-devtools/python/python-smartpm_git.bb |   1 -
 .../add_RPMSENSE_MISSINGOK_to_rpmmodule.patch      |  20 --
 .../rpm/rpm-4.11.2/disable_shortcircuited.patch    |  23 --
 .../rpm/rpm-4.11.2/fix_libdir.patch                |  19 -
 meta/recipes-devtools/rpm/rpm-4.11.2/pythondeps.sh |  16 -
 .../rpm/rpm-4.11.2/remove-db3-from-configure.patch |  26 --
 .../rpm/rpm-4.11.2/remove-dir-check.patch          |  23 --
 .../rpm/rpm-4.11.2/rpm-scriptetexechelp.patch      | 194 -----------
 .../rpm/rpm-4.11.2/support-suggests-tag.patch      | 384 ---------------------
 .../rpm/rpm-4.11.2/use-pkgconfig-for-python.patch  |  38 --
 meta/recipes-devtools/rpm/rpm_4.11.2.bb            | 132 -------
 14 files changed, 47 insertions(+), 992 deletions(-)
 delete mode 100644 meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/add_RPMSENSE_MISSINGOK_to_rpmmodule.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/disable_shortcircuited.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/fix_libdir.patch
 delete mode 100755 meta/recipes-devtools/rpm/rpm-4.11.2/pythondeps.sh
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/remove-db3-from-configure.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/remove-dir-check.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/rpm-scriptetexechelp.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/use-pkgconfig-for-python.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm_4.11.2.bb

-- 
2.5.0



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [RFC PATCH 1/3] rpm: remove RPM 4
  2016-03-11 14:07 [RFC PATCH 0/3] Remove RPM 4 Joshua Lock
@ 2016-03-11 14:07 ` Joshua Lock
  2016-03-11 14:07 ` [RFC PATCH 2/3] smartpm: remove rpm4 patch Joshua Lock
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Joshua Lock @ 2016-03-11 14:07 UTC (permalink / raw)
  To: openembedded-core

RPM4 support is buggy and incomplete. As we don't have the
resources or interest to maintain it this patch removes it.

Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
---
 .../add_RPMSENSE_MISSINGOK_to_rpmmodule.patch      |  20 --
 .../rpm/rpm-4.11.2/disable_shortcircuited.patch    |  23 --
 .../rpm/rpm-4.11.2/fix_libdir.patch                |  19 -
 meta/recipes-devtools/rpm/rpm-4.11.2/pythondeps.sh |  16 -
 .../rpm/rpm-4.11.2/remove-db3-from-configure.patch |  26 --
 .../rpm/rpm-4.11.2/remove-dir-check.patch          |  23 --
 .../rpm/rpm-4.11.2/rpm-scriptetexechelp.patch      | 194 -----------
 .../rpm/rpm-4.11.2/support-suggests-tag.patch      | 384 ---------------------
 .../rpm/rpm-4.11.2/use-pkgconfig-for-python.patch  |  38 --
 meta/recipes-devtools/rpm/rpm_4.11.2.bb            | 132 -------
 10 files changed, 875 deletions(-)
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/add_RPMSENSE_MISSINGOK_to_rpmmodule.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/disable_shortcircuited.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/fix_libdir.patch
 delete mode 100755 meta/recipes-devtools/rpm/rpm-4.11.2/pythondeps.sh
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/remove-db3-from-configure.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/remove-dir-check.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/rpm-scriptetexechelp.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm-4.11.2/use-pkgconfig-for-python.patch
 delete mode 100644 meta/recipes-devtools/rpm/rpm_4.11.2.bb

diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/add_RPMSENSE_MISSINGOK_to_rpmmodule.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/add_RPMSENSE_MISSINGOK_to_rpmmodule.patch
deleted file mode 100644
index b877870..0000000
--- a/meta/recipes-devtools/rpm/rpm-4.11.2/add_RPMSENSE_MISSINGOK_to_rpmmodule.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Upstream-Status: Inappropriate [OE-Specific]
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org> 
-
-diff --git a/python/rpmmodule.c b/python/rpmmodule.c
-index a4fe217..728c66c 100644
---- a/python/rpmmodule.c
-+++ b/python/rpmmodule.c
-@@ -396,6 +396,10 @@ static int initModule(PyObject *m)
-     REGISTER_ENUM(RPMSENSE_STRONG);
-     REGISTER_ENUM(RPMSENSE_CONFIG);
- 
-+#if defined(RPM_VENDOR_OE)
-+    REGISTER_ENUM(RPMSENSE_MISSINGOK);
-+#endif
-+
-     REGISTER_ENUM(RPMTRANS_FLAG_TEST);
-     REGISTER_ENUM(RPMTRANS_FLAG_BUILD_PROBS);
-     REGISTER_ENUM(RPMTRANS_FLAG_NOSCRIPTS);
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/disable_shortcircuited.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/disable_shortcircuited.patch
deleted file mode 100644
index 7a646de..0000000
--- a/meta/recipes-devtools/rpm/rpm-4.11.2/disable_shortcircuited.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Upstream-Status: Pending
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
-
-
-Index: rpm-4.11.2/build/pack.c
-===================================================================
---- rpm-4.11.2.orig/build/pack.c
-+++ rpm-4.11.2/build/pack.c
-@@ -571,9 +571,9 @@ rpmRC packageBinaries(rpmSpec spec, cons
- 	    headerPutBin(pkg->header, RPMTAG_SOURCEPKGID, spec->sourcePkgId,16);
- 	}
- 
--	if (cheating) {
--	    (void) rpmlibNeedsFeature(pkg, "ShortCircuited", "4.9.0-1");
--	}
-+//	if (cheating) {
-+//	    (void) rpmlibNeedsFeature(pkg, "ShortCircuited", "4.9.0-1");
-+//	}
- 	
- 	{   char *binFormat = rpmGetPath("%{_rpmfilename}", NULL);
- 	    char *binRpm, *binDir;
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/fix_libdir.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/fix_libdir.patch
deleted file mode 100644
index be0626c..0000000
--- a/meta/recipes-devtools/rpm/rpm-4.11.2/fix_libdir.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Upstream-Status: Inappropriate [OE-Core specific]
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
-
-
-diff --git a/installplatform b/installplatform
-index 8c3eba0..fa15e91 100755
---- a/installplatform
-+++ b/installplatform
-@@ -112,7 +112,7 @@ for ARCH in noarch `grep ^arch_canon $RPMRC | cut -d: -f2`; do
-   [ -z "$CANONARCH" ] && continue
- 
-   if [ "$OS" = "linux" ] && [ "$CANONCOLOR" = 3 ]; then
--      LIB=${LIB}64
-+      LIB=${LIB}
-   fi
- 
-   PPD="${DESTDIR}/${platformdir}/${ARCH}-${OS}"
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/pythondeps.sh b/meta/recipes-devtools/rpm/rpm-4.11.2/pythondeps.sh
deleted file mode 100755
index 083b174..0000000
--- a/meta/recipes-devtools/rpm/rpm-4.11.2/pythondeps.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-
-[ $# -ge 1 ] || {
-    cat > /dev/null
-    exit 0
-}
-
-case $1 in
--R|--requires)
-    shift
-    grep "/usr/\(lib[^/]*\|share\)/python[^/]*/" >/dev/null && echo "python"
-    exit 0
-    ;;
-esac
-
-exit 0
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/remove-db3-from-configure.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/remove-db3-from-configure.patch
deleted file mode 100644
index 2640e54..0000000
--- a/meta/recipes-devtools/rpm/rpm-4.11.2/remove-db3-from-configure.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-
-Disable configuring the db3 directory since we will be using the
-external DB provided as part of OE-Core already, no need to have
-duplicate database code.
-
-Upstream-Status: Inappropriate [OE-Core Specific]
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-
-Index: rpm-4.11.2/configure.ac
-===================================================================
---- rpm-4.11.2.orig/configure.ac
-+++ rpm-4.11.2/configure.ac
-@@ -825,9 +825,9 @@ AC_SUBST(RPMCONFIGDIR)
- 
- AC_SUBST(OBJDUMP)
- 
--if test "$with_external_db" = no; then
--    AC_CONFIG_SUBDIRS(db3)
--fi
-+#if test "$with_external_db" = no; then
-+#    AC_CONFIG_SUBDIRS(db3)
-+#fi
- 
- AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_external_db" = no])
- AM_CONDITIONAL([DOXYGEN],[test "$DOXYGEN" != no])
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/remove-dir-check.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/remove-dir-check.patch
deleted file mode 100644
index f1ecab7..0000000
--- a/meta/recipes-devtools/rpm/rpm-4.11.2/remove-dir-check.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Upstream-Status: Pending
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
-
-
-Index: rpm-4.11.2/build/files.c
-===================================================================
---- rpm-4.11.2.orig/build/files.c
-+++ rpm-4.11.2/build/files.c
-@@ -1321,12 +1321,6 @@ static rpmRC addFile(FileList fl, const
- 	}
-     }
- 
--    /* Error out when a non-directory is specified as one in spec */
--    if (fl->cur.isDir && (statp == &statbuf) && !S_ISDIR(statp->st_mode)) {
--	rpmlog(RPMLOG_ERR, _("Not a directory: %s\n"), diskPath);
--	goto exit;
--    }
--
-     /* Don't recurse into explicit %dir, don't double-recurse from fts */
-     if ((fl->cur.isDir != 1) && (statp == &statbuf) && S_ISDIR(statp->st_mode)) {
- 	return recurseDir(fl, diskPath);
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/rpm-scriptetexechelp.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/rpm-scriptetexechelp.patch
deleted file mode 100644
index 9333dea..0000000
--- a/meta/recipes-devtools/rpm/rpm-4.11.2/rpm-scriptetexechelp.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-Upstream-Status: Inappropriate [OE-Core]
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
-
-
-Index: rpm-4.11.2/lib/psm.c
-===================================================================
---- rpm-4.11.2.orig/lib/psm.c
-+++ rpm-4.11.2/lib/psm.c
-@@ -421,7 +421,8 @@ static rpmRC runScript(rpmpsm psm, ARGV_
- 
-     rpmswEnter(rpmtsOp(psm->ts, RPMTS_OP_SCRIPTLETS), 0);
-     rc = rpmScriptRun(script, arg1, arg2, sfd,
--		      prefixes, warn_only, selinux);
-+		      prefixes, warn_only, selinux, rpmtsRootDir(psm->ts) );
-+
-     rpmswExit(rpmtsOp(psm->ts, RPMTS_OP_SCRIPTLETS), 0);
- 
-     /* Map warn-only errors to "notfound" for script stop callback */
-@@ -958,15 +959,49 @@ static rpmRC rpmpsmStage(rpmpsm psm, pkg
-     case PSM_DESTROY:
- 	break;
-     case PSM_SCRIPT:	/* Run current package scriptlets. */
-+#ifdef RPM_VENDOR_OE
-+        {
-+        const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
-+	if (scriptletWrapper && *scriptletWrapper)
-+	     (void) rpmChrootOut();
-+#endif
-+
- 	rc = runInstScript(psm);
-+#ifdef RPM_VENDOR_OE
-+	if (scriptletWrapper && *scriptletWrapper)
-+	     (void) rpmChrootIn();
-+        }
-+#endif
- 	break;
-     case PSM_TRIGGERS:
- 	/* Run triggers in other package(s) this package sets off. */
-+#ifdef RPM_VENDOR_OE
-+        {
-+        const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
-+	if (scriptletWrapper && *scriptletWrapper)
-+	     (void) rpmChrootOut();
-+#endif
- 	rc = runTriggers(psm);
-+#ifdef RPM_VENDOR_OE
-+	if (scriptletWrapper && *scriptletWrapper)
-+	     (void) rpmChrootIn();
-+        }
-+#endif
- 	break;
-     case PSM_IMMED_TRIGGERS:
- 	/* Run triggers in this package other package(s) set off. */
-+#ifdef RPM_VENDOR_OE
-+	{
-+            const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
-+	    if (scriptletWrapper && *scriptletWrapper)
-+	     (void) rpmChrootOut();
-+#endif
- 	rc = runImmedTriggers(psm);
-+#ifdef RPM_VENDOR_OE
-+	    if (scriptletWrapper && *scriptletWrapper)
-+	     (void) rpmChrootIn();
-+	}
-+#endif
- 	break;
- 
-     case PSM_RPMDB_ADD: {
-Index: rpm-4.11.2/lib/rpmscript.c
-===================================================================
---- rpm-4.11.2.orig/lib/rpmscript.c
-+++ rpm-4.11.2/lib/rpmscript.c
-@@ -92,7 +92,7 @@ static rpmRC runLuaScript(int selinux, A
- static const char * const SCRIPT_PATH = "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin";
- 
- static void doScriptExec(int selinux, ARGV_const_t argv, ARGV_const_t prefixes,
--			FD_t scriptFd, FD_t out)
-+			FD_t scriptFd, FD_t out, char * rootDir )
- {
-     int pipes[2];
-     int flag;
-@@ -158,13 +158,12 @@ static void doScriptExec(int selinux, AR
- 	    setenv("RPM_INSTALL_PREFIX", *pf, 1);
- 	}
-     }
--	
--    if (chdir("/") == 0) {
-+    if (chdir(rootDir) == 0) {
- 	/* XXX Don't mtrace into children. */
- 	unsetenv("MALLOC_CHECK_");
- 
- 	/* Permit libselinux to do the scriptlet exec. */
--	if (selinux == 1) {	
-+	if (selinux == 1) {
- 	    xx = rpm_execcon(0, argv[0], argv, environ);
- 	}
- 
-@@ -175,12 +174,12 @@ static void doScriptExec(int selinux, AR
-     _exit(127); /* exit 127 for compatibility with bash(1) */
- }
- 
--static char * writeScript(const char *cmd, const char *script)
-+static char * writeScript(const char *cmd, const char *script, char * rootDir)
- {
-     char *fn = NULL;
-     size_t slen = strlen(script);
-     int ok = 0;
--    FD_t fd = rpmMkTempFile("/", &fn);
-+    FD_t fd = rpmMkTempFile(rootDir, &fn);
- 
-     if (Ferror(fd))
- 	goto exit;
-@@ -204,7 +203,7 @@ exit:
-  */
- static rpmRC runExtScript(int selinux, ARGV_const_t prefixes,
- 		   const char *sname, rpmlogLvl lvl, FD_t scriptFd,
--		   ARGV_t * argvp, const char *script, int arg1, int arg2)
-+		   ARGV_t * argvp, const char *script, int arg1, int arg2,char * rootDir)
- {
-     FD_t out = NULL;
-     char * fn = NULL;
-@@ -215,7 +214,7 @@ static rpmRC runExtScript(int selinux, A
-     rpmlog(RPMLOG_DEBUG, "%s: scriptlet start\n", sname);
- 
-     if (script) {
--	fn = writeScript(*argvp[0], script);
-+	fn = writeScript(*argvp[0], script, rootDir);
- 	if (fn == NULL) {
- 	    rpmlog(RPMLOG_ERR,
- 		   _("Couldn't create temporary file for %s: %s\n"),
-@@ -258,7 +257,7 @@ static rpmRC runExtScript(int selinux, A
-     } else if (pid == 0) {/* Child */
- 	rpmlog(RPMLOG_DEBUG, "%s: execv(%s) pid %d\n",
- 	       sname, *argvp[0], (unsigned)getpid());
--	doScriptExec(selinux, *argvp, prefixes, scriptFd, out);
-+	doScriptExec(selinux, *argvp, prefixes, scriptFd, out, rootDir);
-     }
- 
-     do {
-@@ -297,13 +296,27 @@ exit:
- }
- 
- rpmRC rpmScriptRun(rpmScript script, int arg1, int arg2, FD_t scriptFd,
--		   ARGV_const_t prefixes, int warn_only, int selinux)
-+		   ARGV_const_t prefixes, int warn_only, int selinux, char * rootDir)
- {
-     ARGV_t args = NULL;
-     rpmlogLvl lvl = warn_only ? RPMLOG_WARNING : RPMLOG_ERR;
-     rpmRC rc;
--
--    if (script == NULL) return RPMRC_OK;
-+#ifdef RPM_VENDOR_OE
-+    const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
-+#endif
-+ 
-+     if (script == NULL) return RPMRC_OK;
-+#ifdef RPM_VENDOR_OE
-+    if (scriptletWrapper && *scriptletWrapper) {
-+       argvAdd(&args, scriptletWrapper);
-+
-+       if ( rootDir ) {
-+         argvAdd(&args, rootDir);
-+       } else {
-+         argvAdd(&args, "/");
-+       }
-+    }
-+#endif
- 
-     /* construct a new argv as we can't modify the one from header */
-     if (script->args) {
-@@ -315,7 +328,7 @@ rpmRC rpmScriptRun(rpmScript script, int
-     if (rstreq(args[0], "<lua>")) {
- 	rc = runLuaScript(selinux, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2);
-     } else {
--	rc = runExtScript(selinux, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2);
-+	rc = runExtScript(selinux, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2, rootDir);
-     }
-     argvFree(args);
- 
-Index: rpm-4.11.2/lib/rpmscript.h
-===================================================================
---- rpm-4.11.2.orig/lib/rpmscript.h
-+++ rpm-4.11.2/lib/rpmscript.h
-@@ -29,7 +29,7 @@ rpmScript rpmScriptFree(rpmScript script
- 
- RPM_GNUC_INTERNAL
- rpmRC rpmScriptRun(rpmScript script, int arg1, int arg2, FD_t scriptFd,
--                   ARGV_const_t prefixes, int warn_only, int selinux);
-+                   ARGV_const_t prefixes, int warn_only, int selinux, char * rootDir);
- 
- RPM_GNUC_INTERNAL
- rpmTagVal rpmScriptTag(rpmScript script);
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch
deleted file mode 100644
index 3da6085..0000000
--- a/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch
+++ /dev/null
@@ -1,384 +0,0 @@
-
-Upstream-Status: Pending
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
-
-diff --git a/build/pack.c b/build/pack.c
-index b6b2bea..5c3d8df 100644
---- a/build/pack.c
-+++ b/build/pack.c
-@@ -273,8 +273,10 @@ static rpmTagVal depevrtags[] = {
-     RPMTAG_CONFLICTVERSION,
-     RPMTAG_ORDERVERSION,
-     RPMTAG_TRIGGERVERSION,
--    RPMTAG_SUGGESTSVERSION,
--    RPMTAG_ENHANCESVERSION,
-+    RPMTAG_SUGGESTVERSION,
-+    RPMTAG_ENHANCEVERSION,
-+    RPMTAG_RECOMMENDVERSION,
-+    RPMTAG_SUPPLEMENTVERSION,
-     0
- };
- 
-diff --git a/build/parsePreamble.c b/build/parsePreamble.c
-index 5772bef..cbbbee3 100644
---- a/build/parsePreamble.c
-+++ b/build/parsePreamble.c
-@@ -821,6 +821,10 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag,
- 	}
- 	/* fallthrough */
-     case RPMTAG_PREREQ:
-+    case RPMTAG_RECOMMENDFLAGS:
-+    case RPMTAG_SUGGESTFLAGS:
-+    case RPMTAG_SUPPLEMENTFLAGS:
-+    case RPMTAG_ENHANCEFLAGS:
-     case RPMTAG_CONFLICTFLAGS:
-     case RPMTAG_OBSOLETEFLAGS:
-     case RPMTAG_PROVIDEFLAGS:
-@@ -922,6 +926,10 @@ static struct PreambleRec_s const preambleList[] = {
-     {RPMTAG_ICON,		0, 0, LEN_AND_STR("icon")},
-     {RPMTAG_PROVIDEFLAGS,	0, 0, LEN_AND_STR("provides")},
-     {RPMTAG_REQUIREFLAGS,	2, 0, LEN_AND_STR("requires")},
-+    {RPMTAG_RECOMMENDFLAGS,	0, 0, LEN_AND_STR("recommends")},
-+    {RPMTAG_SUGGESTFLAGS,	0, 0, LEN_AND_STR("suggests")},
-+    {RPMTAG_SUPPLEMENTFLAGS,	0, 0, LEN_AND_STR("supplements")},
-+    {RPMTAG_ENHANCEFLAGS,	0, 0, LEN_AND_STR("enhances")},
-     {RPMTAG_PREREQ,		2, 1, LEN_AND_STR("prereq")},
-     {RPMTAG_CONFLICTFLAGS,	0, 0, LEN_AND_STR("conflicts")},
-     {RPMTAG_OBSOLETEFLAGS,	0, 0, LEN_AND_STR("obsoletes")},
-diff --git a/build/parseReqs.c b/build/parseReqs.c
-index ba080a1..1427111 100644
---- a/build/parseReqs.c
-+++ b/build/parseReqs.c
-@@ -61,6 +61,18 @@ rpmRC parseRCPOT(rpmSpec spec, Package pkg, const char *field, rpmTagVal tagN,
- 	nametag = RPMTAG_REQUIRENAME;
- 	tagflags |= RPMSENSE_ANY;
- 	break;
-+    case RPMTAG_RECOMMENDFLAGS:
-+	nametag = RPMTAG_RECOMMENDNAME;
-+	break;
-+    case RPMTAG_SUGGESTFLAGS:
-+	nametag = RPMTAG_SUGGESTNAME;
-+	break;
-+    case RPMTAG_SUPPLEMENTFLAGS:
-+	nametag = RPMTAG_SUPPLEMENTNAME;
-+	break;
-+    case RPMTAG_ENHANCEFLAGS:
-+	nametag = RPMTAG_ENHANCENAME;
-+	break;
-     case RPMTAG_PROVIDEFLAGS:
- 	nametag = RPMTAG_PROVIDENAME;
- 	break;
-diff --git a/build/reqprov.c b/build/reqprov.c
-index a368f42..c270af6 100644
---- a/build/reqprov.c
-+++ b/build/reqprov.c
-@@ -81,6 +81,30 @@ int addReqProv(Package pkg, rpmTagVal tagN,
- 	extra = Flags & RPMSENSE_TRIGGER;
- 	dsp = &pkg->triggers;
- 	break;
-+    case RPMTAG_RECOMMENDNAME:
-+	versiontag = RPMTAG_RECOMMENDVERSION;
-+	flagtag = RPMTAG_RECOMMENDFLAGS;
-+	extra = Flags & _ALL_REQUIRES_MASK;
-+	dsp = &pkg->recommends;
-+	break;
-+    case RPMTAG_SUGGESTNAME:
-+	versiontag = RPMTAG_SUGGESTVERSION;
-+	flagtag = RPMTAG_SUGGESTFLAGS;
-+	extra = Flags & _ALL_REQUIRES_MASK;
-+	dsp = &pkg->suggests;
-+	break;
-+    case RPMTAG_SUPPLEMENTNAME:
-+	versiontag = RPMTAG_SUPPLEMENTVERSION;
-+	flagtag = RPMTAG_SUPPLEMENTFLAGS;
-+	extra = Flags & _ALL_REQUIRES_MASK;
-+	dsp = &pkg->supplements;
-+	break;
-+    case RPMTAG_ENHANCENAME:
-+	versiontag = RPMTAG_ENHANCEVERSION;
-+	flagtag = RPMTAG_ENHANCEFLAGS;
-+	extra = Flags & _ALL_REQUIRES_MASK;
-+	dsp = &pkg->enhances;
-+	break;
-     case RPMTAG_REQUIRENAME:
-     default:
- 	tagN = RPMTAG_REQUIRENAME;
-diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h
-index a9e4c7c..0a1977f 100644
---- a/build/rpmbuild_internal.h
-+++ b/build/rpmbuild_internal.h
-@@ -93,6 +93,10 @@ struct Package_s {
-     rpmds ds;			/*!< Requires: N = EVR */
-     rpmds requires;
-     rpmds provides;
-+    rpmds recommends;
-+    rpmds suggests;
-+    rpmds supplements;
-+    rpmds enhances;
-     rpmds conflicts;
-     rpmds obsoletes;
-     rpmds triggers;
-diff --git a/build/spec.c b/build/spec.c
-index 703ec78..7ae2120 100644
---- a/build/spec.c
-+++ b/build/spec.c
-@@ -139,6 +139,11 @@ static Package freePackage(Package pkg)
-     pkg->ds = rpmdsFree(pkg->ds);
-     pkg->requires = rpmdsFree(pkg->requires);
-     pkg->provides = rpmdsFree(pkg->provides);
-+    pkg->recommends = rpmdsFree(pkg->recommends);
-+    pkg->suggests = rpmdsFree(pkg->suggests);
-+    pkg->supplements = rpmdsFree(pkg->supplements);
-+    pkg->enhances = rpmdsFree(pkg->enhances);
-+
-     pkg->conflicts = rpmdsFree(pkg->conflicts);
-     pkg->obsoletes = rpmdsFree(pkg->obsoletes);
-     pkg->triggers = rpmdsFree(pkg->triggers);
-diff --git a/lib/rpmds.c b/lib/rpmds.c
-index 7a51167..1e5dda0 100644
---- a/lib/rpmds.c
-+++ b/lib/rpmds.c
-@@ -52,6 +52,22 @@ static int dsType(rpmTagVal tag,
- 	t = "Requires";
- 	evr = RPMTAG_REQUIREVERSION;
- 	f = RPMTAG_REQUIREFLAGS;
-+    } else if (tag == RPMTAG_SUPPLEMENTNAME) {
-+	t = "Supplements";
-+	evr = RPMTAG_SUPPLEMENTVERSION;
-+	f = RPMTAG_SUPPLEMENTFLAGS;
-+    } else if (tag == RPMTAG_ENHANCENAME) {
-+	t = "Enhances";
-+	evr = RPMTAG_ENHANCEVERSION;
-+	f = RPMTAG_ENHANCEFLAGS;
-+    } else if (tag == RPMTAG_RECOMMENDNAME) {
-+	t = "Recommends";
-+	evr = RPMTAG_RECOMMENDVERSION;
-+	f = RPMTAG_RECOMMENDFLAGS;
-+    } else if (tag == RPMTAG_SUGGESTNAME) {
-+	t = "Suggests";
-+	evr = RPMTAG_SUGGESTVERSION;
-+	f = RPMTAG_SUGGESTFLAGS;
-     } else if (tag == RPMTAG_CONFLICTNAME) {
- 	t = "Conflicts";
- 	evr = RPMTAG_CONFLICTVERSION;
-diff --git a/lib/rpmtag.h b/lib/rpmtag.h
-index 64b03f1..b943229 100644
---- a/lib/rpmtag.h
-+++ b/lib/rpmtag.h
-@@ -217,14 +217,14 @@ typedef enum rpmTag_e {
-     RPMTAG_PRETRANSPROG		= 1153,	/* s[] */
-     RPMTAG_POSTTRANSPROG	= 1154,	/* s[] */
-     RPMTAG_DISTTAG		= 1155,	/* s */
--    RPMTAG_SUGGESTSNAME		= 1156,	/* s[] extension (unimplemented) */
--#define	RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME	/* s[] (unimplemented) */
--    RPMTAG_SUGGESTSVERSION	= 1157,	/* s[] extension (unimplemented) */
--    RPMTAG_SUGGESTSFLAGS	= 1158,	/* i[] extension (unimplemented) */
--    RPMTAG_ENHANCESNAME		= 1159,	/* s[] extension placeholder (unimplemented) */
--#define	RPMTAG_ENHANCES RPMTAG_ENHANCESNAME	/* s[] (unimplemented) */
--    RPMTAG_ENHANCESVERSION	= 1160,	/* s[] extension placeholder (unimplemented) */
--    RPMTAG_ENHANCESFLAGS	= 1161,	/* i[] extension placeholder (unimplemented) */
-+    RPMTAG_OLDSUGGESTSNAME	= 1156,	/* s[] (unimplemented) */
-+#define	RPMTAG_OLDSUGGESTS RPMTAG_OLDSUGGESTSNAME /* s[] (unimplemented) */
-+    RPMTAG_OLDSUGGESTSVERSION	= 1157,	/* s[] (unimplemented) */
-+    RPMTAG_OLDSUGGESTSFLAGS	= 1158,	/* i[] (unimplemented) */
-+    RPMTAG_OLDENHANCESNAME		= 1159,	/* s[] (unimplemented) */
-+#define	RPMTAG_OLDENHANCES RPMTAG_OLDENHANCESNAME /* s[] (unimplemented) */
-+    RPMTAG_OLDENHANCESVERSION	= 1160,	/* s[] (unimplemented) */
-+    RPMTAG_OLDENHANCESFLAGS	= 1161,	/* i[] (unimplemented) */
-     RPMTAG_PRIORITY		= 1162, /* i[] extension placeholder (unimplemented) */
-     RPMTAG_CVSID		= 1163, /* s (unimplemented) */
- #define	RPMTAG_SVNID	RPMTAG_CVSID	/* s (unimplemented) */
-@@ -261,6 +261,7 @@ typedef enum rpmTag_e {
-     RPMTAG_BUILDOBSOLETES	= 1194, /* internal (unimplemented) */
-     RPMTAG_DBINSTANCE		= 1195, /* i extension */
-     RPMTAG_NVRA			= 1196, /* s extension */
-+
-     /* tags 1997-4999 reserved */
-     RPMTAG_FILENAMES		= 5000, /* s[] extension */
-     RPMTAG_FILEPROVIDE		= 5001, /* s[] extension */
-@@ -307,6 +308,26 @@ typedef enum rpmTag_e {
-     RPMTAG_OBSOLETENEVRS	= 5043, /* s[] extension */
-     RPMTAG_CONFLICTNEVRS	= 5044, /* s[] extension */
-     RPMTAG_FILENLINKS		= 5045,	/* i[] extension */
-+    RPMTAG_RECOMMENDNAME	= 5046,	/* s[] */
-+#define	RPMTAG_RECOMMENDS RPMTAG_RECOMMENDNAME	/* s[] */
-+    RPMTAG_RECOMMENDVERSION	= 5047,	/* s[] */
-+    RPMTAG_RECOMMENDFLAGS	= 5048,	/* i[] */
-+    RPMTAG_SUGGESTNAME		= 5049,	/* s[] */
-+#define	RPMTAG_SUGGESTS RPMTAG_SUGGESTNAME	/* s[] */
-+    RPMTAG_SUGGESTVERSION	= 5050,	/* s[] extension */
-+    RPMTAG_SUGGESTFLAGS		= 5051,	/* i[] extension */
-+    RPMTAG_SUPPLEMENTNAME	= 5052,	/* s[] */
-+#define	RPMTAG_SUPPLEMENTS RPMTAG_SUPPLEMENTNAME /* s[] */
-+    RPMTAG_SUPPLEMENTVERSION	= 5053,	/* s[] */
-+    RPMTAG_SUPPLEMENTFLAGS	= 5054,	/* i[] */
-+    RPMTAG_ENHANCENAME		= 5055,	/* s[] */
-+#define	RPMTAG_ENHANCES RPMTAG_ENHANCENAME	/* s[] */
-+    RPMTAG_ENHANCEVERSION	= 5056,	/* s[] */
-+    RPMTAG_ENHANCEFLAGS		= 5057,	/* i[] */
-+    RPMTAG_RECOMMENDNEVRS	= 5058, /* s[] extension */
-+    RPMTAG_SUGGESTNEVRS		= 5059, /* s[] extension */
-+    RPMTAG_SUPPLEMENTNEVRS	= 5060, /* s[] extension */
-+    RPMTAG_ENHANCENEVRS		= 5061, /* s[] extension */
- 
-     RPMTAG_FIRSTFREE_TAG	/*!< internal */
- } rpmTag;
-diff --git a/lib/tagexts.c b/lib/tagexts.c
-index 29b2bae..e940310 100644
---- a/lib/tagexts.c
-+++ b/lib/tagexts.c
-@@ -761,6 +761,26 @@ static int requirenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
-     return depnevrsTag(h, td, hgflags, RPMTAG_REQUIRENAME);
- }
- 
-+static int recommendnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
-+{
-+    return depnevrsTag(h, td, hgflags, RPMTAG_RECOMMENDNAME);
-+}
-+
-+static int suggestnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
-+{
-+    return depnevrsTag(h, td, hgflags, RPMTAG_SUGGESTNAME);
-+}
-+
-+static int supplementnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
-+{
-+    return depnevrsTag(h, td, hgflags, RPMTAG_SUPPLEMENTNAME);
-+}
-+
-+static int enhancenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
-+{
-+    return depnevrsTag(h, td, hgflags, RPMTAG_ENHANCENAME);
-+}
-+
- static int providenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
- {
-     return depnevrsTag(h, td, hgflags, RPMTAG_PROVIDENAME);
-@@ -823,6 +843,10 @@ static const struct headerTagFunc_s rpmHeaderTagExtensions[] = {
-     { RPMTAG_EPOCHNUM,		epochnumTag },
-     { RPMTAG_INSTFILENAMES,	instfilenamesTag },
-     { RPMTAG_REQUIRENEVRS,	requirenevrsTag },
-+    { RPMTAG_RECOMMENDNEVRS,	recommendnevrsTag},
-+    { RPMTAG_SUGGESTNEVRS,	suggestnevrsTag},
-+    { RPMTAG_SUPPLEMENTNEVRS,	supplementnevrsTag},
-+    { RPMTAG_ENHANCENEVRS,	enhancenevrsTag},
-     { RPMTAG_PROVIDENEVRS,	providenevrsTag },
-     { RPMTAG_OBSOLETENEVRS,	obsoletenevrsTag },
-     { RPMTAG_CONFLICTNEVRS,	conflictnevrsTag },
-diff --git a/rpmpopt.in b/rpmpopt.in
-index 805599e..036ab4e 100644
---- a/rpmpopt.in
-+++ b/rpmpopt.in
-@@ -67,6 +67,19 @@ rpm	alias --requires	--qf \
- 	--POPTdesc=$"list capabilities required by package(s)"
- rpm	alias -R --requires
- 
-+rpm	alias --recommends	--qf \
-+  "[%|VERBOSE?{%{RECOMMENDFLAGS:deptype}: }:{}|%{RECOMMENDNEVRS}\n]" \
-+	--POPTdesc=$"list capabilities recommended by package(s)"
-+rpm	alias --suggests	--qf \
-+  "[%|VERBOSE?{%{SUGGESTFLAGS:deptype}: }:{}|%{SUGGESTNEVRS}\n]" \
-+	--POPTdesc=$"list capabilities suggested by package(s)"
-+rpm	alias --supplements	--qf \
-+  "[%|VERBOSE?{%{SUPPLEMENTFLAGS:deptype}: }:{}|%{SUPPLEMENTNEVRS}\n]" \
-+	--POPTdesc=$"list capabilities supplemented by package(s)"
-+rpm	alias --enhances	--qf \
-+  "[%|VERBOSE?{%{ENHANCEFLAGS:deptype}: }:{}|%{ENHANCENEVRS}\n]" \
-+	--POPTdesc=$"list capabilities enhanced by package(s)"
-+
- rpm	alias --info --qf '\
- Name        : %{NAME}\n\
- %|EPOCH?{Epoch       : %{EPOCH}\n}|\
-diff --git a/tests/data/SPECS/deptest.spec b/tests/data/SPECS/deptest.spec
-index cb4cbbd..7c47f6d 100644
---- a/tests/data/SPECS/deptest.spec
-+++ b/tests/data/SPECS/deptest.spec
-@@ -10,6 +10,10 @@ BuildArch:	noarch
- %{?provs:Provides: %{provs}}
- %{?cfls:Conflicts: %{cfls}}
- %{?obs:Obsoletes: %{obs}}
-+%{?recs:Recommends: %{recs}}
-+%{?sugs:Suggests: %{sugs}}
-+%{?sups:Supplements: %{sups}}
-+%{?ens:Enhances: %{ens}}
- 
- %description
- %{summary}
-diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at
-index 6230903..c4c954c 100644
---- a/tests/rpmbuild.at
-+++ b/tests/rpmbuild.at
-@@ -185,3 +185,25 @@ lrwxrwxrwx /opt/globtest/linkgood
- ],
- [])
- AT_CLEANUP
-+
-+# ------------------------------
-+# Check if weak and reverse requires can be built
-+AT_SETUP([Weak and reverse requires])
-+AT_KEYWORDS([build])
-+AT_CHECK([
-+
-+runroot rpmbuild -bb --quiet \
-+	--define "pkg weakdeps" \
-+	--define "recs foo > 1.2.3" \
-+	--define "sugs bar >= 0.1.2" \
-+	--define "sups baz" \
-+	--define "ens zap = 3" \
-+	  /data/SPECS/deptest.spec
-+
-+runroot rpm -qp --qf "[%{supplementname}\n]" /build/RPMS/noarch/deptest-weakdeps-1.0-1.noarch.rpm
-+],
-+[0],
-+[baz
-+],
-+[ignore])
-+AT_CLEANUP
-diff --git a/tests/rpmgeneral.at b/tests/rpmgeneral.at
-index 13131e2..80cca63 100644
---- a/tests/rpmgeneral.at
-+++ b/tests/rpmgeneral.at
-@@ -79,6 +79,11 @@ DISTTAG
- DISTURL
- DSAHEADER
- E
-+ENHANCEFLAGS
-+ENHANCENAME
-+ENHANCENEVRS
-+ENHANCES
-+ENHANCEVERSION
- EPOCH
- EPOCHNUM
- EVR
-@@ -199,6 +204,11 @@ PROVIDES
- PROVIDEVERSION
- PUBKEYS
- R
-+RECOMMENDFLAGS
-+RECOMMENDNAME
-+RECOMMENDNEVRS
-+RECOMMENDS
-+RECOMMENDVERSION
- RECONTEXTS
- RELEASE
- REMOVETID
-@@ -219,7 +229,17 @@ SOURCE
- SOURCEPACKAGE
- SOURCEPKGID
- SOURCERPM
-+SUGGESTFLAGS
-+SUGGESTNAME
-+SUGGESTNEVRS
-+SUGGESTS
-+SUGGESTVERSION
- SUMMARY
-+SUPPLEMENTFLAGS
-+SUPPLEMENTNAME
-+SUPPLEMENTNEVRS
-+SUPPLEMENTS
-+SUPPLEMENTVERSION
- TRIGGERCONDS
- TRIGGERFLAGS
- TRIGGERINDEX
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/use-pkgconfig-for-python.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/use-pkgconfig-for-python.patch
deleted file mode 100644
index 8d84cf8..0000000
--- a/meta/recipes-devtools/rpm/rpm-4.11.2/use-pkgconfig-for-python.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-
-Use pkgconfig to get the correct include paths
-
-Upstream-Status: Pending
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
-
-diff --git a/configure.ac b/configure.ac
-index e97f727..8179f44 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -540,10 +540,10 @@ esac],
- 
- AS_IF([test "$enable_python" = yes],[
-   AM_PATH_PYTHON([2.6],[
--    WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; import sys; sys.stdout.write(get_python_inc())'`
-+    WITH_PYTHON_INCLUDE=$(${PKG_CONFIG} --cflags-only-I  python)
-     WITH_PYTHON_SUBPACKAGE=1
-     save_CPPFLAGS="$CPPFLAGS"
--    CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
-+    CPPFLAGS="$CPPFLAGS $WITH_PYTHON_INCLUDE"
-     AC_CHECK_HEADER([Python.h],[],
-       [AC_MSG_ERROR([missing Python.h])
-       ])
-diff --git a/python/Makefile.am b/python/Makefile.am
-index fff51ae..f37cb9d 100644
---- a/python/Makefile.am
-+++ b/python/Makefile.am
-@@ -4,7 +4,7 @@ EXTRA_DIST = rpm/__init__.py rpm/transaction.py
- 
- AM_CPPFLAGS = -I$(top_builddir)/include/
- AM_CPPFLAGS += -I$(top_srcdir)/python
--AM_CPPFLAGS += -I@WITH_PYTHON_INCLUDE@
-+AM_CPPFLAGS += @WITH_PYTHON_INCLUDE@
- 
- pkgpyexec_LTLIBRARIES = _rpmmodule.la _rpmbmodule.la _rpmsmodule.la
- pkgpyexec_DATA = rpm/__init__.py rpm/transaction.py
diff --git a/meta/recipes-devtools/rpm/rpm_4.11.2.bb b/meta/recipes-devtools/rpm/rpm_4.11.2.bb
deleted file mode 100644
index 3683971..0000000
--- a/meta/recipes-devtools/rpm/rpm_4.11.2.bb
+++ /dev/null
@@ -1,132 +0,0 @@
-SUMMARY = "The RPM package management system"
-DESCRIPTION = "The RPM Package Manager (RPM) is a powerful command line driven \
-package management system capable of installing, uninstalling, \
-verifying, querying, and updating software packages. Each software \
-package consists of an archive of files along with information about \
-the package like its version, a description, etc."
-
-SUMMARY_${PN}-dev = "Development files for manipulating RPM packages"
-DESCRIPTION_${PN}-dev = "This package contains the RPM C library and header files. These \
-development files will simplify the process of writing programs that \
-manipulate RPM packages and databases. These files are intended to \
-simplify the process of creating graphical package managers or any \
-other tools that need an intimate knowledge of RPM packages in order \
-to function."
-
-SUMMARY_python-rpm = "Python bindings for apps which will manupulate RPM packages"
-DESCRIPTION_python-rpm = "The rpm-python package contains a module that permits applications \
-written in the Python programming language to use the interface \
-supplied by the RPM Package Manager libraries."
-
-HOMEPAGE = "http://www.rpm.org"
-LICENSE = "GPL-2.0+"
-LIC_FILES_CHKSUM ??= "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
-
-DEPENDS = "db libxml2 xz findutils file popt nss bzip2 elfutils attr zlib acl gzip python"
-DEPENDS_append_class-native = " file-replacement-native"
-
-SRC_URI += "http://rpm.org/releases/rpm-4.11.x/${BP}.tar.bz2 \
-            file://use-pkgconfig-for-python.patch \
-            file://remove-db3-from-configure.patch \
-            file://add_RPMSENSE_MISSINGOK_to_rpmmodule.patch \
-            file://support-suggests-tag.patch \
-            file://remove-dir-check.patch \
-            file://disable_shortcircuited.patch \
-            file://fix_libdir.patch \
-            file://rpm-scriptetexechelp.patch \
-            file://pythondeps.sh \
-            file://rpm-CVE-2014-8118.patch \
-            file://rpm-CVE-2013-6435.patch \
-           "
-
-SRC_URI[md5sum] = "876ac9948a88367054f8ddb5c0e87173"
-SRC_URI[sha256sum] = "403f8de632b33846ce5746f429c21a60f40dff9dcb56f1b4118f37a0652a48d4"
-
-PR = "r1"
-
-inherit autotools
-inherit pythonnative
-inherit pkgconfig
-inherit gettext
-
-EXTRA_OECONF += "--host=${HOST_SYS} \
-                 --program-prefix= \
-                 --prefix=${prefix} \
-                 --exec-prefix=${prefix} \
-                 --bindir=${prefix}/bin \
-                 --sbindir=${prefix}/sbin \
-                 --sysconfdir=${sysconfdir} \
-                 --datadir=${prefix}/share \
-                 --includedir=${prefix}/include \
-                 --libdir=${prefix}/lib \
-                 --libexecdir=${prefix}/libexec \
-                 --localstatedir=${localstatedir} \
-                 --sharedstatedir=${prefix}/com \
-                 --mandir=${mandir} \
-                 --infodir=${infodir} \
-                 --disable-dependency-tracking \
-                 --with-acl \
-                 --without-lua \
-                 --without-cap \
-                 --enable-shared \
-                 --enable-python \
-                 --with-external-db \
-                "
-
-CPPFLAGS_append = " `pkg-config --cflags nss`"
-LDFLAGS_append = " -Wl,-Bsymbolic-functions -ffunction-sections"
-CCFLAGS_append = " -fPIC "
-CXXFLAGS_append = " -fPIC "
-CFLAGS_append = " -fPIC -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE "
-
-do_configure_prepend() {
-    rm -rf sqlite
-    rm -f m4/libtool.m4
-    rm -f m4/lt*.m4
-    rm -rf db3/configure*
-}
-
-do_install_append() {
-    mv ${D}/${base_bindir}/rpm ${D}/${bindir}/
-    rmdir ${D}/${base_bindir}
-    rm -f ${D}${prefix}/lib/*.la
-    rm -f ${D}${prefix}/lib/rpm-plugins/*.la
-    rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/*.{a,la}
-    rm -f ${D}/${libdir}/python%{with_python_version}/site-packages/rpm/*.{a,la}
-    rm -fr ${D}/var
-    install -d ${D}${prefix}/lib/rpm/bin
-    ln -s ../debugedit ${D}${prefix}/lib/rpm/bin/debugedit
-    ln -s ../rpmdeps ${D}${prefix}/lib/rpm/bin/rpmdeps-oecore
-    install -m 0755 ${WORKDIR}/pythondeps.sh ${D}/${libdir}/rpm/pythondeps.sh
-}
-
-pkg_postinst_${PN}() {
-    [ "x\$D" = "x" ] && ldconfig
-    test -f ${localstatedir}/lib/rpm/Packages || rpm --initdb
-    rm -f ${localstatedir}/lib/rpm/Filemd5s \
-          ${localstatedir}/lib/rpm/Filedigests \
-          ${localstatedir}/lib/rpm/Requireversion \
-          ${localstatedir}/lib/rpm/Provideversion
-
-}
-
-pkg_postrm_${PN}() {
-    [ "x\$D" = "x" ] && ldconfig
-
-}
-
-PACKAGES += "python-${PN}"
-PROVIDES += "python-rpm"
-
-FILES_${PN} +=  "${libdir}/rpm \
-                 ${libdir}/rpm-plugins/exec.so \
-                "
-RDEPENDS_${PN} = "base-files run-postinsts"
-RDEPENDS_${PN}_class-native = ""
-
-FILES_${PN}-dev += "${libdir}/python2.7/site-packages/rpm/*.la"
-
-FILES_python-${PN} = "${libdir}/python2.7/site-packages/rpm/*"
-RDEPENDS_python-${PN} = "${PN} python"
-
-BBCLASSEXTEND = "native"
-- 
2.5.0



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [RFC PATCH 2/3] smartpm: remove rpm4 patch
  2016-03-11 14:07 [RFC PATCH 0/3] Remove RPM 4 Joshua Lock
  2016-03-11 14:07 ` [RFC PATCH 1/3] rpm: remove " Joshua Lock
@ 2016-03-11 14:07 ` Joshua Lock
  2016-03-11 14:07 ` [RFC PATCH 3/3] lib/package_manager: remove RPM4 support code Joshua Lock
  2016-03-11 17:41 ` [RFC PATCH 0/3] Remove RPM 4 Richard Purdie
  3 siblings, 0 replies; 6+ messages in thread
From: Joshua Lock @ 2016-03-11 14:07 UTC (permalink / raw)
  To: openembedded-core

The RPM4 support we added to SMART doesn't appear to work, remove
it as part of the removal of RPM4 from OE-Core.

Refresh the smart-add-for-rpm-ignoresize-check.patch which was
applied after smart-rpm4-fixes.patch and doesn't apply cleanly once
that patch is removed.

Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
---
 .../smart-add-for-rpm-ignoresize-check.patch       | 20 ++++-----
 .../python/python-smartpm/smart-rpm4-fixes.patch   | 49 ----------------------
 meta/recipes-devtools/python/python-smartpm_git.bb |  1 -
 3 files changed, 9 insertions(+), 61 deletions(-)
 delete mode 100644 meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch

diff --git a/meta/recipes-devtools/python/python-smartpm/smart-add-for-rpm-ignoresize-check.patch b/meta/recipes-devtools/python/python-smartpm/smart-add-for-rpm-ignoresize-check.patch
index 8a27f25..fe98d07 100644
--- a/meta/recipes-devtools/python/python-smartpm/smart-add-for-rpm-ignoresize-check.patch
+++ b/meta/recipes-devtools/python/python-smartpm/smart-add-for-rpm-ignoresize-check.patch
@@ -17,14 +17,15 @@ Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
  smart/backends/rpm/pm.py | 4 ++++
  1 file changed, 4 insertions(+)
 
-diff --git a/smart/backends/rpm/pm.py b/smart/backends/rpm/pm.py
-index 5da9ee6..f0488ec 100644
---- a/smart/backends/rpm/pm.py
-+++ b/smart/backends/rpm/pm.py
-@@ -241,6 +241,10 @@ class RPMPackageManager(PackageManager):
-         except AttributeError:
-             probfilter |= rpm.RPMPROB_FILTER_IGNOREARCH
- 
+Index: git/smart/backends/rpm/pm.py
+===================================================================
+--- git.orig/smart/backends/rpm/pm.py
++++ git/smart/backends/rpm/pm.py
+@@ -233,6 +233,11 @@ class RPMPackageManager(PackageManager):
+         if sysconf.get("rpm-order"):
+             ts.order()
+         probfilter = rpm.RPMPROB_FILTER_OLDPACKAGE
++
 +        if sysconf.get("rpm-ignoresize", False):
 +            probfilter |= rpm.RPMPROB_FILTER_DISKNODES
 +            probfilter |= rpm.RPMPROB_FILTER_DISKSPACE
@@ -32,6 +33,3 @@ index 5da9ee6..f0488ec 100644
          if force or reinstall:
              probfilter |= rpm.RPMPROB_FILTER_REPLACEPKG
              probfilter |= rpm.RPMPROB_FILTER_REPLACEOLDFILES
--- 
-1.9.1
-
diff --git a/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch b/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch
deleted file mode 100644
index 708ffe6..0000000
--- a/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-
-This patch checks for rpm5 related functions in order to allow rpm4 
-to work correctly. Currently the rpm4 archscore and filter work
-differently enough that they need to be changed.
-
-Upstream-Status: Inappropriate [OE-Core Specific]
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-
-Index: smart-1.4.1/smart/backends/rpm/base.py
-===================================================================
---- smart-1.4.1.orig/smart/backends/rpm/base.py
-+++ smart-1.4.1/smart/backends/rpm/base.py
-@@ -338,10 +338,14 @@ class RPMObsoletes(Depends):
- 
- _SCOREMAP = {}
- def getArchScore(arch, _sm=_SCOREMAP):
--    if arch not in _sm:
--        score = rpm.archscore(arch)
--        _sm[arch] = score
--    return _sm.get(arch, 0)
-+    try:
-+        rpm.platformscore(arch)
-+        if arch not in _sm:
-+            score = rpm.archscore(arch)
-+            _sm[arch] = score
-+        return _sm.get(arch, 0)
-+    except AttributeError:
-+        return 1
- 
- # TODO: Embed color into nameprovides and obsoletes relations.
- _COLORMAP = {"noarch": 0, "x86_64": 2, "ppc64": 2, "s390x": 2, "sparc64": 2}
-Index: smart-1.4.1/smart/backends/rpm/pm.py
-===================================================================
---- smart-1.4.1.orig/smart/backends/rpm/pm.py
-+++ smart-1.4.1/smart/backends/rpm/pm.py
-@@ -235,6 +235,12 @@ class RPMPackageManager(PackageManager):
-         if sysconf.get("rpm-order"):
-             ts.order()
-         probfilter = rpm.RPMPROB_FILTER_OLDPACKAGE
-+        try:
-+            # Test for RPM5 function
-+            rpm.platformscore("")
-+        except AttributeError:
-+            probfilter |= rpm.RPMPROB_FILTER_IGNOREARCH
-+
-         if force or reinstall:
-             probfilter |= rpm.RPMPROB_FILTER_REPLACEPKG
-             probfilter |= rpm.RPMPROB_FILTER_REPLACEOLDFILES
diff --git a/meta/recipes-devtools/python/python-smartpm_git.bb b/meta/recipes-devtools/python/python-smartpm_git.bb
index 139bfd5..d9a908d 100644
--- a/meta/recipes-devtools/python/python-smartpm_git.bb
+++ b/meta/recipes-devtools/python/python-smartpm_git.bb
@@ -19,7 +19,6 @@ SRC_URI = "\
           file://smart-channelsdir.patch \
           file://smart-attempt.patch \
           file://smart-attempt-fix.patch \
-          file://smart-rpm4-fixes.patch \
           file://smart-add-for-rpm-ignoresize-check.patch \
           file://smart-already-installed-message.patch \
           file://smart-set-noprogress-for-pycurl.patch \
-- 
2.5.0



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [RFC PATCH 3/3] lib/package_manager: remove RPM4 support code
  2016-03-11 14:07 [RFC PATCH 0/3] Remove RPM 4 Joshua Lock
  2016-03-11 14:07 ` [RFC PATCH 1/3] rpm: remove " Joshua Lock
  2016-03-11 14:07 ` [RFC PATCH 2/3] smartpm: remove rpm4 patch Joshua Lock
@ 2016-03-11 14:07 ` Joshua Lock
  2016-03-11 17:41 ` [RFC PATCH 0/3] Remove RPM 4 Richard Purdie
  3 siblings, 0 replies; 6+ messages in thread
From: Joshua Lock @ 2016-03-11 14:07 UTC (permalink / raw)
  To: openembedded-core

Simplify the RPM code by removing support for RPM 4 now that we've
dropped the RPM 4 recipe.

Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
---
 meta/lib/oe/package_manager.py | 94 +++++++++++++++++-------------------------
 1 file changed, 38 insertions(+), 56 deletions(-)

diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index b701b8c..239ae4e 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -345,7 +345,6 @@ class RpmPkgsList(PkgsList):
         except subprocess.CalledProcessError as e:
             bb.fatal("Getting rpm version failed. Command '%s' "
                      "returned %d:\n%s" % (cmd, e.returncode, e.output))
-        self.rpm_version = int(output.split()[-1].split('.')[0])
 
     '''
     Translate the RPM/Smart format names to the OE multilib format names
@@ -396,10 +395,7 @@ class RpmPkgsList(PkgsList):
     def list_pkgs(self):
         cmd = self.rpm_cmd + ' --root ' + self.rootfs_dir
         cmd += ' -D "_dbpath /var/lib/rpm" -qa'
-        if self.rpm_version == 4:
-            cmd += " --qf '[%{NAME} %{ARCH} %{VERSION}\n]'"
-        else:
-            cmd += " --qf '[%{NAME} %{ARCH} %{VERSION} %{PACKAGEORIGIN}\n]'"
+        cmd += " --qf '[%{NAME} %{ARCH} %{VERSION} %{PACKAGEORIGIN}\n]'"
 
         try:
             # bb.note(cmd)
@@ -410,11 +406,7 @@ class RpmPkgsList(PkgsList):
 
         output = dict()
         deps = dict()
-        if self.rpm_version == 4:
-            bb.warn("Dependency listings are not supported with rpm 4 since rpmresolve does not work")
-            dependencies = ""
-        else:
-            dependencies = self._list_pkg_deps()
+        dependencies = self._list_pkg_deps()
 
         # Populate deps dictionary for better manipulation
         for line in dependencies.splitlines():
@@ -439,10 +431,8 @@ class RpmPkgsList(PkgsList):
             # Skip GPG keys
             if pkg == 'gpg-pubkey':
                 continue
-            if self.rpm_version == 4:
-                pkgorigin = "unknown"
-            else:
-                pkgorigin = line.split()[3]
+
+            pkgorigin = line.split()[3]
             new_pkg, new_arch = self._pkg_translate_smart_to_oe(pkg, arch)
 
             output[new_pkg] = {"arch":new_arch, "ver":ver,
@@ -675,7 +665,6 @@ class RpmPM(PackageManager):
 
         self.indexer = RpmIndexer(self.d, self.deploy_dir)
         self.pkgs_list = RpmPkgsList(self.d, self.target_rootfs, arch_var, os_var)
-        self.rpm_version = self.pkgs_list.rpm_version
 
         self.ml_prefix_list, self.ml_os_list = self.indexer.get_ml_prefix_and_os_list(arch_var, os_var)
 
@@ -897,44 +886,41 @@ class RpmPM(PackageManager):
         # After change the __db.* cache size, log file will not be
         # generated automatically, that will raise some warnings,
         # so touch a bare log for rpm write into it.
-        if self.rpm_version == 5:
-            rpmlib_log = os.path.join(self.image_rpmlib, 'log', 'log.0000000001')
-            if not os.path.exists(rpmlib_log):
-                bb.utils.mkdirhier(os.path.join(self.image_rpmlib, 'log'))
-                open(rpmlib_log, 'w+').close()
-
-            DB_CONFIG_CONTENT = "# ================ Environment\n" \
-                "set_data_dir .\n" \
-                "set_create_dir .\n" \
-                "set_lg_dir ./log\n" \
-                "set_tmp_dir ./tmp\n" \
-                "set_flags db_log_autoremove on\n" \
-                "\n" \
-                "# -- thread_count must be >= 8\n" \
-                "set_thread_count 64\n" \
-                "\n" \
-                "# ================ Logging\n" \
-                "\n" \
-                "# ================ Memory Pool\n" \
-                "set_cachesize 0 1048576 0\n" \
-                "set_mp_mmapsize 268435456\n" \
-                "\n" \
-                "# ================ Locking\n" \
-                "set_lk_max_locks 16384\n" \
-                "set_lk_max_lockers 16384\n" \
-                "set_lk_max_objects 16384\n" \
-                "mutex_set_max 163840\n" \
-                "\n" \
-                "# ================ Replication\n"
-
-            db_config_dir = os.path.join(self.image_rpmlib, 'DB_CONFIG')
-            if not os.path.exists(db_config_dir):
-                open(db_config_dir, 'w+').write(DB_CONFIG_CONTENT)
+        rpmlib_log = os.path.join(self.image_rpmlib, 'log', 'log.0000000001')
+        if not os.path.exists(rpmlib_log):
+            bb.utils.mkdirhier(os.path.join(self.image_rpmlib, 'log'))
+            open(rpmlib_log, 'w+').close()
+
+        DB_CONFIG_CONTENT = "# ================ Environment\n" \
+            "set_data_dir .\n" \
+            "set_create_dir .\n" \
+            "set_lg_dir ./log\n" \
+            "set_tmp_dir ./tmp\n" \
+            "set_flags db_log_autoremove on\n" \
+            "\n" \
+            "# -- thread_count must be >= 8\n" \
+            "set_thread_count 64\n" \
+            "\n" \
+            "# ================ Logging\n" \
+            "\n" \
+            "# ================ Memory Pool\n" \
+            "set_cachesize 0 1048576 0\n" \
+            "set_mp_mmapsize 268435456\n" \
+            "\n" \
+            "# ================ Locking\n" \
+            "set_lk_max_locks 16384\n" \
+            "set_lk_max_lockers 16384\n" \
+            "set_lk_max_objects 16384\n" \
+            "mutex_set_max 163840\n" \
+            "\n" \
+            "# ================ Replication\n"
+
+        db_config_dir = os.path.join(self.image_rpmlib, 'DB_CONFIG')
+        if not os.path.exists(db_config_dir):
+            open(db_config_dir, 'w+').write(DB_CONFIG_CONTENT)
 
         # Create database so that smart doesn't complain (lazy init)
         opt = "-qa"
-        if self.rpm_version == 4:
-            opt = "--initdb"
         cmd = "%s --root %s --dbpath /var/lib/rpm %s > /dev/null" % (
               self.rpm_cmd, self.target_rootfs, opt)
         try:
@@ -1021,12 +1007,8 @@ class RpmPM(PackageManager):
         # If we ever run into needing more the 899 scripts, we'll have to.
         # change num to start with 1000.
         #
-        if self.rpm_version == 4:
-            scriptletcmd = "$2 $3 $4\n"
-            scriptpath = "$3"
-        else:
-            scriptletcmd = "$2 $1/$3 $4\n"
-            scriptpath = "$1/$3"
+        scriptletcmd = "$2 $1/$3 $4\n"
+        scriptpath = "$1/$3"
 
         # When self.debug_level >= 3, also dump the content of the
         # executed scriptlets and how they get invoked.  We have to
-- 
2.5.0



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH 0/3] Remove RPM 4
  2016-03-11 14:07 [RFC PATCH 0/3] Remove RPM 4 Joshua Lock
                   ` (2 preceding siblings ...)
  2016-03-11 14:07 ` [RFC PATCH 3/3] lib/package_manager: remove RPM4 support code Joshua Lock
@ 2016-03-11 17:41 ` Richard Purdie
  2016-03-14 14:40   ` Joshua G Lock
  3 siblings, 1 reply; 6+ messages in thread
From: Richard Purdie @ 2016-03-11 17:41 UTC (permalink / raw)
  To: Joshua Lock, openembedded-core

On Fri, 2016-03-11 at 14:07 +0000, Joshua Lock wrote:
> This series removes RPM 4 and code to support it from OE Core. There
> are
> several known issues with using RPM 4 and it seems better to
> acknowledge it's
> unsupported by removing it from OE-Core than to leave  it in a non
> -functional
> state.
> 
> Please review the following changes for suitability for inclusion. If
> you have
> any objections or suggestions for improvement, please respond to the
> patches. If
> you agree with the changes, please provide your Acked-by.

I think I'm in favour of removing it at this point as its not getting
much attention.

I'd note that we need to remove the QA test for it:

selftest/imagefeatures.py:    def test_rpm_version_4_support_on_image(self):

Cheers,

Richard




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC PATCH 0/3] Remove RPM 4
  2016-03-11 17:41 ` [RFC PATCH 0/3] Remove RPM 4 Richard Purdie
@ 2016-03-14 14:40   ` Joshua G Lock
  0 siblings, 0 replies; 6+ messages in thread
From: Joshua G Lock @ 2016-03-14 14:40 UTC (permalink / raw)
  To: Richard Purdie, openembedded-core

On Fri, 2016-03-11 at 17:41 +0000, Richard Purdie wrote:
> On Fri, 2016-03-11 at 14:07 +0000, Joshua Lock wrote:
> > 
> > This series removes RPM 4 and code to support it from OE Core.
> > There
> > are
> > several known issues with using RPM 4 and it seems better to
> > acknowledge it's
> > unsupported by removing it from OE-Core than to leave  it in a non
> > -functional
> > state.
> > 
> > Please review the following changes for suitability for inclusion.
> > If
> > you have
> > any objections or suggestions for improvement, please respond to
> > the
> > patches. If
> > you agree with the changes, please provide your Acked-by.
> I think I'm in favour of removing it at this point as its not getting
> much attention.
> 
> I'd note that we need to remove the QA test for it:
> 
> selftest/imagefeatures.py:    def
> test_rpm_version_4_support_on_image(self):

Right, thanks for catching this. I've pushed a patch to remove this to
the same branch, I'll submit a v2 with this removal included once the
RFC has had another day or so to collect comments.


Regards,

Joshua


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-03-14 14:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-11 14:07 [RFC PATCH 0/3] Remove RPM 4 Joshua Lock
2016-03-11 14:07 ` [RFC PATCH 1/3] rpm: remove " Joshua Lock
2016-03-11 14:07 ` [RFC PATCH 2/3] smartpm: remove rpm4 patch Joshua Lock
2016-03-11 14:07 ` [RFC PATCH 3/3] lib/package_manager: remove RPM4 support code Joshua Lock
2016-03-11 17:41 ` [RFC PATCH 0/3] Remove RPM 4 Richard Purdie
2016-03-14 14:40   ` Joshua G Lock

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.