equal
deleted
inserted
replaced
9 import sys |
9 import sys |
10 import tempfile |
10 import tempfile |
11 |
11 |
12 tempprefix = 'hg-hghave-' |
12 tempprefix = 'hg-hghave-' |
13 |
13 |
14 def matchoutput(cmd, regexp): |
14 def matchoutput(cmd, regexp, ignorestatus=False): |
15 """Return True if cmd executes successfully and its output |
15 """Return True if cmd executes successfully and its output |
16 is matched by the supplied regular expression. |
16 is matched by the supplied regular expression. |
17 """ |
17 """ |
18 r = re.compile(regexp) |
18 r = re.compile(regexp) |
19 fh = os.popen(cmd) |
19 fh = os.popen(cmd) |
20 s = fh.read() |
20 s = fh.read() |
21 ret = fh.close() |
21 ret = fh.close() |
22 return ret is None and r.search(s) |
22 return (ignorestatus or ret is None) and r.search(s) |
23 |
23 |
24 def has_symlink(): |
24 def has_symlink(): |
25 return hasattr(os, "symlink") |
25 return hasattr(os, "symlink") |
26 |
26 |
27 def has_fifo(): |
27 def has_fifo(): |
28 return hasattr(os, "mkfifo") |
28 return hasattr(os, "mkfifo") |
|
29 |
|
30 def has_cvs(): |
|
31 return matchoutput('cvs --version 2>&1', r'Concurrent Versions System') |
|
32 |
|
33 def has_cvsps(): |
|
34 return matchoutput('cvsps -h -q 2>&1', r'cvsps version', True) |
29 |
35 |
30 def has_executablebit(): |
36 def has_executablebit(): |
31 fd, path = tempfile.mkstemp(prefix=tempprefix) |
37 fd, path = tempfile.mkstemp(prefix=tempprefix) |
32 os.close(fd) |
38 os.close(fd) |
33 try: |
39 try: |
64 |
70 |
65 def has_git(): |
71 def has_git(): |
66 return matchoutput('git --version 2>&1', r'^git version') |
72 return matchoutput('git --version 2>&1', r'^git version') |
67 |
73 |
68 checks = { |
74 checks = { |
|
75 "cvs": (has_cvs, "cvs client"), |
|
76 "cvsps": (has_cvsps, "cvsps utility"), |
69 "eol-in-paths": (has_eol_in_paths, "end-of-lines in paths"), |
77 "eol-in-paths": (has_eol_in_paths, "end-of-lines in paths"), |
70 "execbit": (has_executablebit, "executable bit"), |
78 "execbit": (has_executablebit, "executable bit"), |
71 "git": (has_git, "git command line client"), |
79 "git": (has_git, "git command line client"), |
72 "fifo": (has_fifo, "named pipes"), |
80 "fifo": (has_fifo, "named pipes"), |
73 "hotshot": (has_hotshot, "python hotshot module"), |
81 "hotshot": (has_hotshot, "python hotshot module"), |