From 9b02a9d64243b2d47270da090ebd5d6995a64b27 Mon Sep 17 00:00:00 2001 From: TomaSajt <62384384+TomaSajt@users.noreply.github.com> Date: Mon, 10 Feb 2025 00:34:22 +0100 Subject: [PATCH] gopher64: init at 1.0.16 --- pkgs/by-name/go/gopher64/package.nix | 99 +++++++++++++++++++ pkgs/by-name/go/gopher64/set-git-rev.patch | 19 ++++ .../go/gopher64/use-sdl3-via-pkg-config.patch | 85 ++++++++++++++++ 3 files changed, 203 insertions(+) create mode 100644 pkgs/by-name/go/gopher64/package.nix create mode 100644 pkgs/by-name/go/gopher64/set-git-rev.patch create mode 100644 pkgs/by-name/go/gopher64/use-sdl3-via-pkg-config.patch diff --git a/pkgs/by-name/go/gopher64/package.nix b/pkgs/by-name/go/gopher64/package.nix new file mode 100644 index 000000000000..8254e920f1b8 --- /dev/null +++ b/pkgs/by-name/go/gopher64/package.nix @@ -0,0 +1,99 @@ +{ + lib, + stdenv, + rustPlatform, + fetchFromGitHub, + pkg-config, + + bzip2, + libGL, + libX11, + libXcursor, + libxkbcommon, + libXi, + moltenvk, + sdl3, + wayland, + zstd, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "gopher64"; + version = "1.0.16"; + + src = fetchFromGitHub { + owner = "gopher64"; + repo = "gopher64"; + tag = "v${finalAttrs.version}"; + hash = "sha256-TduOmKK4OAmhP2VUT0eeoKHQHmsM8kptrxfgCdDFTRU="; + fetchSubmodules = true; + leaveDotGit = true; + postFetch = '' + cd "$out" + git rev-parse HEAD > $out/GIT_REV + find "$out" -name .git -print0 | xargs -0 rm -rf + ''; + }; + + cargoPatches = [ + # upstream rebuilds SDL3 from source + # this patch makes it use the SDL3 library provided by nixpkgs + ./use-sdl3-via-pkg-config.patch + + # make the build script use the @GIT_REV@ string that will be substituted in the logic below + ./set-git-rev.patch + ]; + + postPatch = '' + # use the file generated in the fetcher to supply the git revision + substituteInPlace build.rs \ + --replace-fail "@GIT_REV@" $(cat GIT_REV) + ''; + + useFetchCargoVendor = true; + cargoHash = "sha256-9fZ7zFTqt1VNnmCqFzWrZFD1PQZ7paz7r2Mb+9+C9Rs="; + + env.ZSTD_SYS_USE_PKG_CONFIG = true; + + nativeBuildInputs = [ + pkg-config + rustPlatform.bindgenHook + ]; + + buildInputs = + [ + bzip2 + sdl3 + zstd + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + moltenvk + ]; + + # these are dlopen-ed during runtime + runtimeDependencies = lib.optionalString stdenv.hostPlatform.isLinux [ + libGL + libxkbcommon + + # for X11 + libX11 + libXcursor + libXi + + # for wayland + wayland + ]; + + postFixup = lib.optionalString stdenv.hostPlatform.isLinux '' + patchelf $out/bin/gopher64 --add-rpath ${lib.makeLibraryPath finalAttrs.runtimeDependencies} + ''; + + meta = { + changelog = "https://github.com/gopher64/gopher64/releases/tag/${finalAttrs.src.tag}"; + description = "N64 emulator written in Rust"; + homepage = "https://github.com/gopher64/gopher64"; + license = lib.licenses.gpl3Only; + mainProgram = "gopher64"; + maintainers = with lib.maintainers; [ tomasajt ]; + }; +}) diff --git a/pkgs/by-name/go/gopher64/set-git-rev.patch b/pkgs/by-name/go/gopher64/set-git-rev.patch new file mode 100644 index 000000000000..15b324e56bd7 --- /dev/null +++ b/pkgs/by-name/go/gopher64/set-git-rev.patch @@ -0,0 +1,19 @@ +diff --git a/build.rs b/build.rs +index 0b20db2..d904e63 100644 +--- a/build.rs ++++ b/build.rs +@@ -163,13 +163,7 @@ fn main() { + simd_build.compile("simd"); + } + +- let git_output = std::process::Command::new("git") +- .args(["rev-parse", "HEAD"]) +- .output() +- .unwrap(); +- +- let git_hash = String::from_utf8(git_output.stdout).unwrap(); +- println!("cargo:rustc-env=GIT_HASH={}", git_hash); ++ println!("cargo:rustc-env=GIT_HASH={}", "@GIT_REV@"); + + println!("cargo:rustc-env=N64_STACK_SIZE={}", 8 * 1024 * 1024); + } diff --git a/pkgs/by-name/go/gopher64/use-sdl3-via-pkg-config.patch b/pkgs/by-name/go/gopher64/use-sdl3-via-pkg-config.patch new file mode 100644 index 000000000000..7db5ce5ea8ff --- /dev/null +++ b/pkgs/by-name/go/gopher64/use-sdl3-via-pkg-config.patch @@ -0,0 +1,85 @@ +diff --git a/Cargo.lock b/Cargo.lock +index 89bc1d0..72b65cd 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -626,15 +626,6 @@ dependencies = [ + "error-code", + ] + +-[[package]] +-name = "cmake" +-version = "0.1.54" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +-dependencies = [ +- "cc", +-] +- + [[package]] + name = "cobs" + version = "0.2.3" +@@ -3245,12 +3236,6 @@ dependencies = [ + "windows-sys 0.52.0", + ] + +-[[package]] +-name = "rpkg-config" +-version = "0.1.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5a2d2f3481209a6b42eec2fbb49063fb4e8d35b57023401495d4fe0f85c817f0" +- + [[package]] + name = "rustc-demangle" + version = "0.1.24" +@@ -3380,21 +3365,13 @@ version = "1.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +-[[package]] +-name = "sdl3-src" +-version = "3.2.10" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e677fa126db179fb8f03c982163321496ddf57a6d8a1e41eeef4600f956038b1" +- + [[package]] + name = "sdl3-sys" + version = "0.4.7+SDL3-3.2.10" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f0d16a8a3623a4cb39a3661c81d9d4c5fd77ada27fc056e320b3651bf7bde1b1" + dependencies = [ +- "cmake", +- "rpkg-config", +- "sdl3-src", ++ "pkg-config", + ] + + [[package]] +diff --git a/Cargo.toml b/Cargo.toml +index 1f41e04..9d9ea33 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -18,7 +18,7 @@ serde-big-array = "0.5" + eframe = { version = "0.31", default-features = false, features = ["wayland", "x11", "glow"] } + sha2 = "0.10" + ab_glyph = "0.2" +-sdl3-sys = { version = "0.4", features = ["build-from-source-static"] } ++sdl3-sys = { version = "0.4", features = ["use-pkg-config"] } + rfd = { version = "0.15", default-features = false, features = ["xdg-portal", "tokio"] } + tokio = {version = "1.43", features = ["rt-multi-thread", "macros"] } + spin_sleep = "1.3" +diff --git a/build.rs b/build.rs +index 67a6e8d..6c9f63b 100644 +--- a/build.rs ++++ b/build.rs +@@ -52,10 +52,7 @@ fn main() { + .include("parallel-rdp/parallel-rdp-standalone/vulkan") + .include("parallel-rdp/parallel-rdp-standalone/vulkan-headers/include") + .include("parallel-rdp/parallel-rdp-standalone/util") +- .include( +- std::path::PathBuf::from(std::env::var("DEP_SDL3_OUT_DIR").to_owned().unwrap()) +- .join("include"), +- ); ++ ; + + let os = std::env::var("CARGO_CFG_TARGET_OS").unwrap(); + let arch = std::env::var("CARGO_CFG_TARGET_ARCH").unwrap();