Github messages for voidlinux
 help / color / mirror / Atom feed
From: curiousjunior <curiousjunior@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] godot: add LTO, export templates and headless
Date: Tue, 30 Nov 2021 07:44:56 +0100	[thread overview]
Message-ID: <20211130064456.wYyn5ZJdlZdsj7gwDZ3o43Ey-gMQ87SbivKkAoAXZHg@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-34226@inbox.vuxu.org>

[-- Attachment #1: Type: text/plain, Size: 664 bytes --]

There is an updated pull request by curiousjunior against master on the void-packages repository

https://github.com/curiousjunior/void-packages godot
https://github.com/void-linux/void-packages/pull/34226

godot: add LTO, export templates and headless
they are useful for everything that's not glibc or not x86 because there are no official binaries for those (who plays finished games in the editor?) and can be used to play already exported games

also I didn't test building and packaging on my own laptop because C++ is a cancer, so I'll wait for result of buildbot

A patch file from https://github.com/void-linux/void-packages/pull/34226.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-godot-34226.patch --]
[-- Type: text/x-diff, Size: 5541 bytes --]

From 23950d6e91d9502d1df5b8ac064ff78e18f48f66 Mon Sep 17 00:00:00 2001
From: Leonid Bobrov <curiousbeaver@disroot.org>
Date: Wed, 24 Nov 2021 14:26:38 +0200
Subject: [PATCH] godot: add LTO, export templates and headless

both headless editor and export templates will be needed to package games made
 with godot as either source code available or proprietary binaries linked
 only against glibc

remove -no-pie flag because 1 out of 5 binaries not being PIE causes xbps-src
 to error, it was a workaround for some linux distros that treat PIE binaries
 as shared libraries
=> https://github.com/godotengine/godot/pull/23542 background
=> https://github.com/godotengine/godot/pull/50737 pushed to master but forgot
 to merge it in 3.x

remove clang from dependencies because without passing 'use_llvm=yes' to scons
 it's never used, also 'use_lto=yes' with 'use_llvm=yes' is not supported

both 'release' and 'release_debug' client and server are needed for custom
 exports

closes #34199
---
 srcpkgs/godot/patches/pie.patch | 23 +++++++++++++++++
 srcpkgs/godot/template          | 45 +++++++++++++++++++++++++--------
 2 files changed, 58 insertions(+), 10 deletions(-)
 create mode 100644 srcpkgs/godot/patches/pie.patch

diff --git a/srcpkgs/godot/patches/pie.patch b/srcpkgs/godot/patches/pie.patch
new file mode 100644
index 000000000000..08964951e66e
--- /dev/null
+++ b/srcpkgs/godot/patches/pie.patch
@@ -0,0 +1,23 @@
+diff --git a/platform/x11/detect.py b/platform/x11/detect.py
+index 56ef4b8e29..c5fd8f7811 100644
+--- a/platform/x11/detect.py
++++ b/platform/x11/detect.py
+@@ -210,18 +210,6 @@ def configure(env):
+     env.Append(CCFLAGS=["-pipe"])
+     env.Append(LINKFLAGS=["-pipe"])
+ 
+-    # Check for gcc version >= 6 before adding -no-pie
+-    version = get_compiler_version(env) or [-1, -1]
+-    if using_gcc(env):
+-        if version[0] >= 6:
+-            env.Append(CCFLAGS=["-fpie"])
+-            env.Append(LINKFLAGS=["-no-pie"])
+-    # Do the same for clang should be fine with Clang 4 and higher
+-    if using_clang(env):
+-        if version[0] >= 4:
+-            env.Append(CCFLAGS=["-fpie"])
+-            env.Append(LINKFLAGS=["-no-pie"])
+-
+     ## Dependencies
+ 
+     env.ParseConfig("pkg-config x11 --cflags --libs")
diff --git a/srcpkgs/godot/template b/srcpkgs/godot/template
index c38f3f8c525a..763e8dba81b1 100644
--- a/srcpkgs/godot/template
+++ b/srcpkgs/godot/template
@@ -1,21 +1,19 @@
 # Template file for 'godot'
 pkgname=godot
 version=3.4
-revision=1
+revision=2
 archs="x86_64* i686* aarch64* armv7* ppc64*"
 wrksrc="${pkgname}-${version}-stable"
 build_style=scons
 # Godot contains private copies of libraries
 # that already have been packaged elsewhere.
-# Use builtin bullet for now as it's too old in repos (needs 2.89)
-# Toggle to not use builtin once bullet has been updated
-make_build_args="platform=x11 tools=yes target=release_debug dev=no progress=no
- pulseaudio=no builtin_bullet=false builtin_libpng=false builtin_libvpx=false
+make_build_args="dev=no progress=no pulseaudio=no use_lto=yes
+ builtin_bullet=false builtin_libpng=false builtin_libvpx=false
  builtin_libwebp=false builtin_libogg=false builtin_libtheora=false
  builtin_opus=false builtin_libvorbis=false builtin_enet=false
  builtin_zlib=false builtin_freetype=false builtin_mbedtls=false
  builtin_miniupnpc=false builtin_pcre2=false"
-hostmakedepends="pkg-config clang"
+hostmakedepends="pkg-config"
 makedepends="
  alsa-lib-devel freetype-devel glu-devel libXcursor-devel libXi-devel
  libXinerama-devel libXrender-devel libXrandr-devel libX11-devel
@@ -33,6 +31,14 @@ nocross=https://build.voidlinux.org/builders/armv7l_builder/builds/6342/steps/sh
 CFLAGS+=" -fPIE -fPIC"
 LDFLAGS+=" -pie"
 
+_options = \
+	"yes release_debug x11    # editor
+	 yes release_debug server # headless
+	 no  release       x11    # client
+	 no  release_debug x11    # client with runtime checks
+	 no  release       server # server
+	 no  release_debug server # server with runtime checks"
+
 post_extract() {
 	vsed -e 's/#ifdef CRASH_HANDLER_ENABLED/#if defined(CRASH_HANDLER_ENABLED) \&\& defined(__GLIBC__)/' \
 		-i platform/x11/crash_handler_x11.cpp
@@ -42,15 +48,34 @@ pre_build() {
 	export CXXFLAGS=" $CXXFLAGS "
 }
 
+do_build() {
+	echo $_options | while read tools target platform _; do
+		scons \
+			${makejobs} ${make_build_args} \
+			CCFLAGS="$CFLAGS" LINKFLAGS="$LDFLAGS" \
+			tools=$tools target=$target platform=$platform
+	done
+}
+
 do_install() {
 	vlicense LICENSE.txt
 	vinstall ${FILESDIR}/godot.desktop 644 /usr/share/applications/
 	vinstall ${wrksrc}/icon.png 644 /usr/share/pixmaps/ godot.png
 
 	case "$XBPS_TARGET_MACHINE" in
-		x86_64*|aarch64*) vbin bin/godot.x11.opt.tools.64 godot;;
-		ppc64le*) vbin bin/godot.x11.opt.tools.ppc64le godot;;
-		ppc64*) vbin bin/godot.x11.opt.tools.ppc64 godot;;
-		*) vbin bin/godot.x11.opt.tools.32 godot;;
+		x86_64*|aarch64*) _godot_arch=64;;
+		ppc64le*) _godot_arch=ppc64le;;
+		ppc64*) _godot_arch=ppc64;;
+		*) _godot_arch=32;;
 	esac
