Skip to content

Commit

Permalink
Use two-stage selfbuild in CI (Linux only)
Browse files Browse the repository at this point in the history
  • Loading branch information
dbabokin committed Oct 17, 2021
1 parent 0a16064 commit 8a23b66
Show file tree
Hide file tree
Showing 5 changed files with 308 additions and 42 deletions.
46 changes: 40 additions & 6 deletions .github/workflows/linux-nightly-trunk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ env:
jobs:
# Building LLVM in docker, as using native Ubuntu 16.04 github-hosted image contains newer-than-expected libs and
# makes the resulting build not usable on other Ubuntu 16.04 images.
linux-build-llvm-trunk:
# Doing Linux build in two stages, as self-build is required, but Github Action runners are not always capable
# to finish the full job in less than 6 hours.
linux-build-llvm-trunk-1:
runs-on: ubuntu-latest

steps:
Expand All @@ -32,14 +34,46 @@ jobs:
- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker build --tag ispc/ubuntu16.04 --target=llvm_build_only --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=trunk .
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage1 --target=llvm_build_step1 --cache-to=type=local,dest=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=trunk .
- name: Upload package
uses: actions/upload-artifact@v2
with:
name: llvm_trunk_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

linux-build-llvm-trunk-2:
needs: [linux-build-llvm-trunk-1]
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
submodules: true

- name: Check environment
run: |
cat /proc/cpuinfo
- name: Download package
uses: actions/download-artifact@v2
with:
name: llvm_trunk_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
ls -al
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage2 --target=llvm_build_step2 --cache-from=type=local,src=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=trunk --output=type=tar,dest=result.tar .
- name: Pack LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker run ispc/ubuntu16.04
export CONTAINER=`docker ps --all |head -2 |tail -1 |awk '//{print $1}'`
sudo docker cp $CONTAINER:/usr/local/src/llvm/bin-trunk .
tar xvf result.tar usr/local/src/llvm
mv usr/local/src/llvm/bin-trunk .
# Note using gzip here, instead of xz - trading of space for speed, as it's just for passing to another stage.
tar czvf llvm-trunk-ubuntu16.04-Release+Asserts-x86.arm.wasm.tar.gz bin-trunk
Expand All @@ -50,7 +84,7 @@ jobs:
path: docker/ubuntu/16.04/cpu_ispc_build/llvm-trunk-ubuntu16.04-Release+Asserts-x86.arm.wasm.tar.gz

linux-build-ispc-llvm-trunk:
needs: [linux-build-llvm-trunk]
needs: [linux-build-llvm-trunk-2]
runs-on: ubuntu-latest
env:
LLVM_VERSION: "trunk"
Expand Down
46 changes: 40 additions & 6 deletions .github/workflows/nightly-13.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ env:
jobs:
# Building LLVM in docker, as using native Ubuntu 16.04 github-hosted image contains newer-than-expected libs and
# makes the resulting build not usable on other Ubuntu 16.04 images.
linux-build-llvm-13:
# Doing Linux build in two stages, as self-build is required, but Github Action runners are not always capable
# to finish the full job in less than 6 hours.
linux-build-llvm-13-1:
runs-on: ubuntu-latest

steps:
Expand All @@ -34,14 +36,46 @@ jobs:
- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker build --tag ispc/ubuntu16.04 --target=llvm_build_only --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=13.0 .
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage1 --target=llvm_build_step1 --cache-to=type=local,dest=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=13.0 .
- name: Upload package
uses: actions/upload-artifact@v2
with:
name: llvm13_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

linux-build-llvm-13-2:
needs: [linux-build-llvm-13-1]
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
submodules: true

