1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-05-26 19:11:46 +02:00

gnu: pcsx2: Revise package.

* gnu/packages/emulators.scm (pcsx2) [origin] <snippet>: Force system ffmpeg
headers, set compiled-in version, and de-vendor cpuinfo, fast_float, fmt,
googletest, libzip, rapidjson, soundtouch, vulkan-headers,
vulkan-memory-allocator.
[arguments] <#:configure-flags>: Add "-DPACKAGE_MODE=ON" and
"-DUSE_LINKED_FFMPEG=ON".
<#:imported-modules>: Remove (guix build copy-build-system).
<#:parallel-build?>: Remove specification redundant with default.
[inputs]: Remove libaio, qtwayland, wayland; Add cpuinfo, fast-float, fmt-11,
libzip, rapidjson, soundtouch.
[native-inputs]: Add googletest, vulkan-memory-allocator.
[license]: Add licenses for remaining vendored libraries.

Change-Id: I17c064d2a6cf4c288cb50dfa21fda9329709afee
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
This commit is contained in:
Andrew Wong
2025-12-10 23:01:20 -05:00
committed by Liliana Marie Prikler
parent a6b42e4a3b
commit f98affddb4
+107 -35
View File
@@ -104,6 +104,7 @@
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
#:use-module (gnu packages ninja)
#:use-module (gnu packages parallel)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pretty-print)
#:use-module (gnu packages pulseaudio)
@@ -3649,27 +3650,88 @@ de-interlacing patches for use with PCSX2.")
(file-name (git-file-name name version))
(sha256
(base32 "0nr53cjifqwnz3icxsj01yd3aw1vfsfxga4zz5zi8aqr175mvq27"))
(modules '((guix build utils)))
(modules '((guix build utils)
(ice-9 ftw)
(srfi srfi-26)))
(snippet
#~(begin
(substitute* "pcsx2/Pcsx2Config.cpp"
(("Path::Canonicalize\\(Path::GetDirectory\\(program_path\\)\\);")
"Path::Canonicalize(
((std::string)Path::GetDirectory(program_path)).append(\"/../share/\"));"))
(delete-file-recursively "3rdparty/d3d12memalloc")
(delete-file-recursively "3rdparty/winpixeventruntime")
(delete-file-recursively "3rdparty/winwil")))))
(substitute* "cmake/Pcsx2Utils.cmake"
(("(PCSX2_GIT_REV \")Unknown" _ prefix)
(string-append prefix #$version "-guix")))
(delete-file "3rdparty/include/Packet32.h") ;"not open source"
;; XXX: 'delete-all-but' is copied from the turbovnc package.
(define (delete-all-but directory . preserve)
(with-directory-excursion directory
(let* ((pred (negate (cut member <>
(cons* "." ".." preserve))))
(items (scandir "." pred)))
(for-each (cut delete-file-recursively <>) items))))
(delete-all-but
"3rdparty"
;; asl2.0 and cc0
"glad" ;Is tailored.
;; bsd-3
"libchdr" ;Not packaged in guix.
"vixl" ;Not packaged in guix.
"xbyak" ;Just includes.
;; bsd-4 (pcap) and bsd-2 (xxhash)
"include" ;Just includes.
;; expat
"ccc" ;Is tailored.
"cubeb" ;Is tailored.
"discord-rpc" ;Not packaged in guix.
"imgui" ;Is tailored.
"rapidyaml" ;Not packaged in guix.
"rcheevos" ;Does not have a linkable binary.
"simpleini" ;Is tailored (GetKeyCount).
"zydis" ;Could not link.
;; gpl2+
"freesurround" ;Unclear what upstream is.
;; lgpl2.0+
"demangler" ;Is tailored.
;; public-domain
"lzma" ;Does not have a linkable library.
;; silofl1.1
"promptfont") ;Unclear what upstream is.
(substitute* "CMakeLists.txt"
(("add_subdirectory\\(3rdparty/googletest)")
"find_package(GTest REQUIRED)"))
(substitute* "cmake/SearchForStuff.cmake"
(("add_subdirectory\\(3rdparty/cpuinfo EXCLUDE_FROM_ALL\\)")
"find_package(cpuinfo REQUIRED)")
(("disable_compiler_warnings_for_target\\(cpuinfo\\)") "")
(("add_subdirectory\\(3rdparty/fast_float EXCLUDE_FROM_ALL\\)")
"find_package(FastFloat REQUIRED)")
(("add_subdirectory\\(3rdparty/fmt EXCLUDE_FROM_ALL\\)")
"find_package(fmt REQUIRED)")
(("disable_compiler_warnings_for_target\\(fmt\\)") "")
(("add_subdirectory\\(3rdparty/libzip EXCLUDE_FROM_ALL\\)")
"find_package(libzip REQUIRED)")
(("add_subdirectory\\(3rdparty/rapidjson EXCLUDE_FROM_ALL\\)")
"find_package(RapidJSON REQUIRED)")
(("add_subdirectory\\(3rdparty/soundtouch EXCLUDE_FROM_ALL\\)")
"pkg_check_modules(SoundTouch REQUIRED soundtouch)")
(("add_subdirectory\\(3rdparty/vulkan EXCLUDE_FROM_ALL\\)")
"find_package(VulkanMemoryAllocator REQUIRED)
find_package(VulkanHeaders REQUIRED)"))
;Specifically, line 213.
(substitute* "common/CMakeLists.txt"
(("fast_float") ""))
(substitute* "pcsx2/CMakeLists.txt"
(("SoundTouch::SoundTouch") "SoundTouch")
(("\
target_link_libraries\\(PCSX2_FLAGS INTERFACE vulkan-headers\\)") ""))
(substitute* "pcsx2/Host/AudioStream.cpp"
(("SoundTouch.h") "soundtouch/SoundTouch.h"))))))
(build-system cmake-build-system)
(arguments
(list
#:parallel-build? #t
#:configure-flags
#~(list "-DCMAKE_C_COMPILER=clang"
"-DCMAKE_CXX_COMPILER=clang++"
"-DCMAKE_PREFIX_PATH=\"$PWD/deps\""
"-GNinja")
#:imported-modules `((guix build copy-build-system)
,@%cmake-build-system-modules)
"-GNinja"
"-DPACKAGE_MODE=ON"
"-DUSE_LINKED_FFMPEG=ON")
#:phases
#~(modify-phases %standard-phases
(replace 'build
@@ -3678,52 +3740,52 @@ de-interlacing patches for use with PCSX2.")
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests? (invoke "ninja" "unittests"))))
(replace 'install
(lambda* args
(apply
(assoc-ref (@ (guix build copy-build-system) %standard-phases)
'install)
#:install-plan
'(("bin/pcsx2-qt" "bin/")
("bin/resources" "share/")
("bin/translations" "share/")
("../source/.github/workflows/scripts/linux/pcsx2-qt.desktop"
"share/applications/"))
args)))
(add-after 'install 'install-patches
(lambda* (#:key inputs #:allow-other-keys)
(install-file (search-input-file %build-inputs "/patches.zip")
(string-append #$output "/share/resources")))))))
(lambda _
(symlink
(search-input-file %build-inputs "/patches.zip")
(string-append
#$output "/share/PCSX2/resources/patches.zip")))))))
(inputs (list (module-ref
(resolve-interface '(gnu packages debug)) 'libbacktrace)
`(,zstd-1.5.7 "lib")
cpuinfo
curl
dbus
eudev
fast-float
ffmpeg
freetype
fmt-11
kddockwidgets
libaio
libjpeg-turbo
libpcap
libpng-next
libwebp
libxi
libxrandr
libzip
lz4
pcsx2-patches
plutovg
plutosvg
plutovg
qtbase
qtdeclarative
qtsvg
qttools
qtwayland
rapidjson
sdl3
shaderc
soundtouch
vulkan-headers
wayland
libxi))
(native-inputs (list clang-17 extra-cmake-modules ninja pkg-config))
wayland))
(native-inputs
(list clang-17
extra-cmake-modules
googletest
ninja
pkg-config
vulkan-memory-allocator))
(home-page "https://pcsx2.net")
(synopsis "PlayStation 2 (PS2) emulator")
(description
@@ -3732,7 +3794,17 @@ emulator. Its purpose is to emulate the PS2's hardware, using a combination
of MIPS CPU interpreters, recompilers and a virtual machine which manages
hardware states and PS2 system memory. This allows you to play PS2 games on
your PC, with many additional features and benefits.")
(license license:gpl3+)))
(license (list license:gpl3+ ;main code
;; code in 3rdparty/
license:asl2.0
license:bsd-2
license:bsd-3
license:bsd-4
license:cc0
license:expat
license:lgpl2.0+
license:public-domain
license:silofl1.1))))
(define-public rpcs3
;; NB: When updating to a new release, don't forget to check if any more