[yocto] [opkg-utils][PATCH 07/22] opkg.py, arfile.py: report which file has wrong format and use the same test
Martin Jansa
martin.jansa at gmail.com
Thu Mar 29 15:22:41 PDT 2012
Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
---
arfile.py | 16 +++++++++-------
opkg.py | 11 ++---------
2 files changed, 11 insertions(+), 16 deletions(-)
diff --git a/arfile.py b/arfile.py
index 8291a2d..7a695c6 100644
--- a/arfile.py
+++ b/arfile.py
@@ -40,13 +40,13 @@ class FileSection:
class ArFile:
- def __init__(self, f):
+ def __init__(self, f, fn):
self.f = f
self.directory = {}
self.directoryRead = False
signature = self.f.readline()
- assert signature == "!<arch>\n"
+ assert signature == "!<arch>\n" or signature == b"!<arch>\n", "Old ipk format (non-deb) is unsupported, file: %s, magic: %s, expected %s" % (fn, signature, "!<arch>")
self.directoryOffset = self.f.tell()
def open(self, fname):
@@ -100,9 +100,10 @@ class ArFile:
if __name__ == "__main__":
if None:
- f = open(sys.argv[1], "rb")
+ fn = sys.argv[1]
+ f = open(fn, "rb")
- ar = ArFile(f)
+ ar = ArFile(f, fn)
tarStream = ar.open("data.tar.gz")
print "--------"
tarStream = ar.open("data.tar.gz")
@@ -120,10 +121,11 @@ if __name__ == "__main__":
for f in os.listdir(dir):
if not f.endswith(".opk") and not f.endswith(".ipk"): continue
- print "=== %s ===" % f
- f = open(dir + "/" + f, "rb")
+ print("=== %s ===" % f)
+ fn = "%s/%s" % (dir, f)
+ f = open(fn, "rb")
- ar = ArFile(f)
+ ar = ArFile(f, fn)
tarStream = ar.open("control.tar.gz")
tarf = tarfile.open("control.tar.gz", "r", tarStream)
#tarf.list()
diff --git a/opkg.py b/opkg.py
index 56e774d..31b847c 100644
--- a/opkg.py
+++ b/opkg.py
@@ -138,7 +138,6 @@ class Package:
#self.size = None
self.installed_size = None
self.filename = None
- self.isdeb = 0
self.file_ext_opk = "ipk"
self.homepage = None
self.oe = None
@@ -150,18 +149,12 @@ class Package:
if fn:
# see if it is deb format
f = open(fn, "rb")
- magic = f.read(4)
- f.seek(0, 0)
- if (magic == "!<ar"):
- self.isdeb = 1
-
self.filename = os.path.basename(fn)
- assert self.isdeb == 1, "Old ipk format (non-deb) is unsupported"
## sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,))
- ar = arfile.ArFile(f)
+ ar = arfile.ArFile(f, fn)
tarStream = ar.open("control.tar.gz")
tarf = tarfile.open("control.tar.gz", "r", tarStream)
@@ -330,7 +323,7 @@ class Package:
if not self.fn:
return []
f = open(self.fn, "rb")
- ar = arfile.ArFile(f)
+ ar = arfile.ArFile(f, self.fn)
tarStream = ar.open("data.tar.gz")
tarf = tarfile.open("data.tar.gz", "r", tarStream)
self.file_list = tarf.getnames()
--
1.7.8.5
More information about the yocto
mailing list