@@ -179,6 +179,74 @@ def dir2pypi(directory, pkg_name='swat'):
179
179
shutil .move (f , os .path .join (directory , 'simple' , pkg_name ))
180
180
181
181
182
+ def createwheels (tag , platform , version , versions , build , names , root , top_level ,
183
+ outdir , metadata , metadata_json ):
184
+ wheel = '%s\n ' % '\n ' .join ([
185
+ 'Wheel-Version: 1.0' ,
186
+ 'Generator: tar2wheel (0.1.0)' ,
187
+ 'Root-Is-Purelib: %s' % (platform == 'any' and 'true' or 'false' ),
188
+ 'Tag: %s' % tag ,
189
+ 'Build: %s' % build ,
190
+ ])
191
+
192
+ # Create wheel for each extension found
193
+ for pyver in sorted (versions , key = lambda x : x ['abi' ]):
194
+
195
+ # Create wheel file
196
+ zip_name = '%s-%s-%s-%s.whl' % (top_level , version , build , tag % pyver )
197
+ zip_name = os .path .join (outdir , zip_name )
198
+
199
+ print_err ('Creating %s' % zip_name )
200
+
201
+ with zipfile .ZipFile (zip_name , 'w' , compression = zipfile .ZIP_DEFLATED ) as zip :
202
+
203
+ # Add files and create record information
204
+ record = []
205
+ for name in names :
206
+ # Always use forward slash; even on Windows.
207
+ if not name .startswith ('%s/%s' % (root , top_level )):
208
+ continue
209
+ if name .endswith ('.pyc' ):
210
+ continue
211
+ if re .search (r'[\\/]_py\d*swatw?\.\w+$' , name ):
212
+ if not name .endswith (pyver ['extension' ]):
213
+ continue
214
+ if os .path .isfile (name ):
215
+ # Always use forward slash; even on Windows.
216
+ zip .write (name , name .split ('/' , 1 )[- 1 ])
217
+ record .append ('%s,sha256=%s,%s' % (name .split (os .sep , 1 )[- 1 ],
218
+ sha256_file (name ),
219
+ os .path .getsize (name )))
220
+
221
+ # Add metadata files
222
+ dist_info = '%s-%s.dist-info' % (top_level , version )
223
+
224
+ record .append ('%s,sha256=%s,%s' % (os .path .join (dist_info , 'METADATA' ),
225
+ sha256_string (metadata ),
226
+ len (metadata )))
227
+ record .append ('%s,sha256=%s,%s' % (os .path .join (dist_info , 'metadata.json' ),
228
+ sha256_string (metadata_json ),
229
+ len (metadata_json )))
230
+ record .append ('%s,sha256=%s,%s' % (os .path .join (dist_info , 'WHEEL' ),
231
+ sha256_string (wheel % pyver ),
232
+ len (wheel % pyver )))
233
+ record .append ('%s,sha256=%s,%s' % (os .path .join (dist_info , 'top_level.txt' ),
234
+ sha256_string (top_level ),
235
+ len (top_level )))
236
+ record .append (
237
+ '%s,,' % os .path .join (dist_info , 'RECORD' ))
238
+
239
+ record = '%s\n ' % '\n ' .join (record )
240
+
241
+ zip .writestr (os .path .join (dist_info , 'top_level.txt' ), top_level )
242
+ zip .writestr (os .path .join (dist_info , 'METADATA' ),
243
+ metadata .encode ('utf-8' ))
244
+ zip .writestr (os .path .join (dist_info , 'metadata.json' ),
245
+ metadata_json .encode ('utf-8' ))
246
+ zip .writestr (os .path .join (dist_info , 'WHEEL' ), wheel % pyver )
247
+ zip .writestr (os .path .join (dist_info , 'RECORD' ), record )
248
+
249
+
182
250
class TemporaryDirectory (object ):
183
251
'''
184
252
Context manager for tempfile.mkdtemp()
@@ -371,75 +439,19 @@ def main(url, args):
371
439
tag = '%(pyversion)s-%(abi)s-manylinux2014_ppc64le'
372
440
else :
373
441
tag = '%(pyversion)s-%(abi)s-manylinux1_x86_64'
442
+ createwheels (tag , platform , version , versions , args .build , names , root ,
443
+ top_level , outdir , metadata , metadata_json )
374
444
elif platform == 'win' :
375
445
tag = '%(pyversion)s-%(abi)s-win_amd64'
446
+ createwheels (tag , platform , version , versions , args .build , names , root ,
447
+ top_level , outdir , metadata , metadata_json )
376
448
elif platform == 'mac' :
377
449
tag = '%(pyversion)s-%(abi)s-macosx_10_9_x86_64'
378
-
379
- wheel = '%s\n ' % '\n ' .join ([
380
- 'Wheel-Version: 1.0' ,
381
- 'Generator: tar2wheel (0.1.0)' ,
382
- 'Root-Is-Purelib: %s' % (platform == 'any' and 'true' or 'false' ),
383
- 'Tag: %s' % tag ,
384
- 'Build: %s' % args .build ,
385
- ])
386
-
387
- # Create wheel for each extension found
388
- for pyver in sorted (versions , key = lambda x : x ['abi' ]):
389
-
390
- # Create wheel file
391
- zip_name = '%s-%s-%s-%s.whl' % (top_level , version , args .build , tag % pyver )
392
- zip_name = os .path .join (outdir , zip_name )
393
-
394
- print_err ('Creating %s' % zip_name )
395
-
396
- with zipfile .ZipFile (zip_name , 'w' , compression = zipfile .ZIP_DEFLATED ) as zip :
397
-
398
- # Add files and create record information
399
- record = []
400
- for name in names :
401
- # Always use forward slash; even on Windows.
402
- if not name .startswith ('%s/%s' % (root , top_level )):
403
- continue
404
- if name .endswith ('.pyc' ):
405
- continue
406
- if re .search (r'[\\/]_py\d*swatw?\.\w+$' , name ):
407
- if not name .endswith (pyver ['extension' ]):
408
- continue
409
- if os .path .isfile (name ):
410
- # Always use forward slash; even on Windows.
411
- zip .write (name , name .split ('/' , 1 )[- 1 ])
412
- record .append ('%s,sha256=%s,%s' % (name .split (os .sep , 1 )[- 1 ],
413
- sha256_file (name ),
414
- os .path .getsize (name )))
415
-
416
- # Add metadata files
417
- dist_info = '%s-%s.dist-info' % (top_level , version )
418
-
419
- record .append ('%s,sha=%s,%s' % (os .path .join (dist_info , 'METADATA' ),
420
- sha256_string (metadata ),
421
- len (metadata )))
422
- record .append ('%s,sha=%s,%s' % (os .path .join (dist_info , 'metadata.json' ),
423
- sha256_string (metadata_json ),
424
- len (metadata_json )))
425
- record .append ('%s,sha=%s,%s' % (os .path .join (dist_info , 'WHEEL' ),
426
- sha256_string (wheel % pyver ),
427
- len (wheel % pyver )))
428
- record .append ('%s,sha=%s,%s' % (os .path .join (dist_info , 'top_level.txt' ),
429
- sha256_string (top_level ),
430
- len (top_level )))
431
- record .append (
432
- '%s,,' % os .path .join (dist_info , 'RECORD' ).split (os .sep , 1 )[- 1 ])
433
-
434
- record = '%s\n ' % '\n ' .join (record )
435
-
436
- zip .writestr (os .path .join (dist_info , 'top_level.txt' ), top_level )
437
- zip .writestr (os .path .join (dist_info , 'METADATA' ),
438
- metadata .encode ('utf-8' ))
439
- zip .writestr (os .path .join (dist_info , 'metadata.json' ),
440
- metadata_json .encode ('utf-8' ))
441
- zip .writestr (os .path .join (dist_info , 'WHEEL' ), wheel % pyver )
442
- zip .writestr (os .path .join (dist_info , 'RECORD' ), record )
450
+ createwheels (tag , platform , version , versions , args .build , names , root ,
451
+ top_level , outdir , metadata , metadata_json )
452
+ tag = '%(pyversion)s-%(abi)s-macosx_11_0_arm64'
453
+ createwheels (tag , platform , version , versions , args .build , names , root ,
454
+ top_level , outdir , metadata , metadata_json )
443
455
444
456
# Convert directory to pypi form if requested
445
457
if args .pypi :
0 commit comments