Hi,

There are a couple of news about the godot port. For about 6 weeks, the
pulseaudio backend has been non-functional, also affecting windows which
fail to close, as does the main process.

This all is resolved with turning off pulseaudio backend. This means
that there is now audio, but there hasn't been any for the ~6 weeks.

I'm still looking into this, but would like to get the update in in the
meantime because of the CVE (see below).

Here the bulletpoint summary, based on Charlene's great example of an
update summary:

What's new upstream:

- 3.0.6 fixes CVE-2018-1000224, a group of vulnerabilities in the (de)
  serialization functions. A malformed packet can trigger DoS or
  possible leak of uninitialized memory.
- many bug fixes
- many minor interface updates
- new flag --print-fps
- update notes in [1]-[4]

What's new in the port:

- disable pulseaudio, therefore all audio for the moment
- add the fallback code to dummy audio driver that has already been
  upstreamed for next release
- remove clang6 fixes that have been upstreamed
- remove a hardcoded -O2 found by bcallah@

Testing (amd64):

- 2D & 3D editor and playback (without audio)
- portcheck and make port-lib-depends-check ok

[1] https://godotengine.org/article/maintenance-release-godot-3-0-3
[2] https://godotengine.org/article/maintenance-release-godot-3-0-4
[3] https://godotengine.org/article/maintenance-release-godot-3-0-5
[4] https://godotengine.org/article/maintenance-release-godot-3-0-6

Index: Makefile
===================================================================
RCS file: /cvs/ports/games/godot/Makefile,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile
--- Makefile    5 Jun 2018 07:32:39 -0000       1.3
+++ Makefile    25 Aug 2018 07:59:24 -0000
@@ -2,12 +2,12 @@
 
 COMMENT =      2D and 3D game engine
 
-V =            3.0.2
+V =            3.0.6
 DISTNAME =     godot-${V}-stable
 PKGNAME =      godot-${V}
 CATEGORIES =   games
 HOMEPAGE =     https://godotengine.org/
-MAINTAINER =   Thomas Frohwein <[email protected]>
+MAINTAINER =   Thomas Frohwein <[email protected]>
 
 # MIT
 PERMIT_PACKAGE_CDROM = Yes
@@ -15,15 +15,17 @@ PERMIT_PACKAGE_CDROM =      Yes
 WANTLIB += ${COMPILER_LIBCXX}
 WANTLIB += GL X11 Xau Xcursor Xdmcp Xext Xfixes Xi Xinerama Xrandr
 WANTLIB += Xrender c crypto enet execinfo freetype intl m mpcdec
-WANTLIB += ogg opus opusfile png pulse pulse-simple ssl theora
-WANTLIB += theoradec vorbis vorbisfile webp xcb z
-WANTLIB += pcre2-32 vpx zstd
+WANTLIB += ogg opus opusfile png ssl theora theoradec vorbis vorbisfile
+WANTLIB += webp xcb z pcre2-32 vpx zstd
 
 MASTER_SITES = https://downloads.tuxfamily.org/godotengine/${V}/
 EXTRACT_SUFX = .tar.xz
 
 MODULES =              devel/scons
 # Can't disable builtin_bullet until devel/bullet has been updated to 2.88
+# Building with module_mono_enabled requires msbuild (which we don't have
+# yet) and to fix the sharedlib_ext in modules/mono/config.py to '.so.1.0'
+# Disable pulseaudio which is currently not working
 MODSCONS_FLAGS =       CC="${CC}" \
                        CXX="${CXX}" \
                        CFLAGS="${CFLAGS}" \
@@ -44,16 +46,17 @@ MODSCONS_FLAGS =    CC="${CC}" \
                        builtin_pcre2=no \
                        builtin_zlib=no \
                        builtin_zstd=no \
+                       dev=yes \
                        platform=x11 \
                        progress=no \
-                       target=release_debug \
-                       verbose=yes \
-                       warnings=all
+                       pulseaudio=no \
+                       target=release_debug
 LIB_DEPENDS =          archivers/zstd \
+                       audio/libvorbis \
                        audio/musepack \
                        audio/opusfile \
-                       audio/pulseaudio \
                        devel/gettext \
+                       devel/libexecinfo \
                        devel/pcre2 \
                        graphics/libwebp \
                        graphics/png \
@@ -63,7 +66,7 @@ LIB_DEPENDS =         archivers/zstd \
 
 NO_TEST =              Yes
 
-pre-build:
+pre-configure:
        ${SUBST_CMD} ${WRKSRC}/drivers/unix/os_unix.cpp
 
 do-install:
