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

WIP prep basic-cli 0.6 release #5752

Closed
wants to merge 24 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 61 additions & 22 deletions .github/workflows/basic_cli_build_release.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
on:
#pull_request:
pull_request:
workflow_dispatch:

# this cancels workflows currently in progress if you start a new one
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

# use .tar.gz for quick testing
env:
# use .tar.gz for quick testing
ARCHIVE_FORMAT: .tar.br
BASIC_CLI_BRANCH: main

jobs:
fetch-releases:
Expand All @@ -18,6 +19,7 @@ jobs:
- uses: actions/checkout@v3

- run: curl -fOL https://github.com/roc-lang/roc/releases/download/nightly/roc_nightly-linux_x86_64-latest.tar.gz
- run: curl -fOL https://github.com/roc-lang/roc/releases/download/nightly/roc_nightly-linux_arm64-latest.tar.gz
- run: curl -fOL https://github.com/roc-lang/roc/releases/download/nightly/roc_nightly-macos_x86_64-latest.tar.gz
- run: curl -fOL https://github.com/roc-lang/roc/releases/download/nightly/roc_nightly-macos_apple_silicon-latest.tar.gz

Expand Down Expand Up @@ -45,12 +47,37 @@ jobs:
with:
name: linux-x86_64-files
path: |
basic-cli/src/metadata_linux-x86_64.rm
basic-cli/src/linux-x86_64.rh
basic-cli/src/linux-x86_64.o
basic-cli/src/metadata_linux-x64.rm
basic-cli/src/linux-x64.rh
basic-cli/src/linux-x64.o


build-linux-arm64-files:
runs-on: [self-hosted, Linux, ARM64]
needs: [fetch-releases]
steps:
- uses: actions/checkout@v3

- name: Download the previously uploaded roc_nightly archives
uses: actions/download-artifact@v3

- name: build basic-cli
env:
CARGO_BUILD_TARGET: aarch64-unknown-linux-musl
CC_aarch64_unknown_linux_musl: clang-16
AR_aarch64_unknown_linux_musl: llvm-ar-16
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS: "-Clink-self-contained=yes -Clinker=rust-lld"
run: ./ci/build_basic_cli.sh linux_arm64

- name: Save .o file
uses: actions/upload-artifact@v3
with:
name: linux-arm64-files
path: |
basic-cli/src/linux-arm64.o

build-macos-x86_64-files:
runs-on: [macos-11] # I expect the generated files to work on macOS 12
runs-on: [macos-11] # I expect the generated files to work on macOS 12 and 13
needs: [fetch-releases]
steps:
- uses: actions/checkout@v3
Expand All @@ -65,7 +92,7 @@ jobs:
with:
name: macos-x86_64-files
path: |
basic-cli/src/macos-x86_64.o
basic-cli/src/macos-x64.o

build-macos-apple-silicon-files:
name: build apple silicon .o file
Expand All @@ -87,7 +114,7 @@ jobs:
basic-cli/src/macos-arm64.o

create-release-archive:
needs: [build-linux-x86_64-files, build-macos-x86_64-files, build-macos-apple-silicon-files]
needs: [build-linux-x86_64-files, build-linux-arm64-files, build-macos-x86_64-files, build-macos-apple-silicon-files]
name: create release archive
runs-on: [ubuntu-20.04]
steps:
Expand All @@ -100,7 +127,7 @@ jobs:
uses: actions/download-artifact@v3

