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

ensoup broken due to 2024.5.1.rc3 #11794

Closed
JaroslavTulach opened this issue Dec 6, 2024 · 4 comments · Fixed by #11796
Closed

ensoup broken due to 2024.5.1.rc3 #11794

JaroslavTulach opened this issue Dec 6, 2024 · 4 comments · Fixed by #11796
Labels
-compiler -libs Libraries: New libraries to be implemented -tooling Category: tooling

Comments

@JaroslavTulach
Copy link
Member

JaroslavTulach commented Dec 6, 2024

The latest stable version of ensoup is broken, @radeusgd. To reproduce:

$ wget https://github.com/enso-org/enso/releases/download/2024.4.2/enso-launcher-2024.4.2-linux-amd64.tar.gz
$ tar fxvz enso-launcher-2024.4.2-linux-amd64.tar.gz
$ ./enso/bin/ensoup install engine
$ ./enso/bin/ensoup run Dec01
Error: Could not find or load main class org.enso.EngineRunnerBootLoader in module org.enso.runtime

technically this problem is caused by incompatibility introduced by

which has changed the runner entrypoint.

However the biggest problem is that ensoup 2024.4.2 downloads 2024.5.1-rc3

$ ./enso/bin/ensoup list
Enso 2024.5.1-rc3 -> GraalVM 24.0.0-java21.0.2

Either there has to be a way to

  • "tell" ensoup (even already released one like 2024.4.2) it is no longer compatible with some future release
  • or ensoup shouldn't be adventurous and download unknown latest version (given current state of (in)compatibility of Enso development)
  • ensoup only download stable releases - why does it download 2024.5.1-rc3 at all?
  • keep the interface between ensoup and enso stable - e.g. don't change the main class

I discovered this problem while investigating use of ensoup inside of Enso VSCode Extension to download Enso engine for users that have a Enso file or project, but don't have anything to invoke it.

@JaroslavTulach JaroslavTulach added -tooling Category: tooling -compiler -libs Libraries: New libraries to be implemented labels Dec 6, 2024
@github-project-automation github-project-automation bot moved this to ❓New in Issues Board Dec 6, 2024
@4e6
Copy link
Contributor

4e6 commented Dec 6, 2024

$ ./enso/bin/ensoup run Dec01
Error: Could not find or load main class org.enso.EngineRunnerBootLoader in module org.enso.runtime

I guess, to stabilize things ensoup run should rely on calling the enso executable and not trying to invoke Java directly

@radeusgd
Copy link
Member

radeusgd commented Dec 6, 2024

$ ./enso/bin/ensoup run Dec01
Error: Could not find or load main class org.enso.EngineRunnerBootLoader in module org.enso.runtime

I guess, to stabilize things ensoup run should rely on calling the enso executable and not trying to invoke Java directly

The enso executable uses whatever Java is on the Path. One of the main purposes of ensoup was managing JVM installations tied to Enso, so that Enso is run on the right JVM for each version. The idea behind ensoup was that the user may not need to install Java on their system - ensoup will handle that for the user. Leaving that out and running enso binary directly kind of misses the point.

Well we could set JAVA_HOME to the selected JVM and then run the enso executable. But that would be an even more breaking change to ensoup.

ensoup has facilities for saying that a newer engine version requires a newer version of launch logic due to updates. The problem is that these facilities were not used when the breaking change happened in #10823. I'm sorry I missed that in review - I could have seen it before going on vacation, but it wasn't yet ready back then - and then the change was merged when I was away so I didn't get a chance to catch it.

I'm also worried that the change was actually done in such a way that newer ensoup cannot run old engine versions either. I will see if I can amend this and keep the incompatibility window only between a few versions.

@JaroslavTulach
Copy link
Member Author

$ ./enso/bin/ensoup run Dec01
Error: Could not find or load main class org.enso.EngineRunnerBootLoader in module org.enso.runtime

I guess, to stabilize things ensoup run should rely on calling the enso executable and not trying to invoke Java directly

The enso executable uses whatever Java is on the Path. One of the main purposes of ensoup was managing JVM installations tied to Enso, so that Enso is run on the right JVM for each version.

There are changes related to #10121:

The idea behind ensoup was that the user may not need to install Java on their system - ensoup will handle that for the user. Leaving that out and running enso binary directly kind of misses the point.

Not if the enso executable is real executable - e.g. once ideas in #10121 are implemented. Once that done users will be able to invoke enso without having JVM installed.

Well we could set JAVA_HOME to the selected JVM and then run the enso executable. But that would be an even more breaking change to ensoup.

I am not sure what exactly would it be breaking? Anyway, the direction for the future is clear: ensoup has to invoke enso executable - note taken - otherwise we will not be able to make enso a native executable.

@radeusgd
Copy link
Member

radeusgd commented Dec 9, 2024

Anyway, the direction for the future is clear: ensoup has to invoke enso executable - note taken - otherwise we will not be able to make enso a native executable.

Ok, I see. With all the arguments above, I'm convinced to change the execution scheme. Let's just ensure we do it in a compatible way this time.

jdunkerley pushed a commit that referenced this issue Dec 10, 2024
…grade to compatible version (#11796)

- Closes #11794

(cherry picked from commit 106e112)
jdunkerley pushed a commit that referenced this issue Dec 10, 2024
…grade to compatible version (#11796)

- Closes #11794

(cherry picked from commit 106e112)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-compiler -libs Libraries: New libraries to be implemented -tooling Category: tooling
Projects
Status: 🟢 Accepted
3 participants