Skip to content

Add LLVM as submodule (and add GHA build scripts) #8

Add LLVM as submodule (and add GHA build scripts)

Add LLVM as submodule (and add GHA build scripts) #8

name: CI - manylinux x86_64 clang LLVM
on:
workflow_call:
workflow_dispatch:
pull_request:
merge_group:
push:
branches:
- main
concurrency:
# A PR number if a pull request and otherwise the commit hash. This cancels
# queued and in-progress runs for the same PR (presubmit) or commit
# (postsubmit). The workflow name is prepended to avoid conflicts between
# different workflows.
group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
cancel-in-progress: true
jobs:
manylinux_x64_clang_llvm:
name: Build LLVM and MLIR (linux)
runs-on: ubuntu-22.04
env:
CACHE_DIR: ${{ github.workspace }}/.container-cache
# either the PR number or `branch-N` where N always increments
CACHE_KEY: manylinux_x64_clang_llvm_${{ format('{0}-{1}', github.ref_name, github.run_number) }}
container:
image: quay.io/pypa/manylinux_2_28_x86_64
steps:
- name: "Set unified TZ"
uses: szenius/[email protected]
with:
# this is an arbitrary choice
timezoneLinux: "Asia/Singapore"
timezoneMacos: "Asia/Singapore"
timezoneWindows: "Singapore Standard Time"
- name: Enable cache
uses: actions/cache/restore@v3
with:
path: ${{ env.CACHE_DIR }}
key: ${{ env.CACHE_KEY }}
restore-keys: manylinux_x64_clang_llvm_
- name: "Check out repository"
uses: actions/[email protected]
with:
submodules: true
- name: "Install OS deps"
run: |
dnf install -y almalinux-release-devel
yum install -y sudo
- name: "Setup compiler/toolchain"
uses: aminya/setup-cpp@v1
with:
compiler: llvm-18
cmake: true
ninja: true
ccache: true
- name: "Setup ccache"
run: |
echo "CCACHE_DIR=${{ env.CACHE_DIR }}" >> $GITHUB_ENV
echo "CCACHE_MAXSIZE=700M" >> $GITHUB_ENV
echo "CCACHE_COMPILERCHECK=string:$(clang --version)" >> $GITHUB_ENV
echo "CCACHE_SLOPPINESS=include_file_ctime,include_file_mtime,time_macros" >> $GITHUB_ENV
- name: "Setup Python"
uses: actions/setup-python@v4
with:
python-version: '3.12'
- name: "Python deps"
run: |
pip install -r third_party/llvm-project/mlir/python/requirements.txt
- name: "Build LLVM and MLIR"
run: |
export LLVM_BUILD_DIR="$PWD/llvm-build"
export LLVM_INSTALL_DIR="$PWD/llvm-install"
build_tools/cmake/build_llvm.sh build_llvm
build_tools/cmake/build_llvm.sh build_mlir
- name: "Tar dist"
if: ${{ !cancelled() }}
run: |
pushd third_party/llvm-project && llvm_sha_short=$(git rev-parse --short HEAD) && popd
tar cf llvm-dist-linux-$llvm_sha_short.tar llvm-install
- name: "Upload dist"
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: linux_x86_64_llvm_packages
path: llvm-dist-*.tar
if-no-files-found: error
- name: "Save cache"
uses: actions/cache/save@v3
# if: ${{ !cancelled() && github.event_name == 'push' && github.ref_name == 'main' }}
if: ${{ !cancelled() }}
with:
path: ${{ env.CACHE_DIR }}
key: ${{ env.CACHE_KEY }}