- name: Check environment
run: |
cat /proc/cpuinfo
- name: Download package
uses: actions/download-artifact@v2
with:
name: llvm13_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
ls -al
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage2 --target=llvm_build_step2 --cache-from=type=local,src=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=13.0 --output=type=tar,dest=result.tar .
- name: Pack LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker run ispc/ubuntu16.04
export CONTAINER=`docker ps --all |head -2 |tail -1 |awk '//{print $1}'`
sudo docker cp $CONTAINER:/usr/local/src/llvm/bin-13.0 .
tar xvf result.tar usr/local/src/llvm
mv usr/local/src/llvm/bin-13.0 .
# Note using gzip here, instead of xz - trading of space for speed, as it's just for passing to another stage.
tar czvf llvm-13.0.0-ubuntu16.04-Release+Asserts-x86.arm.wasm.tar.gz bin-13.0
Expand All @@ -52,7 +86,7 @@ jobs:
path: docker/ubuntu/16.04/cpu_ispc_build/llvm-13.0.0-ubuntu16.04-Release+Asserts-x86.arm.wasm.tar.gz

linux-build-ispc-llvm-13:
needs: [linux-build-llvm-13]
needs: [linux-build-llvm-13-2]
runs-on: ubuntu-latest
env:
LLVM_VERSION: "13.0"
Expand Down
86 changes: 76 additions & 10 deletions .github/workflows/rebuild-llvm11.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ on:
jobs:
# Building LLVM in docker, as using native Ubuntu 16.04 github-hosted image contains newer-than-expected libs and
# makes the resulting build not usable on other Ubuntu 16.04 images.
linux-build:
# Doing Linux build in two stages, as self-build is required, but Github Action runners are not always capable
# to finish the full job in less than 6 hours.
linux-build-1:
runs-on: ubuntu-latest

steps:
Expand All @@ -29,14 +31,46 @@ jobs:
- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker build --tag ispc/ubuntu16.04 --target=llvm_build_only --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=11.1 .
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage1 --target=llvm_build_step1 --cache-to=type=local,dest=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=11.1 .
- name: Upload package
uses: actions/upload-artifact@v2
with:
name: llvm11_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

linux-build-2:
needs: [linux-build-1]
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
submodules: true

- name: Check environment
run: |
cat /proc/cpuinfo
- name: Download package
uses: actions/download-artifact@v2
with:
name: llvm11_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
ls -al
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage2 --target=llvm_build_step2 --cache-from=type=local,src=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=11.1 --output=type=tar,dest=result.tar .
- name: Pack LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker run ispc/ubuntu16.04
export CONTAINER=`docker ps --all |head -2 |tail -1 |awk '//{print $1}'`
sudo docker cp $CONTAINER:/usr/local/src/llvm/bin-11.1 .
tar xvf result.tar usr/local/src/llvm
mv usr/local/src/llvm/bin-11.1 .
tar cJvf llvm-11.1.0-ubuntu16.04-Release+Asserts-x86.arm.wasm.tar.xz bin-11.1
- name: Upload package
Expand All @@ -45,7 +79,7 @@ jobs:
name: llvm11_linux
path: docker/ubuntu/16.04/cpu_ispc_build/llvm-11.1.0-ubuntu16.04-Release+Asserts-x86.arm.wasm.tar.xz

linux-build-release:
linux-build-release-1:
runs-on: ubuntu-latest

steps:
Expand All @@ -60,14 +94,46 @@ jobs:
- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker build --tag ispc/ubuntu16.04 --target=llvm_build_only --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=11.1 --build-arg EXTRA_BUILD_ARG="--llvm-disable-assertions" .
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage1 --target=llvm_build_step1 --cache-to=type=local,dest=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=11.1 --build-arg EXTRA_BUILD_ARG="--llvm-disable-assertions" .
- name: Upload package
uses: actions/upload-artifact@v2
with:
name: llvm11rel_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

linux-build-release-2:
needs: [linux-build-release-1]
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
submodules: true

- name: Check environment
run: |
cat /proc/cpuinfo
- name: Download package
uses: actions/download-artifact@v2
with:
name: llvm11rel_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
ls -al
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage2 --target=llvm_build_step2 --cache-from=type=local,src=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=11.1 --build-arg EXTRA_BUILD_ARG="--llvm-disable-assertions" --output=type=tar,dest=result.tar .
- name: Pack LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker run ispc/ubuntu16.04
export CONTAINER=`docker ps --all |head -2 |tail -1 |awk '//{print $1}'`
sudo docker cp $CONTAINER:/usr/local/src/llvm/bin-11.1 .
tar xvf result.tar usr/local/src/llvm
mv usr/local/src/llvm/bin-11.1 .
tar cJvf llvm-11.1.0-ubuntu16.04-Release-x86.arm.wasm.tar.xz bin-11.1
- name: Upload package
Expand Down
86 changes: 76 additions & 10 deletions .github/workflows/rebuild-llvm12.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ on:
jobs:
# Building LLVM in docker, as using native Ubuntu 16.04 github-hosted image contains newer-than-expected libs and
# makes the resulting build not usable on other Ubuntu 16.04 images.
linux-build:
# Doing Linux build in two stages, as self-build is required, but Github Action runners are not always capable
# to finish the full job in less than 6 hours.
linux-build-1:
runs-on: ubuntu-latest

