summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/recipes-devtools/python/python-smartpm/smart-rpm-root.patch80
-rw-r--r--meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch46
-rw-r--r--meta/recipes-devtools/python/python-smartpm_1.4.1.bb119
3 files changed, 245 insertions, 0 deletions
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 0000000000..b2629ef051
--- /dev/null
+++ b/meta/recipes-devtools/python/python-smartpm/smart-rpm-root.patch
@@ -0,0 +1,80 @@
1Fix smart RPM backend to handle rpm-dbpath/rpm-root properly
2
3Don't assume that if the dbpath starts with / that it is an absolute
4path. This matches the behaviour of rpm itself. (If the root path is
5specified and does not start with /, rpm will prepend the root path
6twice and fail).
7
8Upstream-Status: Pending
9
10Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
11
12diff --git a/smart/backends/rpm/base.py b/smart/backends/rpm/base.py
13index 7092332..0489e11 100644
14--- a/smart/backends/rpm/base.py
15+++ b/smart/backends/rpm/base.py
16@@ -46,6 +46,12 @@ __all__ = ["RPMPackage", "RPMProvides", "RPMNameProvides", "RPMPreRequires",
17 "rpm", "getTS", "getArchScore", "getArchColor", "system_provides",
18 "collapse_libc_requires"]
19
20+def rpm_join_dbpath(root, dbpath):
21+ if dbpath.startswith('/') and root:
22+ return os.path.join(root, dbpath[1:])
23+ else:
24+ return os.path.join(root, dbpath)
25+
26 def getTS(new=False):
27 rpm_root = os.path.abspath(sysconf.get("rpm-root", "/"))
28 if not hasattr(getTS, "ts") or getTS.root != rpm_root:
29@@ -56,7 +62,7 @@ def getTS(new=False):
30 #if not sysconf.get("rpm-check-signatures", False):
31 # getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
32 rpm_dbpath = sysconf.get("rpm-dbpath", "var/lib/rpm")
33- dbdir = os.path.join(getTS.root, rpm_dbpath)
34+ dbdir = rpm_join_dbpath(getTS.root, rpm_dbpath)
35 if not os.path.isdir(dbdir):
36 try:
37 os.makedirs(dbdir)
38diff --git a/smart/channels/rpm_sys.py b/smart/channels/rpm_sys.py
39index efcb10e..b9fda27 100644
40--- a/smart/channels/rpm_sys.py
41+++ b/smart/channels/rpm_sys.py
42@@ -20,7 +20,7 @@
43 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
44 #
45 from smart.backends.rpm.header import RPMDBLoader
46-from smart.backends.rpm.base import getTS
47+from smart.backends.rpm.base import getTS, rpm_join_dbpath
48 from smart.channel import PackageChannel
49 from smart import *
50 import os
51@@ -32,9 +32,9 @@ class RPMSysChannel(PackageChannel):
52
53 def fetch(self, fetcher, progress):
54 getTS() # Make sure the db exists.
55- path = os.path.join(sysconf.get("rpm-root", "/"),
56- sysconf.get("rpm-dbpath", "var/lib/rpm"),
57- "Packages")
58+ dbdir = rpm_join_dbpath(sysconf.get("rpm-root", "/"),
59+ sysconf.get("rpm-dbpath", "var/lib/rpm"))
60+ path = os.path.join(dbdir, "Packages")
61 digest = os.path.getmtime(path)
62 if digest == self._digest:
63 return True
64diff --git a/smart/plugins/detectsys.py b/smart/plugins/detectsys.py
65index 2cd49ad..3959d07 100644
66--- a/smart/plugins/detectsys.py
67+++ b/smart/plugins/detectsys.py
68@@ -20,10 +20,11 @@
69 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
70 #
71 from smart import *
72+from smart.backends.rpm.base import rpm_join_dbpath
73 import os
74
75 def detectRPMSystem():
76- dir = os.path.join(sysconf.get("rpm-root", "/"),
77+ dir = rpm_join_dbpath(sysconf.get("rpm-root", "/"),
78 sysconf.get("rpm-dbpath", "var/lib/rpm"))
79 file = os.path.join(dir, "Packages")
80 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 0000000000..9919a941bc
--- /dev/null
+++ b/meta/recipes-devtools/python/python-smartpm/smartpm-rpm5-nodig.patch
@@ -0,0 +1,46 @@
1RPM5 has removed support for RPMVSF_NOSIGNATURES
2
3Patch smart to no longer use this flag
4
5Upstream-Status: Pending
6
7Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
8
9diff -ur smart-1.4.1.orig/smart/backends/rpm/base.py smart-1.4.1/smart/backends/rpm/base.py
10--- smart-1.4.1.orig/smart/backends/rpm/base.py 2012-10-04 11:22:11.229351164 -0500
11+++ smart-1.4.1/smart/backends/rpm/base.py 2012-10-04 11:22:44.820170786 -0500
12@@ -53,8 +53,8 @@
13 if sysconf.get("rpm-dbpath"):
14 rpm.addMacro('_dbpath', "/" + sysconf.get("rpm-dbpath"))
15 getTS.ts = rpm.ts(getTS.root)
16- if not sysconf.get("rpm-check-signatures", False):
17- getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
18+ #if not sysconf.get("rpm-check-signatures", False):
19+ # getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
20 rpm_dbpath = sysconf.get("rpm-dbpath", "var/lib/rpm")
21 dbdir = os.path.join(getTS.root, rpm_dbpath)
22 if not os.path.isdir(dbdir):
23@@ -82,8 +82,8 @@
24 if sysconf.get("rpm-dbpath"):
25 rpm.addMacro('_dbpath', "/" + sysconf.get("rpm-dbpath"))
26 ts = rpm.ts(getTS.root)
27- if not sysconf.get("rpm-check-signatures", False):
28- ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
29+ #if not sysconf.get("rpm-check-signatures", False):
30+ # ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
31 return ts
32 else:
33 return getTS.ts
34diff -ur smart-1.4.1.orig/smart/plugins/yumchannelsync.py smart-1.4.1/smart/plugins/yumchannelsync.py
35--- smart-1.4.1.orig/smart/plugins/yumchannelsync.py 2010-12-06 03:11:05.000000000 -0600
36+++ smart-1.4.1/smart/plugins/yumchannelsync.py 2012-10-04 11:23:09.799350924 -0500
37@@ -56,7 +56,8 @@
38
39 rpmroot = sysconf.get("rpm-root", "/")
40 ts = rpmUtils.transaction.initReadOnlyTransaction(root=rpmroot)
41- ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS))
42+ #ts.pushVSFlags(~(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NODIGESTS))
43+ ts.pushVSFlags(~(rpm._RPMVSF_NODIGESTS))
44 releasever = None
45 # HACK: we're hard-coding the most used distros, will add more if needed
46 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 0000000000..bc0c1f9941
--- /dev/null
+++ b/meta/recipes-devtools/python/python-smartpm_1.4.1.bb
@@ -0,0 +1,119 @@
1SUMMARY = "The Smart Package Manager"
2
3DESCRIPTION = "The Smart Package Manager project has the ambitious objective of creating \
4smart and portable algorithms for solving adequately the problem of managing software \
5upgrades and installation. This tool works in all major distributions and will bring \
6notable advantages over native tools currently in use (APT, APT-RPM, YUM, URPMI, etc)."
7
8HOMEPAGE = "http://smartpm.org/"
9SECTION = "devel/python"
10LICENSE = "GPLv2"
11LIC_FILES_CHKSUM = "file://LICENSE;md5=393a5ca445f6965873eca0259a17f833"
12
13DEPENDS = "python rpm"
14PR = "r0"
15SRCNAME = "smart"
16
17SRC_URI = "\
18 http://launchpad.net/smart/trunk/${PV}/+download/${SRCNAME}-${PV}.tar.bz2 \
19 file://smartpm-rpm5-nodig.patch \
20 file://smart-rpm-root.patch \
21 "
22
23SRC_URI[md5sum] = "573ef32ba177a6b3c4bf7ef04873fcb6"
24SRC_URI[sha256sum] = "b1d519ddb43d60f293b065c28870a5d9e8b591cd49e8c68caea48ace91085eba"
25S = "${WORKDIR}/${SRCNAME}-${PV}"
26
27# Options - rpm, qt4, gtk
28PACKAGECONFIG ??= "rpm"
29
30RPM_RDEP = "python-smartpm-backend-rpm"
31QT_RDEP = "python-smartpm-interface-qt4"
32GTK_RDEP = "python-smartpm-interface-gtk"
33
34RPM_RDEP_virtclass-native = ""
35QT_RDEP_virtclass-native = ""
36GTK_RDEP_virtclass-native = ""
37
38PACKAGECONFIG[rpm] = ",,rpm,${RPM_RDEP}"
39PACKAGECONFIG[qt4] = ",,qt4-x11,${QT_RDEP}"
40PACKAGECONFIG[gtk] = ",,gtk+,${GTK_RDEP}"
41
42inherit distutils
43
44do_install_append() {
45 # Cleanup unused item...
46 rmdir ${D}${datadir}/share
47
48 # We don't support the following items
49 rm -rf ${D}${libdir}/python*/site-packages/smart/backends/slack
50 rm -rf ${D}${libdir}/python*/site-packages/smart/backends/arch
51 rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/qt
52
53 # Temporary, debian support in OE is missing the python module
54 rm -f ${D}${libdir}/python*/site-packages/smart/plugins/aptchannelsync.py*
55 rm -f ${D}${libdir}/python*/site-packages/smart/plugins/debdir.py*
56 rm -rf ${D}${libdir}/python*/site-packages/smart/backends/deb
57
58 # Disable automatic channel detection
59 rm -f ${D}${libdir}/python*/site-packages/smart/plugins/detectsys.py*
60
61 # Disable landscape support
62 rm -f ${D}${libdir}/python*/site-packages/smart/plugins/landscape.py*
63
64 # Disable urpmi channel support
65 rm -f ${D}${libdir}/python*/site-packages/smart/plugins/urpmichannelsync.py*
66
67 # Disable yum channel support
68 rm -f ${D}${libdir}/python*/site-packages/smart/plugins/yumchannelsync.py*
69
70 # Disable zypper channel support
71 rm -f ${D}${libdir}/python*/site-packages/smart/plugins/zyppchannelsync.py*
72
73 if [ -z "${@base_contains('PACKAGECONFIG', 'rpm', 'rpm', '', d)}" ]; then
74 rm -f ${D}${libdir}/python*/site-packages/smart/plugins/rpmdir.py*
75 rm -rf ${D}${libdir}/python*/site-packages/smart/backends/rpm
76 fi
77
78 if [ -z "${@base_contains('PACKAGECONFIG', 'qt4', 'qt4', '', d)}" ]; then
79 rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/qt4
80 fi
81
82 if [ -z "${@base_contains('PACKAGECONFIG', 'gtk+', 'gtk', '', d)}" ]; then
83 rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/gtk
84 fi
85}
86
87PACKAGES = "python-smartpm-dev python-smartpm-dbg python-smartpm-doc smartpm"
88PACKAGES += "${@base_contains('PACKAGECONFIG', 'rpm', 'python-smartpm-backend-rpm', '', d)}"
89PACKAGES += "${@base_contains('PACKAGECONFIG', 'qt4', 'python-smartpm-interface-qt4', '', d)}"
90PACKAGES += "${@base_contains('PACKAGECONFIG', 'gtk', 'python-smartpm-interface-gtk', '', d)}"
91PACKAGES += "python-smartpm-interface-images"
92PACKAGES += "python-smartpm"
93
94RDEPENDS_smartpm = 'python-smartpm'
95
96RDEPENDS_python-smartpm_append = " virtual/python-smartpm-backend python-codecs python-textutils python-xml"
97RDEPENDS_python-smartpm_append += " python-fcntl python-pickle python-crypt python-compression python-shell"
98RDEPENDS_python-smartpm_append += " python-resource python-netclient python-threading python-unixadmin"
99
100#RDEPENDS_python-smartpm_append += " python-modules"
101
102RDEPENDS_python-smartpm-backend-rpm = 'python-rpm'
103RPROVIDES_python-smartpm-backend-rpm = 'virtual/python-smartpm-backend'
104
105RDEPENDS_python-smartpm-interface-qt4 = 'qt4-x11 python-smartpm-interface-images'
106RDEPENDS_python-smartpm-interface-gtk = 'gtk+ python-smartpm-interface-images'
107
108FILES_smartpm = "${bindir}/smart"
109
110FILES_${PN}-dbg += "${libdir}/python*/site-packages/smart/backends/rpm/.debug"
111
112FILES_python-smartpm-backend-rpm = "${libdir}/python*/site-packages/smart/backends/rpm"
113
114FILES_python-smartpm-interface-qt4 = "${libdir}/python*/site-packages/smart/interfaces/qt4"
115FILES_python-smartpm-interface-gtk = "${libdir}/python*/site-packages/smart/interfaces/gtk"
116FILES_python-smartpm-interface-images = "${datadir}/${baselib}/python*/site-packages/smart/interfaces/images"
117
118BBCLASSEXTEND = "native"
119