[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 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.

-w



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