[bitbake-devel] [PATCH] lib/bb/fetch2: Fix npm tarball fetch

Davis, Michael michael.davis at essvote.com
Wed May 17 20:35:33 UTC 2017


I created a patch that is a little less ugly, but it is still fetcher specific url handling.
The basic issue is that the path is set to blank for an npm link.
When this compare "elif (re.match(regexp, uri_decoded[loc])):" happens it is comparing "/*" to "".
Since they don't match it ends up skipping the check for a mirror tarball.

The elif line could test if uri_decoded[loc] is empty or matches.
It could also strip off the leading "/" from path and compare "*" to "" which I assume would pass.
My main concern is either of those might break something else unrelated.
I am trying to find the smallest change that won't run the risk of breaking everything else.

Still open to more suggestions on a better solution, but if you like this one I can send a full email diff.

Thanks,
Mike



diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index 79a8906..0975408 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -373,6 +373,9 @@ def decodeurl(url):
     elif type.lower() == 'file':
         host = ""
         path = location
+    elif type.lower() == 'npm':
+        host = location
+        path = "/*"
     else:
         host = location
         path = ""

-----Original Message-----
From: Richard Purdie [mailto:richard.purdie at linuxfoundation.org] 
Sent: Monday, May 15, 2017 10:23 AM
To: Davis, Michael; bitbake-devel at lists.openembedded.org
Subject: Re: [bitbake-devel] [PATCH] lib/bb/fetch2: Fix npm tarball fetch

On Fri, 2017-05-12 at 20:52 +0000, Davis, Michael wrote:
> Tarballs generated by enabling mirror tarballs could not be found by
> the
> fetch for the npm.  This fixes setting the path variable in decode
> url
> so they can be matched.

Would you be able to provide an example of a url which is incorrect and
what the correct version would be?

I get worried about fetcher specific url handling and we probably could
do with adding a test case for this too but its hard to understand
without seeing an example failure.

Cheers,

Richard

> Signed-off-by: Michael Davis <michael.davis at essvote.com>
> ---
>  lib/bb/fetch2/__init__.py | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
> index 136fc29..117c890 100644
> --- a/lib/bb/fetch2/__init__.py
> +++ b/lib/bb/fetch2/__init__.py
> @@ -393,6 +393,8 @@ def decodeurl(url):
>                      raise MalformedUrl(url, "The URL: '%s' is
> invalid: parameter %s does not specify a value (missing '=')" % (url,
> s))
>                  s1, s2 = s.split('=')
>                  p[s1] = s2
> +                if type == 'npm' and s1 == 'name':
> +                    path = '/' + s2
>  
>      return type, host, urllib.parse.unquote(path), user, pswd, p
>  
> -- 
> 2.9.3


More information about the bitbake-devel mailing list