[CI] Provide latest FlatBuffers to the Engine build. (#9654)

This PR bumps the FlatBuffers version used by the backend to `24.3.25` (the latest version as of now).

Since the newer FlatBuffers releases come with prebuilt binaries for all platforms we target, we can simplify the build process by simply downloading the required `flatc` binary from the official FlatBuffers GitHub release page. This allows us to remove the dependency on `conda`, which was the only reliable way to get the outdated `flatc`.

The `conda` setup has been removed from the CI steps and the relevant code has been removed from the build script.

The FlatBuffers version is no longer hard-coded in the Rust build script, it is inferred from the `build.sbt` definition (similar to GraalVM).

# Important Notes
This does not affect the GUI binary protocol implementation.

While I initially wanted to update it, it turned out farly non-trivial.

As there are multiple issues with the generated TS code, it was significantly refactored by hand and it is impossible to automatically update it. Work to address this problem is left as [a future task](https://github.com/enso-org/enso/issues/9658).

As the Flatbuffers binary protocol is guaranteed to be compatible between versions (unlike the generated sources), there should be no adverse effects from bumping `flatc` only on the backend side.
This commit is contained in:
Michał Wawrzyniec Urbańczyk 2024-04-12 12:10:44 +02:00 committed by GitHub
parent f80e0052cc
commit cdf031f61f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
41 changed files with 278 additions and 667 deletions

View File

@ -16,12 +16,6 @@ jobs:
runs-on:
- X64
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0

View File

@ -18,12 +18,6 @@ jobs:
runs-on:
- benchmark
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -69,12 +63,6 @@ jobs:
runs-on:
- benchmark
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0

View File

@ -19,12 +19,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -71,12 +65,6 @@ jobs:
- macOS
- ARM64
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -121,12 +109,6 @@ jobs:
runs-on:
- macos-latest
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -172,12 +154,6 @@ jobs:
- self-hosted
- Windows
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -223,12 +199,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -274,12 +244,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -337,12 +301,6 @@ jobs:
- macOS
- ARM64
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -398,12 +356,6 @@ jobs:
runs-on:
- macos-latest
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -460,12 +412,6 @@ jobs:
- self-hosted
- Windows
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -522,12 +468,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -584,12 +524,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -650,12 +584,6 @@ jobs:
- macOS
- ARM64
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -714,12 +642,6 @@ jobs:
runs-on:
- macos-latest
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -779,12 +701,6 @@ jobs:
- self-hosted
- Windows
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -844,12 +760,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0

View File

@ -33,12 +33,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -82,12 +76,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -131,12 +119,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -180,12 +162,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0

View File

@ -21,12 +21,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -69,12 +63,6 @@ jobs:
runs-on:
- macos-latest
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -118,12 +106,6 @@ jobs:
- self-hosted
- Windows
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -179,12 +161,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -239,12 +215,6 @@ jobs:
runs-on:
- macos-latest
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -300,12 +270,6 @@ jobs:
- self-hosted
- Windows
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -363,12 +327,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -425,12 +383,6 @@ jobs:
runs-on:
- macos-latest
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -501,12 +453,6 @@ jobs:
- self-hosted
- Windows
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0

View File

@ -27,12 +27,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0

View File

@ -22,12 +22,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -62,12 +56,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -120,12 +108,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -175,12 +157,6 @@ jobs:
- macOS
- ARM64
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -228,12 +204,6 @@ jobs:
runs-on:
- macos-latest
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -282,12 +252,6 @@ jobs:
- self-hosted
- Windows
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -341,12 +305,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -399,12 +357,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -467,12 +419,6 @@ jobs:
- macOS
- ARM64
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -546,12 +492,6 @@ jobs:
runs-on:
- macos-latest
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -626,12 +566,6 @@ jobs:
- self-hosted
- Windows
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0

View File

@ -33,12 +33,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -83,12 +77,6 @@ jobs:
runs-on:
- macos-latest
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -134,12 +122,6 @@ jobs:
- self-hosted
- Windows
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -185,12 +167,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -246,12 +222,6 @@ jobs:
runs-on:
- macos-latest
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -308,12 +278,6 @@ jobs:
- self-hosted
- Windows
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -370,12 +334,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -434,12 +392,6 @@ jobs:
runs-on:
- macos-latest
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -499,12 +451,6 @@ jobs:
- self-hosted
- Windows
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -564,12 +510,6 @@ jobs:
- self-hosted
- Linux
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0

View File

@ -18,12 +18,6 @@ jobs:
runs-on:
- benchmark
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0
@ -69,12 +63,6 @@ jobs:
runs-on:
- benchmark
steps:
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Setup conda (GH runners only)
uses: s-weigand/setup-conda@v1.2.1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')
name: Installing wasm-pack
uses: jetli/wasm-pack-action@v0.4.0

View File

@ -7,6 +7,3 @@ required-versions:
# NB. The Node version is pinned in .node-version.
cargo-watch: ^8.1.1
wasm-pack: ^0.12.1
# TODO [mwu]: Script can install `flatc` later on (if `conda` is present), so this is not required. However it should
# be required, if `conda` is missing.
# flatc: =1.12.0

View File

@ -486,7 +486,7 @@ val zio = Seq(
val bcpkixJdk15Version = "1.70"
val declineVersion = "2.4.1"
val directoryWatcherVersion = "0.18.0"
val flatbuffersVersion = "1.12.0"
val flatbuffersVersion = "24.3.25"
val guavaVersion = "32.0.0-jre"
val jlineVersion = "3.23.0"
val jgitVersion = "6.7.0.202309050840-r"

View File

@ -15,7 +15,6 @@ use ide_ci::actions::workflow::definition::is_non_windows_runner;
use ide_ci::actions::workflow::definition::is_windows_runner;
use ide_ci::actions::workflow::definition::run;
use ide_ci::actions::workflow::definition::setup_artifact_api;
use ide_ci::actions::workflow::definition::setup_conda;
use ide_ci::actions::workflow::definition::setup_wasm_pack_step;
use ide_ci::actions::workflow::definition::shell;
use ide_ci::actions::workflow::definition::wrap_expression;
@ -331,7 +330,7 @@ pub fn runs_on(os: OS, runner_type: RunnerType) -> Vec<RunnerLabel> {
/// Initial CI job steps: check out the source code and set up the environment.
pub fn setup_script_steps() -> Vec<Step> {
let mut ret = vec![setup_conda(), setup_wasm_pack_step(), setup_artifact_api()];
let mut ret = vec![setup_wasm_pack_step(), setup_artifact_api()];
ret.extend(checkout_repo_step());
// We run `./run --help` so:
// * The build-script is build in a separate step. This allows us to monitor its build-time and

View File

@ -5,6 +5,7 @@
use crate::prelude::*;
use crate::engine::bundle::GraalVmVersion;
use crate::get_flatbuffers_version;
use crate::get_graal_packages_version;
use crate::get_graal_version;
use crate::paths::generated;
@ -32,9 +33,6 @@ pub use context::RunContext;
/// Version of `flatc` (the FlatBuffers compiler) that we require.
const FLATC_VERSION: Version = Version::new(1, 12, 0);
/// Whether pure Enso tests should be run in parallel.
const PARALLEL_ENSO_TESTS: AsyncPolicy = AsyncPolicy::Sequential;
@ -328,3 +326,9 @@ pub async fn deduce_graal_bundle(
packages: get_graal_packages_version(&build_sbt_content)?,
})
}
/// Version of `flatc` (the FlatBuffers compiler) that Engine requires.
pub async fn deduce_flatbuffers(build_sbt: &generated::RepoRootBuildSbt) -> Result<Version> {
let build_sbt_content = ide_ci::fs::tokio::read_to_string(build_sbt).await?;
get_flatbuffers_version(&build_sbt_content)
}

View File

@ -10,7 +10,6 @@ use crate::engine::BuiltArtifacts;
use crate::engine::Operation;
use crate::engine::ReleaseCommand;
use crate::engine::ReleaseOperation;
use crate::engine::FLATC_VERSION;
use crate::engine::PARALLEL_ENSO_TESTS;
use crate::enso::BenchmarkOptions;
use crate::enso::BuiltEnso;
@ -29,7 +28,6 @@ use ide_ci::cache;
use ide_ci::github::release::IsReleaseExt;
use ide_ci::platform::DEFAULT_SHELL;
use ide_ci::programs::sbt;
use ide_ci::programs::Flatc;
use ide_ci::programs::Sbt;
use std::env::consts::DLL_EXTENSION;
use std::env::consts::EXE_EXTENSION;
@ -146,35 +144,15 @@ impl RunContext {
};
let prepare_simple_library_server = tokio::spawn(prepare_simple_library_server);
// Setup Conda Environment
// Install FlatBuffers Compiler
// If it is not available, we require conda to install it. We should not require conda in
// other scenarios.
// TODO: After flatc version is bumped, it should be possible to get it without `conda`.
// See: https://www.pivotaltracker.com/story/show/180303547
if let Err(e) = Flatc.require_present_at(&FLATC_VERSION).await {
warn!("Cannot find expected flatc: {}", e);
warn!("Will try to install it using conda. In case of issues, please install flatc manually, to avoid dependency on conda.");
// GitHub-hosted runner has `conda` on PATH but not things installed by it.
// It provides `CONDA` variable pointing to the relevant location.
if let Some(conda_path) = std::env::var_os("CONDA").map(PathBuf::from) {
ide_ci::env::prepend_to_path(conda_path.join("bin"))?;
if TARGET_OS == OS::Windows {
// Not sure if it documented anywhere, but this is where installed `flatc`
// appears on Windows.
ide_ci::env::prepend_to_path(conda_path.join("Library").join("bin"))?;
}
}
// Setup flatc (FlatBuffers compiler), required for building the engine.
let flatc_goodie = cache::goodie::flatc::Flatc {
version: engine::deduce_flatbuffers(&self.repo_root.build_sbt).await?,
platform: TARGET_OS,
};
flatc_goodie.install_if_missing(&self.cache).await?;
ide_ci::programs::Conda
.cmd()?
.args(["install", "-y", "--freeze-installed", "flatbuffers=1.12.0"])
.run_ok()
.await?;
Flatc.lookup()?;
}
self.paths.emit_env_to_actions().await?; // Ignore error: we might not be run on CI.
self.paths.emit_env_to_actions().await?;
debug!("Build configuration: {:#?}", self.config);
// Setup Tests on Windows

View File

@ -99,6 +99,11 @@ pub fn get_graal_packages_version(build_sbt_contents: &str) -> Result<Version> {
get_string_assignment_value(build_sbt_contents, "graalMavenPackagesVersion")?.parse2()
}
/// Get version of GraalVM packages from the `build.sbt` file contents.
pub fn get_flatbuffers_version(build_sbt_contents: &str) -> Result<Version> {
get_string_assignment_value(build_sbt_contents, "flatbuffersVersion")?.parse2()
}
#[cfg(test)]
mod tests {
use super::*;

View File

@ -32,35 +32,6 @@ pub mod manifest;
/// Get the prefix of URL of the release's asset in GitHub.
///
/// By joining it with the asset name, we can get the URL of the asset.
///
/// ```
/// # use enso_build::prelude::*;
/// # use enso_build::release::download_asset_prefix;
/// # use ide_ci::github::RepoRef;
/// let repo = RepoRef::new("enso-org", "enso");
/// let version = Version::from_str("2020.1.1").unwrap();
/// let prefix = download_asset_prefix(&repo, &version);
/// assert_eq!(prefix.as_str(), "https://github.com/enso-org/enso/releases/download/2020.1.1");
/// ```
pub fn download_asset_prefix(repo: &impl IsRepo, version: &Version) -> Url {
let text = format!("https://github.com/{repo}/releases/download/{version}",);
Url::from_str(&text).expect("Failed to parse the URL.")
}
/// Get the URL for downloading the asset from the GitHub release.
pub fn download_asset(
repo: &impl IsRepo,
version: &Version,
asset_name: impl AsRef<str>,
) -> String {
let prefix = download_asset_prefix(repo, version);
let asset_name = asset_name.as_ref();
format!("{prefix}/{asset_name}")
}
/// Generate placeholders for the release notes.
pub fn release_body_placeholders(
context: &BuildContext,
@ -215,14 +186,18 @@ pub async fn validate_release(release: github::release::Handle) -> Result {
let info = release.get().await?;
ensure!(!info.draft, "Release is a draft.");
let version = Version::from_str(&info.tag_name)?;
let manifest_url = download_asset(&release.repo, &version, manifest::ASSETS_MANIFEST_FILENAME);
let manifest = ide_ci::io::download_all(&manifest_url)
let manifest_url = github::release::download_asset(
&release.repo,
&version,
manifest::ASSETS_MANIFEST_FILENAME,
);
let manifest = ide_ci::io::download_all(manifest_url)
.await
.context("Failed to download assets manifest.")?;
let manifest: manifest::Assets =
serde_json::from_slice(&manifest).context("Failed to parse assets manifest.")?;
for asset in manifest.assets() {
let response = reqwest::Client::new().get(&asset.url).send().await?;
let response = reqwest::Client::new().get(asset.url.clone()).send().await?;
ensure!(response.status().is_success(), "Failed to download asset: {}", asset.url);
}
Ok(())
@ -385,12 +360,6 @@ mod tests {
let manifest_json = serde_json::to_string_pretty(&manifest)?;
debug!("Manifest: {}", manifest_json);
let all_assets = manifest.ide.iter().chain(&manifest.engine);
for asset in all_assets {
let response = reqwest::Client::new().get(&asset.url).send().await?;
ensure!(response.status().is_success(), "Failed to download asset: {}", asset.url);
}
Ok(())
}
}

View File

@ -6,7 +6,6 @@ use crate::prelude::*;
use crate::paths::TargetTriple;
use crate::project;
use crate::release;
use crate::version::Versions;
@ -21,13 +20,13 @@ pub const ASSETS_MANIFEST_FILENAME: &str = "assets.json";
pub struct Asset {
pub os: OS,
pub arch: Arch,
pub url: String,
pub url: Url,
/// User-friendly description of the target platform.
pub target_pretty: String,
}
impl Asset {
pub fn new(url: String, triple: &TargetTriple) -> Self {
pub fn new(url: Url, triple: &TargetTriple) -> Self {
let target_pretty = match (triple.os, triple.arch) {
(OS::Windows, Arch::X86_64) => "Windows".into(),
(OS::Linux, Arch::X86_64) => "Linux".into(),
@ -42,7 +41,7 @@ impl Asset {
pub fn new_ide(repo: &impl IsRepo, triple: &TargetTriple) -> Self {
let filename =
project::ide::electron_image_filename(triple.os, triple.arch, &triple.versions.version);
let url = release::download_asset(repo, &triple.versions.version, filename);
let url = ide_ci::github::release::download_asset(repo, &triple.versions.version, filename);
Self::new(url, triple)
}
@ -52,7 +51,7 @@ impl Asset {
let stem = RepoRootBuiltDistributionEnsoBundleTriple::segment_name(triple.to_string());
let ext = ide_ci::github::release::archive_extension_for(triple.os);
let filename = format!("{stem}.{ext}");
let url = release::download_asset(repo, &triple.versions.version, filename);
let url = ide_ci::github::release::download_asset(repo, &triple.versions.version, filename);
Self::new(url, triple)
}
}

View File

@ -72,25 +72,6 @@ pub fn is_github_hosted() -> String {
"startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent')".into()
}
/// Step that sets up `conda` on GitHub-hosted runners.
///
/// We set up `conda` on GitHub-hosted runners because we need it to install `flatbuffers` in
/// required version. Our self-hosted runners have `flatc` already installed, so we don't need
/// `conda` there.
pub fn setup_conda() -> Step {
// use crate::actions::workflow::definition::step::CondaChannel;
Step {
name: Some("Setup conda (GH runners only)".into()),
uses: Some("s-weigand/setup-conda@v1.2.1".into()),
r#if: Some(is_github_hosted()),
with: Some(step::Argument::SetupConda {
update_conda: Some(false),
conda_channels: Some("anaconda, conda-forge".into()),
}),
..default()
}
}
pub fn setup_wasm_pack_step() -> Step {
Step {
name: Some("Installing wasm-pack".into()),
@ -1008,13 +989,6 @@ pub mod step {
submodules: Option<CheckoutArgumentSubmodules>,
},
#[serde(rename_all = "kebab-case")]
SetupConda {
#[serde(skip_serializing_if = "Option::is_none")]
update_conda: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
conda_channels: Option<String>, // conda_channels: Vec<CondaChannel>
},
#[serde(rename_all = "kebab-case")]
GitHubScript {
script: String,
},

View File

@ -8,7 +8,7 @@ use crate::cache::Cache;
// === Export ===
// ==============
pub mod binaryen;
pub mod flatc;
pub mod graalpy;
pub mod graalvm;
pub mod sbt;

View File

@ -1,77 +0,0 @@
use crate::prelude::*;
use crate::cache::goodie;
use crate::cache::Cache;
use crate::env::known::PATH;
use crate::program::version::IsVersionPredicate;
use crate::programs::wasm_opt;
use crate::programs::wasm_opt::WasmOpt;
#[derive(Clone, Copy, Debug, Display)]
pub struct Binaryen {
pub version: u32,
}
impl IsVersionPredicate for Binaryen {
type Version = wasm_opt::Version;
fn matches(&self, version: &Self::Version) -> bool {
version.0 >= self.version
}
}
impl Binaryen {
fn url(&self) -> Result<Url> {
let version = format!("version_{}", self.version);
let target = match (TARGET_OS, TARGET_ARCH) {
(OS::Windows, Arch::X86_64) => "x86_64-windows",
(OS::Linux, Arch::X86_64) => "x86_64-linux",
(OS::MacOS, Arch::X86_64) => "x86_64-macos",
(OS::MacOS, Arch::AArch64) => "arm64-macos",
(os, arch) => bail!("Not supported arch/OS combination: {arch}-{os}."),
};
let url = format!("https://github.com/WebAssembly/binaryen/releases/download/{version}/binaryen-{version}-{target}.tar.gz");
url.parse2()
}
}
impl Goodie for Binaryen {
fn get(&self, cache: &Cache) -> BoxFuture<'static, Result<PathBuf>> {
goodie::download_try_url(self.url(), cache)
}
fn is_active(&self) -> BoxFuture<'static, Result<bool>> {
let this = *self;
async move {
WasmOpt.require_present_that(this).await?;
Ok(true)
}
.boxed()
}
fn activation_env_changes(&self, package_path: &Path) -> Result<Vec<crate::env::Modification>> {
let bin_dir = package_path.join(format!("binaryen-version_{}", self.version)).join("bin");
crate::fs::expect_dir(&bin_dir)?;
Ok(vec![crate::env::Modification::prepend_path(&PATH, bin_dir)])
}
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
#[ignore]
async fn install_wasm_opt() -> Result {
setup_logging()?;
let cache = Cache::new_default().await?;
let binaryen = Binaryen { version: 108 };
binaryen.install_if_missing(&cache).await?;
dbg!(WasmOpt.lookup())?;
assert!(binaryen.is_active().await?);
Ok(())
}
}

View File

@ -0,0 +1,82 @@
use crate::prelude::*;
use crate::cache::goodie;
use crate::cache::Cache;
use crate::env::known::PATH;
use crate::env::Modification;
use crate::github::RepoRef;
/// The repository of the FlatBuffers project.
pub const REPO: RepoRef = RepoRef { owner: "google", name: "flatbuffers" };
#[derive(Clone, Debug)]
pub struct Flatc {
/// The version of the `flatc` binary.
pub version: Version,
/// Operating system for which the binary is built.
pub platform: OS,
}
impl Flatc {
/// Get the download URL.
///
/// The package is a zip file containing the `flatc` binary.
///
/// ```
/// use ide_ci::prelude::*;
/// use ide_ci::cache::goodie::flatc::Flatc;
///
/// # fn main() -> Result {
/// let version = Version::from_str("24.3.25")?;
/// let flatc = Flatc { version, platform: OS::Linux };
/// let url = flatc.url()?;
/// assert_eq!(url.as_str(), "https://github.com/google/flatbuffers/releases/download/v24.3.25/Linux.flatc.binary.clang++-15.zip");
/// # Ok(())
/// # }
pub fn url(&self) -> Result<Url> {
let filename = match (&self.version, self.platform) {
(version, OS::Windows) if version >= &Version::new(2, 0, 0) =>
"Windows.flatc.binary.zip",
(_, OS::Windows) => "flatc_windows.zip",
(_, OS::MacOS) => "Mac.flatc.binary.zip",
(version, OS::Linux) if version >= &Version::new(24, 3, 6) =>
"Linux.flatc.binary.clang++-15.zip",
(version, OS::Linux) if version >= &Version::new(2, 0, 7) =>
"Linux.flatc.binary.clang++-12.zip",
(version, OS::Linux) if version >= &Version::new(2, 0, 0) =>
"Linux.flatc.binary.clang++-9.zip",
(version, os) => bail!("Unsupported version {version} for {os}."),
};
let tag = release_tag(&self.version);
Ok(crate::github::release::download_asset(&REPO, &tag, filename))
}
}
impl Goodie for Flatc {
fn get(&self, cache: &Cache) -> BoxFuture<'static, Result<PathBuf>> {
goodie::download_try_url(self.url(), cache)
}
fn is_active(&self) -> BoxFuture<'static, Result<bool>> {
let version = self.version.clone();
async move {
let flatc = crate::programs::flatc::Flatc;
flatc.require_present_at(&version).await?;
Ok(true)
}
.boxed()
}
fn activation_env_changes(&self, package_path: &Path) -> Result<Vec<Modification>> {
Ok(vec![Modification::prepend_path(&PATH, package_path)])
}
}
/// Get the release tag for the given FlatBuffers version.
///
/// The FlatBuffers release tag is prefixed with `v`, so we cannot use the `Version` directly.
pub fn release_tag(version: &Version) -> String {
format!("v{}", version)
}

View File

@ -36,6 +36,54 @@ pub fn archive_extension_for(os: OS) -> &'static str {
}
}
/// Get the prefix of URL of the release's asset in GitHub.
///
/// By joining it with the asset name, we can get the URL of the asset.
///
/// ```
/// # use ide_ci::prelude::*;
/// # use ide_ci::github::release::download_asset_prefix;
/// # use ide_ci::github::RepoRef;
/// let repo = RepoRef::new("enso-org", "enso");
/// let version = Version::from_str("2020.1.1").unwrap();
/// let prefix = download_asset_prefix(&repo, &version);
/// assert_eq!(prefix.as_str(), "https://github.com/enso-org/enso/releases/download/2020.1.1/");
/// ```
pub fn download_asset_prefix(repo: &impl IsRepo, release_tag: &impl Display) -> Url {
let text = format!("https://github.com/{repo}/releases/download/{release_tag}/",);
Url::from_str(&text).expect("Failed to parse the URL.")
}
/// Get the URL for downloading the asset from the GitHub release.
///
/// ```
/// # use ide_ci::prelude::*;
/// # use ide_ci::github::release::download_asset;
/// # use ide_ci::github::RepoRef;
/// let repo = RepoRef::new("enso-org", "enso");
/// let version = Version::from_str("2020.1.1").unwrap();
/// let name = "foo.zip";
/// let url = download_asset(&repo, &version, name);
/// assert_eq!(url.as_str(), "https://github.com/enso-org/enso/releases/download/2020.1.1/foo.zip");
/// ```
pub fn download_asset(
repo: &impl IsRepo,
release_tag: &impl Display,
asset_name: impl AsRef<str>,
) -> Url {
let prefix = download_asset_prefix(repo, release_tag);
prefix
.join(asset_name.as_ref())
.with_context(|| {
format!(
"Failed to join the prefix {} with the asset name {}.",
prefix,
asset_name.as_ref()
)
})
.expect("Failed to join the URL.")
}
/// Types that uniquely identify a release and can be used to fetch it from GitHub.
pub trait IsRelease: Debug {
/// The release ID.

View File

@ -53,6 +53,13 @@ impl IsVersionPredicate for semver::VersionReq {
}
}
impl IsVersionPredicate for Version {
type Version = Version;
fn matches(&self, version: &Self::Version) -> bool {
self == version
}
}
#[cfg(test)]
mod tests {
use super::*;

View File

@ -5,7 +5,6 @@
pub mod cargo;
pub mod cmake;
pub mod cmd;
pub mod conda;
pub mod docker;
pub mod flatc;
pub mod git;
@ -35,7 +34,6 @@ pub mod wasm_pack;
pub use cargo::Cargo;
pub use cmake::CMake;
pub use cmd::Cmd;
pub use conda::Conda;
pub use docker::Docker;
pub use flatc::Flatc;
pub use git::Git;

View File

@ -1,19 +0,0 @@
use crate::prelude::*;
#[derive(Clone, Copy, Debug)]
pub struct Conda;
impl Program for Conda {
fn executable_name(&self) -> &'static str {
"conda"
}
fn default_locations(&self) -> Vec<PathBuf> {
if let Some(path) = std::env::var_os("CONDA") {
vec![PathBuf::from(path)]
} else {
default()
}
}
}

View File

@ -53,7 +53,7 @@ Copyright notices related to this dependency can be found in the directory `com.
'flatbuffers-java', licensed under the Apache License V2.0, is distributed with the engine.
The license file can be found at `licenses/APACHE2.0`.
Copyright notices related to this dependency can be found in the directory `com.google.flatbuffers.flatbuffers-java-1.12.0`.
Copyright notices related to this dependency can be found in the directory `com.google.flatbuffers.flatbuffers-java-24.3.25`.
'failureaccess', licensed under the The Apache Software License, Version 2.0, is distributed with the engine.

View File

@ -1,40 +1,3 @@
-------------------
From file Utf8Safe.java:
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------
/*
* Copyright 2014 Google Inc. All rights reserved.
*
@ -82,3 +45,38 @@ From file Utf8Safe.java:
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -83,7 +83,7 @@ Copyright notices related to this dependency can be found in the directory `com.
'flatbuffers-java', licensed under the Apache License V2.0, is distributed with the project-manager.
The license file can be found at `licenses/APACHE2.0`.
Copyright notices related to this dependency can be found in the directory `com.google.flatbuffers.flatbuffers-java-1.12.0`.
Copyright notices related to this dependency can be found in the directory `com.google.flatbuffers.flatbuffers-java-24.3.25`.
'paranamer', licensed under the BSD, is distributed with the project-manager.

View File

@ -1,40 +1,3 @@
-------------------
From file Utf8Safe.java:
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------
/*
* Copyright 2014 Google Inc. All rights reserved.
*
@ -82,3 +45,38 @@ From file Utf8Safe.java:
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -167,7 +167,9 @@ In order to build and run Enso you will need the following tools:
- [GraalVM](https://www.graalvm.org/) with the same version as described in the
[`build.sbt`](../build.sbt) file, configured as your default JVM.
- [Flatbuffers Compiler](https://google.github.io/flatbuffers) with version
1.12.0.
24.3.25. It is automatically downloaded when using the `run` command. For
direct `sbt` usage, you can download the `flatc` binary from the
[release assets](https://github.com/google/flatbuffers/releases/tag/v24.3.25).
- [Rustup](https://rustup.rs), the rust toolchain management utility.
- On MacOS and Linux, the `tar` command is required for running some tests. It
should be installed by default on most distributions.
@ -200,15 +202,6 @@ pyenv global 2.7.18
export PYTHON_PATH=$(pyenv root)/shims/python
```
The flatbuffers `flatc` compiler can be installed from the following locations:
- Using the `conda` package manager (`conda install flatbuffers`). This will
work on all platforms, but requires some knowledge of `conda` and how its
environments work.
- Windows users can download binaries directly from the flatbuffers github
[releases](https://github.com/google/flatbuffers/releases).
- MacOS users can install it via homebrew (`brew install flatbuffers`).
### Getting the Sources
Given you've probably been reading this document on GitHub, you might have an

View File

@ -13,10 +13,10 @@ union InboundPayload {
// An envelope for inbound requests and commands.
table InboundMessage {
// A unique id of the message sent to the server.
messageId: EnsoUUID (required);
message_id: EnsoUUID (required);
// An optional correlation id used to correlate a response with a request.
correlationId: EnsoUUID;
correlation_id: EnsoUUID;
// A message payload that carries requests sent by a client.
payload: InboundPayload (required);
@ -36,10 +36,10 @@ union OutboundPayload {
// An envelope for outbound responses.
table OutboundMessage {
// A unique id of the message sent from the server.
messageId: EnsoUUID (required);
message_id: EnsoUUID (required);
// An optional correlation id used to correlate a response with a request.
correlationId: EnsoUUID;
correlation_id: EnsoUUID;
// A message payload that carries responses and notifications sent by a server
payload: OutboundPayload (required);
@ -49,10 +49,10 @@ table OutboundMessage {
// A binary representation of universally unique identifiers.
struct EnsoUUID {
// The most significant bits of the UUID.
leastSigBits:uint64;
least_sig_bits:uint64;
// The most significant bits of the UUID.
mostSigBits:uint64;
most_sig_bits:uint64;
}
@ -79,7 +79,7 @@ table Error {
// The error payload for a read out of bounds error.
table ReadOutOfBoundsError {
// The actual length of the file in which the read was out of bounds.
fileLength : ulong;
file_length : ulong;
}
// Indicates an operation has succeeded.
@ -97,20 +97,20 @@ root_type InitSessionCommand;
// A visualization context identifying a concrete visualization.
table VisualizationContext {
// A visualization identifier.
visualizationId: EnsoUUID (required);
visualization_id: EnsoUUID (required);
// A context identifier.
contextId: EnsoUUID (required);
context_id: EnsoUUID (required);
// An expression identifier.
expressionId: EnsoUUID (required);
expression_id: EnsoUUID (required);
}
// An event signaling visualization update.
table VisualizationUpdate {
// A visualization context identifying a concrete visualization.
visualizationContext: VisualizationContext (required);
visualization_context: VisualizationContext (required);
// A visualization data.
data: [ubyte] (required);
@ -120,7 +120,7 @@ table VisualizationUpdate {
// A representation of a path relative to a specified content root.
table Path {
//a content root id that the path is relative to
rootId: EnsoUUID;
root_id: EnsoUUID;
//path segments
segments: [string];
@ -157,10 +157,10 @@ table WriteBytesCommand {
path : Path (required);
// The byte offset in the file to write from.
byteOffset : ulong;
byte_offset : ulong;
// Whether existing content should be overwritten.
overwriteExisting : bool;
overwrite_existing : bool;
// The file contents.
bytes : [ubyte] (required);
@ -213,7 +213,7 @@ table FileSegment {
path : Path (required);
// The byte offset in the file to read from.
byteOffset : ulong;
byte_offset : ulong;
// The number of bytes to read.
length : ulong;

View File

@ -3,15 +3,15 @@ namespace org.enso.polyglot.debugger.protocol;
// A single element of the stack trace.
// Corresponds to java.lang.StackTraceElement
table StackTraceElement {
declaringClass: string;
methodName: string;
fileName: string;
lineNumber: int;
declaring_class: string;
method_name: string;
file_name: string;
line_number: int;
}
// Representation of Exceptions reported on evaluation failure.
table ExceptionRepresentation {
message: string;
stackTrace: [StackTraceElement];
stack_trace: [StackTraceElement];
cause: ExceptionRepresentation;
}

View File

@ -1 +1 @@
/FasterXML/jackson-dataformats-binary/blob/2.17/LICENSE
/FasterXML/jackson-dataformats-binary/blob/2.18/LICENSE

View File

@ -1,7 +1,3 @@
-------------------
From file Utf8Safe.java:
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
@ -31,5 +27,3 @@ From file Utf8Safe.java:
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------

View File

@ -1,4 +1,3 @@
Copyright 2008 Google Inc. All rights reserved.
Redistributions of source code must retain the above copyright
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
copyright notice, this list of conditions and the following disclaimer
Redistributions of source code must retain the above copyright

View File

@ -1,3 +1,4 @@
Copyright 2014 Google Inc. All rights reserved.
Copyright 2017 Google Inc. All rights reserved.
Copyright 2019 Google Inc. All rights reserved.
Copyright 2017 Google Inc. All rights reserved.
Copyright 2014 Google Inc. All rights reserved.
Copyright 2008 Google Inc. All rights reserved.

View File

@ -1,3 +1,3 @@
911AAD4DA796BD9B80E14DE7DF556BE853E6C744FAC0B07C1BEECE86F1E43FD9
90B547E0CB6962C580225A770AE08EB2F17B94115ED78C888036C27753A62CB2
416F24D717DFDBF394B4B7392DD1F9B784D5B4C6B9F72E6C90902E0E02181FB6
6525E0B8B6538AA3FCD626624DF7CCEA88BF6BFD4A9BA872F40915F037E2BAAF
0

View File

@ -1,7 +1,3 @@
-------------------
From file Utf8Safe.java:
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
@ -31,5 +27,3 @@ From file Utf8Safe.java:
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------

View File

@ -1,4 +1,3 @@
Copyright 2008 Google Inc. All rights reserved.
Redistributions of source code must retain the above copyright
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
copyright notice, this list of conditions and the following disclaimer
Redistributions of source code must retain the above copyright

View File

@ -1,3 +1,4 @@
Copyright 2014 Google Inc. All rights reserved.
Copyright 2017 Google Inc. All rights reserved.
Copyright 2019 Google Inc. All rights reserved.
Copyright 2017 Google Inc. All rights reserved.
Copyright 2014 Google Inc. All rights reserved.
Copyright 2008 Google Inc. All rights reserved.

View File

@ -1,3 +1,3 @@
DA577D238B5C40A48477C0D5795CBCBAB62E952E90CB3D43068DF412B1568032
2FB532C34469119F70F134A88D694A86E9442B669EAFA6B7753D787244201E80
5DCEB0A37FD6967F3EA7670A6DD41E5C0872C1F0965EA07EAAAE2EF570F86141
80340DDF269F12E05EFFFD1C297B42E4B4A5F7495ED69BC25933FCEFBA04EAA2
0