[oe] [PATCH] git: add SRC_URI name
Denys Dmytriyenko
denis at denix.org
Mon Feb 22 22:06:21 UTC 2010
On Mon, Feb 22, 2010 at 10:43:35PM +0100, Bernhard Reutner-Fischer wrote:
> On Mon, Feb 22, 2010 at 08:41:59PM +0100, Bernhard Reutner-Fischer wrote:
> >On Mon, Feb 22, 2010 at 07:17:54PM +0100, Martin Jansa wrote:
> >>On Mon, Feb 22, 2010 at 10:06:00AM -0700, Chris Larson wrote:
> >>> On Mon, Feb 22, 2010 at 9:55 AM, Phil Blundell <philb at gnu.org> wrote:
> >>> > On Mon, 2010-02-22 at 11:24 -0500, Denys Dmytriyenko wrote:
> >>> >> On Sun, Feb 21, 2010 at 04:32:32PM +0100, Bernhard Reutner-Fischer wrote:
> >>> >> > Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
> >>> >> > ---
> >>> >> > recipes/git/git.inc | 2 +-
> >>> >> > 1 files changed, 1 insertions(+), 1 deletions(-)
> >>> >> >
> >>> >> > diff --git a/recipes/git/git.inc b/recipes/git/git.inc
> >>> >> > index 644e159..fd7b708 100644
> >>> >> > --- a/recipes/git/git.inc
> >>> >> > +++ b/recipes/git/git.inc
> >>> >> > @@ -2,7 +2,7 @@ DESCRIPTION = "The git revision control system used by the Linux kernel develope
> >>> >> > SECTION = "console/utils"
> >>> >> > LICENSE = "GPL"
> >>> >> >
> >>> >> > -SRC_URI = "http://www.kernel.org/pub/software/scm/git/git-${PV}.tar.bz2"
> >>> >> > +SRC_URI = "http://www.kernel.org/pub/software/scm/git/git-${PV}.tar.bz2;name=git"
> >>> >>
> >>> >> Is there a patch to add checksums in corresponding recipes to use the name? Or
> >>> >> what is the purpose of adding one?
> >>> >
> >>> > I guess the idea is to make it possible for new recipes (which use
> >>> > this .inc file) to include their own checksums. Seems like a reasonable
> >>> > enough plan even if the old recipes are not converted.
> >>>
> >>> Has anyone thought about programmatically injecting a name to the
> >>> first tarball/zip in the SRC_URI if no sources have that name yet? It
> >>> seems like adding a name to the primary tarball is becoming common
> >>> boilerplate, and the common case is for that to be the first source.
> >
> >For recipes that have only one fetched source, could we perhaps default
> >to plain SRC_URI[md5sum], without a name. If a second fetched source is
> >added, this would transparently break (i.e. require adding two names).
> >>
> >>Also would be great to have unified names where possible.
> >
> >For recipes that have two or more fetched sources, i personally would
> >use PN but, as you say, that has the disadvantage that you have to
> >potentially lookup the package name in an .inc. Not my call though.
> >
> >>It would make adding new recipes a bit easier (no need to
> >>check/copy&paster name used in .inc and also base.bbclass could easily
> >>generate those checksum sections with right name easier.
> >>
> >>I'm using "archive" as few others also used.
> >
> >and some use tarball, some pn ....
>
> Not using "archive" as Martin likes as default, but uri%d, but
For multiple SRC_URIs, using uri1/uri2 can be more confusing and may be not
much better than looking up real names in .inc file...
> what do you all think about the attached proposal (including docs!:)?
>
> cheers,
>
> PS: does the ftps fetcher work, i didn't bother to try, i admit..
> docs seem to be inconsistent about it WRT wget..
> diff --git a/classes/base.bbclass b/classes/base.bbclass
> index c8ee722..769cf2d 100644
> --- a/classes/base.bbclass
> +++ b/classes/base.bbclass
> @@ -61,11 +61,15 @@ def base_chk_file_vars(parser, localpath, params, data):
> name = params["name"]
> except KeyError:
> return False
> - flagName = "%s.md5sum" % name
> - want_md5sum = bb.data.getVarFlag("SRC_URI", flagName, data)
> - flagName = "%s.sha256sum" % name
> - want_sha256sum = bb.data.getVarFlag("SRC_URI", flagName, data)
> -
> + if name:
> + md5flag = "%s.md5sum" % name
> + sha256flag = "%s.sha256sum" % name
> + else:
> + md5flag = "md5sum"
> + sha256flag = "sha256sum"
> + want_md5sum = bb.data.getVarFlag("SRC_URI", md5flag, data)
> + want_sha256sum = bb.data.getVarFlag("SRC_URI", sha256flag, data)
> + bb.note("sha=%s, md5=%s" % (want_md5sum, want_sha256sum))
> if (want_sha256sum == None and want_md5sum == None):
> # no checksums to check, nothing to do
> return False
> @@ -702,12 +706,21 @@ python base_do_fetch() {
> pn = bb.data.getVar('PN', d, True)
>
> # Check each URI
> + uri_num = 0
> for url in src_uri.split():
> localpath = bb.data.expand(bb.fetch.localpath(url, localdata), localdata)
> (type,host,path,_,_,params) = bb.decodeurl(url)
> uri = "%s://%s%s" % (type,host,path)
> try:
> if type in [ "http", "https", "ftp", "ftps" ]:
> + # We provide a default shortcut of plain [] for the first fetch uri
> + # and default to uri%d for subsequent fetch uris.
> + # Explicit names in any uri overrides this default.
> + if not "name" in params:
> + if uri_num:
> + params["name"] = "uri%d" % uri_num
> + else:
> + params["name"] = ""
> if not (base_chk_file_vars(parser, localpath, params, d) or base_chk_file(parser, pn, pv,uri, localpath, d)):
> if not bb.data.getVar("OE_ALLOW_INSECURE_DOWNLOADS", d, True):
> bb.fatal("%s-%s: %s has no checksum defined, cannot check archive integrity" % (pn,pv,uri))
> @@ -715,6 +728,7 @@ python base_do_fetch() {
> bb.note("%s-%s: %s has no checksum defined, archive integrity not checked" % (pn,pv,uri))
> except Exception:
> raise bb.build.FuncFailed("Checksum of '%s' failed" % uri)
> + uri_num += 1
> }
>
> addtask fetchall after do_fetch
> diff --git a/docs/usermanual/reference/var_src_uri.xml b/docs/usermanual/reference/var_src_uri.xml
> index a35e1ee..132bce8 100644
> --- a/docs/usermanual/reference/var_src_uri.xml
> +++ b/docs/usermanual/reference/var_src_uri.xml
> @@ -29,7 +29,16 @@
> be used in preference to retrieving a new version . Any source that is
> retrieved from a remote URI will be stored in the download source directory
> and an appropriate md5 sum generated and stored alongside it.</para>
> -
> + <para>Checksums for http/https/ftp/ftps uris are stored in each recipe in
> + the form of<screen>SRC_URI[md5sum] = "9a7a11ffd52d9c4553ea8c0134a6fa86"
> +SRC_URI[sha256sum] = "36bdb85c97b39ac604bc58cb7857ee08295242c78a12848ef8a31701921b9434"</screen>
> + for the first remote SRC_URI that has <emphasis>no</emphasis> explicit <command>name=foo</command>
> + associated with it. Following <emphasis>unnamed</emphasis> SRC_URIs default to<screen>
> +SRC_URI[uri1.md5sum] =
> +SRC_URI[uri1.sha256sum] =
> +SRC_URI[uri2.md5sum] =
> +SRC_URI[uri2.sha256sum] =</screen>
> + etc.</para>
> <para>Each URI supports a set of additional options. These options are
> tag/value pairs of the form <command>"a=b"</command> and are semi-colon
> separated from each other and from the URI. The follow examples shows two
> @@ -38,7 +47,7 @@
>
> <variablelist>
> <varlistentry>
> - <term>http, https, ftps</term>
> + <term>http, https, ftp, ftps</term>
>
> <listitem>
> <para>Used to download files and source code via the specified URL.
> @@ -164,6 +173,7 @@
> <term>md5sum</term>
>
> <listitem>
> + <para><note>DEPRECATED<!-- isn't it? --></note></para>
> <para>If an md5sum is provided then the downloaded files will only
> be considered valid if the md5sum of the downloaded file matches the
> md5sum option provided.</para>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
More information about the Openembedded-devel
mailing list