105 except OSError as ex: |
105 except OSError as ex: |
106 # file exists ? |
106 # file exists ? |
107 import errno |
107 import errno |
108 if ex.errno != errno.EEXIST: |
108 if ex.errno != errno.EEXIST: |
109 raise |
109 raise |
|
110 else: |
|
111 if verbose: |
|
112 print('created %s directory' % to_dir) |
110 for dirpath, dirnames, filenames in os.walk(from_dir): |
113 for dirpath, dirnames, filenames in os.walk(from_dir): |
111 for norecurs in blacklist: |
114 for norecurs in blacklist: |
112 try: |
115 try: |
113 dirnames.remove(norecurs) |
116 dirnames.remove(norecurs) |
114 except ValueError: |
117 except ValueError: |
115 pass |
118 pass |
|
119 else: |
|
120 if verbose: |
|
121 print('not recursing in %s' % join(dirpath, norecurs)) |
116 for dirname in dirnames: |
122 for dirname in dirnames: |
117 dest = join(to_dir, dirname) |
123 src = join(dirpath, dirname) |
|
124 dest = to_dir + src[len(from_dir):] |
118 if not exists(dest): |
125 if not exists(dest): |
|
126 if verbose: |
|
127 print('creating %s directory' % dest) |
119 os.mkdir(dest) |
128 os.mkdir(dest) |
120 for filename in filenames: |
129 for filename in filenames: |
121 # don't include binary files |
130 # don't include binary files |
122 src = join(dirpath, filename) |
131 src = join(dirpath, filename) |
123 dest = to_dir + src[len(from_dir):] |
132 dest = to_dir + src[len(from_dir):] |
125 continue |
134 continue |
126 if filename[-1] == '~': |
135 if filename[-1] == '~': |
127 continue |
136 continue |
128 if exists(dest): |
137 if exists(dest): |
129 os.remove(dest) |
138 os.remove(dest) |
|
139 if verbose: |
|
140 print('copying %s to %s' % (src, dest)) |
130 shutil.copy2(src, dest) |
141 shutil.copy2(src, dest) |
131 |
142 |
132 |
|
133 EMPTY_FILE = '"""generated file, don\'t modify or your data will be lost"""\n' |
|
134 |
143 |
135 class MyInstallLib(install_lib.install_lib): |
144 class MyInstallLib(install_lib.install_lib): |
136 """extend install_lib command to handle package __init__.py and |
145 """extend install_lib command to handle package __init__.py and |
137 include_dirs variable if necessary |
146 include_dirs variable if necessary |
138 """ |
147 """ |
141 install_lib.install_lib.run(self) |
150 install_lib.install_lib.run(self) |
142 # create Products.__init__.py if needed |
151 # create Products.__init__.py if needed |
143 # manually install included directories if any |
152 # manually install included directories if any |
144 if include_dirs: |
153 if include_dirs: |
145 for directory in include_dirs: |
154 for directory in include_dirs: |
146 dest = join(self.install_dir, modname, directory) |
155 src = join(modname, directory) |
147 export(directory, dest, verbose=False) |
156 dest = join(self.install_dir, src) |
|
157 export(src, dest, verbose=self.verbose) |
148 |
158 |
149 # write required share/cubicweb/cubes/__init__.py |
159 # write required share/cubicweb/cubes/__init__.py |
150 class MyInstallData(install_data.install_data): |
160 class MyInstallData(install_data.install_data): |
151 """A class That manages data files installation""" |
161 """A class That manages data files installation""" |
152 def run(self): |
162 def run(self): |