steps:
Expand All @@ -29,14 +31,46 @@ jobs:
- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker build --tag ispc/ubuntu16.04 --target=llvm_build_only --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=12.0 .
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage1 --target=llvm_build_step1 --cache-to=type=local,dest=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=12.0 .
- name: Upload package
uses: actions/upload-artifact@v2
with:
name: llvm12_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

linux-build-2:
needs: [linux-build-1]
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
submodules: true

- name: Check environment
run: |
cat /proc/cpuinfo
- name: Download package
uses: actions/download-artifact@v2
with:
name: llvm12_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
ls -al
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage2 --target=llvm_build_step2 --cache-from=type=local,src=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=12.0 --output=type=tar,dest=result.tar .
- name: Pack LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker run ispc/ubuntu16.04
export CONTAINER=`docker ps --all |head -2 |tail -1 |awk '//{print $1}'`
sudo docker cp $CONTAINER:/usr/local/src/llvm/bin-12.0 .
tar xvf result.tar usr/local/src/llvm
mv usr/local/src/llvm/bin-12.0 .
tar cJvf llvm-12.0.1-ubuntu16.04-Release+Asserts-x86.arm.wasm.tar.xz bin-12.0
- name: Upload package
Expand All @@ -45,7 +79,7 @@ jobs:
name: llvm12_linux
path: docker/ubuntu/16.04/cpu_ispc_build/llvm-12.0.1-ubuntu16.04-Release+Asserts-x86.arm.wasm.tar.xz

linux-build-release:
linux-build-release-1:
runs-on: ubuntu-latest

steps:
Expand All @@ -60,14 +94,46 @@ jobs:
- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker build --tag ispc/ubuntu16.04 --target=llvm_build_only --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=12.0 --build-arg EXTRA_BUILD_ARG="--llvm-disable-assertions" .
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage1 --target=llvm_build_step1 --cache-to=type=local,dest=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=12.0 --build-arg EXTRA_BUILD_ARG="--llvm-disable-assertions" .
- name: Upload package
uses: actions/upload-artifact@v2
with:
name: llvm12rel_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

linux-build-release-2:
needs: [linux-build-release-1]
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
submodules: true

- name: Check environment
run: |
cat /proc/cpuinfo
- name: Download package
uses: actions/download-artifact@v2
with:
name: llvm12rel_linux_stage1_cache
path: docker/ubuntu/16.04/cpu_ispc_build/cache.local

- name: Build LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
ls -al
docker buildx create --use
docker buildx build --tag ispc/ubuntu16.04:stage2 --target=llvm_build_step2 --cache-from=type=local,src=cache.local --build-arg REPO=$GITHUB_REPOSITORY --build-arg SHA=$GITHUB_SHA --build-arg LLVM_VERSION=12.0 --build-arg EXTRA_BUILD_ARG="--llvm-disable-assertions" --output=type=tar,dest=result.tar .
- name: Pack LLVM
run: |
cd docker/ubuntu/16.04/cpu_ispc_build
docker run ispc/ubuntu16.04
export CONTAINER=`docker ps --all |head -2 |tail -1 |awk '//{print $1}'`
sudo docker cp $CONTAINER:/usr/local/src/llvm/bin-12.0 .
tar xvf result.tar usr/local/src/llvm
mv usr/local/src/llvm/bin-12.0 .
tar cJvf llvm-12.0.1-ubuntu16.04-Release-x86.arm.wasm.tar.xz bin-12.0
- name: Upload package
Expand Down
Loading

0 comments on commit 8a23b66

Please sign in to comment.