Package Details: godot-mono 4.1.1-1

Git Clone URL: (read-only, click to copy)
Package Base: godot-mono
Description: An advanced, feature packed, multi-platform 2D and 3D game engine.
Upstream URL:
Keywords: Development Engine Game Gamedev Godot
Licenses: MIT
Conflicts: godot-mono-bin
Provides: godot-mono
Submitter: Rinma
Maintainer: Rinma
Last Packager: Rinma
Votes: 10
Popularity: 0.023391
First Submitted: 2018-03-01 19:45 (UTC)
Last Updated: 2023-07-19 08:19 (UTC)

Latest Comments

1 2 3 Next › Last »

HurricanePootis commented on 2023-09-15 00:57 (UTC)

Nobody should comment any changes for this package, the maintainer will never implement them and this package will remain stale. They just bump pkgver, and that's it. No actual active maintenance of the package. Therefore, I am making godot-mono-enhanced, which reflects upstream godot in their build options, and will be packaged with full desktop integration.

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
@@ -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 "\$@"

     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
@@ -6,45 +6,62 @@ pkgdesc="An advanced, feature packed, multi-platform 2D and 3D game engine."
 arch=('i686' 'x86_64')
-depends=('mono>=6.12.0' 'mono-msbuild')
-    '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)

 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" \
+    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/ --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

pkgdesc='Advanced cross-platform 2D and 3D game engine'
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)
conflicts=("godot" "godot-mono-bin")

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

build() {
  # Not unbundled (yet):
  #  bullet (FS#72924,
  #  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

# 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" \

# Generate godot mono glue
  cd $srcdir/$_pkgname-$pkgver-stable
  xvfb-run -s "-screen 0 1920x1080x24 -nolisten local" \
  ./bin/ --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" \

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

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

  install -Dm755 bin/ "$pkgdir/opt/$pkgname/"
  install -Dm755 bin/ "$pkgdir/opt/$pkgname/"
  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 \

And here is the godot launch file

#!/usr/bin/env bash
/opt/godot-mono/ "$@"

Neko-san commented on 2022-08-04 05:25 (UTC) (edited on 2022-08-04 05:27 (UTC) by Neko-san)

@Rinma It's a C++ source-code error; someone over at Github made a commit for file_access_unix.cpp and made the mistake of not returning a value at the end of a function

It's technically simple to fix, as long as you know what it is this function intended to do properly

Rinma commented on 2022-08-03 07:29 (UTC)

As soon as I find out what this error means and how I can reproduce it, I can try to fix it. But at this moment all builds on my PC and Notebook are working fine, and I don't know what this error means or how to fix it.

Neko-san commented on 2022-07-20 02:10 (UTC)

I also get this same error; can this be fixed, please?

SiriusCrack commented on 2022-07-04 00:04 (UTC) (edited on 2022-07-04 00:09 (UTC) by SiriusCrack)

building gives me this error; on a different file on a different PC, but similar error. Any ideas?

drivers/unix/file_access_unix.cpp: In member function 'virtual uint32_t FileAccessUnix::_get_unix_permissions(const String&)':
drivers/unix/file_access_unix.cpp:325:1: error: control reaches end of non-void function [-Werror=return-type]
325 | }
    | ^
[Initial build] Compiling ==> drivers/gles3/rasterizer_canvas_base_gles3.cpp
[Initial build] Linking Static Library ==> platform/
cc1plus: some warnings being treated as errors
Ranlib Library         ==> platform/
scons: *** [drivers/unix/] Error 1
scons: building terminated because of errors.
[Time elapsed: 00:01:30.445]
==> ERROR: A failure occurred in build().
-> error making: godot-mono

lmariscal commented on 2021-12-17 22:20 (UTC)

Could we add -j$(nproc) to the build process?