Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mono/macOS: Move GodotSharp data to Resources to allow codesigning #43768

Merged
merged 1 commit into from
Mar 3, 2021
Merged

Mono/macOS: Move GodotSharp data to Resources to allow codesigning #43768

merged 1 commit into from
Mar 3, 2021

Conversation

sjml
Copy link
Contributor

@sjml sjml commented Nov 22, 2020

This fixes #43732 -- that exported Mono projects could not be codesigned on the Mac due to their directory layout. This change creates a directory layout that is capable of being signed, and combined with a change to the release build scripts will also create a version of the editor and export templates that work similarly.

A few caveats:

  1. In the original issue, @bruvzg indicated that etc should go into Frameworks but this causes the codesign to fail due to the policies about nested code. I've put it into Resources instead, where the codesign cares less about the directory structure. Per discussion below, the lib directory has been split up between Resources and Frameworks.
  2. The export no longer has a folder called data_{GAMENAME}, since the Mono distribution is more split up through the .app. I assume it was originally called that to have parity with the Linux and Windows exports, but since Mac applications are all bundled together and those details are invisible to the user, I didn't think that needed to be preserved. If it's significant for some other reason, please let me know.
  3. I'm slightly concerned that none of the loading code had to change to accommodate the different directories. I can't tell if Mono is just very good at finding its files, or if it's somehow picking up my system installation at runtime, or what. It works, but it's not 100% clear how, and I'm not a fan of that. The loading code has now been changed, so it's clear there isn't magic going on.
  4. Both the produced editor and export templates still produce .app packages that are unusable until they have libMoltenVK.dylib added to the Frameworks directory. I was following the existing build practices there, as it seems like the maintainers haven't yet settled on the best means of including it (Vulkan: Documentation and/or buildsystem changes needed for MoltenVK #36213). I've poked on that issue thread to re-raise the question, and if it's something that can be decided soon-ish, this PR could easily be amended to accommodate whatever method makes sense.

Long-term:

@bruvzg bruvzg self-requested a review November 22, 2020 11:00
@sjml sjml marked this pull request as draft November 22, 2020 11:09
@sjml
Copy link
Contributor Author

sjml commented Nov 22, 2020

(Some issues with the export templates; still working here.)

Was just seeing problems if you enable "Hardened Runtime" without an accompanying entitlements file letting Mono work. Probably not something to add to the export process itself, since people might want custom entitlements, but might be worth adding to the documentation that Mono Mac exports need at least these minimal entitlements for codesigning with the hardened runtime to work. (Since hardened runtime is required for notarization, it will be more relevant in the future.)

@sjml sjml marked this pull request as ready for review November 22, 2020 11:29
@sjml sjml changed the title Fixing engine export to allow codesigning on Mac exports Fixing Mono export to allow codesigning on Mac exports Nov 22, 2020
@akien-mga akien-mga added this to the 4.0 milestone Nov 23, 2020
@akien-mga akien-mga added the cherrypick:3.x Considered for cherry-picking into a future 3.x release label Nov 23, 2020
@bruvzg
Copy link
Member

bruvzg commented Nov 23, 2020

cp -rp out/macosx/tools-mono/GodotSharp/Mono Godot_mono.app/Contents/Resources/GodotSharp/Mono

There are few dylibs in the GodotSharp/Mono/lib, even if signing will work with --deep, it's not the correct way to put them to the Resources.

Only etc should be in Resources, and --deep should not be necessary:

