Mercurial > public > mercurial-scm > hg
comparison setup.py @ 35246:d73ccc63b8f9
setup: convert version strings to unicode on Python 3
Fixes the following error:
stderr from 'hg log -T x
-r only(.,'b'4.4.2'')':
b' hg: parse error at 10: unexpected token: symbol'
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Tue, 05 Dec 2017 21:31:01 +0900 |
parents | 61ff0d7d56fd |
children | 854a7315603e |
comparison
equal
deleted
inserted
replaced
35245:414114a7c18f | 35246:d73ccc63b8f9 |
---|---|
27 | 27 |
28 import sys, platform | 28 import sys, platform |
29 if sys.version_info[0] >= 3: | 29 if sys.version_info[0] >= 3: |
30 printf = eval('print') | 30 printf = eval('print') |
31 libdir_escape = 'unicode_escape' | 31 libdir_escape = 'unicode_escape' |
32 def sysstr(s): | |
33 return s.decode('latin-1') | |
32 else: | 34 else: |
33 libdir_escape = 'string_escape' | 35 libdir_escape = 'string_escape' |
34 def printf(*args, **kwargs): | 36 def printf(*args, **kwargs): |
35 f = kwargs.get('file', sys.stdout) | 37 f = kwargs.get('file', sys.stdout) |
36 end = kwargs.get('end', '\n') | 38 end = kwargs.get('end', '\n') |
37 f.write(b' '.join(args) + end) | 39 f.write(b' '.join(args) + end) |
40 def sysstr(s): | |
41 return s | |
38 | 42 |
39 # Attempt to guide users to a modern pip - this means that 2.6 users | 43 # Attempt to guide users to a modern pip - this means that 2.6 users |
40 # should have a chance of getting a 4.2 release, and when we ratchet | 44 # should have a chance of getting a 4.2 release, and when we ratchet |
41 # the version requirement forward again hopefully everyone will get | 45 # the version requirement forward again hopefully everyone will get |
42 # something that works for them. | 46 # something that works for them. |
293 version = '' | 297 version = '' |
294 | 298 |
295 if os.path.isdir('.hg'): | 299 if os.path.isdir('.hg'): |
296 hg = findhg() | 300 hg = findhg() |
297 cmd = ['log', '-r', '.', '--template', '{tags}\n'] | 301 cmd = ['log', '-r', '.', '--template', '{tags}\n'] |
298 numerictags = [t for t in hg.run(cmd).split() if t[0:1].isdigit()] | 302 numerictags = [t for t in sysstr(hg.run(cmd)).split() if t[0:1].isdigit()] |
299 hgid = hg.run(['id', '-i']).strip() | 303 hgid = sysstr(hg.run(['id', '-i'])).strip() |
300 if not hgid: | 304 if not hgid: |
301 # Bail out if hg is having problems interacting with this repository, | 305 # Bail out if hg is having problems interacting with this repository, |
302 # rather than falling through and producing a bogus version number. | 306 # rather than falling through and producing a bogus version number. |
303 # Continuing with an invalid version number will break extensions | 307 # Continuing with an invalid version number will break extensions |
304 # that define minimumhgversion. | 308 # that define minimumhgversion. |
307 version = numerictags[-1] | 311 version = numerictags[-1] |
308 if hgid.endswith('+'): # propagate the dirty status to the tag | 312 if hgid.endswith('+'): # propagate the dirty status to the tag |
309 version += '+' | 313 version += '+' |
310 else: # no tag found | 314 else: # no tag found |
311 ltagcmd = ['parents', '--template', '{latesttag}'] | 315 ltagcmd = ['parents', '--template', '{latesttag}'] |
312 ltag = hg.run(ltagcmd) | 316 ltag = sysstr(hg.run(ltagcmd)) |
313 changessincecmd = ['log', '-T', 'x\n', '-r', "only(.,'%s')" % ltag] | 317 changessincecmd = ['log', '-T', 'x\n', '-r', "only(.,'%s')" % ltag] |
314 changessince = len(hg.run(changessincecmd).splitlines()) | 318 changessince = len(hg.run(changessincecmd).splitlines()) |
315 version = '%s+%s-%s' % (ltag, changessince, hgid) | 319 version = '%s+%s-%s' % (ltag, changessince, hgid) |
316 if version.endswith('+'): | 320 if version.endswith('+'): |
317 version += time.strftime('%Y%m%d') | 321 version += time.strftime('%Y%m%d') |