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.