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

Orchestrator installation fails with default toogle (Ignore asset root) #854

Open
ShalokShalom opened this issue Jan 17, 2025 · 4 comments
Labels
kind/bug A bug or regression in expected behavior.

Comments

@ShalokShalom
Copy link

Describe the bug

The default setting for Assetlib enables the recently introduced setting "Ignore asset root"

If we are trying to install Orchestrator with this setting on, it fails the installation.

I am on Linux, and it installs into
/home/shalok/polarity-of-souls/orchestrator/

and the error message says to me, that it expects it to be in

/home/shalok/polarity-of-souls/addons/orchestrator/

instead.

Expected behavior

Orchestrator installs normally from Assetlib.

Actual behavior

Orchestrator fails the installation (but says it was successful in a pop-up) due to these reasons:

  drivers/unix/os_unix.cpp:806 - Condition "!FileAccess::exists(path)" is true. Returning: ERR_FILE_NOT_FOUND
  GDExtension dynamic library not found: /home/shalok/polarity-of-souls/addons/orchestrator/orchestrator.linux.64.release.so
  Failed loading resource: res://orchestrator/orchestrator.gdextension. Make sure resources have been imported by opening the project in the editor at least once.
  drivers/unix/os_unix.cpp:806 - Condition "!FileAccess::exists(path)" is true. Returning: ERR_FILE_NOT_FOUND
  GDExtension dynamic library not found: /home/shalok/polarity-of-souls/addons/orchestrator/orchestrator.linux.64.release.so
  Failed loading resource: res://orchestrator/orchestrator.gdextension. Make sure resources have been imported by opening the project in the editor at least once.

Image

How to Reproduce?

  1. Open Godot
  2. Install Orchestrator from Assetlib
  3. See the error log

Maybe it is Linux exclusive

Godot full version

4.3

Orchestrator version

current

Additional information

No response

@ShalokShalom ShalokShalom added the kind/bug A bug or regression in expected behavior. label Jan 17, 2025
@Naros
Copy link
Member

Naros commented Jan 20, 2025

Unfortunately, this isn't something that can be addressed as a plug-in, but is rather an issue with how Godot and its AssetLib are designed to work in a very brittle way.

I spoke with Calinou from the Godot dev team about this sometime ago, and they confirmed that this was a known issue for plug-in authors who build redistribution archives the correct way, but that given many authors don't, that's what creates the problem with this "Asset root" option.

Most plug-in authors chose to simply provide a reference to their GitHub repository, which requires that the AssetLib make a request to GitHub, GitHub zips up the repository, and provides the Godot client with this ZIP archive. This GitHub process is designed to create a random top-level directory, hence why there is this "Ignore asset root" toggle.

So GitHub downloads are built like:

<some-random-hex-hash>/addons/orchestrator/...

When you create an actual distribution for your plug-in, you have a downloadable ZIP file that you usually attached to a release on GitHub, and that archive does not have a random top-level directory, but instead is built to be directly unzipped into the project root folder like as follows:

addons/orchestrator/...

In the discussions with Calinou, they acknowledged that the issue is that plug-ins should ship with a manifest like file that can then be used to determine how the editor should interpret the file structure.

See godotengine/godot-proposals#7925

@ShalokShalom
Copy link
Author

Could we issue a warning? The engine even reports, that the plugin was installed correctly.

@Naros
Copy link
Member

Naros commented Jan 23, 2025

Could we issue a warning?

Unfortunately, I don't believe that's possible.

The plug-in does not have any control over the AssetLib installation at all, and the library will only be loaded when the editor is restarted. The problem then is that the .gdextension file refers to a specific path in the project and if the user installs the plug-in in the wrong path that doesn't match, then the library is never loaded at all and there is no way for the plug-in to execute any code at all.

So in effect its a 🐔 and 🥚 issue 😦 .

@ShalokShalom
Copy link
Author

Sounds like many people will just stumble into this and think Orchestrator is broken.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug A bug or regression in expected behavior.
Projects
None yet
Development

No branches or pull requests

2 participants