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
> 
> 
> 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 17:38:31 -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
>  
> @@ -83,7 +91,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 +112,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
> +     @${MODSCONS_BUILD_TARGET} tools=yes
> +
>  do-install:
> -     ${INSTALL_PROGRAM} ${WRKBUILD}/bin/godot* \
> +     ${INSTALL_PROGRAM} ${WRKBUILD}/bin/godot.x11.opt.debug.* \
>               ${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: 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