25
25
import os
26
26
import platform
27
27
import re
28
- import requests
28
+ try :
29
+ import requests
30
+ except ImportError :
31
+ pass
29
32
import subprocess
30
33
import sys
31
34
import zipfile
@@ -130,6 +133,8 @@ def extract_zip(root, data, py_versions=None):
130
133
if py_versions and re .match (r'_py\d*swat' , basename ):
131
134
ver = re .match (r'_py(\d*)swat' , basename ).group (1 ) or '27'
132
135
if ver not in py_versions :
136
+ print_err ("***** extract_zip : version {} not in py_versions"
137
+ .format (ver ))
133
138
continue
134
139
135
140
# Write file
@@ -152,6 +157,8 @@ def create_placeholders(root, data, py_versions=None):
152
157
if py_versions :
153
158
ver = re .match (r'_py(\d*)swat' , basename ).group (1 ) or '27'
154
159
if ver not in py_versions :
160
+ print_err ("***** create_placeholders : version {} not in py_versions"
161
+ .format (ver ))
155
162
continue
156
163
157
164
# Write placeholder file
@@ -160,6 +167,31 @@ def create_placeholders(root, data, py_versions=None):
160
167
out_file .write (b'' )
161
168
162
169
170
+ def create_restonly_placeholders (root ):
171
+ ''' Write placeholder files for each Python extension file '''
172
+ py_versions = [x .replace ('.' , '' )
173
+ for x in get_python_versions ()]
174
+
175
+ for ver in py_versions :
176
+ if ver == '27' :
177
+ out_path = os .path .join (root , "_pyswat.na" )
178
+ print_err ("***** create_restonly_placeholders : write placeholder file {}"
179
+ .format (out_path ))
180
+ with open (out_path , 'wb' ) as out_file :
181
+ out_file .write (b'' )
182
+ out_path = os .path .join (root , "_pyswatw.na" )
183
+ print_err ("***** create_restonly_placeholders : write placeholder file {}"
184
+ .format (out_path ))
185
+ with open (out_path , 'wb' ) as out_file :
186
+ out_file .write (b'' )
187
+ else :
188
+ out_path = os .path .join (root , "_py{}swat.na" .format (ver ))
189
+ print_err ("***** create_restonly_placeholders : write placeholder file {}"
190
+ .format (out_path ))
191
+ with open (out_path , 'wb' ) as out_file :
192
+ out_file .write (b'' )
193
+
194
+
163
195
def update_tk_version (root , version ):
164
196
''' Add the TK version to the __init__.py file of the package '''
165
197
tk_file = os .path .join (root , 'swat' , '__init__.py' )
@@ -220,7 +252,7 @@ def get_packages(lib_root, tk_base, release, platform, pkgs, versions_only=False
220
252
221
253
if not py_versions :
222
254
py_versions = [x .replace ('.' , '' )
223
- for x in get_python_versions (platform )]
255
+ for x in get_python_versions ()]
224
256
225
257
if versions_only :
226
258
create_placeholders (lib_root , resp .content , py_versions = py_versions )
@@ -231,21 +263,18 @@ def get_packages(lib_root, tk_base, release, platform, pkgs, versions_only=False
231
263
232
264
# Package was not found, bail out
233
265
if resp .status_code == 404 :
266
+ print_err (("***** get_packages : resp.status_code was 404, "
267
+ "bail out and set is_installed to False" ))
234
268
is_installed = False
235
269
break
236
270
237
271
return is_installed
238
272
239
273
240
- def get_python_versions (platform ):
274
+ def get_python_versions ():
241
275
'''
242
- Retrieve all possible Python versions for the given platform
243
-
244
- This function actually uses information about the pandas library
245
- instead of Python itself. Pandas is the primary dependency of
246
- SWAT, so it is the limiting factor on what Python versions can
247
- be used.
248
-
276
+ Retrieve all possible Python versions.
277
+ Currently, every platform supports the same python versions.
249
278
'''
250
279
251
280
versions = set ()
@@ -282,12 +311,20 @@ def main(args):
282
311
# Create output directory
283
312
os .makedirs (lib_root , exist_ok = True )
284
313
285
- is_installed = get_packages (lib_root , args .tk_base , args .release ,
286
- args .platform , TK_PKGS )
287
-
288
- if not is_installed :
289
- get_packages (lib_root , args .tk_base , args .release , 'linux-64' ,
290
- [TK_PACKAGE_NAME ], versions_only = True )
314
+ if args .platform .lower () in ("linux-64" , "win-64" ):
315
+ print_err ("***** main : binary supported on platform {}" .format (args .platform ))
316
+ is_installed = get_packages (lib_root , args .tk_base , args .release ,
317
+ args .platform , TK_PKGS )
318
+
319
+ if not is_installed :
320
+ print_err (("***** main : get_packages failed to get TK packages. "
321
+ "Retrying with just placeholder files." ))
322
+ get_packages (lib_root , args .tk_base , args .release , 'linux-64' ,
323
+ [TK_PACKAGE_NAME ], versions_only = True )
324
+ else :
325
+ print_err ("***** main : REST ONLY platform {}" .format (args .platform ))
326
+ is_installed = False
327
+ create_restonly_placeholders (lib_root )
291
328
292
329
update_tk_version (args .root , is_installed and args .release or 'none' )
293
330
0 commit comments