diff options
Diffstat (limited to 'bitbake/lib')
-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) | ||