[PATCH mock] Fixup of *pack() methods

Michael E Brown Michael_E_Brown at dell.com
Mon May 7 17:01:51 UTC 2007


On Sat, May 05, 2007 at 07:03:49PM +0200, Enrico Scholz wrote:
> Cache operations do not seem to work and use deprecated options; e.g.
> 
> | DEBUG: Executing tar -zlcf /var/lib/mock/root-cache/fedora-development-i386-core.tar.gz root
> | tar: Semantics of -l option will change in the future releases.
> | tar: Please use --one-file-system option instead.
> | tar: root: Cannot stat: No such file or directory
> | tar: Error exit delayed from previous errors

this patch looks sane. Clark and I are sorting git issues now. It will
be applied soon.
--
Michael

> 
> This patch fixes caching operations and enhances them in some aspects
> (e.g. do not cache downloaded packages).
> 
> Signed-off-by: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
> ---
> 
>  mock.py |   49 ++++++++++++++++++++++++++++++++++++-------------
>  1 files changed, 36 insertions(+), 13 deletions(-)
> 
> diff --git a/mock.py b/mock.py
> index 573bb6e..3762324 100644
> --- a/mock.py
> +++ b/mock.py
> @@ -239,15 +239,29 @@ class Root:
>          else:
>              return self._state
>  
> -    def unpack(self):
> -        self.state('unpack_cache')
> +    def __get_tar_compress_opts(self):
>          if self.cache_file.find(".bz2") != -1:
> -            opts = "-jxpf"
> +            return ["-j",]
>          elif self.cache_file.find(".gz") != -1:
> -            opts = "-zxpf"
> +            return ["-z",]
>          else:
> -            opts = "-xpf"
> -        cmd = '%s %s %s %s' % (self.config['unpack_cmd'], opts, self.basedir, self.cache_file)
> +            return []
> +
> +    def unpack(self):
> +        self.state('unpack_cache')
> +
> +        opts=self.__get_tar_compress_opts()
> +        opts.extend([
> +            '-xpf',
> +            self.cache_file,
> +            '-C',
> +            self.basedir])
> +
> +        # the quoting by map(...) is hacky; it would be better to use
> +        # correct datatypes for the do*() methods
> +        cmd = '%s %s' % (self.config['unpack_cmd'],
> +                         ' '.join(map(lambda x: '"%s"' % x, opts)))
> +        
>          self.debug("unpacking cache: %s" % cmd)
>          (retval, output) = self.do_elevated(cmd)
>          return retval
> @@ -255,13 +269,22 @@ class Root:
>      def pack(self):
>          self.state('create_cache')
>          self._ensure_dir(os.path.join(self.config['basedir'], self.config['cache_topdir']))
> -        if self.cache_file.find(".bz2") != -1:
> -            opts = "-jlcf"
> -        elif self.cache_file.find(".gz") != -1:
> -            opts = "-zlcf"
> -        else:
> -            opts = "-clf"
> -        cmd = '%s %s %s root' % (self.config['pack_cmd'], opts, self.cache_file)
> +
> +        opts=self.__get_tar_compress_opts()
> +        opts.extend([
> +            '-cf',
> +            self.cache_file,
> +            '--one-file-system',
> +            '--exclude=__db*',
> +            '--exclude=root/var/cache/yum/*/headers',
> +            '--exclude=root/var/cache/yum/*/packages',
> +            'root'
> +            ])
> +
> +        cmd  = 'cd "%s" && %s %s' % (self.basedir,
> +                                     self.config['pack_cmd'],
> +                                     ' '.join(map(lambda x: '"%s"' % x, opts)))
> +
>          self.debug("creating cache: %s" % cmd)
>          (retval, output) = self.do_elevated(cmd)
>          return retval
> 
> --
> Fedora-buildsys-list mailing list
> Fedora-buildsys-list at redhat.com
> https://www.redhat.com/mailman/listinfo/fedora-buildsys-list




More information about the Fedora-buildsys-list mailing list