Clear windows branch; preserve previous contents in win-old
This commit is contained in:
1 parent
f0c881985b
commit
73994d4634
311 files changed
-57018
No files matched your search
@@ -1,99 +0,0 @@
|
||||
"""Separate corresponding-source asset for the lightweight Windows test ZIP.
|
||||
|
||||
Reads committed trees only, including the exact patched GPL OptiScaler tree and
|
||||
its pinned submodules. Never copies a working directory or NVIDIA binaries.
|
||||
"""
|
||||
import argparse
|
||||
import hashlib
|
||||
import io
|
||||
import json
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
import zipfile
|
||||
|
||||
|
||||
def git(root, *args):
|
||||
return subprocess.check_output(["git", "-C", str(root), *args])
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--output", type=Path, required=True)
|
||||
parser.add_argument("--repo", type=Path, default=Path(__file__).resolve().parents[2])
|
||||
args = parser.parse_args()
|
||||
repo = args.repo.resolve()
|
||||
info = json.loads((repo / "dist/optiscaler-windows-d4r/build-info.json").read_text(encoding="utf-8-sig"))
|
||||
opti = repo / "external/OptiScaler"
|
||||
if info["sourceDirty"] or git(opti, "status", "--porcelain").strip():
|
||||
raise RuntimeError("OptiScaler must match its clean binary source tree")
|
||||
if git(opti, "rev-parse", "HEAD").decode().strip() != info["sourceCommit"]:
|
||||
raise RuntimeError("OptiScaler source does not match the binary")
|
||||
if git(repo, "status", "--porcelain").strip():
|
||||
raise RuntimeError("Commit the packaging sources before publishing")
|
||||
args.output.parent.mkdir(parents=True, exist_ok=True)
|
||||
if args.output.exists():
|
||||
raise RuntimeError("Use a new output archive")
|
||||
provenance = {"d4rCommit": git(repo, "rev-parse", "HEAD").decode().strip(),
|
||||
"optiScalerBinary": info["dllSha256"], "sourceTrees": [], "excludedNvidiaBinaries": []}
|
||||
|
||||
with zipfile.ZipFile(args.output, "w", compression=zipfile.ZIP_DEFLATED, compresslevel=6) as output:
|
||||
def tree(root, revision, prefix):
|
||||
provenance["sourceTrees"].append({"path": prefix, "commit": revision})
|
||||
raw = git(root, "archive", "--format=zip", revision)
|
||||
with zipfile.ZipFile(io.BytesIO(raw)) as source:
|
||||
for item in source.infolist():
|
||||
if item.is_dir():
|
||||
continue
|
||||
name = prefix + "/" + item.filename
|
||||
lowered = name.lower()
|
||||
nvidia_binary = ("/nvapi/" in lowered or "nvngx" in Path(lowered).name) and Path(lowered).suffix in {
|
||||
".dll", ".exe", ".lib", ".bin", ".cubin", ".fatbin", ".pdb"}
|
||||
if nvidia_binary:
|
||||
provenance["excludedNvidiaBinaries"].append(name)
|
||||
continue
|
||||
output.writestr(name, source.read(item))
|
||||
for entry in git(root, "ls-tree", "-rz", revision).split(b"\0"):
|
||||
if not entry:
|
||||
continue
|
||||
header, path = entry.split(b"\t", 1)
|
||||
mode, _, commit = header.split()
|
||||
if mode != b"160000":
|
||||
continue
|
||||
child = path.decode("utf-8")
|
||||
child_root = root / child
|
||||
child_commit = commit.decode()
|
||||
if git(child_root, "rev-parse", "HEAD").decode().strip() != child_commit:
|
||||
raise RuntimeError(f"Submodule does not match committed source: {child}")
|
||||
if git(child_root, "status", "--porcelain").strip():
|
||||
raise RuntimeError(f"Dirty source submodule: {child}")
|
||||
tree(child_root, child_commit, prefix + "/" + child)
|
||||
|
||||
tree(repo, provenance["d4rCommit"], "d4r")
|
||||
tree(opti, info["sourceCommit"], "OptiScaler")
|
||||
output.writestr("source-provenance.json", json.dumps(provenance, indent=2) + "\n")
|
||||
output.writestr("READ-ME-SOURCES.txt", """CORRESPONDING SOURCES -- NOT NEEDED TO TEST THE GAME
|
||||
|
||||
d4r/ contains the committed Windows port, build scripts, dependency patches
|
||||
and licenses. OptiScaler/ contains the exact modified GPL-3.0 source tree and
|
||||
its pinned source submodules corresponding to the distributed OptiScaler.dll.
|
||||
See source-provenance.json for exact commits and the binary SHA256.
|
||||
|
||||
Build instructions: d4r/docs/windows-rdna4-port.md and
|
||||
d4r/patches/optiscaler/README.md. The normal build script retrieves the pinned
|
||||
upstream checkout, submodules and applies the exported source patches.
|
||||
NVIDIA import-library binaries are intentionally excluded from this archive;
|
||||
the pinned public NVIDIA/nvapi SDK used by the builder supplies them locally.
|
||||
No proprietary NVIDIA runtime DLL or NVIDIA-derived private kernel is included.
|
||||
|
||||
The separately bundled ZLUDA/LLVM changes are in d4r/patches/zluda and
|
||||
d4r/patches/zluda-llvm, with upstream source commits and build instructions.
|
||||
""")
|
||||
with args.output.open("rb") as stream:
|
||||
sha256 = hashlib.file_digest(stream, "sha256").hexdigest()
|
||||
print(json.dumps({"archive": str(args.output), "bytes": args.output.stat().st_size,
|
||||
"sha256": sha256,
|
||||
"sourceTrees": len(provenance["sourceTrees"])}))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user