MonoGame/MonoGame

macOS and Linux setup experience

Opened this issue · 4 comments

I'm creating this issue to centralize all of the other issues to setup a MonoGame project on macOS or Linux.

It is a set of different issues degrading the setup experience on those systems. They are aggregated with the setup label, most of them being duplicates.

How to fix those:

  • Build all native dependencies with osx-arm64 support (this is currently being done by refactoring the dependencies into separate projects so that MonoGame can built it own native dependencies without relying on third-parties)
    • SDL
    • FreeType (needs to be wired and tested with SharpFont)
    • FreeImage
    • ffmpeg/ffprobe
    • assimp
    • Replace ATI.TextureCompression, PVRTexLib and NVTT by more suitable texture compressors (candidates are compressanator on Windows/Linux, and TextureConverter on macOS)
  • Fix mgfxc_wine_setup.sh
    • Change the .NET SDK link to .NET 8.0
    • Update WineHelper.cs comments to .NET 8
    • Check for Wine version requirement (there is a minimum version required)
    • Enhance the script to support both 32 and 64 bit versions of Wine (some users have both installed and stuff got installed on the 32 bit version instead)

@mrhelmut

  • Change the .NET SDK link to .NET 8.0: Completed in #8218
  • Update WineHelper.cs comments to .NET 8: Completed in #8219
  • Check for Wine version requirement (there is a minimum version required): Completed in #8220

Enhance the script to support both 32 and 64 bit versions of Wine (some users have both installed and stuff got installed on the 32 bit version instead)

Ok so the problem seems to be that monogame assumes that the Linux user is using apt and installed wine64.

But if you install wine like normal using like winehq-staging, then you get both 32-bit and 64-bit support.

Setting the 64-bit support is just the WINE_ARCH flag.

The script would need to be changed to not check for the assumption of wine64 and instead just check for just plain wine, then carry on from there. But there needs to be a way to ensure that 64-bit support was also installed

Thoughts @mrhelmut @harry-cpp

dpkg -l | grep wine will output

aristurtle@ubuntu-personal:~/ftp$ dpkg -l | grep wine
ii  fonts-wine                           5.0-3ubuntu1                          all          Windows API implementation - fonts
ii  libwine:amd64                        5.0-3ubuntu1                          amd64        Windows API implementation - library
iU  wine-staging                         9.3~focal-1                           amd64        WINE Is Not An Emulator - runs MS Windows programs
iU  wine-staging-i386:i386               9.3~focal-1                           i386         WINE Is Not An Emulator - runs MS Windows programs
ii  wine64                               5.0-3ubuntu1                          amd64        Windows API implementation - 64-bit binary loader
iU  winehq-staging                       9.3~focal-1                           amd64        WINE Is Not An Emulator - runs MS Windows programs

so the check for wine64 can be made there

So on this one:

Replace ATI.TextureCompression, PVRTexLib and NVTT by more suitable texture compressors (candidates are compressanator on Windows/Linux, and TextureConverter on macOS)

The decision the board made is finding one library we can add just for Mac and Linux. We will not currently be replacing the existing libs.

What are good candidates?

@mrhelmut @AristurtleDev @harry-cpp ?