[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [lorax] Use xz when compressing the initrd



On Thu, 2011-02-17 at 10:42 -0500, Will Woods wrote:
> On Thu, 2011-02-17 at 15:54 +0100, Martin Gracik wrote:
> > This makes the image a lot smaller.
> > ---
> >  lorax.spec                 |    1 +
> >  src/pylorax/installtree.py |   13 +++++++++----
> >  2 files changed, 10 insertions(+), 4 deletions(-)
> > 
> > diff --git a/lorax.spec b/lorax.spec
> > index 7704f17..7da6643 100644
> > --- a/lorax.spec
> > +++ b/lorax.spec
> > @@ -26,6 +26,7 @@ Requires:       util-linux-ng
> >  Requires:       dosfstools
> >  Requires:       genisoimage
> >  Requires:       parted
> > +Requires:       pyliblzma
> >  
> >  %description
> >  Lorax is a tool for creating the anaconda install images.
> > diff --git a/src/pylorax/installtree.py b/src/pylorax/installtree.py
> > index 9883bba..d0a045d 100644
> > --- a/src/pylorax/installtree.py
> > +++ b/src/pylorax/installtree.py
> > @@ -26,6 +26,7 @@ import sys
> >  import os
> >  import shutil
> >  import gzip
> > +import lzma
> >  import re
> >  import glob
> >  import time
> > @@ -506,7 +507,7 @@ class LoraxInstallTree(BaseLoraxClass):
> >          dst = joinpaths(self.root, "sbin")
> >          shutil.copy2(src, dst)
> >  
> > -    def compress(self, initrd, kernel):
> > +    def compress(self, initrd, kernel, type="xz"):
> >          chdir = lambda: os.chdir(self.root)
> >          start = time.time()
> >  
> > @@ -521,9 +522,13 @@ class LoraxInstallTree(BaseLoraxClass):
> >                                  stdin=find.stdout, stdout=subprocess.PIPE,
> >                                  preexec_fn=chdir)
> >  
> > -        gzipped = gzip.open(initrd.fpath, "wb")
> > -        gzipped.write(cpio.stdout.read())
> > -        gzipped.close()
> > +        if type == "gzip":
> > +            compressed = gzip.open(initrd.fpath, "wb")
> > +        elif type == "xz":
> > +            compressed = lzma.LZMAFile(initrd.fpath, "w", options={"level":9})
> > +
> > +        compressed.write(cpio.stdout.read())
> > +        compressed.close()
> >  
> >          # move modules out of the tree again
> >          shutil.move(joinpaths(self.root, "modules", kernel.version),
> 
> ACK. If you want to be extra-careful you could change options to:
>   dict(format='xz', check='crc32', level=9)
> 'xz' and 'crc32' seem to be the current defaults, but if the defaults
> changed we could end up with Problems. But if you're pretty sure
> pyliblzma isn't going to change its defaults, it's fine as-is.
> 

can't guarantee that - theoretically python was supposed to pick up lzma
internally but  who knows which one that will be or IF that will ever
happen.

-sv



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]