--- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,15 +54,43 @@ strategy: matrix: target: + # Tier 1 + - aarch64-unknown-linux-gnu + - i686-pc-windows-gnu + - i686-pc-windows-msvc + - i686-unknown-linux-gnu - x86_64-apple-darwin + - x86_64-pc-windows-gnu - x86_64-pc-windows-msvc - x86_64-unknown-linux-gnu + + # Other - x86_64-unknown-linux-musl include: + - target: aarch64-unknown-linux-gnu + os: ubuntu-latest + bin: jrsonnet + name: jrsonnet-linux-gnu-aarch64 + - target: i686-pc-windows-gnu + os: windows-latest + bin: jrsonnet.exe + name: jrsonnet-windows-gnu-i686.exe + - target: i686-pc-windows-msvc + os: windows-latest + bin: jrsonnet.exe + name: jrsonnet-windows-msvc-i686.exe + - target: i686-unknown-linux-gnu + os: ubuntu-latest + bin: jrsonnet + name: jrsonnet-linux-gnu-i686 - target: x86_64-apple-darwin os: macOS-latest bin: jrsonnet name: jrsonnet-darwin-amd64 + - target: x86_64-pc-windows-gnu + os: windows-latest + bin: jrsonnet.exe + name: jrsonnet-windows-gnu-amd64.exe - target: x86_64-pc-windows-msvc os: windows-latest bin: jrsonnet.exe @@ -71,6 +99,7 @@ os: ubuntu-latest bin: jrsonnet name: jrsonnet-linux-gnu-amd64 + - target: x86_64-unknown-linux-musl os: ubuntu-latest bin: jrsonnet @@ -87,16 +116,52 @@ - name: Checkout uses: actions/checkout@v2 + - name: Linux x86 cross compiler + if: ${{ matrix.target == 'i686-unknown-linux-gnu' }} + run: sudo apt install gcc-multilib + + - name: Windows x86 cross compiler + if: ${{ matrix.target == 'i686-pc-windows-gnu' }} + uses: egor-tensin/setup-mingw@v2 + with: + platform: x86 + + - name: ARM cross compiler + if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }} + uses: actions-rs/cargo@v1 + with: + command: install + args: cross + + - name: ARM gcc + if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }} + run: sudo apt install gcc-aarch64-linux-gnu + + - name: Run ARM build + if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }} + shell: bash + run: cross build --bin=jrsonnet --release --target ${{ matrix.target }} + + - name: Run ARM strip + if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }} + shell: bash + run: aarch64-linux-gnu-strip target/${{ matrix.target }}/release/${{ matrix.bin }} + - name: Run build + if: ${{ matrix.target != 'aarch64-unknown-linux-gnu' }} uses: actions-rs/cargo@v1 with: command: build args: --bin=jrsonnet --release --target ${{ matrix.target }} + - name: Run strip + if: ${{ matrix.target != 'aarch64-unknown-linux-gnu' }} + shell: bash + run: strip target/${{ matrix.target }}/release/${{ matrix.bin }} + - name: Package shell: bash run: | - strip target/${{ matrix.target }}/release/${{ matrix.bin }} cd target/${{ matrix.target }}/release cp ${{ matrix.bin }} ../../../${{ matrix.name }} --- a/Cargo.lock +++ b/Cargo.lock @@ -65,8 +65,7 @@ [[package]] name = "clap" version = "3.0.0-beta.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd1061998a501ee7d4b6d449020df3266ca3124b941ec56cf2005c3779ca142" +source = "git+https://github.com/clap-rs/clap?rev=92f744cc49d12d32261010d355dc215a6d2487b9#92f744cc49d12d32261010d355dc215a6d2487b9" dependencies = [ "atty", "bitflags", @@ -77,15 +76,13 @@ "strsim", "termcolor", "textwrap", - "unicode-width", "vec_map", ] [[package]] name = "clap_derive" version = "3.0.0-beta.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370f715b81112975b1b69db93e0b56ea4cd4e5002ac43b2da8474106a54096a1" +source = "git+https://github.com/clap-rs/clap?rev=92f744cc49d12d32261010d355dc215a6d2487b9#92f744cc49d12d32261010d355dc215a6d2487b9" dependencies = [ "heck", "proc-macro-error", @@ -97,8 +94,7 @@ [[package]] name = "clap_generate" version = "3.0.0-beta.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adf420f8b687b628d2915ccfd43a660c437a170432e3fbcb66944e8717a0d68f" +source = "git+https://github.com/clap-rs/clap?rev=92f744cc49d12d32261010d355dc215a6d2487b9#92f744cc49d12d32261010d355dc215a6d2487b9" dependencies = [ "clap", ] @@ -270,9 +266,9 @@ [[package]] name = "os_str_bytes" -version = "2.4.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb2e1c3ee07430c2cf76151675e583e0f19985fa6efae47d6848a3e2c824f85" +checksum = "e293568965aea261bdf010db17df7030e3c9a275c415d51d6112f7cf9b7af012" [[package]] name = "pathdiff" @@ -420,9 +416,9 @@ [[package]] name = "textwrap" -version = "0.12.1" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "203008d98caf094106cfaba70acfed15e18ed3ddb7d94e49baec153a2b462789" +checksum = "cd05616119e612a8041ef58f2b578906cc2531a6069047ae092cfb86a325d835" dependencies = [ "unicode-width", ] --- a/README.md +++ b/README.md @@ -16,10 +16,6 @@ In the end, it's always fun to implement something in Rust. -## How to install? - -We build x64 binaries for Apple, Windows MSVC, and Linux GNU during the release process. If your system is one of those, you can check out the [latest release](https://github.com/CertainLach/jrsonnet/releases/latest) to get your pre-built binary. Otherwise, you'll need to have a rust toolchain and install the package through cargo with `cargo install jrsonnet`. - ## Compliance with the [specification](https://jsonnet.org/ref/spec.html) - Passes all the original `examples` tests --- a/cmds/jrsonnet/Cargo.toml +++ b/cmds/jrsonnet/Cargo.toml @@ -5,6 +5,7 @@ authors = ["Yaroslav Bolyukin "] license = "MIT" edition = "2018" +publish = false [features] default = [] @@ -18,5 +19,11 @@ # TODO: Fix mimalloc compile errors, and use them mimallocator = { version = "0.1.3", optional = true } thiserror = "1.0" -clap = "3.0.0-beta.2" -clap_generate = "3.0.0-beta.2" + +[dependencies.clap] +git = "https://github.com/clap-rs/clap" +rev = "92f744cc49d12d32261010d355dc215a6d2487b9" + +[dependencies.clap_generate] +git = "https://github.com/clap-rs/clap" +rev = "92f744cc49d12d32261010d355dc215a6d2487b9" --- a/crates/jrsonnet-cli/Cargo.toml +++ b/crates/jrsonnet-cli/Cargo.toml @@ -5,8 +5,12 @@ authors = ["Yaroslav Bolyukin "] license = "MIT" edition = "2018" +publish = false [dependencies] -jrsonnet-evaluator = { path = "../../crates/jrsonnet-evaluator", version = "0.3.7", features = ["explaining-traces"] } -jrsonnet-parser = { path = "../../crates/jrsonnet-parser", version = "0.3.7" } -clap = "3.0.0-beta.2" +jrsonnet-evaluator = { path = "../../crates/jrsonnet-evaluator", version = "0.3.6", features = ["explaining-traces"] } +jrsonnet-parser = { path = "../../crates/jrsonnet-parser", version = "0.3.6" } + +[dependencies.clap] +git = "https://github.com/clap-rs/clap" +rev = "92f744cc49d12d32261010d355dc215a6d2487b9" --- /dev/null +++ b/crates/jrsonnet-interner/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock --- a/crates/jrsonnet-stdlib/Cargo.toml +++ b/crates/jrsonnet-stdlib/Cargo.toml @@ -5,3 +5,7 @@ authors = ["Yaroslav Bolyukin "] license = "MIT" edition = "2018" + +[features] + +[dependencies]