commit:     66ddfc523335615aa56f9235d92ac1fa2bd1b46e
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Mar  4 01:07:52 2025 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue Mar  4 02:45:18 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=66ddfc52

dev-games/godot: add 4.4

Use system miniupnpc again wrt bug #934044, and can also use
mbedtls:3 properly now (while it *can* still use mbedtls:0,
force :3 for simplicity with the slotting logic).

platform/linuxbsd.detect.py newly prints a warning when using
system icu4c or harfbuzz that it may cause problems, but issue
seems nebulous and unclear if we're affected and opted to ignore
it for now (aka, keep using system's).

Hopefully not overlooked anything, build system diff has a lot
of noise making it hard to pickup important changes.

Bug: https://bugs.gentoo.org/934044
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 dev-games/godot/Manifest                    |   1 +
 dev-games/godot/files/godot-4.4-scons.patch |  15 ++
 dev-games/godot/godot-4.4.ebuild            | 230 ++++++++++++++++++++++++++++
 3 files changed, 246 insertions(+)

diff --git a/dev-games/godot/Manifest b/dev-games/godot/Manifest
index 5a5473e4a4b7..d1c0caa94782 100644
--- a/dev-games/godot/Manifest
+++ b/dev-games/godot/Manifest
@@ -1 +1,2 @@
 DIST godot-4.3-stable.tar.xz 29140004 BLAKE2B 
0698cf6c8ba853d094c39b461efe998c57a7de0609701e46cca48b17c29eca3da29c8644aa356cff330d1d3ae88048afc2148f5389d57cdfa1dd26784e6d9a44
 SHA512 
6e1eaba5c3447527ce60d623f7f81cbd90633a5a1ad4c6dd469055a43c8fb9b4807fcd3bae25331294596c2418eb6c0c9db0871c3e1405ddcc7d84e29c39a45b
+DIST godot-4.4-stable.tar.xz 36485332 BLAKE2B 
2ffde3c166db9e96e71d3175e9e0026c5eee34c9fe2a40a233ae0383db774d84f9f14142686c9cd8f0ee740fc67ffd15570f6ccd1e790048e24634d2129881f7
 SHA512 
12c03bb0d3465a8059367602a9628e1028622e220bd8a224713025bb82916d1149525332af1476ab7e5b8239569adad8f4213763807bc9a5efcac26433f35892

diff --git a/dev-games/godot/files/godot-4.4-scons.patch 
b/dev-games/godot/files/godot-4.4-scons.patch
new file mode 100644
index 000000000000..0c1ab346d0e3
--- /dev/null
+++ b/dev-games/godot/files/godot-4.4-scons.patch
@@ -0,0 +1,15 @@
+--- a/SConstruct
++++ b/SConstruct
+@@ -274,2 +274,3 @@
+ opts.Add("CC", "C compiler binary")
++opts.Add("AR", "Archiver")
+ opts.Add("LINK", "Linker binary")
+@@ -749,8 +750,2 @@
+             env.Append(CCFLAGS=[f"-ffile-prefix-map={project_path}=."])
+-    else:
+-        if methods.is_apple_clang(env):
+-            # Apple Clang, its linker doesn't like -s.
+-            env.Append(LINKFLAGS=["-Wl,-S", "-Wl,-x", "-Wl,-dead_strip"])
+-        else:
+-            env.Append(LINKFLAGS=["-s"])
+ 

diff --git a/dev-games/godot/godot-4.4.ebuild b/dev-games/godot/godot-4.4.ebuild
new file mode 100644
index 000000000000..522b758d8aeb
--- /dev/null
+++ b/dev-games/godot/godot-4.4.ebuild
@@ -0,0 +1,230 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+inherit desktop python-any-r1 flag-o-matic scons-utils
+inherit shell-completion toolchain-funcs xdg
+
+DESCRIPTION="Multi-platform 2D and 3D game engine with a feature-rich editor"
+HOMEPAGE="https://godotengine.org/";
+SRC_URI="
+       https://downloads.tuxfamily.org/godotengine/${PV}/${P}-stable.tar.xz
+       
https://github.com/godotengine/godot/releases/download/${PV}-stable/${P}-stable.tar.xz
+"
+S=${WORKDIR}/${P}-stable
+
+LICENSE="
+       MIT
+       Apache-2.0 BSD Boost-1.0 CC0-1.0 Unlicense ZLIB
+       gui? ( CC-BY-4.0 ) tools? ( OFL-1.1 )
+"
+SLOT="0"
+KEYWORDS="~amd64"
+# Enable roughly same as upstream by default so it works as expected,
+# except raycast (tools-only heavy dependency), and deprecated.
+IUSE="
+       alsa +dbus debug deprecated +fontconfig +gui pulseaudio raycast
+       speech test +theora +tools +udev +upnp +vulkan wayland +webp
+"
+REQUIRED_USE="wayland? ( gui )"
+# TODO: tests still need more figuring out
+RESTRICT="test"
+
+# dlopen: libglvnd
+RDEPEND="
+       app-arch/brotli:=
+       app-arch/zstd:=
+       dev-games/recastnavigation:=
+       dev-libs/icu:=
+       dev-libs/libpcre2:=[pcre32]
+       media-libs/freetype[brotli,harfbuzz]
+       media-libs/harfbuzz:=[icu]
+       media-libs/libogg
+       media-libs/libpng:=
+       media-libs/libvorbis
+       net-libs/mbedtls:3=
+       net-libs/wslay
+       sys-libs/zlib:=
+       alsa? ( media-libs/alsa-lib )
+       dbus? ( sys-apps/dbus )
+       fontconfig? ( media-libs/fontconfig )
+       gui? (
+               media-libs/libglvnd
+               x11-libs/libX11
+               x11-libs/libXcursor
+               x11-libs/libXext
+               x11-libs/libXi
+               x11-libs/libXinerama
+               x11-libs/libXrandr
+               x11-libs/libXrender
+               x11-libs/libxkbcommon
+               tools? ( raycast? ( media-libs/embree:4 ) )
+               vulkan? ( media-libs/vulkan-loader[X,wayland?] )
+       )
+       pulseaudio? ( media-libs/libpulse )
+       speech? ( app-accessibility/speech-dispatcher )
+       theora? ( media-libs/libtheora )
+       tools? ( app-misc/ca-certificates )
+       udev? ( virtual/udev )
+       upnp? ( net-libs/miniupnpc:= )
+       wayland? (
+               dev-libs/wayland
+               gui-libs/libdecor
+       )
+       webp? ( media-libs/libwebp:= )
+"
+DEPEND="
+       ${RDEPEND}
+       gui? ( x11-base/xorg-proto )
+       tools? ( test? ( dev-cpp/doctest ) )
+"
+BDEPEND="
+       virtual/pkgconfig
+       wayland? ( dev-util/wayland-scanner )
+"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-4.4-scons.patch
+)
+
+src_prepare() {
+       default
+
+       # mbedtls normally has mbedtls.pc, but Gentoo's slotted one is 
mbedtls3.pc
+       sed -E "/pkg-config/s/(mbedtls|mbedcrypto|mbedx509)/&3/g" \
+               -i platform/linuxbsd/detect.py || die
+
+       sed -i "s|pkg-config |$(tc-getPKG_CONFIG) |" 
platform/linuxbsd/detect.py || die
+
+       # use of builtin_ switches can be messy (see below), delete to be sure
+       local unbundle=(
+               brotli doctest embree freetype graphite harfbuzz icu4c libogg
+               libpng libtheora libvorbis libwebp linuxbsd_headers mbedtls
+               miniupnpc pcre2 recastnavigation volk wslay zlib zstd
+               # certs: unused by generated header, but scons panics if not 
found
+       )
+       rm -r "${unbundle[@]/#/thirdparty/}" || die
+
+       ln -s -- "${ESYSROOT}"/usr/include/doctest thirdparty/ || die
+}
+
+src_compile() {
+       local -x BUILD_NAME=gentoo # replaces "custom_build" in version string
+
+       filter-lto #921017
+
+       local esconsargs=(
+               AR="$(tc-getAR)" CC="$(tc-getCC)" CXX="$(tc-getCXX)"
+
+               progress=no
+               verbose=yes
+
+               use_sowrap=no
+
+               alsa=$(usex alsa)
+               dbus=$(usex dbus)
+               deprecated=$(usex deprecated)
+               execinfo=no # not packaged, disables crash handler if non-glibc
+               fontconfig=$(usex fontconfig)
+               opengl3=$(usex gui)
+               pulseaudio=$(usex pulseaudio)
+               speechd=$(usex speech)
+               udev=$(usex udev)
+               use_volk=no # unnecessary when linking directly to libvulkan
+               vulkan=$(usex gui $(usex vulkan))
+               wayland=$(usex wayland)
+               # TODO: retry to add optional USE=X, wayland support is new
+               # and gui build is not well wired to handle USE="-X wayland" yet
+               x11=$(usex gui)
+
+               system_certs_path="${EPREFIX}"/etc/ssl/certs/ca-certificates.crt
+
+               # platform/*/detect.py uses builtin_* switches to check if need
+               # to link with system libraries, but many ignore whether the dep
+               # is actually used, so "enable" deleted builtins on disabled 
deps
+               builtin_brotli=no
+               builtin_certs=no
+               builtin_clipper2=yes # not packaged
+               builtin_embree=$(usex !gui yes $(usex !tools yes $(usex 
!raycast)))
+               builtin_enet=yes # bundled copy is patched for IPv6+DTLS support
+               builtin_freetype=no
+               builtin_glslang=yes #879111 (for now, may revisit if more 
stable)
+               builtin_graphite=no
+               builtin_harfbuzz=no
+               builtin_icu4c=no
+               builtin_libogg=no
+               builtin_libpng=no
+               builtin_libtheora=$(usex !theora)
+               builtin_libvorbis=no
+               builtin_libwebp=$(usex !webp)
+               builtin_mbedtls=no
+               builtin_miniupnpc=$(usex !upnp)
+               builtin_msdfgen=yes # not wired for unbundling nor packaged
+               builtin_openxr=yes # not packaged
+               builtin_pcre2=no
+               builtin_recastnavigation=no
+               builtin_rvo2=yes # bundled copy has godot-specific changes
+               builtin_wslay=no
+               builtin_xatlas=yes # not wired for unbundling nor packaged
+               builtin_zlib=no
+               builtin_zstd=no
+               # (more is bundled in third_party/ but they lack builtin_* 
switches)
+
+               # modules with optional dependencies, "possible" to disable 
more but
+               # gets messy and breaks all sorts of features (expected enabled)
+               module_mono_enabled=no # unhandled
+               # note raycast is only enabled on amd64+arm64 and USE should
+               # be masked for other keywords if added, see raycast/config.py
+               module_raycast_enabled=$(usex gui $(usex tools $(usex raycast)))
+               module_theora_enabled=$(usex theora)
+               module_upnp_enabled=$(usex upnp)
+               module_webp_enabled=$(usex webp)
+
+               # let *FLAGS handle these
+               debug_symbols=no
+               lto=none
+               optimize=custom
+               use_static_cpp=no
+       )
+
+       esconsargs+=(
+               target=$(usex tools editor template_$(usex debug{,} release))
+               dev_build=$(usex debug)
+
+               # harmless but note this bakes in --test in the final binary
+               tests=$(usex tools $(usex test))
+       )
+
+       escons "${esconsargs[@]}"
+}
+
+src_test() {
+       xdg_environment_reset
+
+       bin/godot* --headless --test || die
+}
+
+src_install() {
+       # suffix varies depending on arch/features, use wildcard to simplify
+       newbin bin/godot* godot
+
+       doman misc/dist/linux/godot.6
+       dodoc AUTHORS.md CHANGELOG.md DONORS.md README.md
+
+       if use gui; then
+               newicon icon.svg godot.svg
+               domenu misc/dist/linux/org.godotengine.Godot.desktop
+
+               insinto /usr/share/metainfo
+               doins misc/dist/linux/org.godotengine.Godot.appdata.xml
+
+               insinto /usr/share/mime/application
+               doins misc/dist/linux/org.godotengine.Godot.xml
+       fi
+
+       newbashcomp misc/dist/shell/godot.bash-completion godot
+       newfishcomp misc/dist/shell/godot.fish godot.fish
+       newzshcomp misc/dist/shell/_godot.zsh-completion _godot
+}

Reply via email to