Skip to content

Commit 01768a7

Browse files
Use 16 KB-aligned ppy.Veldrid.SPIRV fork build via local-packages
The previous pin to `1.0.15-gb66ebf81d2` was the ppy.org build, whose `runtimes/android-arm64/native/libveldrid-spirv.so` is 4 KB-aligned and triggers the "Android 16 will require 16 KB page sizes" warning when packaging the APK. The winnerspiros fork build `1.0.15-gb268bf39ea` (the version ppy.osu.Framework 2026.421.1 was originally compiled against) is properly 16 KB-aligned, but it lives only as a release asset on `winnerspiros/veldrid-spirv` (release `1.0`) — it is not on nuget.org or GitHub Packages, so NuGet was silently falling back to the ppy build. Vendor the correct nupkg under `local-packages/` (with a `.gitignore` exception so it's tracked despite the root `*.nupkg` rule) and re-add the `local-packages` source to `NuGet.Config`. Re-pin the SPIRV reference in `osu.Game.csproj` to the fork version. The pin flows transitively to every project via existing ProjectReferences. Verified: ELF PT_LOAD segments in the vendored .so are aligned to 0x4000 (16 KB). Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/dd5477f1-781f-483e-a69a-835fd8edac93 Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
1 parent 439f7e9 commit 01768a7

5 files changed

Lines changed: 36 additions & 7 deletions

File tree

NuGet.Config

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
<clear />
55
<!-- winnerspiros/osu-framework fork NuGet packages (published to GitHub Packages) -->
66
<add key="winnerspiros-github" value="https://nuget.pkg.github.com/winnerspiros/index.json" />
7+
<!-- Vendored .nupkgs that aren't on any feed (see local-packages/README.md). -->
8+
<add key="local-packages" value="./local-packages" />
79
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
810
</packageSources>
911
</configuration>

local-packages/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Override root *.nupkg exclusion so vendored fork packages can be committed here.
2+
!*.nupkg

local-packages/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# `local-packages/` — vendored NuGet packages
2+
3+
This folder hosts pre-built `.nupkg` files for fork dependencies that are not
4+
published to a public NuGet feed and that GitHub Packages cannot host (e.g.
5+
release-asset-only artifacts).
6+
7+
It is wired up as a NuGet source in the repo-root `NuGet.Config`:
8+
9+
```xml
10+
<add key="local-packages" value="./local-packages" />
11+
```
12+
13+
## Current contents
14+
15+
| Package | Version | Why vendored |
16+
|---------------------------------|------------------------|--------------|
17+
| `ppy.Veldrid.SPIRV` | `1.0.15-gb268bf39ea` | This fork build (from <https://github.com/winnerspiros/veldrid-spirv/releases/tag/1.0>) ships `runtimes/android-arm64/native/libveldrid-spirv.so` aligned to **16 KB pages**, which is required for Android 16+. The version published on nuget.org (`1.0.15-gb66ebf81d2`) is 4 KB-aligned and triggers a build warning when packaging the APK. The version is referenced by `ppy.osu.Framework 2026.421.1` and re-pinned explicitly in `osu.Game/osu.Game.csproj` so resolution is deterministic. |
18+
19+
## Updating
20+
21+
When the fork rebuilds the package, drop the new `.nupkg` here, bump the
22+
`Version` in `osu.Game/osu.Game.csproj` (and any direct framework reference if
23+
the dep target version changes), and delete the old `.nupkg` so the folder
24+
stays small.
45.3 MB
Binary file not shown.

osu.Game/osu.Game.csproj

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,15 @@
4040
<PackageReference Include="Realm" Version="20.1.0" />
4141
<PackageReference Include="ppy.osu.Framework" Version="2026.421.1" />
4242
<!--
43-
Explicitly pin `ppy.Veldrid.SPIRV` to a published version. `ppy.osu.Framework` 2026.421.1 was
44-
built against `ppy.Veldrid.SPIRV 1.0.15-gb268bf39ea`, which is a winnerspiros fork build that
45-
was never published to a public NuGet feed. Without this explicit reference NuGet falls back
46-
to the nearest available version on nuget.org and emits NU1603, which `-warnaserror` (used by
47-
both the `Code Quality` and `Test` CI jobs) turns into build errors. The published version
48-
below is binary-compatible with what the framework expects.
43+
Explicitly pin `ppy.Veldrid.SPIRV` to the winnerspiros fork build that
44+
`ppy.osu.Framework 2026.421.1` was compiled against. This version is the only
45+
one whose `runtimes/android-arm64/native/libveldrid-spirv.so` is aligned to 16 KB
46+
pages (required by Android 16+). It lives only as a release asset on
47+
<https://github.com/winnerspiros/veldrid-spirv/releases/tag/1.0> and is vendored
48+
under `local-packages/` (see `local-packages/README.md`). Without this pin NuGet
49+
would silently fall back to the 4 KB-aligned nuget.org build and emit NU1903.
4950
-->
50-
<PackageReference Include="ppy.Veldrid.SPIRV" Version="1.0.15-gb66ebf81d2" />
51+
<PackageReference Include="ppy.Veldrid.SPIRV" Version="1.0.15-gb268bf39ea" />
5152
<PackageReference Include="ppy.osu.Game.Resources" Version="2026.420.0" />
5253
<PackageReference Include="Sentry" Version="6.2.0" />
5354
<!-- Held back due to 0.34.0 failing AOT compilation on ZstdSharp.dll dependency. -->

0 commit comments

Comments
 (0)