- name: mv roc nightly and simplify name
run: mv $(ls -d artifact/* | grep "roc_nightly.*tar\.gz" | grep "linux") ./roc_nightly.tar.gz
run: mv $(ls -d artifact/* | grep "roc_nightly.*tar\.gz" | grep "linux_x86_64") ./roc_nightly.tar.gz

- name: decompress the tar
run: tar -xzvf roc_nightly.tar.gz
Expand All @@ -117,6 +144,8 @@ jobs:

- run: cp linux-x86_64-files/* ./basic-cli/src

- run: cp linux-arm64-files/* ./basic-cli/src

- run: cp macos-x86_64-files/* ./basic-cli/src

- run: ./roc_nightly/roc build --bundle=${{ env.ARCHIVE_FORMAT }} ./basic-cli/src/main.roc
Expand All @@ -139,7 +168,7 @@ jobs:
uses: actions/download-artifact@v3

- name: mv roc nightly and simplify name
run: mv $(ls -d artifact/* | grep "roc_nightly.*tar\.gz" | grep "linux") ./roc_nightly.tar.gz
run: mv $(ls -d artifact/* | grep "roc_nightly.*tar\.gz" | grep "linux_x86_64") ./roc_nightly.tar.gz

- name: decompress the tar
run: tar -xzvf roc_nightly.tar.gz
Expand All @@ -159,21 +188,31 @@ jobs:
cd basic-cli-platform && ls | grep "tar" | xargs brotli -d
ls | grep "tar$" | xargs tar -xf

- name: prep testing http-get.roc
- name: Install expect for tests if we dont have it yet
run: if ! dpkg -l | grep -qw expect; then sudo apt install -y expect; fi

- name: Install ncat for tests if we dont have it yet
run: if ! dpkg -l | grep -qw ncat; then sudo apt install -y ncat; fi

- name: prep testing
run: |
mv roc_nightly basic-cli-platform/.
cd basic-cli-platform
mkdir examples
cd examples
curl -fOL https://raw.githubusercontent.com/roc-lang/basic-cli/main/examples/http-get.roc
sed -i 's/pf:\ \"[^"]*/pf:\ \"\.\.\/main.roc/g' http-get.roc
cd ..
curl -fOL https://raw.githubusercontent.com/roc-lang/basic-cli/main/ci/expect_scripts/http-get.exp

- run: sudo apt install -y expect

- name: execute test
mkdir src
find . -maxdepth 1 -type f -exec mv {} src/ \;

mkdir temp-basic-cli
cd temp-basic-cli
git clone https://github.com/roc-lang/basic-cli.git
cd basic-cli
git checkout ${{ env.BASIC_CLI_BRANCH }}
cp -r examples ../..
cp -r ci ../..
cp -r LICENSE ../..
# LICENSE is necessary for command test

- name: run tests
run: |
cd basic-cli-platform
expect http-get.exp
ROC=./roc_nightly/roc EXAMPLES_DIR=./examples/ ROC_BUILD_FLAGS=--prebuilt-platform ./ci/all_tests.sh

2 changes: 1 addition & 1 deletion .github/workflows/benchmarks.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
#pull_request:

name: Benchmarks

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/devtools_test_linux_x86_64.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
# pull_request:

name: devtools nix files test - linux

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/devtools_test_macos_apple_silicon.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
# pull_request:

name: devtools nix files test - macos

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/macos_x86_64.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
#pull_request:

name: Macos x86-64 rust tests

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/markdown_link_check.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
#pull_request:
schedule:
- cron: '0 9 * * *' # 9=9am utc+0

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nix_linux_arm64_cargo.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
# pull_request:

name: test cargo build on linux arm64 inside nix

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nix_linux_arm64_default.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
# pull_request:

name: test default.nix on linux arm64

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nix_linux_x86_64.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
#pull_request:

name: Nix linux x86_64 cargo test

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nix_macos_apple_silicon.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
#pull_request:

name: Nix apple silicon cargo test

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nix_macos_x86_64.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
#pull_request:

name: Nix macOS x86_64 cargo test

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/spellcheck.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
#pull_request:

name: SpellCheck

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ubuntu_x86_64.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
#pull_request:

name: CI

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/windows_release_build.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
#pull_request:

name: windows - release build

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/windows_tests.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
on:
pull_request:
#pull_request:

name: windows - subset of tests

Expand Down
16 changes: 13 additions & 3 deletions ci/build_basic_cli.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,20 @@ set -euxo pipefail

git clone https://github.com/roc-lang/basic-cli.git

if [ "$(uname -m)" == "x86_64" ] && [ "$(uname -s)" == "Linux" ]; then
sudo apt-get install musl-tools
if [ "$(uname -s)" == "Linux" ]; then

# check if musl-tools is installed
if ! dpkg -l | grep -q musl-tools; then
# install musl-tools with timeout for sudo problems with CI
timeout 300s sudo apt-get install -y musl-tools
fi

cd basic-cli/src # we cd to install the target for the right rust version
rustup target add x86_64-unknown-linux-musl
if [ "$(uname -m)" == "x86_64" ]; then
rustup target add x86_64-unknown-linux-musl
elif [ "$(uname -m)" == "aarch64" ]; then
rustup target add aarch64-unknown-linux-musl
fi
cd ../..
fi

Expand Down