Package Details: godot-mono 4.2.2-2

Git Clone URL: https://aur.archlinux.org/godot-mono.git (read-only, click to copy)
Package Base: godot-mono
Description: An advanced, feature packed, multi-platform 2D and 3D game engine
Upstream URL: https://godotengine.org/
Keywords: Development Engine Game Gamedev Godot
Licenses: MIT
Conflicts: godot
Provides: godot
Submitter: Rinma
Maintainer: Rinma (HurricanePootis)
Last Packager: HurricanePootis
Votes: 13
Popularity: 0.119422
First Submitted: 2018-03-01 19:45 (UTC)
Last Updated: 2024-05-13 14:01 (UTC)

Required by (9)

Sources (1)

Pinned Comments

HurricanePootis commented on 2023-12-13 10:13 (UTC)

I am going to go ahead and submit a request to delete godot-mono-enhanced, and focus my efforts here from now on. If you are wondering why godot-mono-enhanced was deleted, it's because its purpose has ceased to exist after I became maintainer of godot-mono, and was able to bring it up to standards.

xyproto commented on 2023-12-02 13:47 (UTC)

Dear maintainers of godot-mono and godot-mono-enhanced. I added HurricanePootis as a co-maintainer to this package, since I think it's better to collaborate. I think it will be better for the users. Perhaps we can remove godot-mono-enhanced if you can collaborate on this package instead. Best of luck, and thanks for maintaining Arch Linux packages. It benefits us all.

Latest Comments

1 2 3 Next › Last »

HurricanePootis commented on 2023-12-13 10:13 (UTC)

I am going to go ahead and submit a request to delete godot-mono-enhanced, and focus my efforts here from now on. If you are wondering why godot-mono-enhanced was deleted, it's because its purpose has ceased to exist after I became maintainer of godot-mono, and was able to bring it up to standards.

HurricanePootis commented on 2023-12-03 01:58 (UTC)

@xyproto, thanks for making me co-maintainer. Before I delete godot-mono-enhanced, I am going to test out being co-maintainer of this package for at least 1 or 2 release before I am comfortable. Thanks for looking out for AUR!

xyproto commented on 2023-12-02 13:47 (UTC)

Dear maintainers of godot-mono and godot-mono-enhanced. I added HurricanePootis as a co-maintainer to this package, since I think it's better to collaborate. I think it will be better for the users. Perhaps we can remove godot-mono-enhanced if you can collaborate on this package instead. Best of luck, and thanks for maintaining Arch Linux packages. It benefits us all.

FabioLolix commented on 2023-10-14 10:11 (UTC)

About provides and conflicts all godot-mono packages can be installed alongside godot so aren't drop-in replacement, this pkgbuild don't have to specify any and don't have to provide itself

About source=() please don't rename to godot-mono, I already have godot in the common source destination (SRCDEST= in makepkg.conf), with that are downloaded a second time instead of being shared

Catmeow72 commented on 2023-08-03 17:16 (UTC)

I have a patch for the PKGBUILD that allows using CLI arguments on the Godot binary through the wrapper script.

