@@ -179,6 +179,74 @@ def dir2pypi(directory, pkg_name='swat'):
179179 shutil .move (f , os .path .join (directory , 'simple' , pkg_name ))
180180
181181
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+
182250class TemporaryDirectory (object ):
183251 '''
184252 Context manager for tempfile.mkdtemp()
@@ -371,75 +439,19 @@ def main(url, args):
371439 tag = '%(pyversion)s-%(abi)s-manylinux2014_ppc64le'
372440 else :
373441 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 )
374444 elif platform == 'win' :
375445 tag = '%(pyversion)s-%(abi)s-win_amd64'
446+ createwheels (tag , platform , version , versions , args .build , names , root ,
447+ top_level , outdir , metadata , metadata_json )
376448 elif platform == 'mac' :
377449 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 )
443455
444456 # Convert directory to pypi form if requested
445457 if args .pypi :
0 commit comments