mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 15:36:20 -05:00
gnu: godot: Update to 4.1. Rename godot@3 to godot-lts.
* gnu/packages/game-development.scm (godot): Update to 4.1. [source]: Update snippet: remove embree and enet; add amd-fsr, astcenc, basis_universal, brotli, linuxbsd_headers, etcpak, meshoptimizer, msdfgen, noise, openxr, rvo2, spirv-reflect, thorvg, volk, vulkan. [arguments]: Remove #:scons. Update #:scons-flags to unbundle more libraries. [phases]: Remove 'build-headless phase (headless is no longer has a separate build). Add 'fix-dl-open-paths and 'unbundle-xkbcommon phases. In 'install phase, remove headless output. Update 'wrap phase to remove eudev. [outputs]: Remove headless. [inputs]: Add dbus, embree, enet, fontconfig, glslang, libpng, harfbuzz, icu4c, libxkbcommon, openxr, speech-dispatcher, vulkan-loader, zlib. Remove bullet. Rename freetype to freetype-with-brotli. (godot-lts): New variable. godot@3 is the LTS release. * gnu/packages/games.scm (superstarfighter)[native-inputs]: Use it. [inputs]: Use it.
This commit is contained in:
parent
49b0a5ee5f
commit
09e73683a2
2 changed files with 256 additions and 3 deletions
|
@ -28,6 +28,7 @@
|
|||
;;; Copyright © 2022 Felix Gruber <felgru@posteo.net>
|
||||
;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
|
||||
;;; Copyright © 2022 dan <i@dan.games>
|
||||
;;; Copyright © 2023 John Kehayias <john.kehayias@protonmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -54,6 +55,7 @@ (define-module (gnu packages game-development)
|
|||
#:use-module (guix git-download)
|
||||
#:use-module (guix svn-download)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python)
|
||||
|
@ -86,6 +88,7 @@ (define-module (gnu packages game-development)
|
|||
#:use-module (gnu packages graphviz)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages icu4c)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages llvm)
|
||||
|
@ -95,6 +98,7 @@ (define-module (gnu packages game-development)
|
|||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages music)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages networking)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages pulseaudio)
|
||||
|
@ -105,12 +109,14 @@ (define-module (gnu packages game-development)
|
|||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages sdl)
|
||||
#:use-module (gnu packages speech)
|
||||
#:use-module (gnu packages sphinx)
|
||||
#:use-module (gnu packages stb)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages textutils)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages video)
|
||||
#:use-module (gnu packages vulkan)
|
||||
#:use-module (gnu packages web)
|
||||
#:use-module (gnu packages wxwidgets)
|
||||
#:use-module (gnu packages xdisorg)
|
||||
|
@ -1812,7 +1818,7 @@ (define-public openmw
|
|||
(home-page "https://openmw.org")
|
||||
(license license:gpl3)))
|
||||
|
||||
(define-public godot
|
||||
(define-public godot-lts
|
||||
(package
|
||||
(name "godot")
|
||||
(version "3.4.2")
|
||||
|
@ -1982,6 +1988,253 @@ (define-public godot
|
|||
scripted in a Python-like language.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public godot
|
||||
(package
|
||||
(name "godot")
|
||||
(version "4.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/godotengine/godot")
|
||||
(commit (string-append version "-stable"))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0rc34w4nb1qwmxk7ijcm689kk4gdxrmgzbj4qqz8gkqhysn8mnmz"))
|
||||
(modules '((guix build utils)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-1)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Keep only those bundled files we have not (yet) replaced
|
||||
;; with Guix versions. Note that some of these may be
|
||||
;; modified; see "thirdparty/README.md".
|
||||
(with-directory-excursion "thirdparty"
|
||||
(let* ((preserved-files
|
||||
'("README.md"
|
||||
"amd-fsr"
|
||||
"assimp"
|
||||
"astcenc"
|
||||
"basis_universal"
|
||||
;; TODO: Can unbundle once
|
||||
;; <https://github.com/godotengine/godot/pull/79101>
|
||||
;; is merged
|
||||
"brotli"
|
||||
;; Godot needs ca-certificates.crt, but that is
|
||||
;; not available in build environment
|
||||
"certs"
|
||||
"cvtt"
|
||||
"linuxbsd_headers"
|
||||
"etc2comp"
|
||||
"etcpak"
|
||||
"fonts"
|
||||
"glad"
|
||||
"jpeg-compressor"
|
||||
"libsimplewebm"
|
||||
"meshoptimizer"
|
||||
"minimp3"
|
||||
"miniupnpc"
|
||||
"minizip"
|
||||
"misc"
|
||||
"msdfgen"
|
||||
"nanosvg"
|
||||
"noise"
|
||||
"oidn"
|
||||
"openxr"
|
||||
"pvrtccompressor"
|
||||
"recastnavigation"
|
||||
"rvo2"
|
||||
"spirv-reflect"
|
||||
"squish"
|
||||
"stb_rect_pack"
|
||||
"thorvg"
|
||||
"tinyexr"
|
||||
"vhacd"
|
||||
"volk"
|
||||
"vulkan"
|
||||
"xatlas")))
|
||||
(for-each delete-file-recursively
|
||||
(lset-difference string=?
|
||||
(scandir ".")
|
||||
(cons* "." ".." preserved-files)))))))))
|
||||
(build-system scons-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:scons-flags #~`("platform=linuxbsd" "target=editor" "production=yes"
|
||||
;; XXX: There may be advantages to enabling volk,
|
||||
;; requiring unbundling and patching to use our input.
|
||||
"use_volk=no"
|
||||
;; Avoid using many of the bundled libs.
|
||||
;; Note: These options can be found in the SConstruct file.
|
||||
"builtin_embree=no"
|
||||
"builtin_enet=no"
|
||||
"builtin_freetype=no"
|
||||
"builtin_glslang=no"
|
||||
"builtin_graphite=no"
|
||||
"builtin_harfbuzz=no"
|
||||
"builtin_icu4c=no"
|
||||
"builtin_libogg=no"
|
||||
"builtin_libpng=no"
|
||||
"builtin_libtheora=no"
|
||||
"builtin_libvorbis=no"
|
||||
"builtin_libwebp=no"
|
||||
"builtin_mbedtls=no"
|
||||
"builtin_pcre2=no"
|
||||
"builtin_pcre2_with_jit=no"
|
||||
"builtin_wslay=no"
|
||||
"builtin_zlib=no"
|
||||
"builtin_zstd=no")
|
||||
#:tests? #f ; There are no tests
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'scons-use-env
|
||||
(lambda _
|
||||
;; Scons does not use the environment variables by default,
|
||||
;; but this substitution makes it do so.
|
||||
(substitute* "SConstruct"
|
||||
(("env_base = Environment\\(tools=custom_tools\\)")
|
||||
(string-append
|
||||
"env_base = Environment(tools=custom_tools)\n"
|
||||
"env_base = Environment(ENV=os.environ)")))))
|
||||
(add-after 'scons-use-env 'fix-dlopen-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((files '("drivers/alsa/asound-so_wrap.c"
|
||||
"drivers/pulseaudio/pulse-so_wrap.c"
|
||||
"platform/linuxbsd/dbus-so_wrap.c"
|
||||
"platform/linuxbsd/fontconfig-so_wrap.c"
|
||||
"platform/linuxbsd/libudev-so_wrap.c"
|
||||
"platform/linuxbsd/speechd-so_wrap.c"
|
||||
"platform/linuxbsd/x11/display_server_x11.cpp"
|
||||
"platform/linuxbsd/x11/dynwrappers/xcursor-so_wrap.c"
|
||||
"platform/linuxbsd/x11/dynwrappers/xext-so_wrap.c"
|
||||
"platform/linuxbsd/x11/dynwrappers/xinerama-so_wrap.c"
|
||||
"platform/linuxbsd/x11/dynwrappers/xinput2-so_wrap.c"
|
||||
"platform/linuxbsd/x11/dynwrappers/xlib-so_wrap.c"
|
||||
"platform/linuxbsd/x11/dynwrappers/xrandr-so_wrap.c"
|
||||
"platform/linuxbsd/x11/dynwrappers/xrender-so_wrap.c"
|
||||
"platform/linuxbsd/xkbcommon-so_wrap.c"
|
||||
"thirdparty/volk/volk.c"
|
||||
"thirdparty/volk/volk.c"))
|
||||
(libs '("libasound.so.2"
|
||||
"libpulse.so.0"
|
||||
"libdbus-1.so.3"
|
||||
"libfontconfig.so.1"
|
||||
"libudev.so.1"
|
||||
"libspeechd.so.2"
|
||||
"libXrandr.so.2"
|
||||
"libXcursor.so.1"
|
||||
"libXext.so.6"
|
||||
"libXinerama.so.1"
|
||||
"libXi.so.6"
|
||||
"libX11.so.6"
|
||||
"libXrandr.so.2"
|
||||
"libXrender.so.1"
|
||||
"libxkbcommon.so.0"
|
||||
"libvulkan.so.1"
|
||||
"libvulkan.so")))
|
||||
(for-each (lambda (file lib)
|
||||
(substitute* file
|
||||
(((string-append "dlopen\\(\"" lib "\""))
|
||||
(string-append "dlopen(\""
|
||||
(search-input-file
|
||||
inputs (string-append "lib/" lib))
|
||||
"\""))))
|
||||
files libs))
|
||||
(substitute* "thirdparty/glad/gl.c"
|
||||
(("libGL.so") ; for both .so and .so.1
|
||||
(string-append (search-input-file inputs "lib/libGL.so"))))
|
||||
(substitute* "thirdparty/glad/glx.c"
|
||||
(("libGL.so") ; for both .so and .so.1
|
||||
(string-append (search-input-file inputs "lib/libGL.so"))))))
|
||||
(add-after 'fix-dlopen-paths 'unbundle-xkbcommon
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "platform/linuxbsd/xkbcommon-so_wrap.c"
|
||||
(("./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon.h")
|
||||
(string-append
|
||||
(search-input-file inputs "include/xkbcommon/xkbcommon.h")))
|
||||
(("./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-compose.h")
|
||||
(string-append
|
||||
(search-input-file inputs "include/xkbcommon/xkbcommon-compose.h")))
|
||||
(("./thirdparty/linuxbsd_headers/xkbcommon/xkbcommon-keysyms.h")
|
||||
(string-append
|
||||
(search-input-file inputs "include/xkbcommon/xkbcommon-keysyms.h"))))))
|
||||
(replace 'install
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((zenity (search-input-file inputs "bin/zenity")))
|
||||
;; Strip build info from filenames.
|
||||
(with-directory-excursion "bin"
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(let ((dest (car (string-split (basename file) #\.))))
|
||||
(rename-file file dest)))
|
||||
(find-files "." "godot.*\\.linuxbsd\\.editor.*"))
|
||||
(install-file "godot" (string-append #$output "/bin")))
|
||||
;; Tell the editor where to find zenity for OS.alert().
|
||||
;; TODO: This could be changed in
|
||||
;; platform/linuxbsd/os_linuxbsd.cpp directly, along with the
|
||||
;; other alert programs.
|
||||
(wrap-program (string-append #$output "/bin/godot")
|
||||
`("PATH" ":" prefix (,(string-append zenity "/bin")))))))
|
||||
(add-after 'install 'install-godot-desktop
|
||||
(lambda _
|
||||
(let ((applications (string-append #$output "/share/applications"))
|
||||
(icons (string-append #$output "/share/icons/hicolor")))
|
||||
(mkdir-p applications)
|
||||
(copy-file "misc/dist/linux/org.godotengine.Godot.desktop"
|
||||
(string-append applications "/godot.desktop"))
|
||||
(for-each (lambda (icon dest)
|
||||
(mkdir-p (dirname dest))
|
||||
(copy-file icon dest))
|
||||
'("icon.png" "icon.svg")
|
||||
`(,(string-append icons "/256x256/apps/godot.png")
|
||||
,(string-append icons "/scalable/apps/godot.svg")))))))))
|
||||
(native-inputs
|
||||
(list pkg-config))
|
||||
(inputs
|
||||
(list alsa-lib
|
||||
dbus
|
||||
embree
|
||||
enet
|
||||
eudev
|
||||
fontconfig
|
||||
freetype-with-brotli
|
||||
glew
|
||||
glslang
|
||||
glu
|
||||
libpng
|
||||
harfbuzz
|
||||
icu4c
|
||||
libtheora
|
||||
libvorbis
|
||||
libvpx
|
||||
libwebp
|
||||
libx11
|
||||
libxcursor
|
||||
libxi
|
||||
libxinerama
|
||||
libxkbcommon
|
||||
libxrandr
|
||||
mbedtls-apache
|
||||
mesa
|
||||
openxr
|
||||
opusfile
|
||||
pcre2
|
||||
pulseaudio
|
||||
speech-dispatcher
|
||||
vulkan-loader
|
||||
wslay
|
||||
zenity
|
||||
zlib
|
||||
`(,zstd "lib")))
|
||||
(home-page "https://godotengine.org/")
|
||||
(synopsis "Advanced 2D and 3D game engine")
|
||||
(description
|
||||
"Godot is an advanced multi-platform game engine written in C++. If
|
||||
features design tools such as a visual editor, can import 3D models and
|
||||
provide high-quality 3D rendering, it contains an animation editor, and can be
|
||||
scripted in a Python-like language.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public entt
|
||||
(package
|
||||
(name "entt")
|
||||
|
|
|
@ -2826,9 +2826,9 @@ (define-public superstarfighter
|
|||
#:categories '("Game" "ArcadeGame")))
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("godot-headless" ,godot "headless")))
|
||||
`(("godot-headless" ,godot-lts "headless")))
|
||||
(inputs
|
||||
(list godot))
|
||||
(list godot-lts))
|
||||
(home-page "https://notapixel.itch.io/superstarfighter")
|
||||
(synopsis "Fast-paced local multiplayer arcade game")
|
||||
(description "In SuperStarfighter, up to four local players compete in a
|
||||
|
|
Loading…
Reference in a new issue