##// END OF EJS Templates
setup: make the error "Unable to find a working hg binary" more informative...
Arseniy Alekseyev -
r51823:5dc7e190 stable
parent child Browse files
Show More
@@ -278,28 +278,44 b' def findhg():'
278 # gives precedence to hg.exe in the current directory, so fall back to the
278 # gives precedence to hg.exe in the current directory, so fall back to the
279 # python invocation of local hg, where pythonXY.dll can always be found.
279 # python invocation of local hg, where pythonXY.dll can always be found.
280 check_cmd = ['log', '-r.', '-Ttest']
280 check_cmd = ['log', '-r.', '-Ttest']
281 if os.name != 'nt' or not os.path.exists("hg.exe"):
281 attempts = []
282
283 def attempt(cmd, env):
282 try:
284 try:
283 retcode, out, err = runcmd(hgcmd + check_cmd, hgenv)
285 retcode, out, err = runcmd(hgcmd + check_cmd, hgenv)
284 except EnvironmentError:
286 res = (True, retcode, out, err)
285 retcode = -1
287 if retcode == 0 and not filterhgerr(err):
286 if retcode == 0 and not filterhgerr(err):
288 return True
289 except EnvironmentError as e:
290 res = (False, e)
291 attempts.append((cmd, res))
292 return False
293
294 if os.name != 'nt' or not os.path.exists("hg.exe"):
295 if attempt(hgcmd + check_cmd, hgenv):
287 return hgcommand(hgcmd, hgenv)
296 return hgcommand(hgcmd, hgenv)
288
297
289 # Fall back to trying the local hg installation.
298 # Fall back to trying the local hg installation.
290 hgenv = localhgenv()
299 hgenv = localhgenv()
291 hgcmd = [sys.executable, 'hg']
300 hgcmd = [sys.executable, 'hg']
292 try:
301 if attempt(hgcmd + check_cmd, hgenv):
293 retcode, out, err = runcmd(hgcmd + check_cmd, hgenv)
294 except EnvironmentError:
295 retcode = -1
296 if retcode == 0 and not filterhgerr(err):
297 return hgcommand(hgcmd, hgenv)
302 return hgcommand(hgcmd, hgenv)
298
303
299 eprint("/!\\")
304 eprint("/!\\")
300 eprint(r"/!\ Unable to find a working hg binary")
305 eprint(r"/!\ Unable to find a working hg binary")
301 eprint(r"/!\ Version cannot be extract from the repository")
306 eprint(r"/!\ Version cannot be extracted from the repository")
302 eprint(r"/!\ Re-run the setup once a first version is built")
307 eprint(r"/!\ Re-run the setup once a first version is built")
308 eprint(r"/!\ Attempts:")
309 for i, e in enumerate(attempts):
310 eprint(r"/!\ attempt #%d:" % (i))
311 eprint(r"/!\ cmd: ", e[0])
312 res = e[1]
313 if res[0]:
314 eprint(r"/!\ return code:", res[1])
315 eprint("/!\\ std output:\n%s" % (res[2].decode()), end="")
316 eprint("/!\\ std error:\n%s" % (res[3].decode()), end="")
317 else:
318 eprint(r"/!\ exception: ", res[1])
303 return None
319 return None
304
320
305
321
General Comments 0
You need to be logged in to leave comments. Login now