diff --git a/.github/workflows/linux_edk2.yml b/.github/workflows/linux_edk2.yml new file mode 100644 index 0000000..bede06f --- /dev/null +++ b/.github/workflows/linux_edk2.yml @@ -0,0 +1,75 @@ +# Copyright (c) 2021, Pete Batard +# SPDX-License-Identifier: BSD-2-Clause-Patent + +name: UEFI firmware - EDK2 build + +on: + push: + tags: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Set version + id: set_version + run: echo "::set-output name=version::${GITHUB_REF/refs\/tags\//}" + - name: Set up Linux environment + run: sudo apt install acpica-tools gcc-aarch64-linux-gnu python3-distutils uuid-dev + - name: Check out EDK2 repositories + uses: actions/checkout@v2 + - name: Check out EDK2 submodules + run: git submodule update --init --recursive + - name: Set up EDK2 + run: make -C edk2/BaseTools + - name: Build UEFI firmware + run: | + export WORKSPACE=$PWD + export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms:$WORKSPACE/edk2-non-osi + export GCC5_AARCH64_PREFIX=aarch64-linux-gnu- + export BUILD_FLAGS="-D SECURE_BOOT_ENABLE=TRUE -D INCLUDE_TFTP_COMMAND=TRUE -D NETWORK_ISCSI_ENABLE=TRUE" + source edk2/edksetup.sh + # EDK2's 'build' command doesn't play nice with spaces in environmnent variables, so we can't move the PCDs there... + build -a AARCH64 -t GCC5 -p edk2-platforms/Platform/RaspberryPi/RPi3/RPi3.dsc -b DEBUG --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVendor=L"https://github.com/pftf/RPi3" --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString=L"UEFI Firmware ${{steps.set_version.outputs.version}}" ${BUILD_FLAGS} + build -a AARCH64 -t GCC5 -p edk2-platforms/Platform/RaspberryPi/RPi3/RPi3.dsc -b RELEASE --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVendor=L"https://github.com/pftf/RPi3" --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString=L"UEFI Firmware ${{steps.set_version.outputs.version}}" ${BUILD_FLAGS} + cp Build/RPi3/RELEASE_GCC5/FV/RPI_EFI.fd . + - name: Upload UEFI firmware artifacts + uses: actions/upload-artifact@v2 + with: + name: RPi3 UEFI Firmware ${{steps.set_version.outputs.version}} Artifacts + path: | + Build/RPi3/DEBUG_GCC5/FV/RPI_EFI.fd + Build/RPi3/RELEASE_GCC5/FV/RPI_EFI.fd + - name: Download Raspberry Pi support files + run: | + curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin + curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/fixup.dat + curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/start.elf + curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/bcm2710-rpi-3-b.dtb + curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/bcm2710-rpi-3-b-plus.dtb + curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/bcm2710-rpi-cm3.dtb + - name: Create UEFI firmware archive + run: zip -r RPi3_UEFI_Firmware_${{steps.set_version.outputs.version}}.zip RPI_EFI.fd bootcode.bin config.txt fixup.dat start.elf Readme.md *.dtb firmware + - name: Display SHA-256 + run: sha256sum Build/RPi3/DEBUG_GCC5/FV/RPI_EFI.fd Build/RPi3/RELEASE_GCC5/FV/RPI_EFI.fd RPi3_UEFI_Firmware_${{steps.set_version.outputs.version}}.zip + - name: Create release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + with: + draft: false + prerelease: false + release_name: ${{steps.set_version.outputs.version}} + body: Raspberry Pi 3 UEFI Firmware ${{steps.set_version.outputs.version}} + tag_name: ${{steps.set_version.outputs.version}} + - name: Upload release assets + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + with: + upload_url: ${{steps.create_release.outputs.upload_url}} + asset_path: RPi3_UEFI_Firmware_${{steps.set_version.outputs.version}}.zip + asset_name: RPi3_UEFI_Firmware_${{steps.set_version.outputs.version}}.zip + asset_content_type: application/zip diff --git a/Readme.md b/Readme.md index 4a4ace7..cee618a 100644 --- a/Readme.md +++ b/Readme.md @@ -1,7 +1,7 @@ Raspberry Pi 3 UEFI Firmware Images =================================== -[![Build status](https://img.shields.io/appveyor/ci/pbatard/RPi3.svg?style=flat-square)](https://ci.appveyor.com/project/pbatard/RPi3) +[![Build status](https://img.shields.io/github/workflow/status/pftf/RPi3/UEFI%20firmware%20-%20EDK2%20build.svg?style=flat-square)](https://github.com/pftf/RPi3/actions) [![Github stats](https://img.shields.io/github/downloads/pftf/RPi3/total.svg?style=flat-square)](https://github.com/pftf/RPi3/releases) [![Release](https://img.shields.io/github/release-pre/pftf/RPi3?style=flat-square)](https://github.com/pftf/RPi3/releases) diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 6742c8a..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (c) 2019-2020, Pete Batard -# SPDX-License-Identifier: BSD-3-Clause - -image: Ubuntu1804 - -skip_non_tags: true - -install: - sh: |- - sudo apt-get update -qq - sudo -E apt-get install -y acpica-tools gcc-aarch64-linux-gnu python3-distutils uuid-dev - git submodule update --init --recursive - -before_build: - ps: |- - Start-FileDownload https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin - Start-FileDownload https://github.com/raspberrypi/firmware/raw/master/boot/fixup.dat - Start-FileDownload https://github.com/raspberrypi/firmware/raw/master/boot/start.elf - Start-FileDownload https://github.com/raspberrypi/firmware/raw/master/boot/bcm2710-rpi-3-b.dtb - Start-FileDownload https://github.com/raspberrypi/firmware/raw/master/boot/bcm2710-rpi-3-b-plus.dtb - Start-FileDownload https://github.com/raspberrypi/firmware/raw/master/boot/bcm2710-rpi-cm3.dtb - -build_script: - sh: ./build_firmware.sh - -after_build: - sh: |- - 7z a RPi3_UEFI_Firmware_$APPVEYOR_REPO_TAG_NAME.zip $APPVEYOR_BUILD_FOLDER/Build/RPi3/RELEASE_GCC5/FV/RPI_EFI.fd $APPVEYOR_BUILD_FOLDER/bootcode.bin $APPVEYOR_BUILD_FOLDER/config.txt $APPVEYOR_BUILD_FOLDER/fixup.dat $APPVEYOR_BUILD_FOLDER/start.elf $APPVEYOR_BUILD_FOLDER/Readme.md $APPVEYOR_BUILD_FOLDER/*.dtb firmware - sha256sum RPi3_UEFI_Firmware_$APPVEYOR_REPO_TAG_NAME.zip - -artifacts: - - path: '*.zip' - name: Raspberry Pi 3 UEFI Firmware - # The DEBUG firmware we build is not for deployment but is kept as a regular - # AppVeyor artifact. This way we can access it for troubleshooting if needed. - - path: 'Build/RPi3/DEBUG_GCC5/FV/RPI_EFI.fd' - name: Raspberry Pi 3 UEFI Firmware (DEBUG) - -deploy: - release: $(APPVEYOR_REPO_TAG_NAME) - description: Raspberry Pi 3 UEFI Firmware $(APPVEYOR_REPO_TAG_NAME) - provider: GitHub - auth_token: - secure: w5YuQOim+G+U7FxxrL0BH6t0trCWKCs9DMZlF4xqF2XGC6SymzwaJrPWrKeeJHPK - artifact: /.*\.zip/ - draft: false - prerelease: false diff --git a/build_firmware.sh b/build_firmware.sh deleted file mode 100755 index bc714f1..0000000 --- a/build_firmware.sh +++ /dev/null @@ -1,13 +0,0 @@ -# -# NOTICE: This script is *NOT* designed to be used in a standalone fashion. -# It is designed to be used as part of an Appveyor build, and only works if the -# preliminaries from the appveyor.yml 'install' section have been run first. -# -make -C edk2/BaseTools || exit 1 -export GCC5_AARCH64_PREFIX=aarch64-linux-gnu- -export WORKSPACE=$PWD -export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms:$WORKSPACE/edk2-non-osi -export BUILD_FLAGS="-D SECURE_BOOT_ENABLE=TRUE -D INCLUDE_TFTP_COMMAND=TRUE -D NETWORK_ISCSI_ENABLE=TRUE" -source edk2/edksetup.sh || exit 1 -build -a AARCH64 -t GCC5 -p edk2-platforms/Platform/RaspberryPi/RPi3/RPi3.dsc -b DEBUG --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVendor=L"https://github.com/pftf/RPi3" --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString=L"UEFI Firmware $APPVEYOR_REPO_TAG_NAME (DEBUG)" $BUILD_FLAGS || exit 1 -build -a AARCH64 -t GCC5 -p edk2-platforms/Platform/RaspberryPi/RPi3/RPi3.dsc -b RELEASE --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVendor=L"https://github.com/pftf/RPi3" --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString=L"UEFI Firmware $APPVEYOR_REPO_TAG_NAME" $BUILD_FLAGS || exit 1