diff --git a/PKGBUILD b/PKGBUILD
index 5c42cf4..ad2f4c2 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -60,7 +60,7 @@ package() {
     # I have to use TERM=xterm because of an bug in mono
     cat > "${pkgdir}/usr/bin/${pkgname}" <<-EOF
                #!/usr/bin/env bash
-               /opt/godot-mono/bin/godot.linuxbsd.editor.x86_64.mono
+               /opt/godot-mono/bin/godot.linuxbsd.editor.x86_64.mono "\$@"
        EOF

     chmod a+x ${pkgdir}/usr/bin/${pkgname}

HurricanePootis commented on 2023-03-11 22:36 (UTC)

Hey, there are a few changes that can be made this to this PKGBUILD to improve it's quality.

First, Godot no longer builds with Mono, but now requires dotnet. Regardless, they still call the module mono, but don't be fooled. Furthermore, you listed a lot of depends() in makedepends(). Thirdly, you are building a lot of the thirdparty modules which be instead linked to system libraries, like the official godot package does. Fourthly, you are not using all of the godot build options that godot uses, which makes godot-mono have different options and experience than godot.

Below is a patch file to make your PKGBUILD more in line with godot, improving the over all quality. It's important to make sure your package of a derivative of an existing package in the official repos is in line with the official PKGBUILD.

diff --git a/PKGBUILD b/PKGBUILD
index 951c937..23c502e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -6,45 +6,62 @@ pkgdesc="An advanced, feature packed, multi-platform 2D and 3D game engine."
 arch=('i686' 'x86_64')
 url="https://godotengine.org/"
 license=('MIT')
-depends=('mono>=6.12.0' 'mono-msbuild')
-optdepends=('dotnet-core')
-makedepends=(
-    'git'
-    'scons>=3.0' 
-    'libxcursor' 
-    'libxinerama' 
-    'libxi' 
-    'libxrandr' 
-    'mesa' 
-    'glu' 
-    'libglvnd'
-    'alsa-lib' 
-    'pulseaudio'
-    'yasm'
-    'freetype2'
-    'gcc'
-    'pkg-config'
-    'rsync'
-    'nuget'
-    'xorg-server-xvfb'
-)
+depends=(embree freetype2 graphite harfbuzz harfbuzz-icu libglvnd libspeechd libsquish
+   libtheora libvorbis libwebp libwslay libxcursor libxi libxinerama libxrandr
+   mbedtls miniupnpc pcre2 dotnet-sdk)
+makedepends=(alsa-lib gcc pulseaudio scons yasm xorg-server-xvfb nuget python git)
 provides=('godot-mono')
 conflicts=('godot-mono-bin')
-source=(${pkgname}::git+https://github.com/godotengine/godot.git)
+source=(${pkgname}::git+https://github.com/godotengine/godot.git#tag=${pkgver}-stable)
 md5sums=('SKIP')

 build() {
     cd "${srcdir}/${pkgname}"

-    #Checkout actual version of Godot
-    git checkout ${pkgver}-stable
-
     #Build temporary binaries to generate needed files for mono support
-    scons -j$(nproc) platform=linuxbsd tools=yes module_mono_enabled=yes mono_glue=no
+  scons -j$(nproc) \
+    CFLAGS="$CFLAGS -fPIC -Wl,-z,relro,-z,now -w" \
+    CXXFLAGS="$CXXFLAGS -fPIC -Wl,-z,relro,-z,now -w" \
+    LINKFLAGS="$LDFLAGS" \
+    arch=$CARCH \
+    builtin_embree=no \
+    builtin_enet=yes \
+    builtin_freetype=no \
+    builtin_msdfgen=yes \
+    builtin_glslang=yes \
+    builtin_graphite=no \
+    builtin_harfbuzz=no \
+    builtin_icu4c=yes \
+    builtin_libogg=no \
+    builtin_libpng=no \
+    builtin_libtheora=no \
+    builtin_libvorbis=no \
+    builtin_libwebp=no \
+    builtin_wslay=yes \
+    builtin_mbedtls=no \
+    builtin_miniupnpc=no \
+    builtin_pcre2=no \
+    builtin_pcre2_with_jit=no \
+    builtin_recastnavigation=yes \
+    builtin_rvo2=yes \
+    builtin_squish=no \
+    builtin_xatlas=yes \
+    builtin_zlib=no \
+    builtin_zstd=no \
+    colored=yes \
+    platform=linuxbsd \
+    production=yes \
+    pulseaudio=yes \
+    system_certs_path=/etc/ssl/certs/ca-certificates.crt \
+    target=editor \
+    use_llvm=no \
+    werror=no \
+    module_mono_enabled=yes \
+    mono_glue=no
+
     xvfb-run -s "-screen 0 1920x1080x24 -nolisten local" bin/godot.linuxbsd.editor.x86_64.mono --generate-mono-glue modules/mono/glue

     # Build normal binaries
-    #scons -j$(nproc) platform=linuxbsd target=editor tools=yes module_mono_enabled=yes bits=64
     modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd
 }

HurricanePootis commented on 2023-02-14 00:15 (UTC) (edited on 2023-02-14 00:16 (UTC) by HurricanePootis)

Hey, thanks for updating godot-mono

I think this PKGBUILD could be better if it was based off of godot's. As in, the official godot PKGBUILD does a lot to make godot more friendly on archlinux like unbundling dependencies, more extensive build options, etc. I have made a version of godot-mono based off of godot, and it would be totally AOK if you were to use this version.

Here is the PKGBUILD

_pkgname=godot
pkgname=godot-mono
pkgver=3.5.1
pkgrel=1
pkgdesc='Advanced cross-platform 2D and 3D game engine'
url='https://godotengine.org'
license=(MIT)
arch=(x86_64)
makedepends=(gcc scons yasm alsa-lib pulseaudio nuget xorg-server-xvfb)
depends=(embree freetype2 libglvnd libtheora libvorbis libvpx libwebp
         libwslay libxcursor libxi libxinerama libxrandr mbedtls miniupnpc opusfile mono mono-msbuild)
optdepends=(pipewire-alsa pipewire-pulse)
source=("$_pkgname-$pkgver.tar.gz::https://github.com/godotengine/godot/archive/$pkgver-stable.tar.gz"
        "godot")
conflicts=("godot" "godot-mono-bin")
provides=("godot")
b2sums=('e8a209972fc680ce9c024762715c64ea36f9d1ca223c6911a5179ff1cff3c2a143b703bb5b41f198b8b3ed5bd2c474316177bda094a3ef34d06e2dcf2adb2815'
        'fd6454322cca1c45aa2e9dac455ca2961de498b418b3b1ca3c09ad7e8ddbe194d48d249cda5efcacd4fea3f569ef5941ad54d67361e02ed2a2ecfcb649a91c2f')

prepare() {
  # Disable the check that adds -no-pie to LINKFLAGS, for gcc != 6
  sed -i 's,0] >,0] =,g' $_pkgname-$pkgver-stable/platform/x11/detect.py
}

build() {
  # Not unbundled (yet):
  #  bullet (FS#72924, https://github.com/godotengine/godot/issues/55599)
  #  certs (FS#72762)
  #  enet (contains no upstreamed IPv6 support)
  #  libsquish, recast, xatlas
  #  AUR: libwebm, squish
  local to_unbundle="embree freetype libogg libpng libtheora libvorbis libvpx libwebp mbedtls miniupnpc opus pcre2 wslay zlib zstd"
  local system_libs=""
  for _lib in $to_unbundle; do
    system_libs+="builtin_"$_lib"=no "
    rm -rf thirdparty/$_lib
  done


# Build one to generate mono glue
  cd $_pkgname-$pkgver-stable
  export BUILD_NAME=arch_linux
  scons -j$(nproc) \
    bits=64 \
    colored=yes \
    platform=x11 \
    pulseaudio=yes \
    system_certs_path=/etc/ssl/certs/ca-certificates.crt \
    target=release_debug \
    tools=yes \
    use_llvm=no \
    module_mono_enabled=yes \
    mono_glue=no \
    CFLAGS="$CFLAGS -fPIC -Wl,-z,relro,-z,now -w" \
    CXXFLAGS="$CXXFLAGS -fPIC -Wl,-z,relro,-z,now -w" \
    LINKFLAGS="$LDFLAGS" \
    $system_libs

# Generate godot mono glue
  cd $srcdir/$_pkgname-$pkgver-stable
  xvfb-run -s "-screen 0 1920x1080x24 -nolisten local" \
  ./bin/godot.x11.opt.tools.64.mono --generate-mono-glue $srcdir/$_pkgname-$pkgver-stable/modules/mono/glue

# Build two with mono glue
  cd $srcdir/$_pkgname-$pkgver-stable
  export BUILD_NAME=arch_linux
  scons -j$(nproc) \
    bits=64 \
    colored=yes \
    platform=x11 \
    pulseaudio=yes \
    system_certs_path=/etc/ssl/certs/ca-certificates.crt \
    target=release_debug \
    tools=yes \
    use_llvm=no \
    module_mono_enabled=yes \
    mono_glue=yes \
    CFLAGS="$CFLAGS -fPIC -Wl,-z,relro,-z,now -w" \
    CXXFLAGS="$CXXFLAGS -fPIC -Wl,-z,relro,-z,now -w" \
    LINKFLAGS="$LDFLAGS" \
    $system_libs
}

package() {
  cd $_pkgname-$pkgver-stable

  install -Dm644 misc/dist/linux/org.godotengine.Godot.desktop \
    "$pkgdir/usr/share/applications/godot.desktop"
  install -Dm644 icon.svg "$pkgdir/usr/share/pixmaps/godot.svg"

  install -Dm755 bin/godot.x11.opt.tools.64.mono "$pkgdir/opt/$pkgname/godot.x11.opt.tools.64.mono"
  install -Dm755 bin/libmonosgen-2.0.so "$pkgdir/opt/$pkgname/libmonosgen-2.0.so"
  cp -r bin/GodotSharp "$pkgdir/opt/$pkgname/GodotSharp"
  install -Dm755 "$srcdir/godot" "$pkgdir/usr/bin/godot"

  install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/godot/LICENSE"

  install -Dm644 misc/dist/linux/godot.6 "$pkgdir/usr/share/man/man6/godot.6"

  install -Dm644 misc/dist/linux/org.godotengine.Godot.xml \
    "$pkgdir/usr/share/mime/packages/org.godotengine.Godot.xml"
}

And here is the godot launch file

#!/usr/bin/env bash
/opt/godot-mono/godot.x11.opt.tools.64.mono "$@"