comparison setup.py @ 50936:6408777c8fa4

branching: merge stable into default
author Raphaël Gomès <rgomes@octobus.net>
date Wed, 06 Sep 2023 18:12:27 +0200
parents 609a3b8058c3 5dc7e1907e48
children 727428c7e1fc
comparison
equal deleted inserted replaced
50929:18c8c18993f0 50936:6408777c8fa4
276 # Run a simple "hg log" command just to see if using hg from the user's 276 # Run a simple "hg log" command just to see if using hg from the user's
277 # path works and can successfully interact with this repository. Windows 277 # path works and can successfully interact with this repository. Windows
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
306 def localhgenv(): 322 def localhgenv():
307 """Get an environment dictionary to use for invoking or importing 323 """Get an environment dictionary to use for invoking or importing