From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com ([192.55.52.93]) by linuxtogo.org with esmtp (Exim 4.72) (envelope-from ) id 1TUCgg-0000SM-Cj for openembedded-core@lists.openembedded.org; Fri, 02 Nov 2012 09:33:11 +0100 Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga102.fm.intel.com with ESMTP; 02 Nov 2012 01:19:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.80,697,1344236400"; d="scan'208";a="243319163" Received: from unknown (HELO [10.255.14.101]) ([10.255.14.101]) by fmsmga002.fm.intel.com with ESMTP; 02 Nov 2012 01:18:24 -0700 Message-ID: <509381CD.1070003@linux.intel.com> Date: Fri, 02 Nov 2012 01:18:21 -0700 From: Saul Wold User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120911 Thunderbird/15.0.1 MIME-Version: 1.0 To: Mark Hatle References: <6f77829d5542d9b19cfaf1ebb0d1e633c1a83e4b.1351718092.git.mark.hatle@windriver.com> In-Reply-To: <6f77829d5542d9b19cfaf1ebb0d1e633c1a83e4b.1351718092.git.mark.hatle@windriver.com> Cc: openembedded-core@lists.openembedded.org Subject: Re: [PATCH 2/4] python-smartpm: Add smartpm recipe X-BeenThere: openembedded-core@lists.openembedded.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Patches and discussions about the oe-core layer List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Nov 2012 08:33:11 -0000 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 10/31/2012 02:19 PM, Mark Hatle wrote: > This is the initial integration, basic functionality such as 'smart query' > has been tested. Active use of remote feeds and such has not yet been > verified. > > Thanks to Paul Eggleton for corrections and bug fixes for the initial > integration. > > Signed-off-by: Mark Hatle > --- > .../python/python-smartpm/smart-rpm-root.patch | 80 +++++++++++++ > .../python/python-smartpm/smartpm-rpm5-nodig.patch | 46 ++++++++ > .../python/python-smartpm_1.4.1.bb | 119 ++++++++++++++++++++ > 3 files changed, 245 insertions(+), 0 deletions(-) > create mode 100644 meta/recipes-devtools/python/python-smartpm/smart-rpm-root.patch > create mode 100644 meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch > create mode 100644 meta/recipes-devtools/python/python-smartpm_1.4.1.bb > Mark, It seems that you might be missing > diff --git a/meta/recipes-devtools/python/python-smartpm/smart-rpm-root.patch b/meta/recipes-devtools/python/python-smartpm/smart-rpm-root.patch > new file mode 100644 > index 0000000..b2629ef > --- /dev/null > +++ b/meta/recipes-devtools/python/python-smartpm/smart-rpm-root.patch > @@ -0,0 +1,80 @@ > +Fix smart RPM backend to handle rpm-dbpath/rpm-root properly > + > +Don't assume that if the dbpath starts with / that it is an absolute > +path. This matches the behaviour of rpm itself. (If the root path is > +specified and does not start with /, rpm will prepend the root path > +twice and fail). > + > +Upstream-Status: Pending > + > +Signed-off-by: Paul Eggleton > + > +diff --git a/smart/backends/rpm/base.py b/smart/backends/rpm/base.py > +index 7092332..0489e11 100644 > +--- a/smart/backends/rpm/base.py > ++++ b/smart/backends/rpm/base.py > +@@ -46,6 +46,12 @@ __all__ = ["RPMPackage", "RPMProvides", "RPMNameProvides", "RPMPreRequires", > + "rpm", "getTS", "getArchScore", "getArchColor", "system_provides", > + "collapse_libc_requires"] > + > ++def rpm_join_dbpath(root, dbpath): > ++ if dbpath.startswith('/') and root: > ++ return os.path.join(root, dbpath[1:]) > ++ else: > ++ return os.path.join(root, dbpath) > ++ > + def getTS(new=False): > + rpm_root = os.path.abspath(sysconf.get("rpm-root", "/")) > + if not hasattr(getTS, "ts") or getTS.root != rpm_root: > +@@ -56,7 +62,7 @@ def getTS(new=False): > + #if not sysconf.get("rpm-check-signatures", False): > + # getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) > + rpm_dbpath = sysconf.get("rpm-dbpath", "var/lib/rpm") > +- dbdir = os.path.join(getTS.root, rpm_dbpath) > ++ dbdir = rpm_join_dbpath(getTS.root, rpm_dbpath) > + if not os.path.isdir(dbdir): > + try: > + os.makedirs(dbdir) > +diff --git a/smart/channels/rpm_sys.py b/smart/channels/rpm_sys.py > +index efcb10e..b9fda27 100644 > +--- a/smart/channels/rpm_sys.py > ++++ b/smart/channels/rpm_sys.py > +@@ -20,7 +20,7 @@ > + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + # > + from smart.backends.rpm.header import RPMDBLoader > +-from smart.backends.rpm.base import getTS > ++from smart.backends.rpm.base import getTS, rpm_join_dbpath > + from smart.channel import PackageChannel > + from smart import * > + import os > +@@ -32,9 +32,9 @@ class RPMSysChannel(PackageChannel): > + > + def fetch(self, fetcher, progress): > + getTS() # Make sure the db exists. > +- path = os.path.join(sysconf.get("rpm-root", "/"), > +- sysconf.get("rpm-dbpath", "var/lib/rpm"), > +- "Packages") > ++ dbdir = rpm_join_dbpath(sysconf.get("rpm-root", "/"), > ++ sysconf.get("rpm-dbpath", "var/lib/rpm")) > ++ path = os.path.join(dbdir, "Packages") > + digest = os.path.getmtime(path) > + if digest == self._digest: > + return True > +diff --git a/smart/plugins/detectsys.py b/smart/plugins/detectsys.py > +index 2cd49ad..3959d07 100644 > +--- a/smart/plugins/detectsys.py > ++++ b/smart/plugins/detectsys.py > +@@ -20,10 +20,11 @@ > + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + # > + from smart import * > ++from smart.backends.rpm.base import rpm_join_dbpath > + import os > + > + def detectRPMSystem(): > +- dir = os.path.join(sysconf.get("rpm-root", "/"), > ++ dir = rpm_join_dbpath(sysconf.get("rpm-root", "/"), > + sysconf.get("rpm-dbpath", "var/lib/rpm")) > + file = os.path.join(dir, "Packages") > + if os.path.exists(file): > diff --git a/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch b/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch > new file mode 100644 > index 0000000..9919a94 > --- /dev/null > +++ b/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch > @@ -0,0 +1,46 @@ > +RPM5 has removed support for RPMVSF_NOSIGNATURES > + > +Patch smart to no longer use this flag > + > +Upstream-Status: Pending > + > +Signed-off-by: Mark Hatle > + > +diff -ur smart-1.4.1.orig/smart/backends/rpm/base.py smart-1.4.1/smart/backends/rpm/base.py > +--- smart-1.4.1.orig/smart/backends/rpm/base.py 2012-10-04 11:22:11.229351164 -0500 > ++++ smart-1.4.1/smart/backends/rpm/base.py 2012-10-04 11:22:44.820170786 -0500 > +@@ -53,8 +53,8 @@ > + if sysconf.get("rpm-dbpath"): > + rpm.addMacro('_dbpath', "/" + sysconf.get("rpm-dbpath")) > + getTS.ts = rpm.ts(getTS.root) > +- if not sysconf.get("rpm-check-signatures", False): > +- getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) > ++ #if not sysconf.get("rpm-check-signatures", False): > ++ # getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) > + rpm_dbpath = sysconf.get("rpm-dbpath", "var/lib/rpm") > + dbdir = os.path.join(getTS.root, rpm_dbpath) > + if not os.path.isdir(dbdir): > +@@ -82,8 +82,8 @@ > + if sysconf.get("rpm-dbpath"): > + rpm.addMacro('_dbpath', "/" + sysconf.get("rpm-dbpath")) > + ts = rpm.ts(getTS.root) > +- if not sysconf.get("rpm-check-signatures", False): > +- ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) > ++ #if not sysconf.get("rpm-check-signatures", False): > ++ # ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES) > + return ts > + else: > + return getTS.ts > +diff -ur smart-1.4.1.orig/smart/plugins/yumchannelsync.py smart-1.4.1/smart/plugins/yumchannelsync.py > +--- smart-1.4.1.orig/smart/plugins/yumchannelsync.py 2010-12-06 03:11:05.000000000 -0600 > ++++ smart-1.4.1/smart/plugins/yumchannelsync.py 2012-10-04 11:23:09.799350924 -0500 > +@@ -56,7 +56,8 @@ > + > + rpmroot = sysconf.get("rpm-root", "/") > + ts = rpmUtils.transaction.initReadOnlyTransaction(root=rpmroot) > +- ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS)) > ++ #ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS)) > ++ ts.pushVSFlags(~(rpm._RPMVSF_NODIGESTS)) > + releasever = None > + # HACK: we're hard-coding the most used distros, will add more if needed > + idx = ts.dbMatch('provides', 'fedora-release') > diff --git a/meta/recipes-devtools/python/python-smartpm_1.4.1.bb b/meta/recipes-devtools/python/python-smartpm_1.4.1.bb > new file mode 100644 > index 0000000..485cec3 > --- /dev/null > +++ b/meta/recipes-devtools/python/python-smartpm_1.4.1.bb > @@ -0,0 +1,119 @@ > +SUMMARY = "The Smart Package Manager" > + > +DESCRIPTION = "The Smart Package Manager project has the ambitious objective of creating \ > +smart and portable algorithms for solving adequately the problem of managing software \ > +upgrades and installation. This tool works in all major distributions and will bring \ > +notable advantages over native tools currently in use (APT, APT-RPM, YUM, URPMI, etc)." > + > +HOMEPAGE = "http://smartpm.org/" > +SECTION = "devel/python" > +LICENSE = "GPLv2" > +LIC_FILES_CHKSUM = "file://LICENSE;md5=393a5ca445f6965873eca0259a17f833" > + > +DEPENDS = "python rpm" > +PR = "r0" > +SRCNAME = "smart" > + > +SRC_URI = "\ > + http://launchpad.net/smart/trunk/${PV}/+download/${SRCNAME}-${PV}.tar.bz2 \ > + file://smartpm-rpm5-nodig.patch \ > + file://smart-rpm-root.patch \ > + " > + > +SRC_URI[md5sum] = "573ef32ba177a6b3c4bf7ef04873fcb6" > +SRC_URI[sha256sum] = "b1d519ddb43d60f293b065c28870a5d9e8b591cd49e8c68caea48ace91085eba" > +S = "${WORKDIR}/${SRCNAME}-${PV}" > + > +# Options - rpm, qt4, gtk > +PACKAGECONFIG ??= "rpm" > + > +RPM_RDEP = "python-smartpm-backend-rpm" > +QT_RDEP = "python-smartpm-interface-qt4" > +GTK_RDEP = "python-smartpm-interface-gtk" > + > +RPM_RDEP_virtclass-native = "" > +QT_RDEP_virtclass-native = "" > +GTK_RDEP_virtclass-native = "" > + > +PACKAGECONFIG[rpm] = ",,rpm,${RPM_RDEP}" > +PACKAGECONFIG[qt4] = ",,qt4-x11,${QT_RDEP}" > +PACKAGECONFIG[gtk] = ",,gtk+,${GTK_RDEP}" > + > +inherit distutils > + > +do_install_append() { > + # Cleanup unused item... > + rmdir ${D}${datadir}/share > + > + # We don't support the following items > + rm -rf ${D}${libdir}/python*/site-packages/smart/backends/slack > + rm -rf ${D}${libdir}/python*/site-packages/smart/backends/arch > + rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/qt > + > + # Temporary, debian support in OE is missing the python module > + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/aptchannelsync.py* > + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/debdir.py* > + rm -rf ${D}${libdir}/python*/site-packages/smart/backends/deb > + > + # Disable automatic channel detection > + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/detectsys.py* > + > + # Disable landscape support > + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/landscape.py* > + > + # Disable urpmi channel support > + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/urpmichannelsync.py* > + > + # Disable yum channel support > + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/yumchannelsync.py* > + > + # Disable zypper channel support > + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/zyppchannelsync.py* > + > + if [ -z "${@base_contains('PACKAGECONFIG', 'rpm', 'rpm', '', d)}" ]; then > + rm -f ${D}${libdir}/python*/site-packages/smart/plugins/rpmdir.py* > + rm -rf ${D}${libdir}/python*/site-packages/smart/backends/rpm > + fi > + > + if [ -z "${@base_contains('PACKAGECONFIG', 'qt4', 'qt4', '', d)}" ]; then > + rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/qt4 > + fi > + > + if [ -z "${@base_contains('PACKAGECONFIG', 'gtk+', 'gtk', '', d)}" ]; then > + rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/gtk > + fi > +} > + > +PACKAGES = "python-smartpm-dev python-smartpm-dbg python-smartpm-doc smartpm" > +PACKAGES += "${@base_contains('PACKAGECONFIG', 'rpm', 'python-smartpm-backend-rpm', '', d)}" > +PACKAGES += "${@base_contains('PACKAGECONFIG', 'qt4', 'python-smartpm-interface-qt4', '', d)}" > +PACKAGES += "${@base_contains('PACKAGECONFIG', 'gtk', 'python-smartpm-interface-gtk', '', d)}" > +PACKAGES += "python-smartpm-interface-images" > +PACKAGES += "python-smartpm" > + > +RDEPENDS_smartpm = 'python-smartpm' > + > +RDEPENDS_python-smartpm_append = " virtual/python-smartpm-backend python-codecs python-textutils python-xml" > +RDEPENDS_python-smartpm_append += " python-fcntl python-pickle python-crypt python-compression python-shell" > +RDEPENDS_python-smartpm_append += " python-resource python-netclient python-threading python-unixadmin" > + > +#RDEPENDS_python-smartpm_append += " python-modules" > + > +RDEPENDS_python-smartpm-backend-rpm = 'python-rpm' > +RPROVIDES_python-smartpm-backend-rpm = 'virtual/python-smartpm-backend' > + > +RDEPENDS_python-smartpm-interface-qt4 = 'qt4-x11 python-smartpm-interface-images' > +RDEPENDS_python-smartpm-interface-gtk = 'gtk+ python-smartpm-interface-images' > + Mark, I think you might need some more PROVIDES or RDEPENDS mods here since I am seeing issues with nativesdk > ERROR: Nothing PROVIDES 'nativesdk-rpm' (but virtual:nativesdk:/intel/poky/distro/meta/recipes-devtools/python/python-smartpm_1.4.1.bb DEPENDS on or otherwise requires it) > ERROR: Nothing RPROVIDES 'nativesdk-python-smartpm' (but virtual:nativesdk:/intel/poky/distro/meta/recipes-devtools/python/python-smartpm_1.4.1.bb RDEPENDS on or otherwise requires it) > ERROR: No eligible RPROVIDERs exist for 'nativesdk-python-smartpm' > NOTE: Runtime target 'nativesdk-python-smartpm' is unbuildable, removing... > Missing or unbuildable dependency chain was: ['nativesdk-python-smartpm'] > ERROR: Nothing RPROVIDES 'nativesdk-python-rpm' (but virtual:nativesdk:/intel/poky/distro/meta/recipes-devtools/python/python-smartpm_1.4.1.bb RDEPENDS on or otherwise requires it) > NOTE: Runtime target 'nativesdk-python-rpm' is unbuildable, removing... > Missing or unbuildable dependency chain was: ['nativesdk-python-rpm'] > ERROR: Nothing RPROVIDES 'virtual/nativesdk-python-smartpm-backend' (but virtual:nativesdk:/intel/poky/distro/meta/recipes-devtools/python/python-smartpm_1.4.1.bb RDEPENDS on or otherwise requires it) > ERROR: No eligible RPROVIDERs exist for 'virtual/nativesdk-python-smartpm-backend' > NOTE: Runtime target 'virtual/nativesdk-python-smartpm-backend' is unbuildable, removing... > Missing or unbuildable dependency chain was: ['virtual/nativesdk-python-smartpm-backend'] > NOTE: Preparing runqueue Sau! > +FILES_smartpm = "${bindir}/smart" > + > +FILES_${PN}-dbg += "${libdir}/python*/site-packages/smart/backends/rpm/.debug" > + > +FILES_python-smartpm-backend-rpm = "${libdir}/python*/site-packages/smart/backends/rpm" > + > +FILES_python-smartpm-interface-qt4 = "${libdir}/python*/site-packages/smart/interfaces/qt4" > +FILES_python-smartpm-interface-gtk = "${libdir}/python*/site-packages/smart/interfaces/gtk" > +FILES_python-smartpm-interface-images = "${datadir}/${baselib}/python*/site-packages/smart/interfaces/images" > + > +BBCLASSEXTEND = "native nativesdk" > + >