Skip to content

Daily-Update

Daily-Update #247

Workflow file for this run

name: Daily-Update
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# daily fetch and check
schedule:
- cron: '0 0 1/3 * *'
jobs:
configure-dependencies:
if: github.repository == 'aqjune/mlir-tv'
runs-on: ubuntu-20.04
steps:
- name: Fetch dependency cache
id: cache
uses: actions/cache@v2
with:
path: /tmp/image/.dep
key: cache-dep-${{ secrets.CACHE_VERSION }}
# if cache miss
- name: Download dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
mkdir -p /tmp/image/.dep
sudo apt update -y
sudo apt install --download-only git g++ python3.9 python3.9-venv \
cmake ninja-build default-jdk m4 libncurses5-dev
cp /var/cache/apt/archives/*.deb /tmp/image/.dep/
# endif cache miss
configure-z3:
if: github.repository == 'aqjune/mlir-tv'
needs: configure-dependencies
runs-on: ubuntu-20.04
outputs:
sha: ${{ steps.sha.outputs.sha }}
steps:
- name: Checkout Z3
uses: actions/checkout@v2
with:
repository: Z3Prover/z3
ref: z3-4.8.13
path: src/z3
- name: Get Z3 SHA
id: sha
run: echo "::set-output name=sha::$(git -C src/z3 rev-parse HEAD)"
- name: Fetch Z3 cache
id: cache
uses: actions/cache@v2
with:
path: /tmp/image/opt/z3
key: cache-z3-${{ secrets.CACHE_VERSION }}-${{ steps.sha.outputs.sha }}
# if cache miss
- name: Fetch dependency cache
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/cache@v2
with:
path: /tmp/image/.dep
key: cache-dep-${{ secrets.CACHE_VERSION }}
- name: Unpack dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
sudo apt install /tmp/image/.dep/*.deb
- name: Rebuild Z3
if: steps.cache.outputs.cache-hit != 'true'
run: |
mkdir -p /tmp/image/opt/z3
cd src/z3
cmake -B build -G Ninja \
-DCMAKE_INSTALL_PREFIX=/tmp/image/opt/z3 -DCMAKE_BUILD_TYPE=MinSizeRel
cmake --build build --target install
# endif cache miss
configure-cvc5:
if: github.repository == 'aqjune/mlir-tv'
needs: configure-dependencies
runs-on: ubuntu-20.04
outputs:
sha: ${{ steps.sha.outputs.sha }}
steps:
- name: Checkout CVC5
uses: actions/checkout@v2
with:
repository: cvc5/cvc5
ref: cvc5-1.2.0
path: src/cvc5
- name: Get CVC5 SHA
id: sha
run: echo "::set-output name=sha::$(git -C src/cvc5 rev-parse HEAD)"
- name: Fetch CVC5 cache
id: cache
uses: actions/cache@v2
with:
path: /tmp/image/opt/cvc5
key: cache-cvc5-${{ secrets.CACHE_VERSION }}-${{ steps.sha.outputs.sha }}
# if cache miss
- name: Fetch dependency cache
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/cache@v2
with:
path: /tmp/image/.dep
key: cache-dep-${{ secrets.CACHE_VERSION }}
- name: Unpack dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
sudo apt install /tmp/image/.dep/*.deb
- name: Rebuild CVC5
if: steps.cache.outputs.cache-hit != 'true'
run: |
sudo python3 -m pip install toml
mkdir -p /tmp/image/opt/cvc5
cd src/cvc5
./configure.sh --prefix=/tmp/image/opt/cvc5 --ninja --no-poly --auto-download
ninja -C build
ninja -C build install
# endif cache miss
configure-llvm:
if: github.repository == 'aqjune/mlir-tv'
needs: configure-dependencies
runs-on: ubuntu-20.04
outputs:
sha: ${{ steps.sha.outputs.sha }}
steps:
- name: Checkout LLVM
uses: actions/checkout@v2
with:
repository: llvm/llvm-project
path: src/llvm-project
- name: Get LLVM SHA
id: sha
run: echo "::set-output name=sha::$(git -C src/llvm-project rev-parse HEAD)"
- name: Fetch LLVM cache
id: cache
uses: actions/cache@v2
with:
path: /tmp/image/opt/llvm
key: cache-llvm-${{ secrets.CACHE_VERSION }}-${{ steps.sha.outputs.sha }}
# if cache miss
- name: Fetch dependency cache
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/cache@v2
with:
path: /tmp/image/.dep
key: cache-dep-${{ secrets.CACHE_VERSION }}
- name: Unpack dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
sudo apt install /tmp/image/.dep/*.deb
- name: Rebuild LLVM
if: steps.cache.outputs.cache-hit != 'true'
run: |
mkdir -p /tmp/image/opt/llvm
cd src/llvm-project
cmake -G Ninja -S llvm -B build \
-DLLVM_ENABLE_PROJECTS="mlir" -DLLVM_TARGETS_TO_BUILD="X86" \
-DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_ZLIB=Off -DLLVM_ENABLE_ZSTD=Off \
-DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=/tmp/image/opt/llvm
cmake --build build --target install
# endif cache miss
build-image:
if: github.repository == 'aqjune/mlir-tv'
needs: [configure-z3, configure-cvc5, configure-llvm]
runs-on: ubuntu-20.04
steps:
- name: Get date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Fetch Z3 cache
uses: actions/cache@v2
with:
path: /tmp/image/opt/z3
key: cache-z3-${{ secrets.CACHE_VERSION }}-${{ needs.configure-z3.outputs.sha }}
- name: Fetch CVC5 cache
uses: actions/cache@v2
with:
path: /tmp/image/opt/cvc5
key: cache-cvc5-${{ secrets.CACHE_VERSION }}-${{ needs.configure-cvc5.outputs.sha }}
- name: Fetch LLVM cache
uses: actions/cache@v2
with:
path: /tmp/image/opt/llvm
key: cache-llvm-${{ secrets.CACHE_VERSION }}-${{ needs.configure-llvm.outputs.sha }}
- name: Checkout this repo
uses: actions/checkout@v2
with:
path: mlir-tv
- name: Move repo to absolute location
run: |
mv mlir-tv /tmp/image/mlir-tv
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
- name: Build image
uses: docker/build-push-action@v2
with:
context: /tmp/image
file: /tmp/image/mlir-tv/.github/workflows/env.Dockerfile
builder: ${{ steps.buildx.outputs.name }}
push: true
tags: |
strikef/mlir-tv-ci-base:latest
strikef/mlir-tv-ci-base:${{ steps.date.outputs.date }}