Skip to content

Daily Build of NuttX for Star64 #330

Daily Build of NuttX for Star64

Daily Build of NuttX for Star64 #330

Workflow file for this run

## Build Mainline NuttX every day for Star64
name: Daily Build of NuttX for Star64
permissions:
## Allow publishing of GitHub Release
contents: write
on:
## Run every day at 0:00 UTC
schedule:
- cron: '0 0 * * *'
## Run on every commit to this branch
## push:
## branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Install Build Tools
run: |
sudo apt -y update
sudo apt -y install \
bison flex gettext texinfo libncurses5-dev libncursesw5-dev \
gperf automake libtool pkg-config build-essential gperf genromfs \
libgmp-dev libmpc-dev libmpfr-dev libisl-dev binutils-dev libelf-dev \
libexpat-dev gcc-multilib g++-multilib u-boot-tools util-linux \
kconfig-frontends \
wget u-boot-tools
- name: Install Toolchain
run: |
wget --no-check-certificate https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz
tar -xf riscv64-unknown-elf-toolchain*.tar.gz
- name: Checkout Source Files
run: |
mkdir nuttx
cd nuttx
git clone https://github.com/apache/incubator-nuttx nuttx
git clone https://github.com/apache/incubator-nuttx-apps apps
- name: Build
run: |
## Add toolchain to PATH
export PATH=$PATH:$PWD/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin
cd nuttx/nuttx
## Dump the git hash
hash1=`git rev-parse HEAD`
pushd ../apps
hash2=`git rev-parse HEAD`
popd
echo NuttX Source: https://github.com/apache/nuttx/tree/$hash1 >nuttx.hash
echo NuttX Apps: https://github.com/apache/nuttx-apps/tree/$hash2 >>nuttx.hash
cat nuttx.hash
## Show the GCC version
riscv64-unknown-elf-gcc -v
## Configure the build
tools/configure.sh star64:nsh
## Preserve the build config
cp .config nuttx.config
## Run the build
make
## Export the Binary Image to nuttx.bin
riscv64-unknown-elf-objcopy \
-O binary \
nuttx \
nuttx.bin
## Build Apps Filesystem
make export
pushd ../apps
./tools/mkimport.sh -z -x ../nuttx/nuttx-export-*.tar.gz
make import
popd
## Generate Initial RAM Disk
genromfs -f initrd -d ../apps/bin -V "NuttXBootVol"
## Generate Flat Image Tree
wget https://raw.githubusercontent.com/lupyuen/nuttx-star64/main/nuttx.its
wget https://github.com/starfive-tech/VisionFive2/releases/download/VF2_v3.1.5/jh7110-visionfive-v2.dtb
mkimage -f nuttx.its -A riscv -O linux -T flat_dt starfiveu.fit
## Show the size
riscv64-unknown-elf-size nuttx
## Dump the disassembly to nuttx.S
riscv64-unknown-elf-objdump \
--syms --source --reloc --demangle --line-numbers --wide \
--debugging \
nuttx \
>nuttx.S \
2>&1
## Dump the init disassembly to init.S
riscv64-unknown-elf-objdump \
--syms --source --reloc --demangle --line-numbers --wide \
--debugging \
../apps/bin/init \
>init.S \
2>&1
## Dump the hello disassembly to hello.S
riscv64-unknown-elf-objdump \
--syms --source --reloc --demangle --line-numbers --wide \
--debugging \
../apps/bin/hello \
>hello.S \
2>&1
- name: Upload Build Outputs as Artifacts
uses: actions/upload-artifact@v3
with:
name: nuttx.zip
path: |
nuttx/nuttx/nuttx*
nuttx/nuttx/initrd
nuttx/nuttx/starfiveu.fit
nuttx/nuttx/jh7110-visionfive-v2.dtb
nuttx/nuttx/init.S
nuttx/nuttx/hello.S
- name: Zip Build Outputs for GitHub Release
run: |
cd nuttx/nuttx
zip nuttx.zip nuttx* initrd starfiveu.fit jh7110-visionfive-v2.dtb init.S hello.S
- name: Get Current Date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Publish the GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: nuttx-star64-${{ steps.date.outputs.date }}
draft: false
prerelease: false
generate_release_notes: false
files: |
nuttx/nuttx/nuttx.zip
nuttx/nuttx/nuttx
nuttx/nuttx/nuttx.S
nuttx/nuttx/nuttx.bin
nuttx/nuttx/nuttx.map
nuttx/nuttx/nuttx.hex
nuttx/nuttx/nuttx.config
nuttx/nuttx/nuttx.manifest
nuttx/nuttx/nuttx.hash
nuttx/nuttx/nuttx.its
nuttx/nuttx/initrd
nuttx/nuttx/starfiveu.fit
nuttx/nuttx/jh7110-visionfive-v2.dtb
nuttx/nuttx/init.S
nuttx/nuttx/hello.S