Omar Polo <o...@openbsd.org> wrote:
> Omar Polo <o...@openbsd.org> wrote:
> > Hello ports,
> > 
> > I'd like to split the godot package into two: the engine alone and the
> > editor.
> > 
> > We're currently building the engine with the editor enabled, which is
> > fine, but makes akward to run standalone PCK (i.e. godot' packaged
> > games) from the command line.  When the editor (tools=yes) is enabled
> > godot does some checks that really make sense only when developing, even
> > when running PCK.
> > 
> > Since I'm expecting that most users install godot just to play some
> > games, having these "errors" logged is misleading.  (godot tries to do
> > stuff like loading the assets from the disk even when they're in the
> > PCK, and other stuff like this.)  Thus having the editor enabled for
> > them makes the experience only worse.
> > 
> > On the other hand I'd like to be possible to "opt in" and have the IDE
> > available.
> > 
> > What I'm proposing is to build godot two times, one with tools=yes and
> > one without, and split the thing into two subpackages.  I'm explicitly
> > using MULTI_PACKAGES and not flavor because:
> > 
> >  1. scons does the right thing and rebuilds only what's needed when the
> >     flags changes, so we save a bit of build time.  (not that much, but
> >     every bit helps?)
> > 
> >  2. I'd like to have different PLIST for the packages, and this approach
> >     seemed simpler than rolling something like MODPY_COMMENT.  The desktop
> >     file and icon only makes sense for the -editor build for example.
> > 
> >  3. if one opts in and install the hypothetic "editor" flavor, than when
> >     trying run a standalone PCK they have the same issues as the current
> >     package.
> 
> I forgot one thing: this also makes possible in the future to eventually
> ship also a -server package (to host game servers) or a -headless one
> (that would come in handy for building godot stuff from the port tree.)
> 
> > Diff belows install the engine itself as `godot' and the editor as,
> > unsurprisingly, `godot-editor'.  patch-drivers_unix_os_unix_cpp
> > hardcoded /usr/local/bin/godot inside the binary and needed some
> > tweaking because that code is now used by *two* differently-named
> > executable.  Fortunately, the main() caches argv[0] and we can just
> > reuse that.
> > 
> > P.S.: is the REVISION handling correct?  the old `godot' package keeps
> > the name but its content differs (see the new plist) so I bumped the
> > revision only for -main, right?  `make show=PKGNAMES' looks correct:
> > 
> > % make show=PKGNAMES
> > godot-3.4.4p1 debug-godot-3.4.4p1 godot-editor-3.4.4 
> > debug-godot-editor-3.4.4

As reminded by Solène on irc, we're still building godot with debug
enabled, which is fine for the -editor build but not so much for playing
standalone games.  Updated diff sets target=release for the -main
package so it should be faster.

