diff --git a/certs_fallback.patch b/certs_fallback.patch deleted file mode 100644 index fcd0ac2..0000000 --- a/certs_fallback.patch +++ /dev/null @@ -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 - #include - #include - -+#include -+ - 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; diff --git a/godot-4.0.3-stable.tar.xz b/godot-4.0.3-stable.tar.xz deleted file mode 100644 index 8441d15..0000000 --- a/godot-4.0.3-stable.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ce3e2170ac5e043a7ce9c6f839ef67eddd83e24c0728d1afc76e678d4f37552 -size 30203636 diff --git a/godot-4.0.3-stable.tar.xz.sha256 b/godot-4.0.3-stable.tar.xz.sha256 deleted file mode 100644 index 5022458..0000000 --- a/godot-4.0.3-stable.tar.xz.sha256 +++ /dev/null @@ -1 +0,0 @@ -8ce3e2170ac5e043a7ce9c6f839ef67eddd83e24c0728d1afc76e678d4f37552 godot-4.0.3-stable.tar.xz diff --git a/godot-4.1-stable.tar.xz b/godot-4.1-stable.tar.xz new file mode 100644 index 0000000..344f039 --- /dev/null +++ b/godot-4.1-stable.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ef9a3b3591b1ceb2f89fba9419a05ef436d73514e2e15aebac4bebc246122ef +size 30679684 diff --git a/godot-4.1-stable.tar.xz.sha256 b/godot-4.1-stable.tar.xz.sha256 new file mode 100644 index 0000000..5a760a9 --- /dev/null +++ b/godot-4.1-stable.tar.xz.sha256 @@ -0,0 +1 @@ +5ef9a3b3591b1ceb2f89fba9419a05ef436d73514e2e15aebac4bebc246122ef godot-4.1-stable.tar.xz diff --git a/godot.changes b/godot.changes index 0530abb..6ed85e1 100644 --- a/godot.changes +++ b/godot.changes @@ -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 diff --git a/godot.spec b/godot.spec index 7eef236..c55d5eb 100644 --- a/godot.spec +++ b/godot.spec @@ -21,10 +21,15 @@ %define faster_build 0 %define _buildshell /bin/bash +# not needed anymore since 4.1 %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 -Version: 4.0.3 +Version: 4.1 Release: 0 Summary: Cross-Platform Game Engine with an Integrated Editor License: MIT @@ -32,15 +37,19 @@ Group: Development/Tools/Other URL: https://godotengine.org/ 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 -# Use system certificates as fallback for certificates -Patch0: certs_fallback.patch -# Heap-buffer-overflow in bundled tinyexr -Patch1: tinyexr_thirdparty_upstream.patch +# Fix build with use_sowrap=no and various warnings/errors +# https://github.com/godotengine/godot/pull/79097 +Patch0: xkb_loaded.patch BuildRequires: Mesa-devel BuildRequires: desktop-file-utils BuildRequires: fdupes +%if %{suse_version} > 1500 BuildRequires: gcc BuildRequires: gcc-c++ +%else +BuildRequires: gcc%{compiler_version_leap} +BuildRequires: gcc%{compiler_version_leap}-c++ +%endif BuildRequires: pkgconfig BuildRequires: python3 BuildRequires: scons @@ -49,6 +58,7 @@ BuildRequires: yasm-devel BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(fontconfig) +BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(glesv2) BuildRequires: pkgconfig(libpcre2-32) BuildRequires: pkgconfig(libpulse) @@ -136,16 +146,17 @@ Provides: bundled(brotli) Provides: bundled(cvtt) Provides: bundled(doctest) = 2.4.11 Provides: bundled(etcpak) = 1.0 -Provides: bundled(glad) = 2.0.2 +Provides: bundled(glad) = 2.0.4 Provides: bundled(google-droid-fonts) Provides: bundled(hqx) -Provides: bundled(icu4c) = 72.1 +Provides: bundled(icu4c) = 73.1 Provides: bundled(ifaddrs-android) Provides: bundled(jpeg-compressor) = 2.00 Provides: bundled(meshoptimizer) Provides: bundled(minimp3) -Provides: bundled(msdfgen) = 1.9.2 +Provides: bundled(msdfgen) = 1.10 Provides: bundled(noto-sans-fonts) +Provides: bundled(nvapi) = R525 Provides: bundled(oidn) = 1.9.2 Provides: bundled(openxr) = 1.0.26 Provides: bundled(pcg) @@ -153,17 +164,17 @@ Provides: bundled(polyclipping) Provides: bundled(polypartition) Provides: bundled(pvrtccompressor) 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(thorvg) = 0.9.0 -Provides: bundled(tinyexr) = 1.0.1 +Provides: bundled(tinyexr) = 1.0.5 Provides: bundled(vhacd) -Provides: bundled(volk) = sdk-1.3.231.1 -Provides: bundled(vulkan) = sdk-1.3.231.1 +Provides: bundled(volk) = sdk-1.3.250.0 +Provides: bundled(vulkan) = sdk-1.3.250.0 Provides: bundled(yuv2rgb) # Can be unbundled if packaged -Provides: bundled(recastnavigation) +Provides: bundled(recastnavigation) = 1.6.0 Provides: bundled(squish) = 1.15 Provides: bundled(xatlas) @@ -176,14 +187,14 @@ Provides: bundled(embree) = 3.13.5 %if 0%{?suse_version} > 1500 %else -Provides: bundled(glslang) = 11.12.0 +Provides: bundled(glslang) = 12.2.0 # 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(harfbuzz) = 6.0.0 +Provides: bundled(harfbuzz) = 7.3.0 Provides: bundled(libpng) = 1.6.38 -Provides: bundled(libzstd) +Provides: bundled(libzstd) = 1.5.5 Provides: bundled(zlib) %if 0%{?sle_version} < 150200 Provides: bundled(mbedtls) = 2.28.3 @@ -231,7 +242,6 @@ Bash command line completion support for %{name} and %{name}-runner %prep %setup -q -n %{name}-%{version}-stable %patch0 -p1 -%patch1 -p1 cp thirdparty/README.md thirdparty_README.md @@ -242,7 +252,8 @@ if [[ -z "$(desktop-file-validate misc/dist/linux/org.godotengine.Godot.desktop) then # desktop-file-utils version >= 0.25 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 # 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 @@ -296,12 +307,23 @@ done mkdir -pv thirdparty/certs touch thirdparty/certs/ca-certificates.crt +use_sowrap="use_sowrap=no " 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} \\\ progress=no verbose=yes udev=yes use_lto=1 \\\ - use_static_cpp=no CCFLAGS='%{optflags}' \\\ - system_certs_path=%{ca_bundle} use_sowrap=no $system_libs + use_static_cpp=no CCFLAGS='%{ccflags}' $linkflags $compiler \\\ + system_certs_path=%{ca_bundle} $use_sowrap $system_libs %ifarch aarch64 %arm # Disable unsupported features - https://github.com/godotengine/godot/issues/48297#issuecomment-829165296 diff --git a/tinyexr_thirdparty_upstream.patch b/tinyexr_thirdparty_upstream.patch deleted file mode 100644 index 4b297f5..0000000 --- a/tinyexr_thirdparty_upstream.patch +++ /dev/null @@ -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(in), count + 1); - out += count + 1; - - in++; diff --git a/xkb_loaded.patch b/xkb_loaded.patch new file mode 100644 index 0000000..c7f47a6 --- /dev/null +++ b/xkb_loaded.patch @@ -0,0 +1,88 @@ +From dcd16a5750ac1f11014e89f579baa380bee3263e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= +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;