34 Commits
Author SHA1 Message Date
Dallin Bland 9e51197c36 Fix automated release failures on macOS, FreeBSD, and Android libretro
The macOS packager treated each library install name as a load command, so
@executable_path self-ids failed the portability check. FreeBSD configure
requires Qt6 Charts and Svg. Android libretro could not link the prebuilt
OpenSSL archive until Poly1305 SVE2 binds locally, matching yuzu-android.
2026-09-21 13:54:02 -05:00
Dallin Bland 5b7c7654fe Install FreeBSD XScreenSaver dependency 2026-09-20 23:02:41 -05:00
Dallin Bland 4be95f86dc Make release version configurable 2026-09-20 22:53:07 -05:00
Dallin Bland 2381214626 Use ASC API keys for macOS notarization 2026-09-20 22:20:01 -05:00
Dallin Bland a7833bc98e Prepare macOS build for signed releases 2026-09-20 15:34:43 -05:00
Dallin Bland 0694b07486 ci: harden automated release pipeline 2026-09-20 11:12:55 -05:00
Dallin Bland fef0aab405 Merge pull request #30 from suyu-emu/android/build-review-fixes
Integrate the Android build fixes with the current release artifact gate, require valid release signing for published APKs, and ignore keystores repository-wide.
2026-09-20 01:11:16 -05:00
Dallin Bland 3abab74bf1 ci(release): harden package verification gate 2026-09-19 23:40:01 -05:00
Dallin Bland c01d5f97f7 ci(release): verify packaged applications and libretro cores 2026-09-19 23:40:01 -05:00
Dallin Bland 5aec8529d4 chore(android): fix build scripts, flavor ABIs, CI workflows, and release signing
Consolidate the duplicate Android build scripts (the legacy one generated a nonexistent lowercase Gradle task name). Fix per-flavor ABI filters so chromeOS builds x86_64 only, move legacy sourceSets to the android extension, and align the compileSdk suppress flag. Repair the malformed JDK/cache step in verify.yml and drop the dead repo gate in android-build.yml. Add release-signing validation with debug-signed warnings, keystore secret wiring plus APK signature checks in release.yml, and update the Android build docs.
2026-09-17 21:07:31 -05:00
d3f3a835f8 macOS: port MoltenVK Apple Silicon path + GPU init guards (#28)
* fix(macos): port MoltenVK Apple Silicon path and GPU init guards

Port applicable patches from dougchansan/suyu-v0.0.4#1 onto drippu:
bundled MoltenVK for the suyu target, recursive CAMetalLayer search in
the Qt frontend, SDL Metal layer (not NSView), and shared GPU/process
unwind guards. CMake targets remain suyu/suyu-cmd; the packaged artifact
is drippu.app.

Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>

* fix(macos): create CAMetalLayer when Qt VulkanSurface walk is empty

VulkanRenderWidget still uses QWindow::VulkanSurface, which often leaves a
QContainerLayer and no CAMetalLayer. Walk the layer tree first, then
alloc/init a CAMetalLayer, setWantsLayer, and setLayer on the NSView.
Log critically if attachment still fails; vulkan_surface continues to
refuse a null layer.

Replace the dead USE_SYSTEM_MOLTENVK CI flag with YUZU_USE_BUNDLED_MOLTENVK=OFF
so release.yml matches brew molten-vk.

Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>

* ci(macos): PR MoltenVK smoke on Apple Silicon Qt path

Add macos-15 pull_request CI that builds suyu, suyu-cmd, and a focused
macos_moltenvk_smoke using the live Qt GetWindowSystemInfo CAMetalLayer
attach plus Vulkan metal surface creation. The job fails unless the log
shows MoltenVK device init. Also set SDL_WINDOW_METAL on the live SDL
Vulkan window and document brew vs bundled MoltenVK plus LIBVULKAN_PATH
for suyu-cmd.

Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>

* ci(macos): drive live VulkanRenderWidget MoltenVK device+swapchain

Fix Qt 6 void QWindow::create() so the smoke compiles. Host a
QApplication VulkanRenderWidget, snapshot InitRenderTarget WSI before
addWidget, load MoltenVK from suyu.app Frameworks with LIBVULKAN_PATH
unset, and require CreateDevice plus swapchain on that surface. PR CI
uses bundled MoltenVK (ON) and runs the binary from inside the app.

Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>

* fix(macos): hide unused suyu-cmd recomp lambda from -Werror

place_one is only called from SUYU_CMD_STATIC_RECOMP and Win32 DLL
loaders. Wrap it and the usings only it needs so macOS -Werror=unused
does not fail suyu-cmd. Windows and static-recomp paths are unchanged.

Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>

* fix(macos): link frontend_common into MoltenVK smoke

place_one is already ifdef-guarded. The smoke now compiles but fails to
link PlayTimeManager, which core's NS query service expects from
frontend_common (same as suyu-cmd).

Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>
2026-09-17 15:40:22 -05:00
Dallin Bland 437b353e51 chore(release): publish GitHub artifacts as drippu-* 2026-09-16 20:53:11 -05:00
6bc64f5c79 fix(ci): gate release publish on required results (#8)
* test(ci): add release publication gate regression

Drive the Publish Release job the way GitHub Actions would. The check
evaluates job `if`/`needs` from `.github/workflows/release.yml` and runs
the job's shell against a stub `gh`. Required platform failures still
publish. The rolling `v0.04-latest` tag is deleted before the empty
artifact check. The release notes have no commit, toolchain, or checksum
metadata.

Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>

* fix(ci): gate release publish on required results

Replace if: always() with !cancelled() plus required job results so a
Windows, Linux, macOS, Android, or libretro failure cannot replace a
release. Keep FreeBSD and libretro-android optional. Stop deleting
v0.04-latest. Publish v0.04-<date>-<sha> with commit, toolchain, and
SHA-256 metadata. Call exporter smoke and the Catch2 tests from both
pull-request CI and the release needs list.

Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>

* chore(ci): drop leftover always() lecture from the gate check

Delete the module docstring that still taught if: always() after
release.yml stopped using it. GitHub's default success() wrap lives in
apply_github_default_success. Publish is forbidden from deleting a tag
at all, not only from deleting before the empty check.

Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>

* test(ci): reject gh prerelease as latest

GitHub returns HTTP 422 Latest release cannot be draft or prerelease
when gh release create passes --prerelease with --latest, then runs
cleanupDraftRelease. The gate stub now fails the same way.

Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>

* fix(ci): stop marking prereleases as latest

Remove --latest from publish_release.sh. GitHub forbids a prerelease
from being the latest release and gh then deletes the draft.

Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Dallin Bland <SourCreamCulture@users.noreply.github.com>
2026-09-15 07:39:43 +00:00
suyu team f265d95f04 FINAL 2026-09-13 12:24:29 +01:00
suyu team 1d8cd15274 fix: drop dead libusb package name from FreeBSD pkg install
devel/libusb was deprecated into the FreeBSD base system in 2013 and has produced no binary package since; pkg install failed with 'No packages available to install matching libusb'. FreeBSD 15+ already provides the libusb API in base, which is what the project's own CMakeLists.txt comment already assumes.
2026-09-13 12:11:38 +01:00
suyu team d1d09321d7 feat: build the libretro core for Windows as well as Linux
Only the Linux .so was produced, so no suyu_libretro.dll ever reached the release. RetroArch loads .dll on Windows and .so on Linux, so both are shipped.
2026-09-04 23:14:34 +01:00
suyu team 06b5a73366 fix: use _pkg/ instead of dist/ to avoid repo dist/ collision in packaging
All build jobs were using dist/ as staging dir, which collides with
the repo's own dist/ folder containing resources/icons/translations.
This caused libretro tar.gz to contain 625 resource files instead of
just suyu_libretro.so. Renamed libretro artifact for clarity.
2026-09-04 19:18:46 +01:00
suyu teamandClaude Opus 4.6 6a9f673d67 fix: mkdir -p in Android Collect APKs step
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-03 23:01:54 +01:00
suyu teamandClaude Opus 4.6 2f96a0714f fix: PowerShell mkdir in Windows package step
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-03 19:30:39 +01:00
suyu teamandClaude Opus 4.6 4925386d8e fix: macOS runner 14→15 for std::stop_token (AppleClang 16)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-02 20:10:42 +01:00
suyu teamandClaude Opus 4.6 8b4dc45d54 fix: Boost::variant→headers, libboost-all-dev for filesystem/context/etc
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-02 19:56:15 +01:00
suyu teamandClaude Opus 4.6 35cfbc1217 ci: capture cmake configure logs on failure for debugging
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-02 19:42:34 +01:00
suyu teamandClaude Opus 4.6 921d9f34bc fix: lower cmake_minimum_required to 3.22, add cmake version debug
GitHub runners may not have cmake 3.31. Lower to 3.22 which covers
all features actually used. Add cmake --version for debugging.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-02 19:31:28 +01:00
suyu teamandClaude Opus 4.6 380ab166cc fix: remove DownloadExternals include, fix Windows heredoc syntax
- Revert include(DownloadExternals) from root CMakeLists (caused configure
  failures across all platforms)
- Fix Windows boost header patch to use printf instead of broken heredoc
- macOS uses USE_SYSTEM_MOLTENVK=ON so DownloadExternals not needed

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-02 19:14:44 +01:00
suyu teamandClaude Opus 4.6 6fff6ea96d fix: boost hardcoded path, macOS MoltenVK, add libboost-dev to CI
- Patch dynarmic's boost/variant.hpp after submodule clone (removes
  hardcoded C:/Users/charl path that breaks CI)
- Add libboost-dev to Linux/Libretro apt deps
- Add molten-vk + boost to macOS brew, USE_SYSTEM_MOLTENVK=ON
- include(DownloadExternals) in root CMakeLists for MoltenVK download fn
- Add boost-all to FreeBSD pkg deps

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-09-02 18:57:09 +01:00