enso/build
Hubert Plociniczak 80646f8897 More info when critical failure occurs (#11092)
* More info when critical failure occurs

Log problematic module to help with debugging critical failure.

* One more exception

* s/System.err/Logger.error/

* maybe append slf4j deps

* fix what looks like a long standing typo

`GeneratedFormatTests.java` not `GeneratedFormatTests..java`

* one more typo

* Fix directory where to look for classpath

`./run java-gen test --skip-version-check` now works. At least locally.

* Local is fine, CI is not. More temporary debugging...

* Ensure project's managedClasspath is exported

Running java tests requires us knowing all additional dependencies as
they have to be added to the classpath manually. That can only be
ensured by invoking the right sbt target.

* Move sbt call after graalvm setup

* removing CI debugging

* Apply suggestions from code review

Co-authored-by: Kaz Wesley <kaz@lambdaverse.org>

---------

Co-authored-by: Kaz Wesley <kaz@lambdaverse.org>
(cherry picked from commit 7c413298fb)
2024-09-25 09:43:14 +01:00
..
base Rust bump, reduce dependencices (#10803) 2024-08-13 23:16:55 +00:00
build More info when critical failure occurs (#11092) 2024-09-25 09:43:14 +01:00
ci_utils Fix invalid version of wasm-pack (#11078) 2024-09-16 12:16:18 +01:00
ci-gen Split ydoc server into separate module (#10735) 2024-08-08 12:12:05 +00:00
cli More info when critical failure occurs (#11092) 2024-09-25 09:43:14 +01:00
enso-formatter Rust bump, reduce dependencices (#10803) 2024-08-13 23:16:55 +00:00
install Rust bump, reduce dependencices (#10803) 2024-08-13 23:16:55 +00:00
macros/lib Rust bump, reduce dependencices (#10803) 2024-08-13 23:16:55 +00:00
.gitignore Build script merge (#3743) 2022-10-10 23:38:48 +02:00
README.md Build Script Post-Gui1 Cleanup (#9376) 2024-03-12 20:25:51 +01:00


Enso Language

[WIP] Enso CI Build Scripts

The code under this directory is under ongoing intensive development. As such it has not been reviewed or cleaned up yet.

General principles

  • Written in Rust.
  • Portable. Works on any platform that Enso targets.
  • Do not duplicate functionality that is already available in tools being part of our tech stack.
  • Supports both developers and CI use-cases (and environments). Developers can call it locally to do anything that CI does.
  • Does not require much setup work. Where feasible sets things up for the user.

Concepts

Target

  • Can be built locally from sources. Building yields artifacts.
  • Artifacts are self-contained to a single filesystem directory.
  • Artifacts can be downloaded from a remote location rather than built with the same effect.
  • Can contain other targets.
  • Artifacts can be platform-specific.
  • Artifacts must be releasable as CI run artifacts or release assets.

Usage

While the script is invoked using cargo run, the convenience run script is provided in the repository root.

The general usage form is:

./run <command> [options]

The command itself is usually a combination of target name and subcommand, like ide build or backend test.

At every layer, the --help command can be used to get more information. Note that the information depends on the command, so running ./run --help will not give you the same information as ./run ide --help nor ./run ide build --help.

Targets

IDE

IDE is the top level target for our project. It consists of GUI and Backend targets.

Sources consist mostly of TS code for the Electron client and packaging.

Artifacts are platform specific and consist of the single image file.

GUI

GUI is the front-end part of the project. It also packages WASM-compiled parser written in rust.

Artifacts are portable across the platforms and consist of the web page that can be served either using Electron client (as IDE does) or using a web server (like the Cloud version of Enso).

Backend

Backend is the back-end part of the project, as seen from the IDE perspective. It contains a Project Manager bundle that includes:

  • Project Manager native image;
  • Enso Engine distribution (with the Standard Library);
  • GraalVM distribution.

These components are not represented as "Targets" (in terms of build script) but could be and likely will be in the future.