(i've also forgot a cvs add for the desktop patch)

Since it takes a while to build godot from sources, I'm temporarly
hosting (unsigned!) packages for testing:

https://ftp.omarpolo.com/debug-godot-3.4.4p1.tgz
https://ftp.omarpolo.com/debug-godot-editor-3.4.4.tgz
https://ftp.omarpolo.com/godot-3.4.4p1.tgz
https://ftp.omarpolo.com/godot-editor-3.4.4.tgz

SHA256 (debug-godot-3.4.4p1.tgz) = 
846de687271101586e8dff52b37ca40c42a59d0d1e7ac3b1308a7478f132e9ce
SHA256 (debug-godot-editor-3.4.4.tgz) = 
0be66dc303c31ba9b3d8bc109bcbd7ab5b27e31082008c50109a63d39184bde2
SHA256 (godot-3.4.4p1.tgz) = 
8faf67e7c670da2b3e0219d1693934872698e46243d0e386ecdfcaa565cb8a15
SHA256 (godot-editor-3.4.4.tgz) = 
ecffbc28949deadd0669ea2a0d413ecc07bf453d4ac02923d79361f340fc7090

Index: Makefile
===================================================================
RCS file: /home/cvs/ports/games/godot/Makefile,v
retrieving revision 1.34
diff -u -p -r1.34 Makefile
--- Makefile    15 Apr 2022 20:23:19 -0000      1.34
+++ Makefile    25 Apr 2022 19:58:28 -0000
@@ -1,25 +1,33 @@
 BROKEN-powerpc =       fails at runtime, the UI is totally blank
 
-COMMENT =      2D and 3D game engine
+COMMENT-main = 2D and 3D game engine
+COMMENT-editor=        2D and 3D game engine (with editor)
 
 V =            3.4.4
 GODOTSTEAM_V = g34-s152-gs311
 DISTNAME =     godot-${V}-stable
 PKGNAME =      godot-${V}
-REVISION =     0
+REVISION-main =        1
+
 CATEGORIES =   games
+
 HOMEPAGE =     https://godotengine.org/
+
 MAINTAINER =   Omar Polo <o...@omarpolo.com>
 
 # MIT
 PERMIT_PACKAGE =       Yes
 
+MULTI_PACKAGES =       -main -editor
+
 WANTLIB += ${COMPILER_LIBCXX} BulletCollision BulletDynamics BulletSoftBody
 WANTLIB += LinearMath GL X11 Xau Xcursor Xdmcp Xext Xfixes Xi Xinerama Xrandr
 WANTLIB += Xrender c enet execinfo freetype intl m mbedtls mbedcrypto
 WANTLIB += mbedx509 mpcdec ogg opus opusfile png sndio steam_api theora
 WANTLIB += theoradec usbhid vorbis vorbisfile webp xcb z pcre2-32 vpx zstd
 
+WANTLIB-editor = ${WANTLIB}
+
 # C++14
 COMPILER =     base-clang ports-gcc
 
@@ -58,7 +66,6 @@ MODSCONS_FLAGS =      CC="${CC}" \
                        
custom_modules=${WRKDIR}/GodotSteam-${GODOTSTEAM_V}/godotsteam \
                        progress=no \
                        pulseaudio=no \
-                       target=release_debug \
                        verbose=yes \
                        warnings=extra \
                        werror=no
@@ -83,7 +90,8 @@ LIB_DEPENDS =         archivers/zstd \
                        multimedia/libvpx \
                        net/enet \
                        security/polarssl
-RUN_DEPENDS =          devel/desktop-file-utils
+
+RUN_DEPENDS-editor =   devel/desktop-file-utils
 
 DEBUG_PACKAGES =       ${BUILD_PACKAGES}
 NO_TEST =              Yes
@@ -103,15 +111,21 @@ post-extract:
                ${WRKDIST}/platform/x11/
 
 pre-configure:
-       ${SUBST_CMD} ${WRKSRC}/drivers/unix/os_unix.cpp
+       ${SUBST_CMD} ${WRKSRC}/misc/dist/linux/*.desktop
        sed -E -i 's/ISteamHTMLSurface:://g' \
                ${WRKDIR}/GodotSteam-${GODOTSTEAM_V}/godotsteam/godotsteam.cpp
        sed -E -i 's/Connection_DEPRECATED/Connection/g' \
                ${WRKDIR}/GodotSteam-${GODOTSTEAM_V}/godotsteam/godotsteam.cpp
 
+do-build:
+       @${MODSCONS_BUILD_TARGET} tools=no  target=release
+       @${MODSCONS_BUILD_TARGET} tools=yes target=release_debug
+
 do-install:
-       ${INSTALL_PROGRAM} ${WRKBUILD}/bin/godot* \
+       ${INSTALL_PROGRAM} ${WRKBUILD}/bin/godot.x11.opt.[36]* \
                ${PREFIX}/bin/godot
+       ${INSTALL_PROGRAM} ${WRKBUILD}/bin/godot.x11.opt.tools.* \
+               ${PREFIX}/bin/godot-editor
        ${INSTALL_MAN_DIR} ${PREFIX}/man/man6
        ${INSTALL_MAN} ${WRKSRC}/misc/dist/linux/godot.6 \
                ${PREFIX}/man/man6
Index: patches/patch-drivers_unix_os_unix_cpp
===================================================================
RCS file: /home/cvs/ports/games/godot/patches/patch-drivers_unix_os_unix_cpp,v
retrieving revision 1.8
diff -u -p -r1.8 patch-drivers_unix_os_unix_cpp
--- patches/patch-drivers_unix_os_unix_cpp      11 Mar 2022 19:04:30 -0000      
1.8
+++ patches/patch-drivers_unix_os_unix_cpp      25 Apr 2022 17:51:42 -0000
@@ -1,14 +1,16 @@
-hardcode executable path
-
 Index: drivers/unix/os_unix.cpp
 --- drivers/unix/os_unix.cpp.orig
 +++ drivers/unix/os_unix.cpp
-@@ -485,7 +485,7 @@ String OS_Unix::get_executable_path() const {
+@@ -483,11 +483,7 @@ String OS_Unix::get_executable_path() const {
+       }
+       return b;
  #elif defined(__OpenBSD__) || defined(__NetBSD__)
-       char resolved_path[MAXPATHLEN];
- 
+-      char resolved_path[MAXPATHLEN];
+-
 -      realpath(OS::get_executable_path().utf8().get_data(), resolved_path);
-+      realpath("${PREFIX}/bin/godot", resolved_path);
- 
-       return String(resolved_path);
+-
+-      return String(resolved_path);
++      return OS::get_executable_path();
  #elif defined(__FreeBSD__)
+       int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
+       char buf[MAXPATHLEN];
Index: patches/patch-misc_dist_linux_org_godotengine_Godot_desktop
===================================================================
RCS file: patches/patch-misc_dist_linux_org_godotengine_Godot_desktop
diff -N patches/patch-misc_dist_linux_org_godotengine_Godot_desktop
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-misc_dist_linux_org_godotengine_Godot_desktop 25 Apr 2022 
17:55:20 -0000
@@ -0,0 +1,12 @@
+Index: misc/dist/linux/org.godotengine.Godot.desktop
+--- misc/dist/linux/org.godotengine.Godot.desktop.orig
++++ misc/dist/linux/org.godotengine.Godot.desktop
+@@ -2,7 +2,7 @@
+ Name=Godot Engine
+ GenericName=Libre game engine
+ Comment=Multi-platform 2D and 3D game engine with a feature-rich editor
+-Exec=godot %f
++Exec=${TRUEPREFIX}/bin/godot-editor %f
+ Icon=godot
+ Terminal=false
+ PrefersNonDefaultGPU=true
Index: pkg/DESCR
===================================================================
RCS file: pkg/DESCR
diff -N pkg/DESCR
--- pkg/DESCR   27 Apr 2018 07:32:53 -0000      1.1.1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,3 +0,0 @@
-Godot is an advanced, feature-packed, multi-platform 2D and 3D open source
-game engine. It provides a huge set of common tools, so you can just focus
-on making your game without reinventing the wheel.
Index: pkg/DESCR-editor
===================================================================
RCS file: pkg/DESCR-editor
diff -N pkg/DESCR-editor
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/DESCR-editor    19 Apr 2022 10:25:53 -0000
@@ -0,0 +1,3 @@
+Godot is an advanced, feature-packed, multi-platform 2D and 3D open source
+game engine. It provides a huge set of common tools, so you can just focus
+on making your game without reinventing the wheel.
Index: pkg/DESCR-main
===================================================================
RCS file: pkg/DESCR-main
diff -N pkg/DESCR-main
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/DESCR-main      27 Apr 2018 07:32:53 -0000
@@ -0,0 +1,3 @@
+Godot is an advanced, feature-packed, multi-platform 2D and 3D open source
+game engine. It provides a huge set of common tools, so you can just focus
+on making your game without reinventing the wheel.
Index: pkg/PLIST
===================================================================
RCS file: pkg/PLIST
diff -N pkg/PLIST
--- pkg/PLIST   8 Mar 2022 16:48:16 -0000       1.4
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,9 +0,0 @@
-@bin bin/godot
-@man man/man6/godot.6
-share/applications/org.godotengine.Godot.desktop
-share/doc/pkg-readmes/${PKGSTEM}
-share/metainfo/
-share/metainfo/org.godotengine.Godot.appdata.xml
-share/pixmaps/
-share/pixmaps/godot.svg
-@tag update-desktop-database
Index: pkg/PLIST-editor
===================================================================
RCS file: pkg/PLIST-editor
diff -N pkg/PLIST-editor
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/PLIST-editor    19 Apr 2022 10:22:56 -0000
@@ -0,0 +1,9 @@
+@bin bin/godot-editor
+@man man/man6/godot.6
+share/applications/org.godotengine.Godot.desktop
+share/doc/pkg-readmes/${PKGSTEM}
+share/metainfo/
+share/metainfo/org.godotengine.Godot.appdata.xml
+share/pixmaps/
+share/pixmaps/godot.svg
+@tag update-desktop-database
Index: pkg/PLIST-main
===================================================================
RCS file: pkg/PLIST-main
diff -N pkg/PLIST-main
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/PLIST-main      19 Apr 2022 10:22:55 -0000
@@ -0,0 +1 @@
+@bin bin/godot
Index: pkg/README
===================================================================
RCS file: pkg/README
diff -N pkg/README
--- pkg/README  11 Mar 2022 19:04:30 -0000      1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-+-------------------------------------------------------------------------------
-| Running ${PKGSTEM} on OpenBSD
-+-------------------------------------------------------------------------------
-
-Modules
-=======
-
-Note that this version includes the module "GodotSteam" in its namespace which
-is not part of the default Godot install. This is mainly for compatibility with
-runtime of prepackaged games. It communicates with games/goldberg_emulator, not
-an official Steam client. Making use of the Steam.* namespace for development
-may lead to unexpected behavior, so use at your own risk.
Index: pkg/README-editor
===================================================================
RCS file: pkg/README-editor
diff -N pkg/README-editor
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/README-editor   12 Mar 2022 10:06:25 -0000
@@ -0,0 +1,12 @@
++-------------------------------------------------------------------------------
+| Running ${PKGSTEM} on OpenBSD
++-------------------------------------------------------------------------------
+
+Modules
+=======
+
+Note that this version includes the module "GodotSteam" in its namespace which
+is not part of the default Godot install. This is mainly for compatibility with
+runtime of prepackaged games. It communicates with games/goldberg_emulator, not
+an official Steam client. Making use of the Steam.* namespace for development
+may lead to unexpected behavior, so use at your own risk.

Reply via email to