Mercurial > cpython-lru_cache-weakref
annotate Mac/scripts/MkDistr.py @ 27998:e27f58a50737 legacy-trunk
SF bug #690377: Dud footnote reference in distutils docs
| author | Raymond Hettinger <python@rcn.com> |
|---|---|
| date | Fri, 21 Feb 2003 02:47:09 +0000 |
| parents | f3fb05bfeeeb |
| children |
| rev | line source |
|---|---|
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
1 # |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
2 # Interactively decide what to distribute |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
3 # |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
4 # |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
5 # The exclude file signals files to always exclude, |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
6 # The pattern file lines are of the form |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
7 # *.c |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
8 # This excludes all files ending in .c. |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
9 # |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
10 # The include file signals files and directories to include. |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
11 # Records are of the form |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
12 # ('Tools:bgen:AE:AppleEvents.py', 'Lib:MacToolbox:AppleEvents.py') |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
13 # This includes the specified file, putting it in the given place, or |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
14 # ('Tools:bgen:AE:AppleEvents.py', None) |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
15 # This excludes the specified file. |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
16 # |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
17 from MkDistr_ui import * |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
18 import fnmatch |
|
15696
57a4857430ff
Use re in stead of regex.
Jack Jansen <jack.jansen@cwi.nl>
parents:
14502
diff
changeset
|
19 import re |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
20 import os |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
21 import sys |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
22 import macfs |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
23 import macostools |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
24 |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
25 DEBUG=0 |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
26 |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
27 SyntaxError='Include/exclude file syntax error' |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
28 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
29 class Matcher: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
30 """Include/exclude database, common code""" |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
31 |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
32 def __init__(self, filename): |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
33 self.filename = filename |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
34 self.rawdata = [] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
35 self.parse(filename) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
36 self.rawdata.sort() |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
37 self.rebuild() |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
38 self.modified = 0 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
39 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
40 def parse(self, dbfile): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
41 try: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
42 fp = open(dbfile) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
43 except IOError: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
44 return |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
45 data = fp.readlines() |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
46 fp.close() |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
47 for d in data: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
48 d = d[:-1] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
49 if not d or d[0] == '#': continue |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
50 pat = self.parseline(d) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
51 self.rawdata.append(pat) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
52 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
53 def save(self): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
54 fp = open(self.filename, 'w') |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
55 self.savedata(fp, self.rawdata) |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
56 self.modified = 0 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
57 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
58 def add(self, value): |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
59 if len(value) == 1: |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
60 value = value + ('',) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
61 self.rawdata.append(value) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
62 self.rebuild1(value) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
63 self.modified = 1 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
64 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
65 def delete(self, value): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
66 key = value |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
67 for i in range(len(self.rawdata)): |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
68 if self.rawdata[i][0] == key: |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
69 del self.rawdata[i] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
70 self.unrebuild1(i, key) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
71 self.modified = 1 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
72 return |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
73 print 'Not found!', key |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
74 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
75 def getall(self): |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
76 return map(lambda x: x[0], self.rawdata) |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
77 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
78 def get(self, value): |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
79 for src, dst in self.rawdata: |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
80 if src == value: |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
81 return src, dst |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
82 print 'Not found!', value |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
83 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
84 def is_modified(self): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
85 return self.modified |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
86 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
87 class IncMatcher(Matcher): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
88 """Include filename database and matching engine""" |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
89 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
90 def rebuild(self): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
91 self.idict = {} |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
92 self.edict = {} |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
93 for v in self.rawdata: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
94 self.rebuild1(v) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
95 |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
96 def parseline(self, line): |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
97 try: |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
98 data = eval(line) |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
99 except: |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
100 raise SyntaxError, line |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
101 if type(data) <> type(()) or len(data) not in (1,2): |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
102 raise SyntaxError, line |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
103 if len(data) == 1: |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
104 data = data + ('',) |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
105 return data |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
106 |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
107 def savedata(self, fp, data): |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
108 for d in self.rawdata: |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
109 fp.write(`d`+'\n') |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
110 |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
111 def rebuild1(self, (src, dst)): |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
112 if dst == '': |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
113 dst = src |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
114 if dst == None: |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
115 self.edict[src] = None |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
116 else: |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
117 self.idict[src] = dst |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
118 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
119 def unrebuild1(self, num, src): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
120 if self.idict.has_key(src): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
121 del self.idict[src] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
122 else: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
123 del self.edict[src] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
124 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
125 def match(self, patharg): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
126 removed = [] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
127 # First check the include directory |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
128 path = patharg |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
129 while 1: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
130 if self.idict.has_key(path): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
131 # We know of this path (or initial piece of path) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
132 dstpath = self.idict[path] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
133 # We do want it distributed. Tack on the tail. |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
134 while removed: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
135 dstpath = os.path.join(dstpath, removed[0]) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
136 removed = removed[1:] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
137 # Finally, if the resultant string ends in a separator |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
138 # tack on our input filename |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
139 if dstpath[-1] == os.sep: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
140 dir, file = os.path.split(path) |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
141 dstpath = os.path.join(dstpath, file) |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
142 if DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
143 print 'include', patharg, dstpath |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
144 return dstpath |
|
14502
eef25730e64d
The logic for finding long matches before short ones was wrong (why did I never notice this??!?), fixed.
Jack Jansen <jack.jansen@cwi.nl>
parents:
12598
diff
changeset
|
145 ## path, lastcomp = os.path.split(path) |
|
eef25730e64d
The logic for finding long matches before short ones was wrong (why did I never notice this??!?), fixed.
Jack Jansen <jack.jansen@cwi.nl>
parents:
12598
diff
changeset
|
146 ## if not path: |
|
eef25730e64d
The logic for finding long matches before short ones was wrong (why did I never notice this??!?), fixed.
Jack Jansen <jack.jansen@cwi.nl>
parents:
12598
diff
changeset
|
147 ## break |
|
eef25730e64d
The logic for finding long matches before short ones was wrong (why did I never notice this??!?), fixed.
Jack Jansen <jack.jansen@cwi.nl>
parents:
12598
diff
changeset
|
148 ## removed[0:0] = [lastcomp] |
|
eef25730e64d
The logic for finding long matches before short ones was wrong (why did I never notice this??!?), fixed.
Jack Jansen <jack.jansen@cwi.nl>
parents:
12598
diff
changeset
|
149 ## # Next check the exclude directory |
|
eef25730e64d
The logic for finding long matches before short ones was wrong (why did I never notice this??!?), fixed.
Jack Jansen <jack.jansen@cwi.nl>
parents:
12598
diff
changeset
|
150 ## path = patharg |
|
eef25730e64d
The logic for finding long matches before short ones was wrong (why did I never notice this??!?), fixed.
Jack Jansen <jack.jansen@cwi.nl>
parents:
12598
diff
changeset
|
151 ## while 1: |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
152 if self.edict.has_key(path): |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
153 if DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
154 print 'exclude', patharg, path |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
155 return '' |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
156 path, lastcomp = os.path.split(path) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
157 if not path: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
158 break |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
159 removed[0:0] = [lastcomp] |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
160 if DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
161 print 'nomatch', patharg |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
162 return None |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
163 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
164 def checksourcetree(self): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
165 rv = [] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
166 for name in self.idict.keys(): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
167 if not os.path.exists(name): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
168 rv.append(name) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
169 return rv |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
170 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
171 class ExcMatcher(Matcher): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
172 """Exclude pattern database and matching engine""" |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
173 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
174 def rebuild(self): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
175 self.relist = [] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
176 for v in self.rawdata: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
177 self.rebuild1(v) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
178 |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
179 def parseline(self, data): |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
180 return (data, None) |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
181 |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
182 def savedata(self, fp, data): |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
183 for d in self.rawdata: |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
184 fp.write(d[0]+'\n') |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
185 |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
186 def rebuild1(self, (src, dst)): |
|
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
187 pat = fnmatch.translate(src) |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
188 if DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
189 print 'PATTERN', `src`, 'REGEX', `pat` |
|
15696
57a4857430ff
Use re in stead of regex.
Jack Jansen <jack.jansen@cwi.nl>
parents:
14502
diff
changeset
|
190 self.relist.append(re.compile(pat)) |
|
4168
74b8aa7f1114
Completely revamped: it now uses separate instruction files per
Jack Jansen <jack.jansen@cwi.nl>
parents:
3046
diff
changeset
|
191 |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
192 def unrebuild1(self, num, src): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
193 del self.relist[num] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
194 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
195 def match(self, path): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
196 comps = os.path.split(path) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
197 file = comps[-1] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
198 for pat in self.relist: |
|
15696
57a4857430ff
Use re in stead of regex.
Jack Jansen <jack.jansen@cwi.nl>
parents:
14502
diff
changeset
|
199 if pat and pat.match(file): |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
200 if DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
201 print 'excmatch', file, pat |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
202 return 1 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
203 return 0 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
204 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
205 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
206 class Main: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
207 """The main program glueing it all together""" |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
208 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
209 def __init__(self): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
210 InitUI() |
|
12589
2cc6e6dfe9bb
Automatically dump distribution folders where I want them, next to the vise scripts.
Jack Jansen <jack.jansen@cwi.nl>
parents:
8157
diff
changeset
|
211 os.chdir(sys.prefix) |
|
4473
55fe64c21145
Different default location for distribution templates
Jack Jansen <jack.jansen@cwi.nl>
parents:
4168
diff
changeset
|
212 if not os.path.isdir(':Mac:Distributions'): |
|
55fe64c21145
Different default location for distribution templates
Jack Jansen <jack.jansen@cwi.nl>
parents:
4168
diff
changeset
|
213 os.mkdir(':Mac:Distributions') |
|
12589
2cc6e6dfe9bb
Automatically dump distribution folders where I want them, next to the vise scripts.
Jack Jansen <jack.jansen@cwi.nl>
parents:
8157
diff
changeset
|
214 self.typedist = GetType() |
|
2cc6e6dfe9bb
Automatically dump distribution folders where I want them, next to the vise scripts.
Jack Jansen <jack.jansen@cwi.nl>
parents:
8157
diff
changeset
|
215 self.inc = IncMatcher(':Mac:Distributions:%s.include'%self.typedist) |
|
2cc6e6dfe9bb
Automatically dump distribution folders where I want them, next to the vise scripts.
Jack Jansen <jack.jansen@cwi.nl>
parents:
8157
diff
changeset
|
216 self.exc = ExcMatcher(':Mac:Distributions:%s.exclude'%self.typedist) |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
217 self.ui = MkDistrUI(self) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
218 self.ui.mainloop() |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
219 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
220 def check(self): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
221 return self.checkdir(':', 1) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
222 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
223 def checkdir(self, path, istop): |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
224 if DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
225 print 'checkdir', path |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
226 files = os.listdir(path) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
227 rv = [] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
228 todo = [] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
229 for f in files: |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
230 if DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
231 print 'checkfile', f |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
232 if self.exc.match(f): |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
233 if DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
234 print 'exclude match', f |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
235 continue |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
236 fullname = os.path.join(path, f) |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
237 if DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
238 print 'checkpath', fullname |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
239 matchvalue = self.inc.match(fullname) |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
240 if matchvalue == None: |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
241 if os.path.isdir(fullname): |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
242 if DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
243 print 'do dir', fullname |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
244 todo.append(fullname) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
245 else: |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
246 if DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
247 print 'include', fullname |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
248 rv.append(fullname) |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
249 elif DEBUG: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
250 print 'badmatch', matchvalue |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
251 for d in todo: |
| 5621 | 252 if len(rv) > 500: |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
253 if istop: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
254 rv.append('... and more ...') |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
255 return rv |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
256 rv = rv + self.checkdir(d, 0) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
257 return rv |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
258 |
|
12589
2cc6e6dfe9bb
Automatically dump distribution folders where I want them, next to the vise scripts.
Jack Jansen <jack.jansen@cwi.nl>
parents:
8157
diff
changeset
|
259 def run(self): |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
260 missing = self.inc.checksourcetree() |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
261 if missing: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
262 print '==== Missing source files ====' |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
263 for i in missing: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
264 print i |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
265 print '==== Fix and retry ====' |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
266 return |
|
12598
92d1ddc1c57f
Put the install folders in (vise), not vise, so the include files aren't accidentally picked up by the normal build process.
Jack Jansen <jack.jansen@cwi.nl>
parents:
12589
diff
changeset
|
267 destprefix = os.path.join(sys.prefix, ':Mac:Distributions:(vise)') |
|
12589
2cc6e6dfe9bb
Automatically dump distribution folders where I want them, next to the vise scripts.
Jack Jansen <jack.jansen@cwi.nl>
parents:
8157
diff
changeset
|
268 destprefix = os.path.join(destprefix, '%s Distribution'%self.typedist) |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
269 if not self.rundir(':', destprefix, 0): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
270 return |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
271 self.rundir(':', destprefix, 1) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
272 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
273 def rundir(self, path, destprefix, doit): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
274 files = os.listdir(path) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
275 todo = [] |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
276 rv = 1 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
277 for f in files: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
278 if self.exc.match(f): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
279 continue |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
280 fullname = os.path.join(path, f) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
281 if os.path.isdir(fullname): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
282 todo.append(fullname) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
283 else: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
284 dest = self.inc.match(fullname) |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
285 if dest == None: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
286 print 'Not yet resolved:', fullname |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
287 rv = 0 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
288 if dest: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
289 if doit: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
290 print 'COPY ', fullname |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
291 print ' -> ', os.path.join(destprefix, dest) |
|
7442
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
292 try: |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
293 macostools.copy(fullname, os.path.join(destprefix, dest), 1) |
|
05189f7cdbeb
Added some debug prints (if enabled by setting DEBUG)
Jack Jansen <jack.jansen@cwi.nl>
parents:
5621
diff
changeset
|
294 except: #DBG |
|
17002
f3fb05bfeeeb
Re-try the file copy once if it fails. This works around an obscure and non-reproducibe bug in GUSI.
Jack Jansen <jack.jansen@cwi.nl>
parents:
15696
diff
changeset
|
295 print '*** Copy failed mysteriously, try again' |
|
f3fb05bfeeeb
Re-try the file copy once if it fails. This works around an obscure and non-reproducibe bug in GUSI.
Jack Jansen <jack.jansen@cwi.nl>
parents:
15696
diff
changeset
|
296 print '*** cwd', os.getcwd() #DBG |
|
f3fb05bfeeeb
Re-try the file copy once if it fails. This works around an obscure and non-reproducibe bug in GUSI.
Jack Jansen <jack.jansen@cwi.nl>
parents:
15696
diff
changeset
|
297 print '*** fsspec', macfs.FSSpec(fullname) #DBG |
|
f3fb05bfeeeb
Re-try the file copy once if it fails. This works around an obscure and non-reproducibe bug in GUSI.
Jack Jansen <jack.jansen@cwi.nl>
parents:
15696
diff
changeset
|
298 # Get rid of open files |
|
f3fb05bfeeeb
Re-try the file copy once if it fails. This works around an obscure and non-reproducibe bug in GUSI.
Jack Jansen <jack.jansen@cwi.nl>
parents:
15696
diff
changeset
|
299 try: |
|
f3fb05bfeeeb
Re-try the file copy once if it fails. This works around an obscure and non-reproducibe bug in GUSI.
Jack Jansen <jack.jansen@cwi.nl>
parents:
15696
diff
changeset
|
300 i = 1 / 0 |
|
f3fb05bfeeeb
Re-try the file copy once if it fails. This works around an obscure and non-reproducibe bug in GUSI.
Jack Jansen <jack.jansen@cwi.nl>
parents:
15696
diff
changeset
|
301 except: |
|
f3fb05bfeeeb
Re-try the file copy once if it fails. This works around an obscure and non-reproducibe bug in GUSI.
Jack Jansen <jack.jansen@cwi.nl>
parents:
15696
diff
changeset
|
302 pass |
|
f3fb05bfeeeb
Re-try the file copy once if it fails. This works around an obscure and non-reproducibe bug in GUSI.
Jack Jansen <jack.jansen@cwi.nl>
parents:
15696
diff
changeset
|
303 macostools.copy(fullname, os.path.join(destprefix, dest), 1) |
|
3046
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
304 for d in todo: |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
305 if not self.rundir(d, destprefix, doit): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
306 rv = 0 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
307 return rv |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
308 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
309 def save(self): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
310 self.inc.save() |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
311 self.exc.save() |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
312 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
313 def is_modified(self): |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
314 return self.inc.is_modified() or self.exc.is_modified() |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
315 |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
316 if __name__ == '__main__': |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
317 Main() |
|
94835b3edf3e
Interactively create a distribution from a sourcetree.
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
318 |
