flathub / org.godotengine.Godot3Sharp

https://flathub.org/apps/details/org.godotengine.Godot3Sharp
0 stars 1 forks source link

Include `msbuild` bin from the flatpak for `mono6` SDK extension #4

Open geekley opened 8 months ago

geekley commented 8 months ago

Regarding this disclaimer:

Although built with Mono 6, this Flatpak uses .NET 8 for building C# solutions in Godot projects. To (re)build a C# solution in the Godot editor, make sure that "Editor -> Editor Settings --> Mono --> Builds --> Build Tool" is set to "dotnet CLI", and not "MSBuild (Mono)", before (re)building the C# solution, otherwise Godot won't be able to find MSBuild. It should be set to "dotnet CLI" by default, but if it isn't, reset it by going to the editor settings as previously described.

It should be possible to include a /app/bin/msbuild executable since the flatpak for mono6 SDK does include msbuild, according to flathub/org.freedesktop.Sdk.Extension.mono6#6 being closed.

I'm not sure how exactly to do it, since they didn't include instructions, but you could ask in that linked issue. Another option is try to see how it's done in apt and replicate it. It would probably be creating a executable shell script in bin that does essentially mono MSBuild.dll "$@" with a bunch of parameters (see my comment on the linked issue). But maybe it's easier than that, so it's worth asking them directly.

geekley commented 8 months ago

Ah sorry I didn't see you opened an issue already in flathub/org.freedesktop.Sdk.Extension.mono6#32

Zishan-Rahman commented 8 months ago

Ah sorry I didn't see you opened an issue already in flathub/org.freedesktop.Sdk.Extension.mono6#32

No worries @geekley (sorry for the ping). I didn't know about the issue you opened there, and if I'd've known, I'd've checked that first.

Zishan-Rahman commented 8 months ago

Still, though...

It should be possible to include a /app/bin/msbuild executable since the flatpak for mono6 SDK does include msbuild, according to flathub/org.freedesktop.Sdk.Extension.mono6#6 being closed.

I'm not sure how exactly to do it, since they didn't include instructions, but you could ask in that linked issue. Another option is try to see how it's done in apt and replicate it. It would probably be creating a executable shell script in bin that does essentially mono MSBuild.dll "$@" with a bunch of parameters (see my comment on the linked issue). But maybe it's easier than that, so it's worth asking them directly.

@geekley (sorry for the ping, again) I tried. Deary me, oh how I tried. And I still kept getting errors when trying to build an example C# solution (you may be aware of them since you read the issue I opened at the mono6 Flatpak repo). It's one of the reasons why this Flatpak, though I began work on it in September, hadn't been pushed to Flathub for so long (until now).

One of my proposed solutions involved creating an /app/bin/msbuild script in the Flatpak itself, similar to the one in the Mono 6 Flatpak, and then copying the msbuild, xbuild and xbuild-resources folders over to /app/lib/mono, and that still didn't work. I even tried copying over the relevant gac folders (Microsoft.Build, Microsoft.Build.Resources etc), and I had trouble even doing that properly when trying to build the Flatpak locally. Maybe it's because, as of the time I publish this comment, I'm still a novice when it comes to Mono, and even C# and .NET for that matter, and, though I've gotten somewhat proficient at contributing to Flathub every now and then, I still wouldn't call myself a Flatpak expert either, but it still felt like I was approaching dead end after dead end after dead end after dead end. I know you didn't want to use .NET's msbuild, as you said originally in the issue you opened, and believe me when I say I didn't want to either, but eventually, when it came time for this Flatpak to get pushed to Flathub, I just had to include .NET's msbuild so that I don't get anyone telling me their C# solutions and Godot projects won't build.

I do like that Godot3Sharp gives us the flexibility to use either Mono or .NET to build our projects, but at the moment, if we're using this Flatpak, we're stuck with .NET when we could be using Mono, and we built Godot 3 with Mono, not .NET. As I outlined in the issue I opened, it's not a desirable position to be in, for this or any other Flatpak app, and I also want to get these problems with finding MSBuild fixed.

Seriously, though, thank you so much for opening this issue and linking to https://github.com/flathub/org.freedesktop.Sdk.Extension.mono6/issues/6 here, as I did not realise the inclusion of MSBuild in the mono6 Flatpak wasn't always there and had to be worked on beforehand, and seeing the issue you opened did give me some inspiration. I'll try and work on the issue of finding Mono's msbuild when I'm able to (right now in the UK, it's gotten late), and I might as well try to get NuGet proper in the mono6 Flatpak as well, in a similar way to how MSBuild is extracted from a .deb file into the Flatpak, since nuget.exe (as stored in the relevant .deb file) isn't included in the mono6 Flatpak yet.

geekley commented 8 months ago

I know you didn't want to use .NET's msbuild

Well, at that time (the issue was mostly for Unity) .NET builds weren't reproducible yet, but gladly this changed since dotnet6 (which became available in apt for Debian/Ubuntu). So I actually prefer dotnet now.

I'm glad Godot works with default configuration out-of-the-box, thanks! I opened this just because I thought it would be trivial to do, of course before I saw your other issue. :smile: