Repository navigation
feat: build native Linux x64 and ARM64 archives - #2
Open
pwnedbygary wants to merge 8 commits into
Open
pwnedbygary wants to merge 8 commits into
pwnedbygary wants to merge 8 commits into
Conversation
added 8 commits
October 26, 2026 22:29
Restore the released launcher and core-host sources, plus deterministic pinned acquisition and reconstruction for the core without vendoring the unchanged upstream tree. Review: PASS (independent reviewers A and B: 98/100 each)\nSnapshot: a13fc197ccd8be7fcc228273051c771906ed9df54d770be9b1383720ab869c37\nChecks: source-baseline 15/15; actionlint; pinned HLE/Vulkan/OpenAL builds; launcher build; host publish inventory 107 libraries/135 assets; worker handshake; contracts 63/63; services 73 passed with one explicit Windows-only unavailable case.\nStaged diff check: all paths clean except preserved CRLF bytes in the byte-identical released NX-BUILD-SOURCES.json provenance manifest.
Add deterministic, self-contained Linux x64 and ARM64 packaging of the reconstructed launcher and core host (`build/linux/`), with exact manifests, an independent per-RID path and ELF-hash policy, complete native/managed notices, FFmpeg corresponding source per RID, GPL timing source, a CPU-only Xvfb launcher/worker probe, install-replacement and default-data preservation checks, and a CI job that builds, verifies and uploads both archives. Linux RID selection is architecture-aware; Windows-only icon/manifest, translation, OCR and mutable avatar paths are excluded from native Linux builds. Docs are native-first with Proton as a fallback. Packages remain `unqualified`: no gameplay, audio, controller or physical ARM64 claims. Review: dual independent blind review, round 17, both PASS 100/100 on snapshot manifest e0398d581fdb63b21378ab120097142642f13d662d184c3cba812fdbd876fb6a (41 paths, base b26ba27). Checks: 51 Linux and 15 source-baseline tool tests; actionlint; diff check; 39/39 production mutations caught; round-10 archives (x64 839efa18..., ARM64 dc655a05...) pass verify.py and match all 231 regenerated distribution files byte for byte.
The packager copied LICENSE.txt and ThirdPartyNotices.txt from the root of the dotnet install. On GitHub runners that root is shared by several SDKs, so its bytes depend on install history, and fork CI run 40569461006 rejected dotnet-THIRD-PARTY-NOTICES.txt. Both notices now come from each RID's hash-pinned microsoft.netcore.app.runtime.<rid> 10.0.13 package, the runtime the self-contained archives ship. The notice pin and the dependency-policy pin change; the license bytes are unchanged. Review: round 18, snapshot fec13fa7c3cb1f20ac7a142cab492ad64bb360ad55d329c8f0d59aefb73e9877 (41 paths), dual independent PASS (A 100/100, B 100/100), considers only. Checks: 52 Linux and 15 source-baseline tool tests, actionlint, diff check. Round-18 archives (Python-only reassembly, verifier PASS): x64 b376cb28..., x64 classic zlib 02891233..., ARM64 2588a630....
The packager now refuses a dotnet that resolves any SDK other than the exact version its global.json names (10.0.402 for the products, 9.0.100 for the restored core, whose upstream pin allows rolling forward). CI installs both SDKs into a private $RUNNER_TEMP/dotnet instead of the runner's shared root and lists them. verified_package opens each .nupkg once without following symlinks or blocking, refuses non-regular and oversized files with distinct messages, and returns the bytes it hashed; notices are read from those bytes and written only after every pinned package verifies. add_distribution_files refuses a package cache without a RID. New tests cover the wiring, FIFO, size bounds and SDK check call sites. No packaged file changes; the round-18 archives remain the product. Review: round 20 snapshot 374351a006cc136bc8890b914c2ee3850bc317ac21d797ecf8bffc1be8065995 (41 paths), Reviewer A PASS 100, Reviewer B PASS 100. Checks: 62 Linux and 15 source-baseline tests, actionlint, git diff --check, 14/14 mutations killed, 255 regenerated distribution files byte-identical to the round-18 archives.
Close the round-20 review considerations without changing any packaged file: - verified_package closes its descriptor on every failure path and adds the system's reason to open failures; both size bounds are tested at the limit and one byte over. - copy_native_notices refuses two notice sources with the same destination; native and runtime notices share one writer. - require_pinned_sdk times out after two minutes and keeps dotnet's SDK list when it refuses. - Tests: the FIFO timeout cannot be mistaken for an expected refusal, a re-read after hashing fails, each global.json refusal asserts its own message, write-order tests are split by notice kind. Fork CI run 40576404272 (at 1dfd372) confirmed the SDK hypothesis: with a private SDK folder holding only 9.0.100 and 10.0.402, all ten restored-core DLLs and backend.json match the round-18 archives. Review: round 21 snapshot e9ac5a62d36fe4d8ba7c8c73df65e76acc6c67134e56cd5745359564e41e381c (41 paths); Reviewer A PASS 95, Reviewer B PASS 100. Checks: 68 Linux and 15 source-baseline tests, actionlint, diff check; 23/23 mutations caught; 255 regenerated distribution files per archive byte-identical to round 18.
…read test Distribution writes (write_bytes, write_text, copy_file) now create files exclusively, so a name clash between notice sources or with a published file fails the build instead of silently replacing a file. The open-failure message no longer blames symbolic links; an SDK query timeout is reported as a ValueError naming the pin; a non-string SDK version is refused. Tests: the package is swapped on disk between the read and the hash, so hashing or returning a second read fails; no descriptor leaks on refusal; FIFO cases share a 5-second alarm guard; expected error text comes from errno; README line rewrapped. No packaged file changes: all 255 regenerated distribution files match the round-18 archives. Review: round-22 snapshot a408d4a3ff59f2198f63cdd5b967a4e5e2a18fafaa0a3c0d3f3af26b996e5f82 (41 paths). Reviewer A PASS 95.7 (one should-fix test gap, deferred to the next round), Reviewer B PASS 100. Index matched all 41 reviewed hashes; staged diff byte-identical to the reviewed delta. Checks: 71 Linux and 15 source-baseline tests, actionlint, diff check, 30-mutation sweep (all caught).
…runnable SDK require_pinned_sdk now reports a dotnet that cannot be executed as a ValueError naming the pin, like its other refusals. Tests pin each collision to the exact file (the launcher written by write_text), a package notice clashing with the runtime notice, a read of exactly MAX_PACKAGE_BYTES + 1 bytes, closure of every opened stream and of the descriptor when fdopen fails (OSError and KeyboardInterrupt), and an alarm helper that restores an outer timer. No packaged file changes. Review round 23: snapshot 5adab98b977ee288d9c43e8a454c8a6e1fb325eba20c6001a0568c2328ef70a2 (41 paths). Reviewer A PASS 100, Reviewer B PASS 100, considers only. Checks: 75 Linux and 15 source-baseline tests, actionlint, diff check, 37-mutation sweep all caught; 255 regenerated distribution files per archive byte-identical to the round-18 archives.
…timer interval Round 24 answers the round-23 review considerations without changing any packaged file (build/linux/distribution.py is untouched; all 255 regenerated distribution files per archive match the round-18 x64, classic-zlib x64 and ARM64 archives byte for byte). - require_pinned_sdk reports the exception text when an OSError carries no strerror. - One collision test per notice writer (native notices, repository notice directory, tracked copies); the launcher is seeded with sentinel bytes. - fails_instead_of_blocking keeps the outer timer's interval; tests pin the elapsed-time subtraction and the expired-timer floor. - The SDK test pins the full pin path, the no-strerror case and propagation of non-OSError failures. - One ObservedPackageStream helper replaces three stream proxies. - HANDOFF credits each round-21 point to its reviewer; AUDIT gives the collision order correctly. Review: round-24 snapshot 58dc98a40b6093a6d17c48952a307111cc9e5733f2c8ad3119f299525feeedac (41 paths), Reviewer A PASS 100, Reviewer B PASS 100 (considers only). Checks: 79 Linux and 15 source-baseline tests, actionlint, diff check, 46-mutation sweep all caught.
Owner
|
hi gary. just wanna say have fun with V1 because the launcher and core have now been compiled to native machine code (NativeAOT) the launcher and core host ship with no .NET code in the ZIP so there is no code to recover. on top of that anything else is obfuscated and stripped. trying to recover compiled source in order to redistribute it against my name isnt the move. and wont go on. forking the project and building off of whats there on your own is entirely different, which you are not. youre forking an impersonation in attempt to steer people the wrong way on google. GGs and good luck to you man. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
im a bot and i suck at RE