diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..67ead42 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,43 @@ +name: main + +on: [push, pull_request] + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup dependencies + run: | + sudo apt install -y expect python3-pip + sudo pip3 install pyserial + curl https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.2.0-2019.05.3-x86_64-linux-ubuntu14.tar.gz > toolchain.tar.gz + tar -xf toolchain.tar.gz + + - name: Setup QEMU + run: | + wget https://download.qemu.org/qemu-4.1.0.tar.xz + tar xJf qemu-4.1.0.tar.xz > /dev/null + cd qemu-4.1.0 + ./configure --target-list="riscv32-softmmu riscv64-softmmu" + make + + - name: Build binaries + run: | + export PATH=$PATH:$PWD/riscv64-unknown-elf-gcc-8.2.0-2019.05.3-x86_64-linux-ubuntu14/bin + export PATH=$PATH:$PWD/qemu-4.1.0/riscv32-softmmu:$PWD/qemu-4.1.0/riscv64-softmmu:$PWD/qemu-4.1.0; + make BITS=32 -C kernel/ + make BITS=32 EN_FENCEI=y -C kernel/ + make BITS=32 EN_INT=y -C kernel/ + make BITS=32 EN_INT=y EN_FENCEI=y -C kernel/ + make BITS=32 EN_INT=y EN_PAGING=y -C kernel/ + make BITS=32 EN_INT=y EN_PAGING=y EN_FENCEI=y -C kernel/ + make BITS=64 -C kernel/ + make BITS=64 EN_FENCEI=y -C kernel/ + make BITS=64 EN_INT=y -C kernel/ + make BITS=64 EN_INT=y EN_FENCEI=y -C kernel/ + make BITS=64 EN_INT=y EN_PAGING=y -C kernel/ + make BITS=64 EN_INT=y EN_PAGING=y EN_FENCEI=y -C kernel/ \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..79f4183 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,69 @@ + +name: release +on: + push: + tags: + - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 + +jobs: + + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup dependencies + run: | + sudo apt install -y expect python3-pip + sudo pip3 install pyserial + curl https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.2.0-2019.05.3-x86_64-linux-ubuntu14.tar.gz > toolchain.tar.gz + tar -xf toolchain.tar.gz + + - name: Build binaries + run: | + export PATH=$PATH:$PWD/riscv64-unknown-elf-gcc-8.2.0-2019.05.3-x86_64-linux-ubuntu14/bin + make BITS=32 -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv32.bin + make BITS=32 EN_FENCEI=y -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv32-fencei.bin + make BITS=32 EN_INT=y -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv32-int.bin + make BITS=32 EN_INT=y EN_FENCEI=y -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv32-int-fencei.bin + make BITS=32 EN_INT=y EN_PAGING=y -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv32-int-paging.bin + make BITS=32 EN_INT=y EN_PAGING=y EN_FENCEI=y -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv32-int-paging-fencei.bin + make BITS=64 -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv64.bin + make BITS=64 EN_FENCEI=y -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv64-fencei.bin + make BITS=64 EN_INT=y -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv64-int.bin + make BITS=64 EN_INT=y EN_FENCEI=y -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv64-int-fencei.bin + make BITS=64 EN_INT=y EN_PAGING=y -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv64-int-paging.bin + make BITS=64 EN_INT=y EN_PAGING=y EN_FENCEI=y -C kernel/ + cp kernel/kernel.bin kernel/kernel-rv64-int-paging-fencei.bin + + - name: Release + uses: softprops/action-gh-release@v1 + with: + files: | + kernel/kernel-rv32.bin + kernel/kernel-rv32-fencei.bin + kernel/kernel-rv32-int.bin + kernel/kernel-rv32-int-fencei.bin + kernel/kernel-rv32-int-paging.bin + kernel/kernel-rv32-int-paging-fencei.bin + kernel/kernel-rv64.bin + kernel/kernel-rv64-fencei.bin + kernel/kernel-rv64-int.bin + kernel/kernel-rv64-int-fencei.bin + kernel/kernel-rv64-int-paging.bin + kernel/kernel-rv64-int-paging-fencei.bin + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 6b2df5c..0000000 --- a/.travis.yml +++ /dev/null @@ -1,81 +0,0 @@ -language: c -cache: - cargo: true - directories: - - "$TRAVIS_BUILD_DIR/qemu-4.1.0" -before_install: -- sudo apt-get install -yy expect python3-pip -- sudo pip3 install pyserial -- curl https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.2.0-2019.05.3-x86_64-linux-ubuntu14.tar.gz - > toolchain.tar.gz -- tar -xf toolchain.tar.gz -- wget https://download.qemu.org/qemu-4.1.0.tar.xz && tar xJf qemu-4.1.0.tar.xz > - /dev/null && cd qemu-4.1.0 && ./configure --target-list="riscv32-softmmu riscv64-softmmu" - && make && cd ..; -script: -- export PATH=$PATH:$PWD/riscv64-unknown-elf-gcc-8.2.0-2019.05.3-x86_64-linux-ubuntu14/bin -- export PATH=$PATH:$PWD/qemu-4.1.0/riscv32-softmmu:$PWD/qemu-4.1.0/riscv64-softmmu:$PWD/qemu-4.1.0; -- make BITS=32 -C kernel/ -- cp kernel/kernel.bin kernel/kernel32.bin -- make BITS=32 -C kernel/ -- cp kernel/kernel.bin kernel/kernel32-fencei.bin -- make BITS=32 EN_INT=y -C kernel/ -- cp kernel/kernel.bin kernel/kernel32-int.bin -- make BITS=32 EN_INT=y EN_FENCEI=y -C kernel/ -- cp kernel/kernel.bin kernel/kernel32-int-fencei.bin -- make BITS=32 EN_INT=y EN_PAGING=y -C kernel/ -- cp kernel/kernel.bin kernel/kernel32-int-paging.bin -- make BITS=32 EN_INT=y EN_PAGING=y EN_FENCEI=y -C kernel/ -- cp kernel/kernel.bin kernel/kernel32-int-paging-fencei.bin -- make BITS=64 -C kernel/ -- cp kernel/kernel.bin kernel/kernel64.bin -- make BITS=64 EN_FENCEI=y -C kernel/ -- cp kernel/kernel.bin kernel/kernel64-fencei.bin -- make BITS=64 EN_INT=y -C kernel/ -- cp kernel/kernel.bin kernel/kernel64-int.bin -- make BITS=64 EN_INT=y EN_FENCEI=y -C kernel/ -- cp kernel/kernel.bin kernel/kernel64-int-fencei.bin -- make BITS=64 EN_INT=y EN_PAGING=y -C kernel/ -- cp kernel/kernel.bin kernel/kernel64-int-paging.bin -- make BITS=64 EN_INT=y EN_PAGING=y EN_FENCEI=y -C kernel/ -- cp kernel/kernel.bin kernel/kernel64-int-paging-fencei.bin -- travis_wait 1 make BITS=32 sim -C kernel - || true -- ./.test-script -- killall qemu-system-riscv32 -- travis_wait 1 make BITS=32 EN_INT=y sim -C kernel - || true -- ./.test-script -- killall qemu-system-riscv32 -- travis_wait 1 make BITS=64 sim -C kernel - || true -- ./.test-script -- killall qemu-system-riscv64 -- travis_wait 1 make BITS=64 EN_INT=y sim -C kernel - || true -- ./.test-script -- killall qemu-system-riscv64 -addons: - apt: - update: true -deploy: - provider: releases - api_key: - secure: WY7JLy11O4ZVIFzMb8yl/IMyqovZm3ockNFzaDSeAuTENn+lQwvzTuNNke+kWAOeQUM+Iez5BNgK1wUN0j32hlY29ye7nMvCF+deHSeX3sXP1rPeo9PuxdLjIRiM3CBF6r57/N9oQjeRyT8bZjMQjsDSmlSt0a0BtU5Vhl2+idAfUwvXCFDdFidF61p+YeeHDr8FJmk4WUYRkwPna++xiYNEzRVpmp9hpD1KIAop676syQQAFETLDYExSZ4mOP7pbNnNfqJDq6Hs57KQVha0/KgKhIpLqYsjymQeOWDhPe6XfwpV3yr2R8OA10lNsRFnRmbDlqHAEWCeZu+Q7w1TxQZeHya4hP13FesOARAbHMIFlA9Iqa2lwlkIKm5L+R33sOd4hKx+rK/NQpN5UZOu8Hvp8yZ0bFbd71mlzMjnG5ODdi1rxNtc7Ss88DR+Mpra9uHcU6XgL0qmZQnrgXnBEas5fMKLQJNDY7w+rOINVEmiM53w7uET5dvHiN5FDXr6DX+L+vjfL93VOjIqXSCjHGig1GmPxyfb3cqcIIS/tkmtzFX17HF8V4Uzt9f2V+K4vUo1JR4MskmTD+E1bATDMCUL08B74SfsMsZUOv3BIhT4HC1hbbZeMBhs2R4jnuMFlcMzsrZmKGEr4qqviAnwpsNElO/NDuQgQp/2HZcZThk= - skip_cleanup: true - file: - - kernel/kernel32.bin - - kernel/kernel32-fencei.bin - - kernel/kernel32-int.bin - - kernel/kernel32-int-fencei.bin - - kernel/kernel32-int-paging.bin - - kernel/kernel32-int-paging-fencei.bin - - kernel/kernel64.bin - - kernel/kernel64-fencei.bin - - kernel/kernel64-int.bin - - kernel/kernel64-int-fencei.bin - - kernel/kernel64-int-paging.bin - - kernel/kernel64-int-paging-fencei.bin - on: - repo: jiegec/supervisor-rv - tags: true