Isolate manual artifact validation without package publication
This commit is contained in:
1 parent
98976747c3
commit
2b39fd1430
73 files changed
+3631
-1110
No files matched your search
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Export verified Zig archives in the layout consumed by the NuGet package."""
|
||||
import argparse,json,shutil,hashlib
|
||||
from pathlib import Path
|
||||
p=argparse.ArgumentParser();p.add_argument('--input',type=Path,required=True);p.add_argument('--output',type=Path,required=True);p.add_argument('--rid',required=True)
|
||||
a=p.parse_args();manifest=json.loads((a.input/'cross-build.json').read_text())
|
||||
if manifest['target']!=a.rid or not manifest.get('link_tests','').startswith('passed'):
|
||||
raise SystemExit('Only successfully linked target archives may be packaged')
|
||||
names={'libskia.a':'skia.lib','libSkiaSharp.a':'SkiaSharp.lib','libHarfBuzzSharp.a':'libHarfBuzzSharp.lib','libANGLE.a':'libANGLE_static.lib','libGLESv2.a':'libGLESv2_static.lib','libEGL.a':'libEGL_static.lib'} if a.rid.startswith('win') else {'libskia.a':'libskia.a','libSkiaSharp.a':'libSkiaSharp.a','libHarfBuzzSharp.a':'libHarfBuzzSharp.a','libANGLE.a':'libANGLE_static.a','libGLESv2.a':'libGLESv2_static.a','libEGL.a':'libEGL_static.a'}
|
||||
a.output.mkdir(parents=True,exist_ok=True)
|
||||
for source,destination in names.items():
|
||||
path=a.input/source
|
||||
if hashlib.sha256(path.read_bytes()).hexdigest()!=manifest['archives'][source]:raise SystemExit('Archive checksum mismatch: '+source)
|
||||
shutil.copy2(path,a.output/destination)
|
||||
runtime=a.input/'zig-runtime'
|
||||
if not runtime.is_dir() or not [p for p in runtime.iterdir() if p.suffix in ('.a','.lib')]:raise SystemExit('Zig C++/compiler runtime archives were not captured')
|
||||
(a.output/'zig-runtime').mkdir(exist_ok=True)
|
||||
for path in runtime.iterdir():
|
||||
if path.suffix not in ('.a','.lib'):continue
|
||||
dest=path.stem+'.lib' if a.rid.startswith('win') else path.name
|
||||
shutil.copy2(path,a.output/'zig-runtime'/dest)
|
||||
if a.rid=='win-x86':
|
||||
path=a.input/'skia_x86_stdcall_thunks.lib'
|
||||
if not path.is_file():raise SystemExit('x86 stdcall thunks are required')
|
||||
shutil.copy2(path,a.output/path.name)
|
||||
shutil.copy2(a.input/'cross-build.json',a.output/'zig-build.json')
|
||||
print('Packaged',a.rid)
|
||||
Reference in new issue
Block a user