Skip to content

Commit

Permalink
Feature/drivers workflow (#3)
Browse files Browse the repository at this point in the history
* add workflow to build drivers

* first draft build drivers

* fix name

* fix targetted build

* update deps

* build lib first

* add dep

* Add libasound2-dev

* try and pull files from built image

* temp push tarball

* only build 64bit

* increase 64bit image size

* fix extract

* fix image name

* update desc for build-drivers

* update ref to runner.temp

* dont generate hash by default

* update task versions

* update step names

* remove gitversion steps

* restore gitversion

* fix job name

* empty drive bin folder to ensure we are building new drivers

* fix typo

* update driver output path

* allow building a specific commit

* set fetch depth

* move checkout location

* revert

* add 32bit drivers

* set fetch depth

* rename driver folder after extract

* remove gitversion

* add patchelf

* add git dependency

* install autoconf

* correct path to osd driver file
  • Loading branch information
CoryManson authored Feb 21, 2024
1 parent 6e920ff commit 645c875
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 26 deletions.
31 changes: 16 additions & 15 deletions .github/actions/build-drivers/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,7 @@ inputs:

runs:
using: "composite"
steps:
- name: Install GitVersion
uses: gittools/actions/gitversion/setup@v0
with:
versionSpec: '5.x'

- name: Determine Version
id: gitversion
uses: gittools/actions/gitversion/execute@v0

steps:
- name: Install dependencies
run: |
sudo apt-get update
Expand All @@ -41,21 +32,31 @@ runs:

- name: Build driver image
run: |
sudo packer build -only ${{ inputs.build }} -var pspi_version=v${{ steps.gitversion.outputs.majorMinorPatch }} "$GITHUB_WORKSPACE/packer/"
sudo packer build -only ${{ inputs.build }} "$GITHUB_WORKSPACE/packer/"
working-directory: packer/plugins/packer-builder-arm
shell: bash

- name: Extract drivers from image
run: |
mv PSPi6.Drivers.tar.gz $RUNNER_TEMP
mv *.tar.gz $RUNNER_TEMP
cd $RUNNER_TEMP
tar --extract --file=PSPi6.Drivers.tar.gz ./packer/drivers/bin
tar --extract --file=PSPi6.Drivers_32bit.tar.gz ./packer/drivers/bin
mv ./packer/drivers/bin ./packer/drivers/bin_32
tar --extract --file=PSPi6.Drivers_64bit.tar.gz ./packer/drivers/bin
mv ./packer/drivers/bin ./packer/drivers/bin_64
working-directory: packer/plugins/packer-builder-arm
shell: bash

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: drivers
path: ${{ runner.temp }}/packer/drivers/bin/
name: drivers_32bit
path: ${{ runner.temp }}/packer/drivers/bin_32/
if-no-files-found: error

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: drivers_64bit
path: ${{ runner.temp }}/packer/drivers/bin_64/
if-no-files-found: error
9 changes: 0 additions & 9 deletions .github/workflows/build_drivers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@ name: Build Drivers

on:
workflow_dispatch:
inputs:
commit:
description: 'Commit SHA1'
required: false
default: ''
type: string
push:
pull_request:
branches:
Expand All @@ -18,9 +12,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.commit == '' && github.sha || inputs.commit }}
fetch-depth: 0
- name: Build Drivers
uses: ./.github/actions/build-drivers
with:
Expand Down
1 change: 1 addition & 0 deletions packer/build.drivers.pkr.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ build {
name = "drivers"

sources = [
"arm.drivers_raspios_lite_armhf",
"arm.drivers_raspios_lite_arm64"
]

Expand Down
15 changes: 14 additions & 1 deletion packer/scripts/installers/build-drivers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,24 @@
## File: build-drivers.sh
## Desc: Installs required dependencies for PSPi6 drivers & builds them
################################################################################
set -x

# Install Dependencies
apt-get update
apt-get install make libraspberrypi-dev raspberrypi-kernel-headers libpng-dev libasound2-dev -y
apt-get install make libraspberrypi-dev raspberrypi-kernel-headers libpng-dev libasound2-dev git autoconf -y

cd /packer/drivers
make clean
make all

# Build patchelf
git clone https://github.com/NixOS/patchelf.git
cd patchelf
./bootstrap.sh
./configure
make
make check
make install

# Patch OSD Driver
patchelf --replace-needed libbcm_host.so.0 libbcm_host.so ../bin/osd
40 changes: 39 additions & 1 deletion packer/sources.drivers.pkr.hcl
Original file line number Diff line number Diff line change
@@ -1,11 +1,49 @@
source "arm" "drivers_raspios_lite_armhf" {
file_urls = ["https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-2023-12-11/2023-12-11-raspios-bookworm-armhf-lite.img.xz"]
file_checksum_url = "https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-2023-12-11/2023-12-11-raspios-bookworm-armhf-lite.img.xz.sha256"
file_checksum_type = "sha256"
file_target_extension = "xz"
file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"]
image_build_method = "resize"
image_path = "PSPi6.Drivers_32bit.tar.gz"
image_size = "3G"
image_type = "dos"

# configure boot partition
image_partitions {
name = "boot"
type = "c"
start_sector = "8192"
filesystem = "vfat"
size = "512M"
mountpoint = "/boot"
}

# configure root partition
image_partitions {
name = "root"
type = "83"
start_sector = "1056768"
filesystem = "ext4"
size = "0"
mountpoint = "/"
}

image_chroot_env = ["PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"]

# qemu binary paths
qemu_binary_source_path = "/usr/bin/qemu-arm-static"
qemu_binary_destination_path = "/usr/bin/qemu-arm-static"
}

source "arm" "drivers_raspios_lite_arm64" {
file_urls = ["https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2023-12-11/2023-12-11-raspios-bookworm-arm64-lite.img.xz"]
file_checksum_url = "https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2023-12-11/2023-12-11-raspios-bookworm-arm64-lite.img.xz.sha256"
file_checksum_type = "sha256"
file_target_extension = "xz"
file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"]
image_build_method = "resize"
image_path = "PSPi6.Drivers.tar.gz"
image_path = "PSPi6.Drivers_64bit.tar.gz"
image_size = "3G"
image_type = "dos"

Expand Down
1 change: 1 addition & 0 deletions packer/variables.pkr.hcl
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
variable "pspi_version" {
type = string
default = "0.0.0"
}

0 comments on commit 645c875

Please sign in to comment.