diff options
Diffstat (limited to 'bitbake/lib/bb/fetch2/hg.py')
| -rw-r--r-- | bitbake/lib/bb/fetch2/hg.py | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/bitbake/lib/bb/fetch2/hg.py b/bitbake/lib/bb/fetch2/hg.py index 81592f6e04..6547cca73e 100644 --- a/bitbake/lib/bb/fetch2/hg.py +++ b/bitbake/lib/bb/fetch2/hg.py | |||
| @@ -64,7 +64,9 @@ class Hg(FetchMethod): | |||
| 64 | elif not ud.revision: | 64 | elif not ud.revision: |
| 65 | ud.revision = self.latest_revision(ud, d) | 65 | ud.revision = self.latest_revision(ud, d) |
| 66 | 66 | ||
| 67 | ud.localfile = data.expand('%s_%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision), d) | 67 | ud.localfile = ud.moddir |
| 68 | |||
| 69 | ud.basecmd = data.getVar("FETCHCMD_hg", d, True) or "/usr/bin/env hg" | ||
| 68 | 70 | ||
| 69 | def need_update(self, ud, d): | 71 | def need_update(self, ud, d): |
| 70 | revTag = ud.parm.get('rev', 'tip') | 72 | revTag = ud.parm.get('rev', 'tip') |
| @@ -80,8 +82,6 @@ class Hg(FetchMethod): | |||
| 80 | command is "fetch", "update", "info" | 82 | command is "fetch", "update", "info" |
| 81 | """ | 83 | """ |
| 82 | 84 | ||
| 83 | basecmd = data.expand('${FETCHCMD_hg}', d) | ||
| 84 | |||
| 85 | proto = ud.parm.get('protocol', 'http') | 85 | proto = ud.parm.get('protocol', 'http') |
| 86 | 86 | ||
| 87 | host = ud.host | 87 | host = ud.host |
| @@ -98,7 +98,7 @@ class Hg(FetchMethod): | |||
| 98 | hgroot = ud.user + "@" + host + ud.path | 98 | hgroot = ud.user + "@" + host + ud.path |
| 99 | 99 | ||
| 100 | if command == "info": | 100 | if command == "info": |
| 101 | return "%s identify -i %s://%s/%s" % (basecmd, proto, hgroot, ud.module) | 101 | return "%s identify -i %s://%s/%s" % (ud.basecmd, proto, hgroot, ud.module) |
| 102 | 102 | ||
| 103 | options = []; | 103 | options = []; |
| 104 | 104 | ||
| @@ -111,22 +111,22 @@ class Hg(FetchMethod): | |||
| 111 | 111 | ||
| 112 | if command == "fetch": | 112 | if command == "fetch": |
| 113 | if ud.user and ud.pswd: | 113 | if ud.user and ud.pswd: |
| 114 | cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" clone %s %s://%s/%s %s" % (basecmd, ud.user, ud.pswd, proto, " ".join(options), proto, hgroot, ud.module, ud.module) | 114 | cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" clone %s %s://%s/%s %s" % (ud.basecmd, ud.user, ud.pswd, proto, " ".join(options), proto, hgroot, ud.module, ud.module) |
| 115 | else: | 115 | else: |
| 116 | cmd = "%s clone %s %s://%s/%s %s" % (basecmd, " ".join(options), proto, hgroot, ud.module, ud.module) | 116 | cmd = "%s clone %s %s://%s/%s %s" % (ud.basecmd, " ".join(options), proto, hgroot, ud.module, ud.module) |
| 117 | elif command == "pull": | 117 | elif command == "pull": |
| 118 | # do not pass options list; limiting pull to rev causes the local | 118 | # do not pass options list; limiting pull to rev causes the local |
| 119 | # repo not to contain it and immediately following "update" command | 119 | # repo not to contain it and immediately following "update" command |
| 120 | # will crash | 120 | # will crash |
| 121 | if ud.user and ud.pswd: | 121 | if ud.user and ud.pswd: |
| 122 | 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) | 122 | cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" pull" % (ud.basecmd, ud.user, ud.pswd, proto) |
| 123 | else: | 123 | else: |
| 124 | cmd = "%s pull" % (basecmd) | 124 | cmd = "%s pull" % (ud.basecmd) |
| 125 | elif command == "update": | 125 | elif command == "update": |
| 126 | if ud.user and ud.pswd: | 126 | if ud.user and ud.pswd: |
| 127 | cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" update -C %s" % (basecmd, ud.user, ud.pswd, proto, " ".join(options)) | 127 | cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" update -C %s" % (ud.basecmd, ud.user, ud.pswd, proto, " ".join(options)) |
| 128 | else: | 128 | else: |
| 129 | cmd = "%s update -C %s" % (basecmd, " ".join(options)) | 129 | cmd = "%s update -C %s" % (ud.basecmd, " ".join(options)) |
| 130 | else: | 130 | else: |
| 131 | raise FetchError("Invalid hg command %s" % command, ud.url) | 131 | raise FetchError("Invalid hg command %s" % command, ud.url) |
| 132 | 132 | ||
| @@ -163,15 +163,6 @@ class Hg(FetchMethod): | |||
| 163 | logger.debug(1, "Running %s", updatecmd) | 163 | logger.debug(1, "Running %s", updatecmd) |
| 164 | runfetchcmd(updatecmd, d) | 164 | runfetchcmd(updatecmd, d) |
| 165 | 165 | ||
| 166 | scmdata = ud.parm.get("scmdata", "") | ||
| 167 | if scmdata == "keep": | ||
| 168 | tar_flags = "" | ||
| 169 | else: | ||
| 170 | tar_flags = "--exclude '.hg' --exclude '.hgrags'" | ||
| 171 | |||
| 172 | os.chdir(ud.pkgdir) | ||
| 173 | runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.module), d, cleanup = [ud.localpath]) | ||
| 174 | |||
| 175 | def supports_srcrev(self): | 166 | def supports_srcrev(self): |
| 176 | return True | 167 | return True |
| 177 | 168 | ||
| @@ -191,3 +182,29 @@ class Hg(FetchMethod): | |||
| 191 | Return a unique key for the url | 182 | Return a unique key for the url |
| 192 | """ | 183 | """ |
| 193 | return "hg:" + ud.moddir | 184 | return "hg:" + ud.moddir |
| 185 | |||
| 186 | def localpath(self, ud, d): | ||
| 187 | return ud.moddir | ||
| 188 | |||
| 189 | def unpack(self, ud, destdir, d): | ||
| 190 | """ | ||
| 191 | Make a local clone or export for the url | ||
| 192 | """ | ||
| 193 | |||
| 194 | revflag = "-r %s" % ud.revision | ||
| 195 | subdir = ud.parm.get("destsuffix", ud.module) | ||
| 196 | codir = "%s/%s" % (destdir, subdir) | ||
| 197 | |||
| 198 | scmdata = ud.parm.get("scmdata", "") | ||
| 199 | if scmdata != "nokeep": | ||
| 200 | if not os.access(os.path.join(codir, '.hg'), os.R_OK): | ||
| 201 | logger.debug(2, "Unpack: creating new hg repository in '" + codir + "'") | ||
| 202 | runfetchcmd("%s init %s" % (ud.basecmd, codir), d) | ||
| 203 | logger.debug(2, "Unpack: updating source in '" + codir + "'") | ||
| 204 | os.chdir(codir) | ||
| 205 | runfetchcmd("%s pull %s" % (ud.basecmd, ud.moddir), d) | ||
| 206 | runfetchcmd("%s up -C %s" % (ud.basecmd, revflag), d) | ||
| 207 | else: | ||
| 208 | logger.debug(2, "Unpack: extracting source to '" + codir + "'") | ||
| 209 | os.chdir(ud.moddir) | ||
| 210 | runfetchcmd("%s archive -t files %s %s" % (ud.basecmd, revflag, codir), d) | ||
