Skip to content

Commit 0ed2fc1

Browse files
committed
add wheel files for macosx_11_0_arm64
1 parent 88c7eac commit 0ed2fc1

File tree

1 file changed

+77
-65
lines changed

1 file changed

+77
-65
lines changed

cicd/tar2wheel.py

Lines changed: 77 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
182250
class 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

Comments
 (0)