graalvm / simplelanguage

A simple example language built using the Truffle API.
http://openjdk.java.net/projects/graal/
Universal Permissive License v1.0
612 stars 198 forks source link

The sl shell script doesn't work when installed using gu #103

Open mthmulders opened 4 years ago

mthmulders commented 4 years ago

Steps to reproduce Inside a fresh checkout of the project:

  1. Build the GraalVM component with mvn package --am --pl ./component.
  2. Install the component in a GraalVM installation with gu install -L component/sl-component.jar.
  3. Run sl language/tests/HelloWorld.sl

Expected situation Output is something like "Hello World!"

Actual behaviour Output is

Could not find language on /usr/bin/language/target/simplelanguage.jar. Did you run mvn package?

Analysis I believe this is due to the fact that the sl script in the project root fails to detect it is invoked from an installed GraalVM component and so it follows the path for "local" invocations, i.e. from the project checkout.

The sl binary from the component is symlinked into /usr/bin, so extracting the GraalVM version by inspecting "$SCRIPT_HOME/../release" fails.

mthmulders commented 4 years ago

I think it can be fixed by following the symlink (/usr/bin/sl) using readlink -f, and updating the relative paths to the language jar and the launcher jar accordingly.