From f27707080129ff8f41d6ca57502766afc130fdcf Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Wed, 10 Jul 2024 00:26:34 -0300 Subject: [PATCH] pcsx2: big rewrite - Gather all the sources in a same expression under sources.nix - Doc-comment and rename the patch - strictDeps is set as true - Why extra-cmake-modules does not work in nativeBuildInputs?? - Add myself as maintainer --- ...define-rev.patch => 0000-define-rev.patch} | 0 pkgs/by-name/pc/pcsx2/package.nix | 38 +++++------ pkgs/by-name/pc/pcsx2/shaderc-patched.nix | 35 ---------- pkgs/by-name/pc/pcsx2/sources.nix | 64 +++++++++++++++++++ 4 files changed, 79 insertions(+), 58 deletions(-) rename pkgs/by-name/pc/pcsx2/{define-rev.patch => 0000-define-rev.patch} (100%) delete mode 100644 pkgs/by-name/pc/pcsx2/shaderc-patched.nix create mode 100644 pkgs/by-name/pc/pcsx2/sources.nix diff --git a/pkgs/by-name/pc/pcsx2/define-rev.patch b/pkgs/by-name/pc/pcsx2/0000-define-rev.patch similarity index 100% rename from pkgs/by-name/pc/pcsx2/define-rev.patch rename to pkgs/by-name/pc/pcsx2/0000-define-rev.patch diff --git a/pkgs/by-name/pc/pcsx2/package.nix b/pkgs/by-name/pc/pcsx2/package.nix index bc55d1f2647f..b94a34248830 100644 --- a/pkgs/by-name/pc/pcsx2/package.nix +++ b/pkgs/by-name/pc/pcsx2/package.nix @@ -28,14 +28,7 @@ }: let - shaderc-patched = callPackage ./shaderc-patched.nix { }; - # The pre-zipped files in releases don't have a versioned link, we need to zip them ourselves - pcsx2_patches = fetchFromGitHub { - owner = "PCSX2"; - repo = "pcsx2_patches"; - rev = "9e71956797332471010e563a4b75a5934bef9d4e"; - hash = "sha256-jpaRpvJox78zRGyrVIGYVoSEo/ICBlBfw3dTMz9QGuU="; - }; + sources = callPackage ./sources.nix { }; inherit (qt6) qtbase qtsvg @@ -45,18 +38,12 @@ let ; in llvmPackages_17.stdenv.mkDerivation (finalAttrs: { - pname = "pcsx2"; - version = "1.7.5919"; + inherit (sources.pcsx2) pname version src; - src = fetchFromGitHub { - owner = "PCSX2"; - repo = "pcsx2"; - rev = "v${finalAttrs.version}"; - # NOTE: Don't forget to change the hash in shaderc-patched.nix as well. - hash = "sha256-cDugEbbz40uLPW64bcDGxfo1Y3ahYnEVaalfMp/J95s="; - }; - - patches = [ ./define-rev.patch ]; + patches = [ + # Remove PCSX2_GIT_REV + ./0000-define-rev.patch + ]; cmakeFlags = [ (lib.cmakeBool "DISABLE_ADVANCE_SIMD" true) @@ -66,7 +53,6 @@ llvmPackages_17.stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cmake - extra-cmake-modules pkg-config strip-nondeterminism wrapQtAppsHook @@ -75,6 +61,7 @@ llvmPackages_17.stdenv.mkDerivation (finalAttrs: { buildInputs = [ curl + extra-cmake-modules ffmpeg libaio libbacktrace @@ -87,13 +74,15 @@ llvmPackages_17.stdenv.mkDerivation (finalAttrs: { qttools qtwayland SDL2 - shaderc-patched + sources.shaderc-patched soundtouch vulkan-headers wayland zstd ] ++ cubeb.passthru.backendLibs; + strictDeps = true; + installPhase = '' runHook preInstall mkdir -p $out/bin @@ -102,7 +91,7 @@ llvmPackages_17.stdenv.mkDerivation (finalAttrs: { install -Dm644 $src/pcsx2-qt/resources/icons/AppIcon64.png $out/share/pixmaps/PCSX2.png install -Dm644 $src/.github/workflows/scripts/linux/pcsx2-qt.desktop $out/share/applications/PCSX2.desktop - zip -jq $out/bin/resources/patches.zip ${pcsx2_patches}/patches/* + zip -jq $out/bin/resources/patches.zip ${sources.pcsx2_patches.src}/patches/* strip-nondeterminism $out/bin/resources/patches.zip runHook postInstall ''; @@ -112,7 +101,7 @@ llvmPackages_17.stdenv.mkDerivation (finalAttrs: { libs = lib.makeLibraryPath ( [ vulkan-loader - shaderc-patched + sources.shaderc-patched ] ++ cubeb.passthru.backendLibs ); @@ -137,12 +126,15 @@ llvmPackages_17.stdenv.mkDerivation (finalAttrs: { system memory. This allows you to play PS2 games on your PC, with many additional features and benefits. ''; + changelog = "https://github.com/PCSX2/pcsx2/releases/tag/v${finalAttrs.version}"; + downloadPage = "https://github.com/PCSX2/pcsx2"; license = with lib.licenses; [ gpl3Plus lgpl3Plus ]; mainProgram = "pcsx2-qt"; maintainers = with lib.maintainers; [ + AndersonTorres hrdinka govanify matteopacini diff --git a/pkgs/by-name/pc/pcsx2/shaderc-patched.nix b/pkgs/by-name/pc/pcsx2/shaderc-patched.nix deleted file mode 100644 index 1b6ef4c02cb0..000000000000 --- a/pkgs/by-name/pc/pcsx2/shaderc-patched.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ - lib, - fetchFromGitHub, - fetchpatch, - pcsx2, - shaderc, -}: - -let - version = "2024.1"; -in -shaderc.overrideAttrs (old: { - inherit version; - pname = "shaderc-patched-for-pcsx2"; - src = fetchFromGitHub { - owner = "google"; - repo = "shaderc"; - rev = "v${version}"; - hash = "sha256-2L/8n6KLVZWXt6FrYraVlZV5YqbPHD7rzXPCkD0d4kg="; - }; - patches = (old.patches or [ ]) ++ [ - (fetchpatch { - url = "file://${pcsx2.src}/.github/workflows/scripts/common/shaderc-changes.patch"; - hash = "sha256-/qX2yD0RBuPh4Cf7n6OjVA2IyurpaCgvCEsIX/hXFdQ="; - excludes = [ - "libshaderc/CMakeLists.txt" - "third_party/CMakeLists.txt" - ]; - }) - ]; - cmakeFlags = (old.cmakeFlags or [ ]) ++ [ - (lib.cmakeBool "SHADERC_SKIP_EXAMPLES" true) - (lib.cmakeBool "SHADERC_SKIP_TESTS" true) - ]; -}) diff --git a/pkgs/by-name/pc/pcsx2/sources.nix b/pkgs/by-name/pc/pcsx2/sources.nix new file mode 100644 index 000000000000..3ed1d8858f60 --- /dev/null +++ b/pkgs/by-name/pc/pcsx2/sources.nix @@ -0,0 +1,64 @@ +{ + lib, + fetchFromGitHub, + fetchpatch, + pcsx2, + shaderc, +}: + +{ + pcsx2 = let + self = { + pname = "pcsx2"; + version = "1.7.5919"; + src = fetchFromGitHub { + owner = "PCSX2"; + repo = "pcsx2"; + rev = "v${self.version}"; + hash = "sha256-cDugEbbz40uLPW64bcDGxfo1Y3ahYnEVaalfMp/J95s="; + }; + }; + in + self; + + # The pre-zipped files in releases don't have a versioned link, we need to zip + # them ourselves + pcsx2_patches = { + pname = "pcsx2_patches"; + version = "0-unstable-2024-06-23"; + src = fetchFromGitHub { + owner = "PCSX2"; + repo = "pcsx2_patches"; + rev = "9e71956797332471010e563a4b75a5934bef9d4e"; + hash = "sha256-jpaRpvJox78zRGyrVIGYVoSEo/ICBlBfw3dTMz9QGuU="; + }; + }; + + shaderc-patched = let + pname = "shaderc-patched-for-pcsx2"; + version = "2024.1"; + src = fetchFromGitHub { + owner = "google"; + repo = "shaderc"; + rev = "v${version}"; + hash = "sha256-2L/8n6KLVZWXt6FrYraVlZV5YqbPHD7rzXPCkD0d4kg="; + }; + in + shaderc.overrideAttrs (old: { + inherit pname version src; + patches = (old.patches or [ ]) ++ [ + (fetchpatch { + url = "file://${pcsx2.src}/.github/workflows/scripts/common/shaderc-changes.patch"; + hash = "sha256-/qX2yD0RBuPh4Cf7n6OjVA2IyurpaCgvCEsIX/hXFdQ="; + excludes = [ + "libshaderc/CMakeLists.txt" + "third_party/CMakeLists.txt" + ]; + }) + ]; + cmakeFlags = (old.cmakeFlags or [ ]) ++ [ + (lib.cmakeBool "SHADERC_SKIP_EXAMPLES" true) + (lib.cmakeBool "SHADERC_SKIP_TESTS" true) + ]; + }); +}