Index: distinfo
===================================================================
RCS file: /cvs/ports/games/godot/distinfo,v
retrieving revision 1.2
diff -u -p -r1.2 distinfo
--- distinfo    5 Jun 2018 07:32:39 -0000       1.2
+++ distinfo    25 Aug 2018 07:59:24 -0000
@@ -1,2 +1,2 @@
-SHA256 (godot-3.0.2-stable.tar.xz) = 
7qkKO9kY80nR0Q/qp9QjaHK7mpm1r0mU5Fu5ThLyDy8=
-SIZE (godot-3.0.2-stable.tar.xz) = 12433456
+SHA256 (godot-3.0.6-stable.tar.xz) = 
LfHLNqAMaHrnShHX31vcEyyBapNOJpbswzgnAI/5xrk=
+SIZE (godot-3.0.6-stable.tar.xz) = 12517428
Index: patches/patch-core_project_settings_cpp
===================================================================
RCS file: /cvs/ports/games/godot/patches/patch-core_project_settings_cpp,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-core_project_settings_cpp
--- patches/patch-core_project_settings_cpp     27 Apr 2018 07:32:53 -0000      
1.1.1.1
+++ patches/patch-core_project_settings_cpp     25 Aug 2018 07:59:24 -0000
@@ -9,7 +9,7 @@ based on github issue #17374
 Index: core/project_settings.cpp
 --- core/project_settings.cpp.orig
 +++ core/project_settings.cpp