+
+	# editors, use headless for packaging games
+	vbin bin/godot.x11.opt.tools.$_godot_arch godot
+	vbin bin/godot_server.x11.opt.tools.$_godot_arch godot-headless
+
+	# export templates, use for packaging games and playing with musl libc or non-x86 CPU
+	vbin bin/godot.x11.opt.$_godot_arch godot-client
+	vbin bin/godot.x11.opt.debug.$_godot_arch godot-client-debug
+	vbin bin/godot_server.x11.opt.$_godot_arch godot-server
+	vbin bin/godot_server.x11.opt.debug.$_godot_arch godot-server-debug
 }

  parent reply	other threads:[~2021-11-30  6:44 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-24 12:41 [PR PATCH] godot: add client and server export templates curiousjunior
2021-11-24 14:16 ` [PR PATCH] [Updated] " curiousjunior
2021-11-24 14:17 ` curiousjunior
2021-11-24 14:20 ` curiousjunior
2021-11-24 15:53 ` [PR PATCH] [Updated] " curiousjunior
2021-11-24 18:16 ` curiousjunior
2021-11-26  1:17 ` curiousjunior
2021-11-26  1:35 ` curiousjunior
2021-11-26  1:50 ` curiousjunior
2021-11-26  1:53 ` curiousjunior
2021-11-26  2:44 ` curiousjunior
2021-11-29 19:36 ` [PR REVIEW] " ericonr
2021-11-29 19:36 ` ericonr
2021-11-29 19:36 ` ericonr
2021-11-29 19:36 ` ericonr
2021-11-29 19:36 ` ericonr
2021-11-29 19:36 ` ericonr
2021-11-29 19:58 ` curiousjunior
2021-11-29 19:59 ` curiousjunior
2021-11-29 20:00 ` curiousjunior
2021-11-29 20:13 ` curiousjunior
2021-11-29 20:22 ` curiousjunior
2021-11-29 21:37 ` [PR PATCH] [Updated] " curiousjunior
2021-11-29 21:43 ` curiousjunior
2021-11-29 21:49 ` curiousjunior
2021-11-29 21:59 ` curiousjunior
2021-11-29 22:13 ` [PR PATCH] [Updated] godot: add client and server export templates and headless editor curiousjunior
2021-11-30  4:58 ` [PR REVIEW] " ahesford
2021-11-30  6:23 ` [PR PATCH] [Updated] " curiousjunior
2021-11-30  6:27 ` [PR REVIEW] godot: add LTO, export templates and headless curiousjunior
2021-11-30  6:32 ` [PR PATCH] [Updated] " curiousjunior
2021-11-30  6:37 ` curiousjunior
2021-11-30  6:44 ` curiousjunior [this message]
2021-11-30  7:23 ` curiousjunior
2021-11-30 15:28 ` q66
2021-11-30 16:00 ` curiousjunior
2021-11-30 16:15 ` ahesford
2021-11-30 16:59 ` q66
2021-11-30 17:12 ` ericonr
2021-11-30 17:14 ` curiousjunior
2021-11-30 17:14 ` [PR REVIEW] " codingHahn
2021-11-30 17:14 ` q66
2021-11-30 17:15 ` [PR PATCH] [Closed]: " ahesford

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211130064456.wYyn5ZJdlZdsj7gwDZ3o43Ey-gMQ87SbivKkAoAXZHg@z \
    --to=curiousjunior@users.noreply.github.com \
    --cc=ml@inbox.vuxu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).