Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
5 changes: 2 additions & 3 deletions .github/actions/get-emsdk/action.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: "get emsdk"
name: "Get Emscripten SDK"
inputs:
version:
description: ""
Expand All @@ -9,12 +9,11 @@ inputs:
runs:
using: "composite"
steps:

- name: install emsdk
shell: bash
run: |
git clone https://github.com/emscripten-core/emsdk.git ./emsdk/
cd emsdk
git checkout tags/${{ inputs.version }}
./emsdk install ${{ inputs.version }}
./emsdk activate ${{ inputs.version }}
./emsdk activate ${{ inputs.version }}
41 changes: 10 additions & 31 deletions .github/actions/get-llvm/action.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,12 @@
# example:
#
# - name: get llvm
# uses: ./.github/actions/get-llvm
# - uses: ./.github/actions/get-llvm
# with:
# releasePrefix: llvm-
# artifactArch: macos-arm64
# dir: target-llvm/macos
# target: x86_64-unknown-linux-gnu

name: "get llvm"
name: "Download LLVM"
inputs:
artifactArch:
target:
required: true
releasePrefix:
description: "LLVM release tag prefix to search"
required: false
default: "llvm-"
dir:
description: "Archive extract path (`tar -C`)"
required: false
default: "./"
stripComponents:
description: "Strip UMBER leading components from file names on extraction (`tar --strip-components`)"
required: false
default: 0


runs:
using: "composite"
Expand All @@ -32,16 +15,15 @@ runs:
id: find
uses: actions/github-script@v7
env:
releasePrefix: ${{ inputs.releasePrefix }}
artifactArch: ${{ inputs.artifactArch }}
target: ${{ inputs.target }}
with:
result-encoding: string
script: |
let page = 1;
let releases = [];

let releasePrefix = process.env.releasePrefix
let artifactArch = process.env.artifactArch
let releasePrefix = "llvm-"
let target = process.env.target