-@@ -1038,14 +1038,11 @@ ProjectSettings::ProjectSettings() {
+@@ -1041,14 +1041,11 @@ ProjectSettings::ProjectSettings() {
        GLOBAL_DEF("debug/settings/profiler/max_functions", 16384);
  
        //assigning here, because using GLOBAL_GET on every block for 
compressing can be slow
Index: patches/patch-drivers_unix_os_unix_cpp
===================================================================
RCS file: /cvs/ports/games/godot/patches/patch-drivers_unix_os_unix_cpp,v
retrieving revision 1.2
diff -u -p -r1.2 patch-drivers_unix_os_unix_cpp
--- patches/patch-drivers_unix_os_unix_cpp      9 May 2018 20:26:08 -0000       
1.2
+++ patches/patch-drivers_unix_os_unix_cpp      25 Aug 2018 07:59:24 -0000
@@ -1,21 +1,11 @@
 $OpenBSD: patch-drivers_unix_os_unix_cpp,v 1.2 2018/05/09 20:26:08 sthen Exp $
 
-- fix with clang6 on ILP32 arches
 - hardcode executable path
 
 Index: drivers/unix/os_unix.cpp
 --- drivers/unix/os_unix.cpp.orig
 +++ drivers/unix/os_unix.cpp
-@@ -235,7 +235,7 @@ OS::TimeZoneInfo OS_Unix::get_time_zone_info() const {
- 
- void OS_Unix::delay_usec(uint32_t p_usec) const {
- 
--      struct timespec rem = { p_usec / 1000000, (p_usec % 1000000) * 1000 };
-+      struct timespec rem = { p_usec / 1000000, static_cast<long>((p_usec % 
1000000) * 1000) };
-       while (nanosleep(&rem, &rem) == EINTR) {
-       }
- }
-@@ -456,7 +456,7 @@ String OS_Unix::get_executable_path() const {
+@@ -462,7 +462,7 @@ String OS_Unix::get_executable_path() const {
  #elif defined(__OpenBSD__)
        char resolved_path[MAXPATHLEN];
  
Index: patches/patch-main_main_cpp
===================================================================
RCS file: patches/patch-main_main_cpp
diff -N patches/patch-main_main_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-main_main_cpp 25 Aug 2018 07:59:24 -0000
@@ -0,0 +1,18 @@
+$OpenBSD$
+
+log on falling back to dummy audio driver
+
+Index: main/main.cpp
+--- main/main.cpp.orig
++++ main/main.cpp
+@@ -938,6 +938,10 @@ Error Main::setup(const char *execpath, int argc, char
+               audio_driver = GLOBAL_DEF("audio/driver", 
OS::get_singleton()->get_audio_driver_name(0));
+       }
+ 
++      if (audio_driver == "Dummy") {
++              print_line("Failed to attach audio driver. Falling back to 
dummy driver.");
++      }
++
+       for (int i = 0; i < OS::get_singleton()->get_audio_driver_count(); i++) 
{
+ 
+               if (audio_driver == 
OS::get_singleton()->get_audio_driver_name(i)) {
Index: patches/patch-platform_x11_detect_py
===================================================================
RCS file: patches/patch-platform_x11_detect_py
diff -N patches/patch-platform_x11_detect_py
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-platform_x11_detect_py        25 Aug 2018 07:59:24 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+remove hardcoded -O2, found by bcallah@
+
+Index: platform/x11/detect.py
+--- platform/x11/detect.py.orig
++++ platform/x11/detect.py
+@@ -84,7 +84,7 @@ def configure(env):
+             env.Prepend(CCFLAGS=['-g2'])
+ 
+     elif (env["target"] == "release_debug"):
+-        env.Prepend(CCFLAGS=['-O2', '-ffast-math', '-DDEBUG_ENABLED'])
++        env.Prepend(CCFLAGS=['-ffast-math', '-DDEBUG_ENABLED'])
+         if (env["debug_symbols"] == "yes"):
+             env.Prepend(CCFLAGS=['-g1'])
+         if (env["debug_symbols"] == "full"):
Index: patches/patch-scene_gui_rich_text_label_cpp
===================================================================
RCS file: patches/patch-scene_gui_rich_text_label_cpp
diff -N patches/patch-scene_gui_rich_text_label_cpp
--- patches/patch-scene_gui_rich_text_label_cpp 27 Apr 2018 07:32:53 -0000      
1.1.1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,19 +0,0 @@
-$OpenBSD: patch-scene_gui_rich_text_label_cpp,v 1.1.1.1 2018/04/27 07:32:53 
bentley Exp $
-
-fix the invalid/undefined assignment to nullptr of int type (clang6?)
-
-Index: scene/gui/rich_text_label.cpp
---- scene/gui/rich_text_label.cpp.orig
-+++ scene/gui/rich_text_label.cpp
-@@ -829,9 +829,9 @@ void RichTextLabel::_gui_input(Ref<InputEvent> p_event
-                                                       // Erase previous 
selection.
-                                                       if (selection.active) {
-                                                               selection.from 
= NULL;
--                                                              
selection.from_char = NULL;
-+                                                              
selection.from_char = '\0';
-                                                               selection.to = 
NULL;
--                                                              
selection.to_char = NULL;
-+                                                              
selection.to_char = '\0';
-                                                               
selection.active = false;
- 
-                                                               update();
Index: patches/patch-servers_audio_server_cpp
===================================================================
RCS file: patches/patch-servers_audio_server_cpp
diff -N patches/patch-servers_audio_server_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-servers_audio_server_cpp      25 Aug 2018 07:59:24 -0000
@@ -0,0 +1,46 @@
+$OpenBSD$
+
+add dummy audio driver to AudioDriverManager list
+(github issue #20986)
+
+Index: servers/audio_server.cpp
+--- servers/audio_server.cpp.orig
++++ servers/audio_server.cpp
+@@ -119,14 +119,19 @@ AudioDriver::AudioDriver() {
+       _mix_amount = 0;
+ }
+ 
+-AudioDriver *AudioDriverManager::drivers[MAX_DRIVERS];
+-int AudioDriverManager::driver_count = 0;
+ AudioDriverDummy AudioDriverManager::dummy_driver;
++AudioDriver *AudioDriverManager::drivers[MAX_DRIVERS] = {
++      &AudioDriverManager::dummy_driver,
++};
++int AudioDriverManager::driver_count = 1;
+ 
+ void AudioDriverManager::add_driver(AudioDriver *p_driver) {
+ 
+       ERR_FAIL_COND(driver_count >= MAX_DRIVERS);
+-      drivers[driver_count++] = p_driver;
++      drivers[driver_count - 1] = p_driver;
++
++      // Last driver is always our dummy driver
++      drivers[driver_count++] = &AudioDriverManager::dummy_driver;
+ }
+ 
+ int AudioDriverManager::get_driver_count() {
+@@ -158,14 +163,6 @@ void AudioDriverManager::initialize(int p_driver) {
+                       drivers[i]->set_singleton();
+                       return;
+               }
+-      }
+-
+-      // Fallback to our dummy driver
+-      if (dummy_driver.init() == OK) {
+-              ERR_PRINT("AudioDriverManager: all drivers failed, falling back 
to dummy driver");
+-              dummy_driver.set_singleton();
+-      } else {
+-              ERR_PRINT("AudioDriverManager: dummy driver failed to init()");
+       }
+ }
+ 

Reply via email to