aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorXing GUO <higuoxing@gmail.com>2021-01-17 14:17:18 +0800
committerXing GUO <higuoxing@gmail.com>2021-01-17 22:59:13 +0800
commitd06727bf8d6adcf26280f1c0bf80bed5f37262c5 (patch)
treef38161466d3db1958fc806a1e5ee1e8ef914ad07 /.github
parent2d676e45359295f83d62c6a1e03e2609598e83a6 (diff)
downloadriscv-gnu-toolchain-d06727bf8d6adcf26280f1c0bf80bed5f37262c5.zip
riscv-gnu-toolchain-d06727bf8d6adcf26280f1c0bf80bed5f37262c5.tar.gz
riscv-gnu-toolchain-d06727bf8d6adcf26280f1c0bf80bed5f37262c5.tar.bz2
[CI] Improve GitHub Action scripts.
This patch helps improve GitHub Action scripts. * Make CI happy again after d3dfbee69fc23d083384051d2c3a55da993a9110. * Simplify the logic of GH Action scripts using 'matrix'. * Add new precompile process for rv32/64-elf toolchain.
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/packaging.yaml134
1 files changed, 17 insertions, 117 deletions
diff --git a/.github/workflows/packaging.yaml b/.github/workflows/packaging.yaml
index 55c1868..227ae0f 100644
--- a/.github/workflows/packaging.yaml
+++ b/.github/workflows/packaging.yaml
@@ -6,8 +6,13 @@ on:
- master
jobs:
- checkout:
- runs-on: ubuntu-latest
+ package:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [ubuntu-18.04, ubuntu-20.04]
+ mode: [newlib, linux]
+ target: [rv32gc-ilp32d, rv64gc-lp64d]
steps:
- uses: actions/checkout@v2
@@ -15,132 +20,27 @@ jobs:
run: |
git submodule init
git submodule update --recursive --progress --recommend-shallow
-
- # workaround https://github.com/actions/upload-artifact/issues/38
- - name: tarball source
- run: |
- base=$(basename $PWD)
- cd ..
- tar czvf source.tar.gz --exclude-vcs -C $base .
- mv source.tar.gz $base/
-
- - uses: actions/upload-artifact@v2
- with:
- name: source-code-full
- path: source.tar.gz
-
-
- build-riscv32-ubuntu_18_04:
- needs: checkout
- runs-on: ubuntu-18.04
- steps:
- - uses: actions/download-artifact@v2
- with:
- name: source-code-full
-
- # workaround https://github.com/actions/upload-artifact/issues/38
- - name: tarball source
- run: tar -xvf source.tar.gz
-
- - name: install dependencies
- run: sudo ./.github/setup-apt.sh
-
- - name: Build Toolchain
- run: |
- ./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d
- sudo make -j $(nproc) linux
- - name: tarball build
- run: tar czvf riscv.tar.gz -C /opt/ riscv/
-
- - uses: actions/upload-artifact@v2
- with:
- name: riscv32-glibc-ubuntu_18_04-nightly
- path: riscv.tar.gz
-
-
- build-riscv64-ubuntu_18_04:
- needs: checkout
- runs-on: ubuntu-18.04
- steps:
- - uses: actions/download-artifact@v2
- with:
- name: source-code-full
-
- # workaround https://github.com/actions/upload-artifact/issues/38
- - name: tarball source
- run: tar -xvf source.tar.gz
-
- name: install dependencies
run: sudo ./.github/setup-apt.sh
- - name: Build Toolchain
+ - name: build toolchain
run: |
- ./configure --prefix=/opt/riscv
- sudo make -j $(nproc) linux
+ TARGET_TUPLE=($(echo ${{ matrix.target }} | tr "-" "\n"))
+ ./configure --prefix=/opt/riscv --with-arch=${TARGET_TUPLE[0]} --with-abi=${TARGET_TUPLE[1]}
+ sudo make -j $(nproc) ${{ matrix.mode }}
- name: tarball build
run: tar czvf riscv.tar.gz -C /opt/ riscv/
-
- - uses: actions/upload-artifact@v2
- with:
- name: riscv64-glibc-ubuntu_18_04-nightly
- path: riscv.tar.gz
-
- build-riscv32-ubuntu_20_04:
- needs: checkout
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/download-artifact@v2
- with:
- name: source-code-full
-
- # workaround https://github.com/actions/upload-artifact/issues/38
- - name: tarball source
- run: tar -xvf source.tar.gz
-
- - name: install dependencies
- run: sudo ./.github/setup-apt.sh
-
- - name: Build Toolchain
+ - name: generate prebuilt toolchain name
+ id: toolchain-name-generator
run: |
- ./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d
- sudo make -j $(nproc) linux
-
- - name: tarball build
- run: tar czvf riscv.tar.gz -C /opt/ riscv/
-
- - uses: actions/upload-artifact@v2
- with:
- name: riscv32-glibc-ubuntu_20_04-nightly
- path: riscv.tar.gz
+ if [[ "${{ matrix.target }}" == *"32"* ]]; then BITS=32; else BITS=64; fi
+ if [[ "${{ matrix.mode }}" == "linux" ]]; then MODE="glibc"; else MODE="elf"; fi
+ echo ::set-output name=TOOLCHAIN_NAME::riscv$BITS-$MODE-${{ matrix.os }}-nightly
-
- build-riscv64-ubuntu_20_04:
- needs: checkout
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/download-artifact@v2
- with:
- name: source-code-full
-
- # workaround https://github.com/actions/upload-artifact/issues/38
- - name: tarball source
- run: tar -xvf source.tar.gz
-
- - name: install dependencies
- run: sudo ./.github/setup-apt.sh
-
- - name: Build Toolchain
- run: |
- ./configure --prefix=/opt/riscv
- sudo make -j $(nproc) linux
-
- - name: tarball build
- run: tar czvf riscv.tar.gz -C /opt/ riscv/
-
- uses: actions/upload-artifact@v2
with:
- name: riscv64-glibc-ubuntu_20_04-nightly
+ name: ${{ steps.toolchain-name-generator.outputs.TOOLCHAIN_NAME }}
path: riscv.tar.gz