From 756e499a95cc928688684cc52bde8e31306e6bbc Mon Sep 17 00:00:00 2001 From: Saul Wold Date: Tue, 30 Sep 2014 10:16:53 -0700 Subject: python-smartpm: Add patches for rpm4 Add DEPENDS for python-rpm package from either rpm4 or rpm5 Extend the smart-dflags patch to catch an exception if the api does exist Signed-off-by: Saul Wold Signed-off-by: Richard Purdie --- .../python/python-smartpm/smart-dflags.patch | 53 ++++++++++++---------- .../python/python-smartpm/smart-rpm4-fixes.patch | 49 ++++++++++++++++++++ .../python/python-smartpm_1.4.1.bb | 5 +- 3 files changed, 81 insertions(+), 26 deletions(-) create mode 100644 meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch (limited to 'meta/recipes-devtools') diff --git a/meta/recipes-devtools/python/python-smartpm/smart-dflags.patch b/meta/recipes-devtools/python/python-smartpm/smart-dflags.patch index 3f27262156..531ea51cad 100644 --- a/meta/recipes-devtools/python/python-smartpm/smart-dflags.patch +++ b/meta/recipes-devtools/python/python-smartpm/smart-dflags.patch @@ -7,34 +7,39 @@ Upstream-Status: Pending Signed-off-by: Paul Eggleton -diff --git a/smart/backends/rpm/pm.py b/smart/backends/rpm/pm.py -index 707a146..aec82e7 100644 ---- a/smart/backends/rpm/pm.py -+++ b/smart/backends/rpm/pm.py -@@ -106,6 +106,23 @@ class RPMPackageManager(PackageManager): +[sgw - Added try/catch for rpm4 since it does not have setDFlags() API] + +Signed-off-by: Saul Wold + + +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 +@@ -106,6 +106,26 @@ class RPMPackageManager(PackageManager): flags |= rpm.RPMTRANS_FLAG_TEST ts.setFlags(flags) -+ dflags = ts.setDFlags(0) -+ if sysconf.get("rpm-noupgrade", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOUPGRADE -+ if sysconf.get("rpm-norequires", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOREQUIRES -+ if sysconf.get("rpm-noconflicts", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOCONFLICTS -+ if sysconf.get("rpm-noobsoletes", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOOBSOLETES -+ if sysconf.get("rpm-noparentdirs", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOPARENTDIRS -+ if sysconf.get("rpm-nolinktos", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOLINKTOS -+ if sysconf.get("rpm-nosuggest", False): -+ dflags |= rpm.RPMDEPS_FLAG_NOSUGGEST -+ ts.setDFlags(dflags) ++ try: ++ dflags = ts.setDFlags(0) ++ if sysconf.get("rpm-noupgrade", False): ++ dflags |= rpm.RPMDEPS_FLAG_NOUPGRADE ++ if sysconf.get("rpm-norequires", False): ++ dflags |= rpm.RPMDEPS_FLAG_NOREQUIRES ++ if sysconf.get("rpm-noconflicts", False): ++ dflags |= rpm.RPMDEPS_FLAG_NOCONFLICTS ++ if sysconf.get("rpm-noobsoletes", False): ++ dflags |= rpm.RPMDEPS_FLAG_NOOBSOLETES ++ if sysconf.get("rpm-noparentdirs", False): ++ dflags |= rpm.RPMDEPS_FLAG_NOPARENTDIRS ++ if sysconf.get("rpm-nolinktos", False): ++ dflags |= rpm.RPMDEPS_FLAG_NOLINKTOS ++ if sysconf.get("rpm-nosuggest", False): ++ dflags |= rpm.RPMDEPS_FLAG_NOSUGGEST ++ ts.setDFlags(dflags) ++ except AttributeError, ae: ++ pass + # Set rpm verbosity level. levelname = sysconf.get('rpm-log-level') level = { --- -1.7.9.5 - diff --git a/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch b/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch new file mode 100644 index 0000000000..708ffe67d3 --- /dev/null +++ b/meta/recipes-devtools/python/python-smartpm/smart-rpm4-fixes.patch @@ -0,0 +1,49 @@ + +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 + +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_1.4.1.bb b/meta/recipes-devtools/python/python-smartpm_1.4.1.bb index 09715794b3..f2eb33d3a3 100644 --- a/meta/recipes-devtools/python/python-smartpm_1.4.1.bb +++ b/meta/recipes-devtools/python/python-smartpm_1.4.1.bb @@ -8,7 +8,7 @@ SECTION = "devel/python" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://LICENSE;md5=393a5ca445f6965873eca0259a17f833" -DEPENDS = "python rpm gettext-native" +DEPENDS = "python rpm gettext-native python-rpm" PR = "r9" SRCNAME = "smart" @@ -32,7 +32,8 @@ SRC_URI = "\ file://smart-config-ignore-all-recommends.patch \ file://smart-attempt.patch \ file://smart-filename-NAME_MAX.patch \ - " + file://smart-rpm4-fixes.patch \ + " SRC_URI[md5sum] = "573ef32ba177a6b3c4bf7ef04873fcb6" SRC_URI[sha256sum] = "b1d519ddb43d60f293b065c28870a5d9e8b591cd49e8c68caea48ace91085eba" -- cgit 1.2.3-korg