Original code seems to be correct (ant it's for editor release):

cp -rp out/macosx/tools-mono/GodotSharp/Mono/lib Godot_mono.app/Contents/Frameworks/GodotSharp/Mono
cp -rp out/macosx/tools-mono/GodotSharp/Mono/etc Godot_mono.app/Contents/Resources/GodotSharp/Mono

Template part is here: https://github.com/godotengine/godot-build-scripts/blob/master/build-release.sh#L351

And should be changed to do the same as editor (and export code change should be ok).

-cp -rp out/macosx/templates-mono/data.mono.osx.universal.* osx_template.app/Contents/MacOS/
+mkdir -p osx_template.app/Contents/{Frameworks,Resources}/data.mono.osx.universal.release/Mono
+mkdir -p osx_template.app/Contents/{Frameworks,Resources}/data.mono.osx.universal.release_debug/Mono
+cp -rp out/macosx/templates-mono/data.mono.osx.universal.release/Mono/lib osx_template.app/Contents/Frameworks/data.mono.osx.universal.release/Mono
+cp -rp out/macosx/templates-mono/data.mono.osx.universal.release/Mono/etc osx_template.app/Contents/Resources/data.mono.osx.universal.release/Mono
+cp -rp out/macosx/templates-mono/data.mono.osx.universal.release_debug/Mono/lib osx_template.app/Contents/Frameworks/data.mono.osx.universal.release_debug/Mono
+cp -rp out/macosx/templates-mono/data.mono.osx.universal.release_debug/Mono/etc osx_template.app/Contents/Resources/data.mono.osx.universal.release_debug/Mono

@bruvzg
Copy link
Member

bruvzg commented Nov 23, 2020

Was just seeing problems if you enable "Hardened Runtime" without an accompanying entitlements file letting Mono work.

There's an option to add entitlements file, but we probably do need to add default one for the Mono exports.

@sjml
Copy link
Contributor Author

sjml commented Nov 23, 2020

There are few dylibs in the GodotSharp/Mono/lib, even if signing will work with --deep, it's not the correct way to put them to the Resources.

Only etc should be in Resources, and --deep should not be necessary:

I know that's the preferred way, but codesign won't accept it. The current editor is also not able to be codesigned -- we get this error:

Godot_mono.app: bundle format unrecognized, invalid, or unsuitable
In subcomponent: /Applications/Godot_mono.app/Contents/Frameworks/GodotSharp/Mono/lib/mono/4.5

The problem is that the library files are nested in directories that include periods, which makes codesign try to treat them like a bundle... and then it doesn't recognize the type of bundle, so it craps out.

So we either need to rename those directories (and probably patch Mono to deal with a new naming structure) or we need to put them someplace else in the .app layout. The only other option I see is looking into something like mkbundle, unless I'm missing something.

@sjml
Copy link
Contributor Author

sjml commented Nov 23, 2020

There's an option to add entitlements file, but we probably do need to add default one for the Mono exports.

Where should that file live? Or should it be generated/inserted during the export if the user hasn't defined one?

Easiest solution would be to just have the export fail with a very specific error message, but I'm not sure how we feel about that.

@bruvzg
Copy link
Member

bruvzg commented Nov 23, 2020

The problem is that the library files are nested in directories that include periods, which makes codesign try to treat them like a bundle... and then it doesn't recognize the type of bundle, so it craps out.

In the export there's only three dylibs right in the lib, without any nested folders. I missed there's other stuff in the editor. But it's dlls, in there not macOS libraries, only dylibs should stay in Frameworks.

Something like:

cp -rp out/macosx/tools-mono/GodotSharp/Api Godot_mono.app/Contents/Resources/GodotSharp
cp -rp out/macosx/tools-mono/GodotSharp/Tools Godot_mono.app/Contents/Resources/GodotSharp
cp -rp out/macosx/tools-mono/GodotSharp/Mono/lib/*.dylib Godot_mono.app/Contents/Frameworks/GodotSharp/Mono
cp -rp out/macosx/tools-mono/GodotSharp/Mono/lib/mono Godot_mono.app/Contents/Resources/GodotSharp/Mono/lib
cp -rp out/macosx/tools-mono/GodotSharp/Mono/etc Godot_mono.app/Contents/Resources/GodotSharp/Mono

@sjml
Copy link
Contributor Author

sjml commented Nov 23, 2020

Ah, ok. I see what you're saying. Yes, that makes sense. We can leave the .dylibs in there and move the .dlls to Resources, then? Let me cook a little bit and make sure that will work the way we need it to. Thanks for checking.

@bruvzg
Copy link
Member

bruvzg commented Nov 23, 2020

We can leave the .dylibs in there and move the .dlls to Resources, then?

Exactly, dylibs in Frameworks, everything else in Resources.

@sjml
Copy link
Contributor Author

sjml commented Nov 23, 2020

I have a codesignable build of the editor working with the desired layout, and changes to the library loading code, which allays my fears from caveat number 3 in the initial PR description.

There's a small issue, though, in that Mono really expects lib to be a single directory, not two. Right now I have the code set up to consider Resources/GodotSharp/Mono/lib to be the "true" library directory, where the runtime finds all of its goodies. However, it wants to load the .dylibs during initialization, and it pulls their locations from Resources/GodotSharp/Mono/etc/mono/config, where they are defined as living in $mono_libdir/. I got my build working by hand-patching this file to $mono_libdir/../../../../Frameworks/GodotSharp/Mono/lib.

On top of being aesthetically displeasing (I'm going to experiment and see if things really need to be that nested), it has a bit of a code smell to it. But it does work.

@bruvzg, how do you feel about this? Is it something that should be addressed by the mono-build scripts, or is doing some (relatively easy) processing on the config file ok? Right now I have it working with a simple sed one-liner.

(Holding off on updating the export templates until we feel solid about the editor build, but they're a relatively easy setup once it's good.)

@sjml
Copy link
Contributor Author

sjml commented Nov 24, 2020

Starting on the export stuff, and I think I've got it working. One thing I'm not able to test is data_game_assemblies_dir. It used to get set to ../Frameworks/GodotSharp/Assemblies but since they would be .dll files I thought they'd be better put in Resources.

How does this get used, though? So far as I can tell all the assemblies referenced in the project get put into the .pck during export. Is this for people who might need to add their own assemblies for manual loading later?

If someone has an example project that uses extra assemblies like this, I'm happy to check that it still works.


Also: I'm seeing the Mono: Core API hash mismatch error on debug exports, but a quick perusal of the repository issues seems to indicate that's safely ignored? Or at least common while development is unstable? Just wanted to raise it in case it was something that needed to be fixed before this stuff gets merged.

@sjml
Copy link
Contributor Author

sjml commented Dec 1, 2020

I've rebased this to master -- any additional thoughts on how best to handle the modifications to the config file?

@neikeq
Copy link
Contributor

neikeq commented Dec 6, 2020

  1. The export no longer has a folder called data_{GAMENAME}, since the Mono distribution is more split up through the .app. I assume it was originally called that to have parity with the Linux and Windows exports, but since Mac applications are all bundled together and those details are invisible to the user, I didn't think that needed to be preserved. If it's significant for some other reason, please let me know.

This was make like this to make it easy to debug Godot during development. Having to create an app bundle complicates things.

@neikeq
Copy link
Contributor

neikeq commented Dec 6, 2020

From what I understand now we have the data folder for macOS split between data.*.frameworks.* and data.*.resources.*. Yet this split is something that is done by godot-build-scripts rather than the mono module build in this repo which still creates the unified data directory:

def make_template_dir(env, mono_root):
from shutil import rmtree
platform = env["platform"]
target = env["target"]
template_dir_name = ""
assert is_desktop(platform)
template_dir_name = "data.mono.%s.%s.%s" % (platform, env["bits"], target)
output_dir = Dir("#bin").abspath
template_dir = os.path.join(output_dir, template_dir_name)
template_mono_root_dir = os.path.join(template_dir, "Mono")
if os.path.isdir(template_mono_root_dir):
rmtree(template_mono_root_dir) # Clean first
# Copy etc/mono/
template_mono_config_dir = os.path.join(template_mono_root_dir, "etc", "mono")
copy_mono_etc_dir(mono_root, template_mono_config_dir, platform)
# Copy the required shared libraries
copy_mono_shared_libs(env, mono_root, template_mono_root_dir)

IMO we should make the mono module build take care of it. This makes it less problematic for godot-build-scripts. Keeping this logic in the SCons build is also good as not everyone else uses our release build scripts.

@sjml
Copy link
Contributor Author

sjml commented Dec 6, 2020

This was make like this to make it easy to debug Godot during development. Having to create an app bundle complicates things.

I was finding that I couldn't get the master to run at all without an app bundle, as it was the only way to make it consistently find libMoltenVK.dylib. That said, I didn't spend too much time trying to fix it once I resigned myself to building the app bundle. I definitely don't want to make ongoing dev more complicated at the expense of shipping builds being signable.

I agree it would be nice to keep the Mono files all together, but to get a signable directory layout that is set up the way @bruvzg (and Apple guidelines) prefer, it looks like it will have to be split. Would you want to see this behind a flag set by SCons so that it only happens during the shipping builds?

@bruvzg
Copy link
Member

bruvzg commented Dec 6, 2020

I was finding that I couldn't get the master to run at all without an app bundle, as it was the only way to make it consistently find libMoltenVK.dylib.

It's possible to run a standalone executable by setting VK_ICD_FILENAMES environment variable (e.g. running it using VK_ICD_FILENAMES=./MoltenVK_icd.json ./godot command), with the absolute path to the dylib in the .json, or by placing the same .json in the vulkan/icd.d/ subfolder in the executable folder (in case of bundle it's in Resources/vulkan/icd.d/ and have relative path to dylib).

@sjml
Copy link
Contributor Author

sjml commented Dec 6, 2020

It's possible to run a standalone executable by setting VK_ICD_FILENAMES environment variable (e.g. running it using VK_ICD_FILENAMES=./MoltenVK_icd.json ./godot command), with the absolute path to the dylib in the .json, or by placing the same .json in the vulkan/icd.d/ subfolder in the executable folder (in case of bundle it's in Resources/vulkan/icd.d/ and have relative path to dylib).

Yeah, for some reason I couldn't it to load the .json file from the path in the environment variable. Didn't try placing it in a subdirectory next to the executable, though. Like I said, I didn't push on it too hard since it seemed like things were kind of in flux and I had something working.

@neikeq
Copy link
Contributor

neikeq commented Dec 6, 2020

I was finding that I couldn't get the master to run at all without an app bundle, as it was the only way to make it consistently find libMoltenVK.dylib. ...

Ah, I see. I haven't touched macOS with master after the Vulkan merge, only with 3.2. If latest master no longer supports running without creating an app bundle then I guess this change is fine.

I agree it would be nice to keep the Mono files all together, but to get a signable directory layout that is set up the way @bruvzg (and Apple guidelines) prefer, it looks like it will have to be split. Would you want to see this behind a flag set by SCons so that it only happens during the shipping builds?

I don't want to keep these files all together in a single data directory, I'm fine with the change. I want it to be SCons who outputs these files already split into the two directories (data.*.frameworks.* and data.*.resources.*).

@akien-mga
Copy link
Member

The changes suggested by @neikeq would still need to be added to this PR, are you available to work further on it @sjml?
We're actually in the process of figuring out signing and notarization for official releases so this will be quite useful for the upcoming 3.2.4 release.

@sjml
Copy link
Contributor Author

sjml commented Feb 2, 2021

The changes suggested by @neikeq would still need to be added to this PR, are you available to work further on it @sjml?
We're actually in the process of figuring out signing and notarization for official releases so this will be quite useful for the upcoming 3.2.4 release.

Hello! Sorry I went MIA -- my Godot project was backburnered for a bit and I had some real-life things crop up as well. I have some bandwidth in the next week or so to jump in on this, though, so will review the changes ASAP. What's the current timetable on 3.2.4?

@akien-mga
Copy link
Member

What's the current timetable on 3.2.4?

Hard to say as it depends on which bugs are found and are critical enough to delay the release. But the best case would be within the next two weeks.

@sjml
Copy link
Contributor Author

sjml commented Feb 2, 2021

Hard to say as it depends on which bugs are found and are critical enough to delay the release. But the best case would be within the next two weeks.

Great, good to know. I'll get my branch synced to the master in the next few days and then can hopefully apply the changes by the end of the week/end. Thanks for poking me!

@sjml
Copy link
Contributor Author

sjml commented Feb 9, 2021

Quick update: I'm living in a region with very flaky internet and have had trouble pulling the Godot repo, and since Git doesn't do well with resuming broken transfers, it's been a pain. Currently have a workflow that involves SSHing to a more stable connection, tarballing the repo there and then using other transfer methods that can resume when they stall... but you can imagine that it impedes the process a bit. 😉

Still working here, but I can't promise it in time for 3.2.4. Sorry about that. Will update when I can. 😢

@sjml sjml requested review from a team as code owners March 2, 2021 10:30
@akien-mga
Copy link
Member

I went ahead and rebased this PR + amended @neikeq's changes from #43768 (comment) directly into the commit (I could have kept them as separate commits but it seems they're both necessary parts of the same change so it's best in a single commit IMO).

I haven't actually tested the changes yet, but I'll do a 3.2 backport and see if it enables me to sign the macOS editor for 3.2.4-rc.

@akien-mga
Copy link
Member

@neikeq With your changes applied I get the following structure after compiling an editor build:

.
./GodotSharp
./GodotSharp/Tools
./GodotSharp/Tools/GodotTools.IdeMessaging.dll
./GodotSharp/Tools/Microsoft.Build.dll
./GodotSharp/Tools/Microsoft.Build.Framework.dll
./GodotSharp/Tools/Newtonsoft.Json.dll
./GodotSharp/Tools/Semver.dll
./GodotSharp/Tools/Microsoft.VisualStudio.Setup.Configuration.Interop.dll
./GodotSharp/Tools/System.Buffers.dll
./GodotSharp/Tools/System.Collections.Immutable.dll
./GodotSharp/Tools/System.Memory.dll
./GodotSharp/Tools/System.Numerics.Vectors.dll
./GodotSharp/Tools/System.Runtime.CompilerServices.Unsafe.dll
./GodotSharp/Tools/System.Threading.Tasks.Dataflow.dll
./GodotSharp/Tools/GodotTools.BuildLogger.dll
./GodotSharp/Tools/GodotTools.ProjectEditor.dll
./GodotSharp/Tools/GodotTools.Core.dll
./GodotSharp/Tools/GodotTools.Core.pdb
./GodotSharp/Tools/GodotTools.BuildLogger.pdb
./GodotSharp/Tools/GodotTools.ProjectEditor.pdb
./GodotSharp/Tools/MSBuild.exe
./GodotSharp/Tools/GodotTools.dll
./GodotSharp/Tools/GodotTools.pdb
./GodotSharp/Api
./GodotSharp/Api/Release
./GodotSharp/Api/Release/GodotSharp.dll
./GodotSharp/Api/Release/GodotSharp.pdb
./GodotSharp/Api/Release/GodotSharp.xml
./GodotSharp/Api/Release/GodotSharpEditor.dll
./GodotSharp/Api/Release/GodotSharpEditor.pdb
./GodotSharp/Api/Release/GodotSharpEditor.xml
./GodotSharp/Api/Debug
./GodotSharp/Api/Debug/GodotSharp.dll
./GodotSharp/Api/Debug/GodotSharp.pdb
./GodotSharp/Api/Debug/GodotSharp.xml
./GodotSharp/Api/Debug/GodotSharpEditor.dll
./GodotSharp/Api/Debug/GodotSharpEditor.pdb
./GodotSharp/Api/Debug/GodotSharpEditor.xml
./GodotSharp.frameworks
./GodotSharp.frameworks/Mono
./GodotSharp.frameworks/Mono/lib
./GodotSharp.frameworks/Mono/lib/libmono-btls-shared.dylib
./GodotSharp.frameworks/Mono/lib/libmono-native-compat.dylib
./GodotSharp.frameworks/Mono/lib/libMonoPosixHelper.dylib
./GodotSharp.resources
./GodotSharp.resources/Mono
./GodotSharp.resources/Mono/etc
./GodotSharp.resources/Mono/etc/mono
./GodotSharp.resources/Mono/etc/mono/2.0
./GodotSharp.resources/Mono/etc/mono/2.0/DefaultWsdlHelpGenerator.aspx
./GodotSharp.resources/Mono/etc/mono/2.0/machine.config
./GodotSharp.resources/Mono/etc/mono/2.0/settings.map
./GodotSharp.resources/Mono/etc/mono/2.0/web.config
./GodotSharp.resources/Mono/etc/mono/2.0/Browsers
./GodotSharp.resources/Mono/etc/mono/2.0/Browsers/Compat.browser
./GodotSharp.resources/Mono/etc/mono/4.5
./GodotSharp.resources/Mono/etc/mono/4.5/DefaultWsdlHelpGenerator.aspx
./GodotSharp.resources/Mono/etc/mono/4.5/machine.config
./GodotSharp.resources/Mono/etc/mono/4.5/settings.map
./GodotSharp.resources/Mono/etc/mono/4.5/web.config
./GodotSharp.resources/Mono/etc/mono/4.5/Browsers
./GodotSharp.resources/Mono/etc/mono/4.5/Browsers/Compat.browser
./GodotSharp.resources/Mono/etc/mono/4.0
./GodotSharp.resources/Mono/etc/mono/4.0/DefaultWsdlHelpGenerator.aspx
./GodotSharp.resources/Mono/etc/mono/4.0/machine.config
./GodotSharp.resources/Mono/etc/mono/4.0/settings.map
./GodotSharp.resources/Mono/etc/mono/4.0/web.config
./GodotSharp.resources/Mono/etc/mono/4.0/Browsers
./GodotSharp.resources/Mono/etc/mono/4.0/Browsers/Compat.browser
./GodotSharp.resources/Mono/etc/mono/mconfig
./GodotSharp.resources/Mono/etc/mono/mconfig/config.xml
./GodotSharp.resources/Mono/etc/mono/browscap.ini
./GodotSharp.resources/Mono/etc/mono/config
./GodotSharp.resources/Mono/lib
./GodotSharp.resources/Mono/lib/mono
./GodotSharp.resources/Mono/lib/mono/4.5
./GodotSharp.resources/Mono/lib/mono/4.5/Accessibility.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Commons.Xml.Relaxng.dll
./GodotSharp.resources/Mono/lib/mono/4.5/CustomMarshalers.dll
./GodotSharp.resources/Mono/lib/mono/4.5/I18N.CJK.dll
./GodotSharp.resources/Mono/lib/mono/4.5/I18N.MidEast.dll
./GodotSharp.resources/Mono/lib/mono/4.5/I18N.Other.dll
./GodotSharp.resources/Mono/lib/mono/4.5/I18N.Rare.dll
./GodotSharp.resources/Mono/lib/mono/4.5/I18N.West.dll
./GodotSharp.resources/Mono/lib/mono/4.5/I18N.dll
./GodotSharp.resources/Mono/lib/mono/4.5/IBM.Data.DB2.dll
./GodotSharp.resources/Mono/lib/mono/4.5/ICSharpCode.SharpZipLib.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.Build.Engine.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.Build.Framework.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.Build.Tasks.v4.0.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.Build.Utilities.v4.0.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.Build.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.CSharp.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.CodeAnalysis.CSharp.Scripting.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.CodeAnalysis.CSharp.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.CodeAnalysis.Scripting.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.CodeAnalysis.VisualBasic.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.CodeAnalysis.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.VisualC.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Microsoft.Web.Infrastructure.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Btls.Interface.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.CSharp.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Cairo.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.CodeContracts.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.CompilerServices.SymbolWriter.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Data.Sqlite.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Data.Tds.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Debugger.Soft.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Http.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Management.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Messaging.RabbitMQ.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Messaging.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Parallel.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Posix.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Profiler.Log.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Security.Win32.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Security.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Simd.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.Tasklets.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.WebBrowser.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Mono.XBuild.Tasks.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Novell.Directory.Ldap.dll
./GodotSharp.resources/Mono/lib/mono/4.5/PEAPI.dll
./GodotSharp.resources/Mono/lib/mono/4.5/RabbitMQ.Client.dll
./GodotSharp.resources/Mono/lib/mono/4.5/SMDiagnostics.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Collections.Immutable.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.ComponentModel.Composition.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.ComponentModel.DataAnnotations.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Configuration.Install.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Configuration.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Core.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Data.DataSetExtensions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Data.Entity.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Data.Linq.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Data.OracleClient.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Data.Services.Client.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Data.Services.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Data.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Deployment.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Design.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.DirectoryServices.Protocols.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.DirectoryServices.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Drawing.Design.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Drawing.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Dynamic.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.EnterpriseServices.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.IO.Compression.FileSystem.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.IO.Compression.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.IdentityModel.Selectors.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.IdentityModel.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Json.Microsoft.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Json.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Management.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Memory.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Messaging.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Net.Http.Formatting.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Net.Http.WebRequest.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Net.Http.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Net.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Numerics.Vectors.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Numerics.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reactive.Core.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reactive.Debugger.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reactive.Experimental.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reactive.Interfaces.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reactive.Linq.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Security.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reactive.Observable.Aliases.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reactive.PlatformServices.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reactive.Providers.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reactive.Runtime.Remoting.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reactive.Windows.Forms.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reactive.Windows.Threading.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reflection.Context.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Reflection.Metadata.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Runtime.Caching.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.Http.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Runtime.CompilerServices.Unsafe.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Runtime.DurableInstancing.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Runtime.Remoting.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Runtime.Serialization.Formatters.Soap.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Runtime.Serialization.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.ServiceModel.Activation.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.ServiceModel.Discovery.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.ServiceModel.Internals.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.ServiceModel.Routing.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.ServiceModel.Web.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.ServiceModel.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.ServiceProcess.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Threading.Tasks.Dataflow.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Threading.Tasks.Extensions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Transactions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.Abstractions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.ApplicationServices.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.DynamicData.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.Extensions.Design.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.Extensions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.Http.SelfHost.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.Http.WebHost.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.Mobile.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.Mvc.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.Razor.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.RegularExpressions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.Routing.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.Services.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.WebPages.Deployment.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.WebPages.Razor.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.WebPages.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Web.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Windows.Forms.DataVisualization.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Windows.Forms.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Windows.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Workflow.Activities.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Workflow.ComponentModel.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Workflow.Runtime.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Xaml.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Xml.Linq.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Xml.Serialization.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.Xml.dll
./GodotSharp.resources/Mono/lib/mono/4.5/System.dll
./GodotSharp.resources/Mono/lib/mono/4.5/WebMatrix.Data.dll
./GodotSharp.resources/Mono/lib/mono/4.5/WindowsBase.dll
./GodotSharp.resources/Mono/lib/mono/4.5/cscompmgd.dll
./GodotSharp.resources/Mono/lib/mono/4.5/mscorlib.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.IO.Compression.ZipFile.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.IO.FileSystem.AccessControl.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.IO.FileSystem.DriveInfo.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.IO.FileSystem.Primitives.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.IO.FileSystem.Watcher.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.IO.FileSystem.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.IO.IsolatedStorage.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.IO.MemoryMappedFiles.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.IO.Pipes.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.IO.UnmanagedMemoryStream.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.IO.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Linq.Expressions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Linq.Parallel.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Linq.Queryable.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Linq.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.AuthenticationManager.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.Cache.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.Http.Rtc.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.HttpListener.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.Mail.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.NameResolution.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.NetworkInformation.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.Ping.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.Primitives.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.Requests.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.Security.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.ServicePoint.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.Sockets.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.Utilities.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.WebHeaderCollection.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.WebSockets.Client.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Net.WebSockets.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ObjectModel.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Reflection.Emit.ILGeneration.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Reflection.Emit.Lightweight.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Reflection.Emit.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Reflection.Extensions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Reflection.Primitives.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Reflection.TypeExtensions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Reflection.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Resources.Reader.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Resources.ReaderWriter.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Resources.ResourceManager.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Resources.Writer.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.CompilerServices.VisualC.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.Extensions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.Handles.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.InteropServices.RuntimeInformation.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.InteropServices.WindowsRuntime.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.InteropServices.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.Numerics.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.Serialization.Formatters.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.Serialization.Json.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.Serialization.Primitives.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.Serialization.Xml.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Runtime.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.AccessControl.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Claims.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Algorithms.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Csp.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.DeriveBytes.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Encoding.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Encryption.Aes.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Encryption.ECDiffieHellman.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/Microsoft.Win32.Primitives.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/Microsoft.Win32.Registry.AccessControl.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/Microsoft.Win32.Registry.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.AppContext.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Collections.Concurrent.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Collections.NonGeneric.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Collections.Specialized.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Collections.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ComponentModel.Annotations.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ComponentModel.EventBasedAsync.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ComponentModel.Primitives.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ComponentModel.TypeConverter.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ComponentModel.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Console.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Data.Common.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Data.SqlClient.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Diagnostics.Contracts.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Diagnostics.Debug.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Diagnostics.FileVersionInfo.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Diagnostics.Process.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Diagnostics.StackTrace.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Diagnostics.TextWriterTraceListener.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Diagnostics.Tools.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Diagnostics.TraceEvent.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Diagnostics.TraceSource.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Diagnostics.Tracing.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Drawing.Primitives.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Dynamic.Runtime.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Globalization.Calendars.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Globalization.Extensions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Globalization.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Encryption.ECDsa.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Encryption.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Hashing.Algorithms.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Hashing.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Primitives.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.ProtectedData.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.RSA.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.RandomNumberGenerator.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.X509Certificates.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Principal.Windows.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.Principal.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Security.SecureString.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ServiceModel.Duplex.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ServiceModel.Http.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ServiceModel.NetTcp.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ServiceModel.Primitives.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ServiceModel.Security.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ServiceProcess.ServiceController.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Text.Encoding.CodePages.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Text.Encoding.Extensions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Text.Encoding.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Text.RegularExpressions.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Threading.AccessControl.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Threading.Overlapped.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Threading.Tasks.Parallel.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Threading.Tasks.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Threading.Thread.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Threading.ThreadPool.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Threading.Timer.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Threading.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.ValueTuple.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Xml.ReaderWriter.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Xml.XDocument.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Xml.XPath.XDocument.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Xml.XPath.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Xml.XmlDocument.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Xml.XmlSerializer.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/System.Xml.Xsl.Primitives.dll
./GodotSharp.resources/Mono/lib/mono/4.5/Facades/netstandard.dll
./GodotSharp.resources/Tools
./godot.osx.opt.tools.x86_64.mono

I suspect that the files under GodotSharp are meant to be in GodotSharp.resources too?

@akien-mga
Copy link
Member

I fixed the issue with Api which had been missed in the patch, and I'll debug what's happening for Tools (the code seems correct).

@akien-mga
Copy link
Member

akien-mga commented Mar 2, 2021

Reverting my change for Api as it breaks the solution build. For the reference, the change was:

diff --git a/modules/mono/build_scripts/api_solution_build.py b/modules/mono/build_scripts/api_solution_build.py
index 9abac22df6..b2417ddc8e 100644
--- a/modules/mono/build_scripts/api_solution_build.py
+++ b/modules/mono/build_scripts/api_solution_build.py
@@ -62,7 +62,11 @@ def build(env_mono):
 
     for build_config in ["Debug", "Release"]:
         output_dir = Dir("#bin").abspath
-        editor_api_dir = os.path.join(output_dir, "GodotSharp", "Api", build_config)
+        editor_api_dir = (
+            os.path.join(output_dir, "GodotSharp", "Api", build_config)
+            if env_mono["platform"] != "osx"
+            else os.path.join(output_dir, "GodotSharp.resources", "Api", build_config)
+        )
 
         targets = [os.path.join(editor_api_dir, filename) for filename in target_filenames]
 

@akien-mga akien-mga changed the title Fixing Mono export to allow codesigning on Mac exports Mono/macOS: Separate data dir into frameworks and resources for codesigning Mar 2, 2021
akien-mga added a commit to godotengine/godot-build-scripts that referenced this pull request Mar 2, 2021
This allows signing the editor .app (will be done in next commit) and should
let users sign their macOS exports.

Co-authored-by: Shane Liesegang <shane@techie.net>
@akien-mga
Copy link
Member

See godotengine/godot-build-scripts#24, the editor .app which I can generate with this PR can now be signed and notarized but it's broken, it can't find the Mono libs. Help needed :)

…igning

Co-authored-by: Ignacio Etcheverry <ignalfonsore@gmail.com>
@neikeq
Copy link
Contributor

neikeq commented Mar 3, 2021

In the end we decided to put everything in Contents/Resources/GodotSharp/. I updated the commit accordingly.
This goes together with godotengine/godot-build-scripts#24 which needs to be updated to work with this last change.
I removed --deep since that is not needed with #46618.

@akien-mga akien-mga merged commit 338fa05 into godotengine:master Mar 3, 2021
@akien-mga
Copy link
Member

Thanks everyone for the joint work on this issue!

I'll update container build scripts soon and make some binaries to confirm that all works as expected.

@@ -114,7 +114,7 @@ class EditorExportPlatformOSX : public EditorExportPlatform {
virtual void get_platform_features(List<String> *r_features) override {
r_features->push_back("pc");
r_features->push_back("s3tc");
r_features->push_back("OSX");
r_features->push_back("macOS");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line should be skipped on cherry-picking to 3.2.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the reminder!

@akien-mga
Copy link
Member

Cherry-picked for 3.2.4.

@akien-mga akien-mga removed the cherrypick:3.x Considered for cherry-picking into a future 3.x release label Mar 4, 2021
akien-mga added a commit to godotengine/godot-build-scripts that referenced this pull request Mar 4, 2021
This allows signing the editor .app (will be done in next commit) and should
let users sign their macOS exports.

Co-authored-by: Shane Liesegang <shane@techie.net>
akien-mga added a commit to godotengine/godot-build-scripts that referenced this pull request Mar 4, 2021
This allows signing the editor .app (will be done in next commit) and should
let users sign their macOS exports.

Co-authored-by: Shane Liesegang <shane@techie.net>
@akien-mga akien-mga changed the title Mono/macOS: Separate data dir into frameworks and resources for codesigning Mono/macOS: Move GodotSharp data to Resources to allow codesigning Mar 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Codesigning silently fails on Mac Mono exports
5 participants