[Yum-devel] [PATCH] Skip write("") to avoid "LZMA.error: unknown error!"

Zdenek Pavlas zpavlas at redhat.com
Wed Nov 7 10:43:03 UTC 2012


>  I'd rather have a wrapper in compressOpen() so that write("") is
>  always valid, means we'll fix this for all spots.

This seems to work, too.

commit 7a3d5245478d48dd1a4d78e99eb5b3047e918265
Author: Zdeněk Pavlas <zpavlas at redhat.com>
Date:   Wed Nov 7 11:19:10 2012 +0100

    Skip write("") to avoid "LZMA.error: unknown error!"

diff --git a/createrepo/utils.py b/createrepo/utils.py
index d66b115..cfe68e6 100644
--- a/createrepo/utils.py
+++ b/createrepo/utils.py
@@ -98,6 +98,10 @@ def gzFile(source, dest):
     s_fn.close()
 
 
+class Duck:
+    def __init__(self, **attr):
+        self.__dict__ = attr
+
 
 def compressFile(source, dest, compress_type):
     """Compress an existing file using any compression type from source to dest"""
@@ -120,7 +124,11 @@ def compressOpen(fn, mode='rb', compress_type=None):
             compress_type = 'gz'
             
     if compress_type == 'xz':
-        return lzma.LZMAFile(fn, mode)
+        fh = lzma.LZMAFile(fn, mode)
+        if mode == 'w':
+            fh = Duck(write=lambda s, write=fh.write: s != '' and write(s),
+                      close=fh.close)
+        return fh
     elif compress_type == 'bz2':
         return bz2.BZ2File(fn, mode)
     elif compress_type == 'gz':


More information about the Yum-devel mailing list