Patchwork [bitbake-devel] HG Fetch with username and password in url

login
register
mail settings
Submitter Volker Vogelhuber
Date Oct. 29, 2013, 4:31 p.m.
Message ID <526FE2D3.7020808@digitalendoscopy.de>
Download mbox | patch
Permalink /patch/60721/
State New
Headers show

Comments

Volker Vogelhuber - Oct. 29, 2013, 4:31 p.m.
We currently use an company internal mercurial server with username and 
password authentication
that will be accessed during the build of a firmware image from within a 
custom recipe.
The only way to access it from within the yocto toolchain seems to have 
the username and password
stored within the URL of the SRC_URI variable.

But the current hg.py fetcher does not completely support this. Attached 
is a patch that fixes the missing parts.

// This time in plain text, sorry for doing HTML mail
Richard Purdie - Nov. 1, 2013, 5:56 p.m.
On Tue, 2013-10-29 at 17:31 +0100, Volker Vogelhuber wrote:
> We currently use an company internal mercurial server with username
> and 
> password authentication
> that will be accessed during the build of a firmware image from within
> a 
> custom recipe.
> The only way to access it from within the yocto toolchain seems to
> have 
> the username and password
> stored within the URL of the SRC_URI variable.
> 
> But the current hg.py fetcher does not completely support this.
> Attached 
> is a patch that fixes the missing parts.

Thanks. In the future, a commit message and a Signed-off-by line would
help but I've merged this change.

Cheers,

Richard

Patch

diff --git a/bitbake/lib/bb/fetch2/hg.py b/bitbake/lib/bb/fetch2/hg.py
index b1c8675..cf21481 100644
--- a/bitbake/lib/bb/fetch2/hg.py
+++ b/bitbake/lib/bb/fetch2/hg.py
@@ -92,7 +92,10 @@  class Hg(FetchMethod):
         if not ud.user:
             hgroot = host + ud.path
         else:
-            hgroot = ud.user + "@" + host + ud.path
+            if ud.pswd:
+                hgroot = ud.user + ":" + ud.pswd + "@" + host + ud.path
+            else:
+                hgroot = ud.user + "@" + host + ud.path
 
         if command == "info":
             return "%s identify -i %s://%s/%s" % (basecmd, proto, hgroot, ud.module)
@@ -112,7 +115,10 @@  class Hg(FetchMethod):
             # do not pass options list; limiting pull to rev causes the local
             # repo not to contain it and immediately following "update" command
             # will crash
-            cmd = "%s pull" % (basecmd)
+            if ud.user and ud.pswd:
+                cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" pull" % (basecmd, ud.user, ud.pswd, proto)
+            else:
+                cmd = "%s pull" % (basecmd)
         elif command == "update":
             cmd = "%s update -C %s" % (basecmd, " ".join(options))
         else: