[oe] [meta-oe][PATCH] smem: use python 3

Max Krummenacher max.oss.09 at gmail.com
Tue Feb 4 23:40:13 UTC 2020


There seems to be no user of python-textutils python-shell python-codecs
in the script, so these rdepends are dropped.

On a i.MX6 based machine smem runs with just python3-compression and
its dependencies installed.

Signed-off-by: Max Krummenacher <max.krummenacher at toradex.com>
---
 .../smem/0001-smem-convert-to-python-3.patch  | 161 ++++++++++++++++++
 meta-oe/recipes-support/smem/smem_1.4.bb      |   7 +-
 2 files changed, 166 insertions(+), 2 deletions(-)
 create mode 100644 meta-oe/recipes-support/smem/smem/0001-smem-convert-to-python-3.patch

diff --git a/meta-oe/recipes-support/smem/smem/0001-smem-convert-to-python-3.patch b/meta-oe/recipes-support/smem/smem/0001-smem-convert-to-python-3.patch
new file mode 100644
index 000000000..85f35be44
--- /dev/null
+++ b/meta-oe/recipes-support/smem/smem/0001-smem-convert-to-python-3.patch
@@ -0,0 +1,161 @@
+From 5535a524f6db57c0b2e4a539db733fd9e840c97e Mon Sep 17 00:00:00 2001
+From: Max Krummenacher <max.krummenacher at toradex.com>
+Date: Mon, 3 Feb 2020 21:04:42 +0000
+Subject: [PATCH] smem: convert to python 3
+
+Upstream-Status: Pending
+
+Signed-off-by: Max Krummenacher <max.krummenacher at toradex.com>
+---
+ smem | 41 ++++++++++++++++++++++-------------------
+ 1 file changed, 22 insertions(+), 19 deletions(-)
+
+diff --git a/smem b/smem
+index 0cbd925..577d27b 100755
+--- a/smem
++++ b/smem
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # smem - a tool for meaningful memory reporting
+ #
+@@ -21,7 +21,10 @@ class procdata(object):
+     def _list(self):
+         return os.listdir(self.source + "/proc")
+     def _read(self, f):
+-        return file(self.source + '/proc/' + f).read()
++        afile = open(self.source + '/proc/' + f)
++        ret = afile.read()
++        afile.close()
++        return ret
+     def _readlines(self, f):
+         return self._read(f).splitlines(True)
+     def _stat(self, f):
+@@ -209,7 +212,7 @@ def fromunits(x):
+     s = dict(k=2**10, K=2**10, kB=2**10, KB=2**10,
+              M=2**20, MB=2**20, G=2**30, GB=2**30,
+              T=2**40, TB=2**40)
+-    for k,v in s.items():
++    for k,v in list(s.items()):
+         if x.endswith(k):
+             return int(float(x[:-len(k)])*v)
+     sys.stderr.write("Memory size should be written with units, for example 1024M\n")
+@@ -240,7 +243,7 @@ def pidtotals(pid):
+     maps = pidmaps(pid)
+     t = dict(size=0, rss=0, pss=0, shared_clean=0, shared_dirty=0,
+              private_clean=0, private_dirty=0, referenced=0, swap=0)
+-    for m in maps.iterkeys():
++    for m in maps.keys():
+         for k in t:
+             t[k] += maps[m].get(k, 0)
+ 
+@@ -296,7 +299,7 @@ def showpids():
+         )
+     columns = options.columns or 'pid user command swap uss pss rss'
+ 
+-    showtable(pt.keys(), fields, columns.split(), options.sort or 'pss')
++    showtable(list(pt.keys()), fields, columns.split(), options.sort or 'pss')
+ 
+ def maptotals(pids):
+     totals = {}
+@@ -307,7 +310,7 @@ def maptotals(pids):
+         try:
+             maps = pidmaps(pid)
+             seen = {}
+-            for m in maps.iterkeys():
++            for m in maps.keys():
+                 name = maps[m]['name']
+                 if name not in totals:
+                     t = dict(size=0, rss=0, pss=0, shared_clean=0,
+@@ -361,7 +364,7 @@ def showmaps():
+         )
+     columns = options.columns or 'map pids avgpss pss'
+ 
+-    showtable(pt.keys(), fields, columns.split(), options.sort or 'pss')
++    showtable(list(pt.keys()), fields, columns.split(), options.sort or 'pss')
+ 
+ def usertotals(pids):
+     totals = {}
+@@ -383,7 +386,7 @@ def usertotals(pids):
+         else:
+             t = totals[user]
+ 
+-        for m in maps.iterkeys():
++        for m in maps.keys():
+             for k in t:
+                 t[k] += maps[m].get(k, 0)
+ 
+@@ -419,7 +422,7 @@ def showusers():
+         )
+     columns = options.columns or 'user count swap uss pss rss'
+ 
+-    showtable(pt.keys(), fields, columns.split(), options.sort or 'pss')
++    showtable(list(pt.keys()), fields, columns.split(), options.sort or 'pss')
+ 
+ def showsystem():
+     t = totalmem()
+@@ -460,14 +463,14 @@ def showsystem():
+               'area not reclaimable'))
+ 
+     columns = options.columns or 'area used cache noncache'
+-    showtable(range(len(l)), fields, columns.split(), options.sort or 'order')
++    showtable(list(range(len(l))), fields, columns.split(), options.sort or 'order')
+ 
+ def showfields(fields, f):
+     if f != list:
+-        print "unknown field", f
+-    print "known fields:"
++        print("unknown field", f)
++    print("known fields:")
+     for l in sorted(fields.keys()):
+-        print "%-8s %s" % (l, fields[l][-1])
++        print("%-8s %s" % (l, fields[l][-1]))
+ 
+ def showtable(rows, fields, columns, sort):
+     header = ""
+@@ -518,10 +521,10 @@ def showtable(rows, fields, columns, sort):
+         return
+ 
+     if not options.no_header:
+-        print header
++        print(header)
+ 
+     for k,r in l:
+-        print format % tuple([f(v) for f,v in zip(formatter, r)])
++        print(format % tuple([f(v) for f,v in zip(formatter, r)]))
+ 
+     if options.totals:
+         # totals
+@@ -533,8 +536,8 @@ def showtable(rows, fields, columns, sort):
+             else:
+                 t.append("")
+ 
+-        print "-" * len(header)
+-        print format % tuple([f(v) for f,v in zip(formatter, t)])
++        print("-" * len(header))
++        print(format % tuple([f(v) for f,v in zip(formatter, t)]))
+ 
+ def showpie(l, sort):
+     try:
+@@ -605,7 +608,7 @@ def showbar(l, columns, sort):
+ 
+     pl = []
+     ind = numpy.arange(len(l))
+-    for n in xrange(len(rc)):
++    for n in range(len(rc)):
+         pl.append(pylab.bar(ind + offset + width * n,
+                              [x[1][rc[n]] for x in l], width, color=gc(n)))
+ 
+@@ -682,7 +685,7 @@ try:
+         showsystem()
+     else:
+         showpids()
+-except IOError, e:
++except IOError as e:
+     if e.errno == errno.EPIPE:
+         pass
+ except KeyboardInterrupt:
+-- 
+2.20.1
+
diff --git a/meta-oe/recipes-support/smem/smem_1.4.bb b/meta-oe/recipes-support/smem/smem_1.4.bb
index 947c47b0f..4728e6b79 100644
--- a/meta-oe/recipes-support/smem/smem_1.4.bb
+++ b/meta-oe/recipes-support/smem/smem_1.4.bb
@@ -9,7 +9,10 @@ SECTION = "Applications/System"
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-SRC_URI = "http://www.selenic.com/${BPN}/download/${BP}.tar.gz"
+SRC_URI = " \
+    http://www.selenic.com/${BPN}/download/${BP}.tar.gz \
+    file://0001-smem-convert-to-python-3.patch \
+"
 SRC_URI[md5sum] = "fe79435c3930389bfdb560255c802162"
 SRC_URI[sha256sum] = "2ea9f878f4cf3c276774c3f7e2a41977a1f2d64f98d2dcb6a15f1f3d84df61ec"
 
@@ -24,7 +27,7 @@ do_install() {
         install -m 0755 ${S}/smemcap ${D}${bindir}/
         install -m 0644 ${S}/smem.8 ${D}/${mandir}/man8/
 }
-RDEPENDS_${PN} += "python-textutils python-compression python-shell python-codecs"
+RDEPENDS_${PN} += "python3-compression"
 
 PACKAGES =+ "smemcap"
 
-- 
2.20.1



More information about the Openembedded-devel mailing list