All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Oberritter <obi@opendreambox.org>
To: openembedded-devel@lists.openembedded.org
Cc: Chris Larson <chris_larson@mentor.com>
Subject: Re: [PATCH 3/4] unpack.py: add SRC_URI parameter unpack=<bool> (default: true)
Date: Tue, 11 Jan 2011 21:31:25 +0100	[thread overview]
Message-ID: <4D2CBE1D.9030303@opendreambox.org> (raw)
In-Reply-To: <1294318110-23521-3-git-send-email-obi@opendreambox.org>

Ping.

On 01/06/2011 01:48 PM, Andreas Oberritter wrote:
> * This allows to download compressed files without extracting them
> * Use case: gcj requires ecj.jar, which must be downloaded separately
>   and put into the gcc source directory before configure gets executed.
> 
> Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
> CC: Chris Larson <chris_larson@mentor.com>
> ---
>  classes/base.bbclass                      |    3 +-
>  docs/usermanual/reference/var_src_uri.xml |   13 ++++-
>  lib/oe/unpack.py                          |   81 +++++++++++++++++------------
>  3 files changed, 61 insertions(+), 36 deletions(-)
> 
> diff --git a/classes/base.bbclass b/classes/base.bbclass
> index c76b77d..25d72d4 100644
> --- a/classes/base.bbclass
> +++ b/classes/base.bbclass
> @@ -190,12 +190,11 @@ def oe_unpack(d, local, urldata):
>          bb.mkdirhier(destdir)
>      else:
>          destdir = workdir
> -    dos = urldata.parm.get("dos")
>  
>      bb.note("Unpacking %s to %s/" % (base_path_out(local, d),
>                                       base_path_out(destdir, d)))
>      try:
> -        unpack_file(local, destdir, env={"PATH": d.getVar("PATH", True)}, dos=dos)
> +        unpack_file(local, destdir, urldata.parm, env={"PATH": d.getVar("PATH", True)})
>      except UnpackError, exc:
>          bb.fatal(str(exc))
>  
> diff --git a/docs/usermanual/reference/var_src_uri.xml b/docs/usermanual/reference/var_src_uri.xml
> index 706452f..521c7d5 100644
> --- a/docs/usermanual/reference/var_src_uri.xml
> +++ b/docs/usermanual/reference/var_src_uri.xml
> @@ -91,7 +91,8 @@ SRC_URI[sha256sum] = &quot;36bdb85c97b39ac604bc58cb7857ee08295242c78a12848ef8a31
>    it is unpacked into the work directory, <command>${WORKDIR}</command>. The
>    unpacker recognises several archive and compression types and for these it
>    will decompress any compressed files and extract all of the files from
> -  archives into the work directory. The supported types are:</para>
> +  archives into the work directory, unless the option <command>unpack=no</command>
> +  is set for the given file. The supported types are:</para>
>  
>    <variablelist>
>      <varlistentry>
> @@ -192,6 +193,16 @@ SRC_URI[sha256sum] = &quot;36bdb85c97b39ac604bc58cb7857ee08295242c78a12848ef8a31
>            md5sum option provided.</para>
>          </listitem>
>        </varlistentry>
> +
> +      <varlistentry>
> +        <term>unpack={yes|no}</term>
> +
> +        <listitem>
> +          <para>If set to 'yes' (default) and the source file is an archive,
> +          then the archive will be decompressed and unpacked into the ${WORKDIR}.
> +	  Otherwise, the archive will be copied into the ${WORKDIR}.</para>
> +        </listitem>
> +      </varlistentry>
>      </variablelist>
>  
>      <para>Related variables:</para>
> diff --git a/lib/oe/unpack.py b/lib/oe/unpack.py
> index e4fe5d8..8e8bf36 100644
> --- a/lib/oe/unpack.py
> +++ b/lib/oe/unpack.py
> @@ -47,47 +47,62 @@ def subprocess_setup():
>      # non-Python subprocesses expect.
>      signal.signal(signal.SIGPIPE, signal.SIG_DFL)
>  
> -def unpack_file(file, destdir, dos=False, env=None):
> +def unpack_file(file, destdir, parameters, env=None):
>      import subprocess, shutil
>  
> +    try:
> +        dos = to_boolean(parameters.get("dos"), False)
> +    except ValueError, exc:
> +        bb.fatal("Invalid value for 'dos' parameter for %s: %s" %
> +                 (filename, parameters.get("dos")))
> +
> +    try:
> +        unpack = to_boolean(parameters.get("unpack"), True)
> +    except ValueError, exc:
> +        bb.fatal("Invalid value for 'unpack' parameter for %s: %s" %
> +                 (filename, parameters.get("unpack")))
> +
>      dest = os.path.join(destdir, os.path.basename(file))
>      if os.path.exists(dest):
>          if os.path.samefile(file, dest):
>              return True
>  
>      cmd = None
> -    if file.endswith('.tar'):
> -        cmd = 'tar x --no-same-owner -f %s' % file
> -    elif file.endswith('.tgz') or file.endswith('.tar.gz') or file.endswith('.tar.Z'):
> -        cmd = 'tar xz --no-same-owner -f %s' % file
> -    elif file.endswith('.tbz') or file.endswith('.tbz2') or file.endswith('.tar.bz2'):
> -        cmd = 'bzip2 -dc %s | tar x --no-same-owner -f -' % file
> -    elif file.endswith('.gz') or file.endswith('.Z') or file.endswith('.z'):
> -        root, ext = os.path.splitext(file)
> -        cmd = 'gzip -dc %s > %s' % (file, os.path.basename(root))
> -    elif file.endswith('.bz2'):
> -        root, ext = os.path.splitext(file)
> -        cmd = 'bzip2 -dc %s > %s' % (file, os.path.basename(root))
> -    elif file.endswith('.tar.xz'):
> -        cmd = 'xz -dc %s | tar x --no-same-owner -f -' % file
> -    elif file.endswith('.xz'):
> -        root, ext = os.path.splitext(file)
> -        cmd = 'xz -dc %s > %s' % (file, os.path.basename(root))
> -    elif file.endswith('.tar.lz'):
> -        cmd = 'lzip -dc %s | tar x --no-same-owner -f -' % file
> -    elif file.endswith('.lz'):
> -        root, ext = os.path.splitext(file)
> -        cmd = 'lzip -dc %s > %s' % (file, os.path.basename(root))
> -    elif file.endswith('.zip') or file.endswith('.jar'):
> -        cmd = 'unzip -q -o'
> -        if dos:
> -            cmd = '%s -a' % cmd
> -        cmd = "%s '%s'" % (cmd, file)
> -    elif os.path.isdir(file):
> -        shutil.rmtree(dest, True)
> -        shutil.copytree(file, dest, True)
> -    else:
> -        shutil.copy2(file, dest)
> +    if unpack:
> +        if file.endswith('.tar'):
> +            cmd = 'tar x --no-same-owner -f %s' % file
> +        elif file.endswith('.tgz') or file.endswith('.tar.gz') or file.endswith('.tar.Z'):
> +            cmd = 'tar xz --no-same-owner -f %s' % file
> +        elif file.endswith('.tbz') or file.endswith('.tbz2') or file.endswith('.tar.bz2'):
> +            cmd = 'bzip2 -dc %s | tar x --no-same-owner -f -' % file
> +        elif file.endswith('.gz') or file.endswith('.Z') or file.endswith('.z'):
> +            root, ext = os.path.splitext(file)
> +            cmd = 'gzip -dc %s > %s' % (file, os.path.basename(root))
> +        elif file.endswith('.bz2'):
> +            root, ext = os.path.splitext(file)
> +            cmd = 'bzip2 -dc %s > %s' % (file, os.path.basename(root))
> +        elif file.endswith('.tar.xz'):
> +            cmd = 'xz -dc %s | tar x --no-same-owner -f -' % file
> +        elif file.endswith('.xz'):
> +            root, ext = os.path.splitext(file)
> +            cmd = 'xz -dc %s > %s' % (file, os.path.basename(root))
> +        elif file.endswith('.tar.lz'):
> +            cmd = 'lzip -dc %s | tar x --no-same-owner -f -' % file
> +        elif file.endswith('.lz'):
> +            root, ext = os.path.splitext(file)
> +            cmd = 'lzip -dc %s > %s' % (file, os.path.basename(root))
> +        elif file.endswith('.zip') or file.endswith('.jar'):
> +            cmd = 'unzip -q -o'
> +            if dos:
> +                cmd = '%s -a' % cmd
> +            cmd = "%s '%s'" % (cmd, file)
> +
> +    if not unpack or not cmd:
> +        if os.path.isdir(file):
> +            shutil.rmtree(dest, True)
> +            shutil.copytree(file, dest, True)
> +        else:
> +            shutil.copy2(file, dest)
>  
>      if not cmd:
>          return




  reply	other threads:[~2011-01-11 20:32 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-06 12:48 [PATCH 1/4] python-wifi: add recipe for version 0.5.0 Andreas Oberritter
2011-01-06 12:48 ` [PATCH 2/4] python-wifi: remove version 0.3.1 Andreas Oberritter
2011-01-06 13:07   ` Dr. Michael Lauer
2011-01-06 14:18   ` Frans Meulenbroeks
2011-01-06 14:30   ` Martin Jansa
2011-01-06 12:48 ` [PATCH 3/4] unpack.py: add SRC_URI parameter unpack=<bool> (default: true) Andreas Oberritter
2011-01-11 20:31   ` Andreas Oberritter [this message]
2011-01-11 21:48     ` Bernhard Reutner-Fischer
2011-01-11 22:19       ` Andreas Oberritter
2011-01-12  8:23         ` Bernhard Reutner-Fischer
2011-01-06 12:48 ` [PATCH 4/4] gcc: replace unconditional SRC_URI_append with SRC_URI += Andreas Oberritter
2011-01-06 22:40   ` Khem Raj
2011-01-07  9:52   ` Paul Menzel
2011-01-07 12:02     ` Koen Kooi
2011-01-07 12:39     ` Andreas Oberritter
2011-01-06 13:06 ` [PATCH 1/4] python-wifi: add recipe for version 0.5.0 Dr. Michael Lauer
2011-01-06 14:19 ` Frans Meulenbroeks
2011-01-06 14:30 ` Martin Jansa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D2CBE1D.9030303@opendreambox.org \
    --to=obi@opendreambox.org \
    --cc=chris_larson@mentor.com \
    --cc=openembedded-devel@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.