Accepting request 1098811 from home:cunix:godot

Update to 4.1

OBS-URL: https://build.opensuse.org/request/show/1098811
OBS-URL: https://build.opensuse.org/package/show/games/godot?expand=0&rev=66
This commit is contained in:
c unix 2023-07-19 15:27:20 +00:00 committed by Git OBS Bridge
parent 880e2e699c
commit 1e7ff2e02f
9 changed files with 230 additions and 117 deletions

View File

@ -1,67 +0,0 @@
From: cunix@mail.de
Date: 2019-04-29 16:00:00
Subject: System certs as fallback for project certs
References: https://github.com/godotengine/godot/pull/22066#issuecomment-421565719
https://github.com/godotengine/godot/pull/22066#issuecomment-422528664
https://github.com/godotengine/godot/issues/22232
Upstream: offered to upstream
Rebased: 2023-03-03
If project has no value set for "network/ssl/certificates" (the default),
"default_certs" is not filled by function "load_default_certificates" because
we don't use builtin certs - BUILTIN_CERTS_ENABLED is not defined.
We use a distro specific "system_certs_path" as build option and apply it here
via "_SYSTEM_CERTS_PATH" (defined in included "core/io/certs_compressed.gen.h")
as fallback for certificates.
In result patch restores upstream behavior for certificate usage.
Difference is:
Where upstream by default uses hard coded certificates at build time, we hard
code path to the default certificates as "/var/lib/ca-certificates/ca-bundle.pem".
This bundle might be updated separately or admin can edit content of this file.
User can always define different path via Editor or Project settings.
See comments in patch for more details.
---
--- a/modules/mbedtls/crypto_mbedtls.cpp
+++ b/modules/mbedtls/crypto_mbedtls.cpp
@@ -45,10 +45,12 @@
#include <mbedtls/debug.h>
#include <mbedtls/md.h>
#include <mbedtls/pem.h>
+#include <string.h>
+
CryptoKey *CryptoKeyMbedTLS::create() {
return memnew(CryptoKeyMbedTLS);
}
Error CryptoKeyMbedTLS::load(String p_path, bool p_public_only) {
@@ -305,10 +307,22 @@
ERR_FAIL_COND(default_certs == nullptr);
if (!p_path.is_empty()) {
// Use certs defined in project settings.
default_certs->load(p_path);
+
+ } else if (strcmp(_SYSTEM_CERTS_PATH, "") != 0) {
+ // Use system certs only if user did not override in project settings
+ // and if _SYSTEM_CERTS_PATH is set.
+ // Should happen if Project Setting "network/ssl/certificates" is empty.
+ // Editor Setting "network/ssl/editor_ssl_certificates" is already set
+ // to "_SYSTEM_CERTS_PATH" by default -> This is caught by "if (p_path != "") {".
+ // But the same fallback might apply for certificates used by editor
+ // if user has set "network/ssl/editor_ssl_certificates" to "".
+ // "load_default_certificates" is only called twice with one of
+ // these parameters.
+ default_certs->load(_SYSTEM_CERTS_PATH);
}
#ifdef BUILTIN_CERTS_ENABLED
else {
// Use builtin certs only if user did not override it in project settings.
PackedByteArray out;

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8ce3e2170ac5e043a7ce9c6f839ef67eddd83e24c0728d1afc76e678d4f37552
size 30203636

View File

@ -1 +0,0 @@
8ce3e2170ac5e043a7ce9c6f839ef67eddd83e24c0728d1afc76e678d4f37552 godot-4.0.3-stable.tar.xz

3
godot-4.1-stable.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5ef9a3b3591b1ceb2f89fba9419a05ef436d73514e2e15aebac4bebc246122ef
size 30679684

View File

@ -0,0 +1 @@
5ef9a3b3591b1ceb2f89fba9419a05ef436d73514e2e15aebac4bebc246122ef godot-4.1-stable.tar.xz

View File

@ -1,3 +1,98 @@
-------------------------------------------------------------------
Fri Jul 7 12:00:00 UTC 2023 - cunix@mail.de
- Update to 4.1
Added:
* Platform-specific CA bundles
* "Center View" button in 2D editor
* Proper snapping to tile polygon editor
* Ability to look-at in 3D model-space
* Move control points button to Path3D Editor
* "TRANS_SPRING" mode to "Tween"
* Frame delta smoothing option
* Square fill mode to GradientTexture2D
* "ProjectSettings.set_as_basic()" and "ProjectSettings.set_as_internal()"
exposed to scripting
* Let user scripts disable thread safety checks
* multi-window for code and shader editors
* Remember snapping options per-project
* Project tags
* Make create folder popup support nested folders
* Relative path support for "EditorPlugin.add_autoload_singleton"
* Export options for EditorExportPlugins
* Editor support for icons of custom, scripted, and GDExtension classes
* Backwards compatibility system for GDExtension
* GDExtensions allowed to add editor plugins
* GDExtension "@since" attribute
* Boolean operators for all Variant types
* Static variables in GDScript
* Multiline cells in "Tree"
* horizontal/vertical "custom_step" editor property for "ScrollContainer"
* "screen_get_pixel" method
* Vertical icon alignment for buttons
* All auto-wrap modes in "TextEdit" exposed
* Tab stops support in "Label" and "RichTextLabel"
* "Window.get_window_id()"
* Method to check if native window is focused
* Support for extending GLTF with more texture formats and support WebP
* non-standard OBJ vertex entries supported
* NavigationAgent path postprocessing and pathfinding algorithm options exposed
* "audio/general/text_to_speech" project setting to enable/disable TTS
* Default error handler for X11 to avoid crashes
* Shader cache for GLES3
* Vulkan pipeline caching
* NoiseTexture3D
* "EXPOSURE" and "LIGHT_IS_DIRECTIONAL" built-in for spatial shaders
* Option for ButtonGroups to be unpressed
Changed:
* Node processing refactored to allow Scene multi-threading
* Node children management optimized
* Replace invalid characters in node names by underscores
instead of removing them
* Remove constrained view in the 2D editor
* Reorganize context menu in FileSystem dock
* Preserve scene unique names when saving branch as scene
* Allow showing messages from threads in "Editor Log"
* Store sensitive export options in dedicated credentials file
* Rework GDExtension interface from a struct to loading function pointers
* Make "TextureButton" and "Button" update on texture change
* Use defined key mapping for closing popups and dialogs
* Disable texture format import overrides by default
* Navigation mesh edge connections optional
* Disable weak crypto and TLS versions
* Propagate previously unused "NOTIFICATION_WORLD_2D_CHANGED",
make CanvasItem/CollisionObject2D use it
* Rework particle turbulence
* (Re-)Implement "Light3D.shadow_reverse_cull_face"
Fixed:
* 3D viewport front/rear axis and "Focus" button
* AudioListener2D ignoring rotation for positional audio
* Trim when importing WAV
* Invalid 2D global position when read outside tree
* "View Owners" dialog not acknowledging that some resources aren't scenes
* Avoid error spam on first opening of a not yet imported project
* GDExtension Variant type conversion
* GDScript access to identifiers that are reserved keywords
* Ensure that controls update all their sizing information when required
* Input: just pressed and released with short presses
* Sliding window problem
* Temporary file permissions
and much more:
https://downloads.tuxfamily.org/godotengine/4.1/Godot_v4.1-stable_changelog_chrono.txt
- "certs_fallback.patch" dropped:
godot is now aware of openSUSE certs in
"/var/lib/ca-certificates/ca-bundle.pem"
- "tinyexr_thirdparty_upstream.patch" dropped:
bundled tinyexr 1.0.5 has patch applied
- "xkb_loaded.patch" added for x11 build failure with "use_sowrap=no"
------------------------------------------------------------------- -------------------------------------------------------------------
Mon May 22 12:00:00 UTC 2023 - cunix@mail.de Mon May 22 12:00:00 UTC 2023 - cunix@mail.de

View File

@ -21,10 +21,15 @@
%define faster_build 0 %define faster_build 0
%define _buildshell /bin/bash %define _buildshell /bin/bash
# not needed anymore since 4.1
%define ca_bundle %{_localstatedir}/lib/ca-certificates/ca-bundle.pem %define ca_bundle %{_localstatedir}/lib/ca-certificates/ca-bundle.pem
# building with default gcc 7.5 fails since 4.1 on Leap
# https://github.com/godotengine/godot/issues/79352
%define compiler_version_leap 10
Name: godot Name: godot
Version: 4.0.3 Version: 4.1
Release: 0 Release: 0
Summary: Cross-Platform Game Engine with an Integrated Editor Summary: Cross-Platform Game Engine with an Integrated Editor
License: MIT License: MIT
@ -32,15 +37,19 @@ Group: Development/Tools/Other
URL: https://godotengine.org/ URL: https://godotengine.org/
Source0: https://downloads.tuxfamily.org/godotengine/%{version}/%{name}-%{version}-stable.tar.xz Source0: https://downloads.tuxfamily.org/godotengine/%{version}/%{name}-%{version}-stable.tar.xz
Source1: https://downloads.tuxfamily.org/godotengine/%{version}/%{name}-%{version}-stable.tar.xz.sha256 Source1: https://downloads.tuxfamily.org/godotengine/%{version}/%{name}-%{version}-stable.tar.xz.sha256
# Use system certificates as fallback for certificates # Fix build with use_sowrap=no and various warnings/errors
Patch0: certs_fallback.patch # https://github.com/godotengine/godot/pull/79097
# Heap-buffer-overflow in bundled tinyexr Patch0: xkb_loaded.patch
Patch1: tinyexr_thirdparty_upstream.patch
BuildRequires: Mesa-devel BuildRequires: Mesa-devel
BuildRequires: desktop-file-utils BuildRequires: desktop-file-utils
BuildRequires: fdupes BuildRequires: fdupes
%if %{suse_version} > 1500
BuildRequires: gcc BuildRequires: gcc
BuildRequires: gcc-c++ BuildRequires: gcc-c++
%else
BuildRequires: gcc%{compiler_version_leap}
BuildRequires: gcc%{compiler_version_leap}-c++
%endif
BuildRequires: pkgconfig BuildRequires: pkgconfig
BuildRequires: python3 BuildRequires: python3
BuildRequires: scons BuildRequires: scons
@ -49,6 +58,7 @@ BuildRequires: yasm-devel
BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(glesv2) BuildRequires: pkgconfig(glesv2)
BuildRequires: pkgconfig(libpcre2-32) BuildRequires: pkgconfig(libpcre2-32)
BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(libpulse)
@ -136,16 +146,17 @@ Provides: bundled(brotli)
Provides: bundled(cvtt) Provides: bundled(cvtt)
Provides: bundled(doctest) = 2.4.11 Provides: bundled(doctest) = 2.4.11
Provides: bundled(etcpak) = 1.0 Provides: bundled(etcpak) = 1.0
Provides: bundled(glad) = 2.0.2 Provides: bundled(glad) = 2.0.4
Provides: bundled(google-droid-fonts) Provides: bundled(google-droid-fonts)
Provides: bundled(hqx) Provides: bundled(hqx)
Provides: bundled(icu4c) = 72.1 Provides: bundled(icu4c) = 73.1
Provides: bundled(ifaddrs-android) Provides: bundled(ifaddrs-android)
Provides: bundled(jpeg-compressor) = 2.00 Provides: bundled(jpeg-compressor) = 2.00
Provides: bundled(meshoptimizer) Provides: bundled(meshoptimizer)
Provides: bundled(minimp3) Provides: bundled(minimp3)
Provides: bundled(msdfgen) = 1.9.2 Provides: bundled(msdfgen) = 1.10
Provides: bundled(noto-sans-fonts) Provides: bundled(noto-sans-fonts)
Provides: bundled(nvapi) = R525
Provides: bundled(oidn) = 1.9.2 Provides: bundled(oidn) = 1.9.2
Provides: bundled(openxr) = 1.0.26 Provides: bundled(openxr) = 1.0.26
Provides: bundled(pcg) Provides: bundled(pcg)
@ -153,17 +164,17 @@ Provides: bundled(polyclipping)
Provides: bundled(polypartition) Provides: bundled(polypartition)
Provides: bundled(pvrtccompressor) Provides: bundled(pvrtccompressor)
Provides: bundled(smaz) Provides: bundled(smaz)
Provides: bundled(spirv-reflect) = sdk-1.3.231.1 Provides: bundled(spirv-reflect) = sdk-1.3.250.0
Provides: bundled(stb) Provides: bundled(stb)
Provides: bundled(thorvg) = 0.9.0 Provides: bundled(thorvg) = 0.9.0
Provides: bundled(tinyexr) = 1.0.1 Provides: bundled(tinyexr) = 1.0.5
Provides: bundled(vhacd) Provides: bundled(vhacd)
Provides: bundled(volk) = sdk-1.3.231.1 Provides: bundled(volk) = sdk-1.3.250.0
Provides: bundled(vulkan) = sdk-1.3.231.1 Provides: bundled(vulkan) = sdk-1.3.250.0
Provides: bundled(yuv2rgb) Provides: bundled(yuv2rgb)
# Can be unbundled if packaged # Can be unbundled if packaged
Provides: bundled(recastnavigation) Provides: bundled(recastnavigation) = 1.6.0
Provides: bundled(squish) = 1.15 Provides: bundled(squish) = 1.15
Provides: bundled(xatlas) Provides: bundled(xatlas)
@ -176,14 +187,14 @@ Provides: bundled(embree) = 3.13.5
%if 0%{?suse_version} > 1500 %if 0%{?suse_version} > 1500
%else %else
Provides: bundled(glslang) = 11.12.0 Provides: bundled(glslang) = 12.2.0
# see comments for freetype2, libpng and zlib Factory BuildRequires # see comments for freetype2, libpng and zlib Factory BuildRequires
Provides: bundled(freetype2) = 2.12.1 Provides: bundled(freetype2) = 2.13.0
Provides: bundled(graphite) = 1.3.14 Provides: bundled(graphite) = 1.3.14
Provides: bundled(harfbuzz) = 6.0.0 Provides: bundled(harfbuzz) = 7.3.0
Provides: bundled(libpng) = 1.6.38 Provides: bundled(libpng) = 1.6.38
Provides: bundled(libzstd) Provides: bundled(libzstd) = 1.5.5
Provides: bundled(zlib) Provides: bundled(zlib)
%if 0%{?sle_version} < 150200 %if 0%{?sle_version} < 150200
Provides: bundled(mbedtls) = 2.28.3 Provides: bundled(mbedtls) = 2.28.3
@ -231,7 +242,6 @@ Bash command line completion support for %{name} and %{name}-runner
%prep %prep
%setup -q -n %{name}-%{version}-stable %setup -q -n %{name}-%{version}-stable
%patch0 -p1 %patch0 -p1
%patch1 -p1
cp thirdparty/README.md thirdparty_README.md cp thirdparty/README.md thirdparty_README.md
@ -242,7 +252,8 @@ if [[ -z "$(desktop-file-validate misc/dist/linux/org.godotengine.Godot.desktop)
then then
# desktop-file-utils version >= 0.25 # desktop-file-utils version >= 0.25
echo desktop-file-utils is up to date and recognizes PrefersNonDefaultGPU. echo desktop-file-utils is up to date and recognizes PrefersNonDefaultGPU.
# rpmlint complains nevertheless (on Tumbleweed). A false negative? # rpmlint complains nevertheless with older rpmlint-mini.
# Tumbleweed is fixed with update of rpmlint-mini.
# see https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#recognized-keys # see https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#recognized-keys
# Perhaps because rpmlint-mini includes as of today (18.09.2020) # Perhaps because rpmlint-mini includes as of today (18.09.2020)
# desktop-file-utils-0.24 while we checked for available default version >= 0.25 # desktop-file-utils-0.24 while we checked for available default version >= 0.25
@ -296,12 +307,23 @@ done
mkdir -pv thirdparty/certs mkdir -pv thirdparty/certs
touch thirdparty/certs/ca-certificates.crt touch thirdparty/certs/ca-certificates.crt
use_sowrap="use_sowrap=no "
rm -rf thirdparty/linuxbsd_headers rm -rf thirdparty/linuxbsd_headers
%if %{suse_version} > 1500
%define ccflags %{optflags}
compiler=""
linkflags=""
%else
%define ccflags %{optflags} -fPIE
compiler="CC=gcc-%{compiler_version_leap} CXX=g++-%{compiler_version_leap}"
linkflags="LINKFLAGS=-pie"
%endif
%define build_args_common %{?_smp_mflags} \\\ %define build_args_common %{?_smp_mflags} \\\
progress=no verbose=yes udev=yes use_lto=1 \\\ progress=no verbose=yes udev=yes use_lto=1 \\\
use_static_cpp=no CCFLAGS='%{optflags}' \\\ use_static_cpp=no CCFLAGS='%{ccflags}' $linkflags $compiler \\\
system_certs_path=%{ca_bundle} use_sowrap=no $system_libs system_certs_path=%{ca_bundle} $use_sowrap $system_libs
%ifarch aarch64 %arm %ifarch aarch64 %arm
# Disable unsupported features - https://github.com/godotengine/godot/issues/48297#issuecomment-829165296 # Disable unsupported features - https://github.com/godotengine/godot/issues/48297#issuecomment-829165296

View File

@ -1,25 +0,0 @@
From cc1b199dd17b700c3130a53866ea462ab88e7f82 Mon Sep 17 00:00:00 2001
From: 0xdd96 <1011085630@qq.com>
Date: Wed, 6 Jul 2022 12:14:50 +0800
Subject: [PATCH] Add bounds check to address #169
References: https://bugzilla.opensuse.org/show_bug.cgi?id=1203278
https://github.com/syoyo/tinyexr/issues/169
https://github.com/syoyo/tinyexr/pull/170/commits/cc1b199dd17b700c3130a53866ea462ab88e7f82
Rebased: 20220912 by cunix
diff -r -U 5 a/thirdparty/tinyexr/tinyexr.h b/thirdparty/tinyexr/tinyexr.h
--- a/thirdparty/tinyexr/tinyexr.h
+++ b/thirdparty/tinyexr/tinyexr.h
@@ -1454,11 +1454,11 @@
in += count;
} else {
int count = *in++;
inLength -= 2;
- if (0 > (maxLength -= count + 1)) return 0;
+ if (0 > (maxLength -= count + 1) || inLength < 0) return 0;
memset(out, *reinterpret_cast<const char *>(in), count + 1);
out += count + 1;
in++;

88
xkb_loaded.patch Normal file
View File

@ -0,0 +1,88 @@
From dcd16a5750ac1f11014e89f579baa380bee3263e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= <rverschelde@gmail.com>
Date: Thu, 6 Jul 2023 14:05:28 +0200
Subject: [PATCH] Linux: Fix build with `use_sowrap=no` and various
warnings/errors
---
platform/linuxbsd/joypad_linux.cpp | 20 +++++++++++---------
platform/linuxbsd/x11/display_server_x11.cpp | 6 +++++-
2 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/platform/linuxbsd/joypad_linux.cpp b/platform/linuxbsd/joypad_linux.cpp
index ab79885fb4818..71c03898c8a3f 100644
--- a/platform/linuxbsd/joypad_linux.cpp
+++ b/platform/linuxbsd/joypad_linux.cpp
@@ -98,19 +98,20 @@ static bool detect_sandbox() {
JoypadLinux::JoypadLinux(Input *in) {
#ifdef UDEV_ENABLED
-#ifdef SOWRAP_ENABLED
-#ifdef DEBUG_ENABLED
- int dylibloader_verbose = 1;
-#else
- int dylibloader_verbose = 0;
-#endif
if (detect_sandbox()) {
// Linux binaries in sandboxes / containers need special handling because
// libudev doesn't work there. So we need to fallback to manual parsing
// of /dev/input in such case.
use_udev = false;
print_verbose("JoypadLinux: udev enabled, but detected incompatible sandboxed mode. Falling back to /dev/input to detect joypads.");
- } else {
+ }
+#ifdef SOWRAP_ENABLED
+ else {
+#ifdef DEBUG_ENABLED
+ int dylibloader_verbose = 1;
+#else
+ int dylibloader_verbose = 0;
+#endif
use_udev = initialize_libudev(dylibloader_verbose) == 0;
if (use_udev) {
if (!udev_new || !udev_unref || !udev_enumerate_new || !udev_enumerate_add_match_subsystem || !udev_enumerate_scan_devices || !udev_enumerate_get_list_entry || !udev_list_entry_get_next || !udev_list_entry_get_name || !udev_device_new_from_syspath || !udev_device_get_devnode || !udev_device_get_action || !udev_device_unref || !udev_enumerate_unref || !udev_monitor_new_from_netlink || !udev_monitor_filter_add_match_subsystem_devtype || !udev_monitor_enable_receiving || !udev_monitor_get_fd || !udev_monitor_receive_device || !udev_monitor_unref) {
@@ -124,10 +125,11 @@ JoypadLinux::JoypadLinux(Input *in) {
print_verbose("JoypadLinux: udev enabled, but couldn't be loaded. Falling back to /dev/input to detect joypads.");
}
}
-#endif
+#endif // SOWRAP_ENABLED
#else
print_verbose("JoypadLinux: udev disabled, parsing /dev/input to detect joypads.");
-#endif
+#endif // UDEV_ENABLED
+
input = in;
monitor_joypads_thread.start(monitor_joypads_thread_func, this);
joypad_events_thread.start(joypad_events_thread_func, this);
diff --git a/platform/linuxbsd/x11/display_server_x11.cpp b/platform/linuxbsd/x11/display_server_x11.cpp
index 8724bc871ad8e..d9e18720dc17e 100644
--- a/platform/linuxbsd/x11/display_server_x11.cpp
+++ b/platform/linuxbsd/x11/display_server_x11.cpp
@@ -5449,7 +5449,9 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
}
#else
#ifdef XKB_ENABLED
- xkb_loaded = true;
+ bool xkb_loaded = true;
+ xkb_loaded_v05p = true;
+ xkb_loaded_v08p = true;
#endif
#endif
@@ -5476,6 +5478,7 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
r_error = OK;
+#ifdef SOWRAP_ENABLED
{
if (!XcursorImageCreate || !XcursorImageLoadCursor || !XcursorImageDestroy || !XcursorGetDefaultSize || !XcursorGetTheme || !XcursorLibraryLoadImage) {
// There's no API to check version, check if functions are available instead.
@@ -5484,6 +5487,7 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
return;
}
}
+#endif
for (int i = 0; i < CURSOR_MAX; i++) {
cursors[i] = None;