do {
const res = await github.rest.repos.listReleases({
Expand All @@ -61,10 +43,10 @@ runs:
});
if (llvmLatestRelease){
let asset = llvmLatestRelease.assets.find(asset =>{
return asset.name.includes(artifactArch);
return asset.name.includes(target);
});
if (!asset){
core.setFailed(`Artifact for '${artifactArch}' not found in release ${llvmLatestRelease.tag_name} (${llvmLatestRelease.html_url})`);
core.setFailed(`Artifact for '${target}' not found in release ${llvmLatestRelease.tag_name} (${llvmLatestRelease.html_url})`);
process.exit();
}
return asset.browser_download_url;
Expand All @@ -79,13 +61,10 @@ runs:
- name: download
shell: bash
run: |
mkdir -p ${{ inputs.dir }}
curl -sSLo llvm.tar.gz ${{ steps.find.outputs.result }}
ls -al

- name: unpack
shell: bash
run: |
tar -xf llvm.tar.gz -C ${{ inputs.dir }} --strip-components=${{ inputs.stripComponents }}
tar -xf llvm.tar.gz
rm llvm.tar.gz
ls -al ${{ inputs.dir }}
31 changes: 31 additions & 0 deletions .github/actions/get-solc/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: "Install Solidity Compiler"

runs:
using: "composite"
steps:
- name: Put Solc Direcotry into PATH
shell: bash
run: |
mkdir -p solc
echo "$(pwd)/solc/" >> $GITHUB_PATH

- name: Figure out Solc Download URL
shell: bash
run: |
if [[ "${{ runner.os }}" == "Linux" ]]; then
echo "SOLC_NAME=solc-static-linux" >> $GITHUB_ENV
elif [[ "${{ runner.os }}" == "Windows" ]]; then
echo "SOLC_NAME=solc-windows.exe" >> $GITHUB_ENV
else
echo "SOLC_NAME=solc-macos" >> $GITHUB_ENV
fi

- name: Download Solc
shell: bash
run: |
curl -sSL --output solc/solc https://github.com/ethereum/solidity/releases/download/v0.8.28/${SOLC_NAME}

- name: Make Solc Executable
shell: bash
run: |
chmod +x solc/solc
181 changes: 71 additions & 110 deletions .github/workflows/release-llvm.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
name: Release LLVM

on:
workflow_dispatch:
inputs:
Expand All @@ -9,14 +8,14 @@ on:
description: llvm version in "x.x.x" format, e.g. "18.1.8"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
CARGO_TERM_COLOR: always

jobs:
create-release:
create-release-draft:
runs-on: ubuntu-latest
permissions:
contents: write
Expand All @@ -27,145 +26,107 @@ jobs:
run: |
echo "version=llvm-${{ inputs.llvm_version }}-revive.${GITHUB_SHA:0:7}" >> $GITHUB_OUTPUT

- name: create release
- name: Create Release
uses: softprops/action-gh-release@v2
with:
name: "LLVM binaries release: ${{ steps.resolve-version.outputs.version }}"
body: "This release includes binaries of LLVM, used to compile revive itself"
make_latest: "false"
name: ${{ steps.resolve-version.outputs.version }}
body: "LLVM is a dependency of revive. The LLVM releases are used by our CI to build revive."
draft: true
tag_name: ${{ steps.resolve-version.outputs.version }}

build-macos:
build:
strategy:
matrix:
os: [macos-14, macos-13]
target: [x86_64-unknown-linux-gnu, x86_64-unknown-linux-musl, wasm32-unknown-emscripten, aarch64-apple-darwin, x86_64-apple-darwin, x86_64-pc-windows-msvc]
include:
- os: macos-13
arch: x64
- os: macos-14
arch: arm64
needs: create-release
runs-on: ${{ matrix.os }}
name: "build-macos-${{ matrix.arch }}"
- target: x86_64-unknown-linux-gnu
builder-arg: gnu
host: linux
runner: parity-large
- target: x86_64-unknown-linux-musl
builder-arg: musl
host: linux
runner: parity-large
- target: wasm32-unknown-emscripten
builder-arg: emscripten
host: linux
runner: parity-large
- target: aarch64-apple-darwin
builder-arg: gnu
host: macos
runner: macos-14
- target: x86_64-apple-darwin
builder-arg: gnu
host: macos
runner: macos-13
- target: x86_64-pc-windows-msvc
builder-arg: gnu
host: windows
runner: windows-latest
needs: create-release-draft
runs-on: ${{ matrix.runner }}
env:
RUST_LOG: trace
permissions:
contents: write # for uploading assets to release
steps:
- uses: actions/checkout@v4

- name: install macos deps
run: |
brew install ninja

- name: versions
run: |
rustup show
cargo --version
cmake --version
echo "bash:" && bash --version
echo "ninja:" && ninja --version
echo "clang:" && clang --version

- name: Build LLVM
run: |
make install-llvm

- name: clean
# check removed files
run: |
cd target-llvm/gnu/target-final/bin/
rm diagtool llvm-libtool-darwin llvm-lipo llvm-pdbutil llvm-dwarfdump llvm-nm llvm-readobj llvm-cfi-verify \
sancov llvm-debuginfo-analyzer llvm-objdump llvm-profgen llvm-extract llvm-jitlink llvm-c-test llvm-gsymutil llvm-dwp \
dsymutil llvm-dwarfutil llvm-exegesis lli clang-rename bugpoint clang-extdef-mapping clang-refactor c-index-test \
llvm-reduce llvm-lto clang-linker-wrapper llc llvm-lto2

- name: package artifacts
run: |
tar -czf "${{ needs.create-release.outputs.version }}-macos-${{ matrix.arch }}.tar.gz" target-llvm/gnu/target-final

- name: upload archive to release
uses: softprops/action-gh-release@v2
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
make_latest: "false"
tag_name: ${{ needs.create-release.outputs.version }}
files: |
${{ needs.create-release.outputs.version }}-macos-${{ matrix.arch }}.tar.gz


build-linux-all:
needs: create-release
runs-on: parity-large
env:
RUST_LOG: trace
permissions:
contents: write # for uploading assets to release
steps:
- uses: actions/checkout@v4
# without this it will override our rust flags
rustflags: ""
cache-key: ${{ matrix.target }}

- name: install linux deps
- name: Install Dependencies
if: ${{ matrix.host == 'linux' }}
run: |
sudo apt-get update && sudo apt-get install -y cmake ninja-build curl git libssl-dev pkg-config clang lld musl

- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
components: rust-src
target: wasm32-unknown-emscripten
rustflags: ""

- name: versions
- name: Install Dependencies
if: ${{ matrix.host == 'macos' }}
run: |
rustup show
cargo --version
cmake --version
echo "bash:" && bash --version
echo "ninja:" && ninja --version
echo "clang:" && clang --version
brew install ninja

- name: Build host LLVM
- name: Install LLVM Builder
run: |
make install-llvm
cargo install --path crates/llvm-builder

- name: Build gnu LLVM
- name: Clone LLVM
run: |
revive-llvm clone
revive-llvm build --llvm-projects lld --llvm-projects clang
revive-llvm --target-env ${{ matrix.builder-arg }} clone

- name: Build musl LLVM
- name: Build LLVM
if: ${{ matrix.target != 'wasm32-unknown-emscripten' }}
run: |
revive-llvm --target-env musl build --llvm-projects lld --llvm-projects clang
revive-llvm --target-env ${{ matrix.builder-arg }} build --llvm-projects lld --llvm-projects clang

- name: Build emscripten LLVM
- name: Build LLVM
if: ${{ matrix.target == 'wasm32-unknown-emscripten' }}
run: |
revive-llvm --target-env emscripten clone
source emsdk/emsdk_env.sh
revive-llvm --target-env emscripten build --llvm-projects lld
revive-llvm --target-env ${{ matrix.builder-arg }} build --llvm-projects lld

- name: clean
# check removed files
- name: Remove Unnecessary Binaries
shell: bash
run: |
for target in gnu emscripten musl; do
cd target-llvm/${target}/target-final/bin/
rm -rf diagtool llvm-libtool-darwin llvm-lipo llvm-pdbutil llvm-dwarfdump llvm-nm llvm-readobj llvm-cfi-verify \
sancov llvm-debuginfo-analyzer llvm-objdump llvm-profgen llvm-extract llvm-jitlink llvm-c-test llvm-gsymutil llvm-dwp \
dsymutil llvm-dwarfutil llvm-exegesis lli clang-rename bugpoint clang-extdef-mapping clang-refactor c-index-test \
llvm-reduce llvm-lto clang-linker-wrapper llc llvm-lto2 llvm-otool llvm-readelf
cd -
done

- name: package artifacts
cd target-llvm/${{ matrix.builder-arg }}/target-final/bin/
rm -f diagtool* llvm-libtool-darwin* llvm-lipo* llvm-pdbutil* llvm-dwarfdump* llvm-nm* llvm-readobj* llvm-cfi-verify* \
sancov* llvm-debuginfo-analyzer* llvm-objdump* llvm-profgen* llvm-extract* llvm-jitlink* llvm-c-test* llvm-gsymutil* llvm-dwp* \
dsymutil* llvm-dwarfutil* llvm-exegesis* lli clang-rename* bugpoint* clang-extdef-mapping* clang-refactor* c-index-test* \
llvm-reduce* llvm-lto* clang-linker-wrapper* llc* llvm-lto2* llvm-otool* llvm-readelf* \
clang-repl* clang-check* clang-scan-deps*
cd -

- name: Package Artifact
shell: bash
run: |
tar -czf "${{ needs.create-release.outputs.version }}-x86_64-linux-gnu-linux.tar.gz" target-llvm/gnu/target-final
tar -czf "${{ needs.create-release.outputs.version }}-x86_64-linux-musl.tar.gz" target-llvm/musl/target-final
tar -czf "${{ needs.create-release.outputs.version }}-wasm32-unknown-emscripten.tar.gz" target-llvm/emscripten/target-final
mv target-llvm/${{ matrix.builder-arg }}/target-final/ llvm-${{ matrix.target }}
tar -czf "${{ needs.create-release-draft.outputs.version }}-${{ matrix.target }}.tar.gz" llvm-${{ matrix.target }}

- name: upload archive to release
- name: Add Artifact to Release
uses: softprops/action-gh-release@v2
with:
make_latest: "false"
tag_name: ${{ needs.create-release.outputs.version }}
tag_name: ${{ needs.create-release-draft.outputs.version }}
draft: true
files: |
${{ needs.create-release.outputs.version }}-x86_64-linux-gnu-linux.tar.gz
${{ needs.create-release.outputs.version }}-x86_64-linux-musl.tar.gz
${{ needs.create-release.outputs.version }}-wasm32-unknown-emscripten.tar.gz
${{ needs.create-release-draft.outputs.version }}-${{ matrix.target }}.tar.gz
Loading
Loading