forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Ionen Wolkens <[email protected]>
- Loading branch information
Showing
2 changed files
with
240 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
DIST godot-3.5.3-stable.tar.xz 24072964 BLAKE2B a4c03328e3aa77d741a1c642cfd645de04084f2852e865757fc8960c4919d3b8b8571e772f44004901fdd80a967e8e21bd8c6be8b36263db7afae787dcbd3ed6 SHA512 4c008af5bb7c298d465edbe03f6ebc642f5bbbb0a4254e99d7a7a88919e1f9424b98c5dff95a55ae68d4e2e5878c7c0bb7d13a66869cb632ecb51a913f865155 | ||
DIST godot-4.0.4-stable.tar.xz 30267060 BLAKE2B 42f5f0c89edb96eb6f36c54229671f233ed0a49a769361195f9aaf807b45fe3968aeeaad204fc07e200114d852e4651f9dc8eb137c4f3aca7b8e8e1203ebcdc9 SHA512 4dadc123995d7262ffa6c5002d08611038957c59a8bd742284b9b62577de6b7182aad807db7a231180a355df0f25d10babdc914faf9287ed401152d98762bb5f | ||
DIST godot-4.1.1-stable.tar.xz 30681136 BLAKE2B 18e6dae0428812493ecdd8d76cc99c2264873707d4abac0146a1d9b9cbffe2f678c346951a714d0d211fd380b433f910cc952e1720a2c4933febeb7d64283369 SHA512 9fc4bdff2ef3f5ad173514709591941f1dff32dd7cc54224a85691b34b6a5f1d01addc9b4f8d996bc6f774cee5c722181122a39b498b23e48e8d70629ff8ff0b | ||
DIST godot-4.1.2-stable.tar.xz 31020196 BLAKE2B fbdc4470a4db78a810dcbd7700c46dd03a9d9802c08cbad68dd3aedbc00678f7285837f34642ac833c000164f4a98559cb82bcb615ca353cf319e771d55cdc6a SHA512 d9e3c948aeece3586632ed2a8c94ca2107a6b5b4bb1ae8dc264e350fbfcb4cc1f4cd4cf7fdcd61a5b0351511c12e34d83275a79d5e0361e2eee67c8447b5f831 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,239 @@ | ||
# Copyright 2022-2023 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=8 | ||
|
||
PYTHON_COMPAT=( python3_{10..11} ) | ||
inherit bash-completion-r1 desktop python-any-r1 scons-utils 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="4" | ||
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 | ||
+runner speech test +theora +tools +udev +upnp +vulkan +webp | ||
" | ||
# 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:3 ) ) | ||
vulkan? ( media-libs/vulkan-loader[X] ) | ||
) | ||
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:= ) | ||
webp? ( media-libs/libwebp:= ) | ||
" | ||
DEPEND=" | ||
${RDEPEND} | ||
gui? ( x11-base/xorg-proto ) | ||
tools? ( test? ( dev-cpp/doctest ) ) | ||
" | ||
BDEPEND="virtual/pkgconfig" | ||
|
||
PATCHES=( | ||
"${FILESDIR}"/${PN}-4.0_beta3-headless-header.patch | ||
"${FILESDIR}"/${PN}-4.0_rc2-musl.patch | ||
"${FILESDIR}"/${PN}-4.0_rc3-scons.patch | ||
) | ||
|
||
src_prepare() { | ||
default | ||
|
||
sed -i "1,5s/ godot/&${SLOT}/i" misc/dist/linux/godot.6 || die | ||
sed -i "/id/s/Godot/&${SLOT}/" misc/dist/linux/org.godotengine.Godot.appdata.xml || die | ||
sed -e "s/=godot/&${SLOT}/" -e "/^Name=/s/$/ ${SLOT}/" \ | ||
-i misc/dist/linux/org.godotengine.Godot.desktop || 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 | ||
|
||
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) | ||
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)) | ||
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_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_squish=yes # ^ likewise, may not be safe to unbundle | ||
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, 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, e.g. can pass -flto as-is | ||
debug_symbols=no | ||
lto=none | ||
optimize=custom | ||
use_static_cpp=no | ||
) | ||
|
||
if use runner && use tools; then | ||
# build alternate faster + ~60% smaller binary for running | ||
# games or servers without game development debug paths | ||
escons extra_suffix=runner target=template_release "${esconsargs[@]}" | ||
fi | ||
|
||
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 extra_suffix=main "${esconsargs[@]}" | ||
} | ||
|
||
src_test() { | ||
xdg_environment_reset | ||
bin/godot*.main --headless --test || die | ||
} | ||
|
||
src_install() { | ||
local s=godot${SLOT} | ||
|
||
newbin bin/godot*.main ${s} | ||
if use runner && use tools; then | ||
newbin bin/godot*.runner ${s}-runner | ||
else | ||
# always available, revdeps shouldn't depend on [runner] | ||
dosym ${s} /usr/bin/${s}-runner | ||
fi | ||
|
||
newman misc/dist/linux/godot.6 ${s}.6 | ||
dodoc AUTHORS.md CHANGELOG.md DONORS.md README.md | ||
|
||
if use gui; then | ||
newicon icon.svg ${s}.svg | ||
newmenu misc/dist/linux/org.godotengine.Godot.desktop \ | ||
org.godotengine.${s^}.desktop | ||
|
||
insinto /usr/share/metainfo | ||
newins misc/dist/linux/org.godotengine.Godot.appdata.xml \ | ||
org.godotengine.${s^}.appdata.xml | ||
|
||
insinto /usr/share/mime/application | ||
newins misc/dist/linux/org.godotengine.Godot.xml \ | ||
org.godotengine.${s^}.xml | ||
fi | ||
|
||
newbashcomp misc/dist/shell/godot.bash-completion ${s} | ||
bashcomp_alias ${s}{,-runner} | ||
|
||
insinto /usr/share/fish/vendor_completions.d | ||
newins misc/dist/shell/godot.fish ${s}.fish | ||
dosym ${s}.fish /usr/share/fish/vendor_completions.d/${s}-runner.fish | ||
|
||
insinto /usr/share/zsh/site-functions | ||
newins misc/dist/shell/_godot.zsh-completion _${s} | ||
dosym _${s} /usr/share/zsh/site-functions/_${s}-runner | ||
} |