Skip to content

bump opensbi to v1.3.1 with immediate fixes #132

bump opensbi to v1.3.1 with immediate fixes

bump opensbi to v1.3.1 with immediate fixes #132

Workflow file for this run

# This is a basic workflow to help you get started with Actions
name: Build and Test Linux SDK
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the dev_nuclei_next branch
on:
push:
branches: [ dev* ]
paths-ignore:
- README.md
- LICENSE
- .gitlab-ci.yml
- .gitignore
pull_request:
branches: [ dev_nuclei_next ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
name: build for ${{ matrix.soc }} - ${{ matrix.core }} - ${{ matrix.boot_mode }}
runs-on: ubuntu-20.04
strategy:
matrix:
soc: [demosoc, evalsoc]
core: [ux600, ux600fd]
boot_mode: [sd, flash]
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout Linux SDK Code
uses: actions/checkout@v2
with:
submodules: recursive
- name: Tarball source
run: |
base=$(basename $PWD)
cd ..
tar czvf source.tar.gz --exclude-vcs -C $base .
mv source.tar.gz $base/
- name: Upload source
if: matrix.core == 'ux600' && matrix.boot_mode == 'sd' && matrix.soc == 'demosoc'
uses: actions/[email protected]
with:
name: nuclei_linux_sdk_source
path: source.tar.gz
# continue build on error
continue-on-error: true
- name: Caching packages
uses: actions/cache@v2
with:
path: buildroot/dl
key: build
# Install dependendenc
- name: Install dependencies
run: |
sudo apt-get install build-essential git autotools-dev cmake texinfo bison minicom flex liblz4-tool \
libgmp-dev libmpfr-dev libmpc-dev gawk libz-dev libssl-dev device-tree-compiler libncursesw5-dev libncursesw5 \
python3 python3-pip mtools
sudo pip3 install git-archive-all
mkdir -p buildroot/dl
QEMUVER=2022.12
if [ ! -f buildroot/dl/nuclei-qemu-${QEMUVER}-linux-x64.tar.gz ] ; then
wget -P buildroot/dl https://nucleisys.com/upload/files/toochain/qemu/nuclei-qemu-${QEMUVER}-linux-x64.tar.gz
fi
mkdir -p prebuilt_tools
tar -xzf buildroot/dl/nuclei-qemu-${QEMUVER}-linux-x64.tar.gz -C prebuilt_tools
# Build bootimages
- name: Build bootimages for ${{ matrix.soc }} - ${{ matrix.core }} - ${{ matrix.boot_mode }}
run: |
export SOC=${{ matrix.soc }} CORE=${{ matrix.core }} BOOT_MODE=${{ matrix.boot_mode }}
echo "Generate QEMU Disk"
echo ">>> Apply workaround: change TIMERCLK_FREQ from 32768 to 1000000"
#sed -i "s/32768/1000000/" conf/$SOC/*.dts
export TIMER_HZ=1000000
make genstamp
make freeloader
cp work/$SOC/freeloader/freeloader.elf work/$SOC/freeloader_qemu.elf
make bootimages
make DISK_SIZE=128 gendisk
RUNQEMUSH=work/$SOC/run_qemu.sh
echo "qemu-system-riscv64 -M nuclei_u,download=flashxip -smp 8 -m 256M -bios freeloader_qemu.elf -nographic -drive file=disk.img,if=sd,format=raw" > $RUNQEMUSH
chmod +x $RUNQEMUSH
unset TIMER_HZ
echo ">>> Reset workaround and source code"
git reset --hard
echo "Generate freeloader and boot images"
make genboot
# Run on qemu
- name: Run and test on qemu for ${{ matrix.soc }} - ${{ matrix.core }} - ${{ matrix.boot_mode }}
if: matrix.soc == 'demosoc'
run: |
QEMU_PATH=$(pwd)/prebuilt_tools/linux_qemu/bin:$(pwd)/prebuilt_tools/qemu/bin
export PATH=${QEMU_PATH}:$PATH
export SOC=${{ matrix.soc }} CORE=${{ matrix.core }} BOOT_MODE=${{ matrix.boot_mode }}
cd work/$SOC
# $(cat run_qemu.sh) is workaround for directly run bash run_qemu.sh
# If do kill it will just kill bash process, the qemu process is not killed
# SIGTERM is better for kill qemu
timeout --foreground -s SIGTERM 32m $(cat run_qemu.sh) > >(tee run_qemu.log) || {
if cat run_qemu.log | grep "Run /init" ; then echo "Kernel boot successfully" ; else echo "Kernel boot failed" && exit 1; fi;
if cat run_qemu.log | grep "Welcome to" ; then echo "Pass simulation" && exit 0; else echo "Failed init process" && exit 1; fi;
}
- name: Upload bootimages for ${{ matrix.soc }} - ${{ matrix.core }} - ${{ matrix.boot_mode }}
uses: actions/[email protected]
with:
name: bootimages_${{ matrix.soc }}_${{ matrix.core }}_${{ matrix.boot_mode }}
path: |
work/${{ matrix.soc }}/boot.zip
work/${{ matrix.soc }}/freeloader/freeloader.elf
work/${{ matrix.soc }}/buildstamp.txt
- name: Upload qemu images for ${{ matrix.soc }} - ${{ matrix.core }} - ${{ matrix.boot_mode }}
if: matrix.soc == 'demosoc'
uses: actions/[email protected]
with:
name: qemu_images_${{ matrix.soc }}_${{ matrix.core }}_${{ matrix.boot_mode }}
path: |
work/${{ matrix.soc }}/boot.zip
work/${{ matrix.soc }}/freeloader/freeloader.elf
work/${{ matrix.soc }}/freeloader_qemu.elf
work/${{ matrix.soc }}/buildstamp.txt
work/${{ matrix.soc }}/disk.img
work/${{ matrix.soc }}/run_qemu.sh
- name: Upload cached packages
if: matrix.core == 'ux600' && matrix.boot_mode == 'sd' && matrix.soc == 'demosoc'
uses: actions/[email protected]
with:
name: build_caching
path: |
buildroot/dl