Skip to content

Linux fixes

Linux fixes #333

name: build-linux-rpi
on:
push:
paths-ignore:
- "**/README.md"
pull_request:
paths-ignore:
- "**/README.md"
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
env:
TARGET: "linux"
NO_FORCE: 1
GA_CI_SECRET: ${{ secrets.CI_SECRET }}
USE_ARTIFACT: false
DISABLE_WORKFLOW: "false"
jobs:
pre-check:
runs-on: ubuntu-latest
outputs:
workflow_disabled: ${{ steps.check-disabled.outputs.disabled }}
steps:
- name: Check if Workflow is disabled
id: check-disabled
shell: bash
run: |
if [ "${{ env.DISABLE_WORKFLOW }}" == "true" ]; then
echo "disabled=true" >> $GITHUB_ENV
echo "::set-output name=disabled::true"
else
echo "::set-output name=disabled::false"
fi
- name: Determine Release
id: vars
shell: bash
run: |
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
echo "::set-output name=RELEASE=${{ github.ref_name }}"
elif [[ "${{ github.ref }}" == "refs/heads/master" ]]; then
echo "::set-output name=RELEASE=nightly"
elif [[ "${{ github.ref }}" == "refs/heads/bleeding" ]]; then
echo "::set-output name=RELEASE=latest"
else
echo "::set-output name=RELEASE=latest"
fi
build-linux-aarch64:
if: needs.pre-check.outputs.workflow_disabled != 'true'
needs: pre-check
runs-on: ubuntu-latest
strategy:
matrix:
CROSS_CPU: [cortex-a53] #cortex-a72, cortex-a76
CROSS_OS: [bookworm]
ARCH: [aarch64]
env:
CROSS_COMPILER: raspbian
WORKDIR: "/home/runner/work/apothecary/apothecary"
SYSROOT: "${WORKDIR}/${{ matrix.CROSS_OS }}_sysroot"
TOOLCHAIN_ROOT: "${WORKDIR}/${CROSS_COMPILER}"
steps:
- uses: actions/[email protected]
- name: Setup Environment
run: |
echo "Setting up environment for ${{ matrix.CROSS_OS }} ${{ matrix.CROSS_CPU }} ${ARCH}"
echo "CROSS_CPU: ${{ matrix.CROSS_CPU }}"
echo "SYSROOT: ${SYSROOT}"
echo "TOOLCHAIN_ROOT: ${TOOLCHAIN_ROOT}"
echo "CROSS_OS=${{ matrix.CROSS_OS }}" >> $GITHUB_ENV
echo "ARCH=${{ matrix.ARCH }}" >> $GITHUB_ENV
- name: Determine Release
id: vars
shell: bash
run: |
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
echo "RELEASE=${{ github.ref_name }}" >> $GITHUB_ENV
elif [[ "${{ github.ref }}" == "refs/heads/master" ]]; then
echo "RELEASE=nightly" >> $GITHUB_ENV
elif [[ "${{ github.ref }}" == "refs/heads/bleeding" ]]; then
echo "RELEASE=latest" >> $GITHUB_ENV
else
echo "RELEASE=latest" >> $GITHUB_ENV
fi
- name: Script Install
run: sudo ./scripts/${{ env.TARGET }}/raspios/${{ env.ARCH }}/install.sh
- name: Setup Cross Compiler and Target Local File System
run: sudo ./scripts/${{ env.TARGET }}/raspios/${{ env.ARCH }}/setup.sh
- name: Build
run: ./scripts/${{ env.TARGET }}/raspios/${{ env.ARCH }}/build.sh
- name: Package
#if: github.repository == 'openframeworks/apothecary' && github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/bleeding')
working-directory: ${{ env.GITHUB_WORKSPACE }}
run: scripts/package.sh
env:
BUNDLE: ${{ matrix.bundle }}
GCC: "_${{ matrix.CROSS_CPU }}_${{ matrix.CROSS_OS }}"
- name: List output directory
run: ls -lah out/
- name: Update Release
if: github.repository == 'openframeworks/apothecary' && github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/bleeding')
uses: softprops/[email protected]
env:
GCC: "_${{ matrix.CROSS_CPU }}_${{ matrix.CROSS_OS }}"
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ env.RELEASE }}
draft: false
files: out/openFrameworksLibs_${{ env.RELEASE }}_${{ env.TARGET }}_${{ env.ARCH }}_{{ env.GCC }}.tar.bz2
build-linux-armv6l-pi-1zero:
if: needs.pre-check.outputs.workflow_disabled != 'true'
needs: pre-check
runs-on: ubuntu-latest
env:
TARGET: linux
ARCH: armv7l
CROSS_COMPILER: raspbian
CROSS_OS: bookworm
WORKDIR: "/home/runner/work/apothecary/apothecary"
SYSROOT: "${WORKDIR}/${CROSS_SYSROOT}"
TOOLCHAIN_ROOT: "${WORKDIR}/${CROSS_COMPILER}"
TOOLCHAIN_PREFIX: "arm-linux-gnueabihf"
steps:
- uses: actions/[email protected]
- name: Determine Release
id: vars
shell: bash
run: |
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
echo "RELEASE=${{ github.ref_name }}" >> $GITHUB_ENV
elif [[ "${{ github.ref }}" == "refs/heads/master" ]]; then
echo "RELEASE=nightly" >> $GITHUB_ENV
elif [[ "${{ github.ref }}" == "refs/heads/bleeding" ]]; then
echo "RELEASE=latest" >> $GITHUB_ENV
else
echo "RELEASE=latest" >> $GITHUB_ENV
fi
- name: Update and Upgrade System Packages
run: |
sudo apt update && sudo apt dist-upgrade -y
sudo apt-get install -y build-essential gcc g++ gfortran git texinfo bison libncurses-dev tar wget qemu-user-static rsync xz-utils
- name: Setup Cross Compiler and Target Local File System
run: ./scripts/${{ env.TARGET }}/raspios/${{ env.ARCH }}/setup.sh
- name: Script Install and Build
run: ./scripts/${{ env.TARGET }}/raspios/${{ env.ARCH }}/install.sh
- name: Script Install and Build
run: ./scripts/${{ env.TARGET }}/raspios/${{ env.ARCH }}/build.sh
- name: Update Release armv6l
if: github.repository == 'openframeworks/apothecary' && github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/bleeding')
uses: softprops/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ env.RELEASE }}
draft: false
files: out/openFrameworksLibs_${{ env.RELEASE }}_${{ env.TARGET }}_${{ env.ARCH }}.tar.bz2
build-linux-armv7-pi3ab45:
if: needs.pre-check.outputs.workflow_disabled != 'true'
needs: pre-check
runs-on: ubuntu-latest
env:
TARGET: linux
ARCH: armv7l
CROSS_COMPILER: raspbian
CROSS_OS: bookworm
WORKDIR: "/home/runner/work/apothecary/apothecary"
SYSROOT: "${WORKDIR}/${CROSS_SYSROOT}"
TOOLCHAIN_ROOT: "${WORKDIR}/${CROSS_COMPILER}"
TOOLCHAIN_PREFIX: "arm-linux-gnueabihf"
steps:
- uses: actions/[email protected]
- name: Check if Workflow is disabled
run: |
if [ "${{ env.DISABLE_WORKFLOW }}" == "true" ]; then
echo "Workflow is disabled. Exiting."
exit 78
fi
- name: Determine Release
id: vars
shell: bash
run: |
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
echo "RELEASE=${{ github.ref_name }}" >> $GITHUB_ENV
elif [[ "${{ github.ref }}" == "refs/heads/master" ]]; then
echo "RELEASE=nightly" >> $GITHUB_ENV
elif [[ "${{ github.ref }}" == "refs/heads/bleeding" ]]; then
echo "RELEASE=latest" >> $GITHUB_ENV
else
echo "RELEASE=latest" >> $GITHUB_ENV
fi
- name: Update and Upgrade System Packages
run: |
sudo apt update && sudo apt dist-upgrade -y
sudo apt-get install -y build-essential gcc g++ gfortran git texinfo bison libncurses-dev tar wget qemu-user-static rsync xz-utils
# - name: Cache raspbian folder
# uses: actions/[email protected]
# with:
# path: /home/runner/work/apothecary/apothecary/raspbian
# key: raspbian-pi3ab45-cache-2
# - name: Check if folder exists
# id: folder-check
# run: >
# if [ -d $TOOLCHAIN_ROOT ]; then
# echo "Raspbian folder already exists. Skipping download and extract."
# echo "::set-output name=folder-exists::true"
# else
# echo "::set-output name=folder-exists::false"
# fi
- name: Setup Cross Compiler and Target Local File System
run: ./scripts/${{ env.TARGET }}/raspios/${{ env.ARCH }}/setup.sh
- name: Script Install and Build
run: ./scripts/${{ env.TARGET }}/raspios/${{ env.ARCH }}/install.sh
- name: Script Install and Build
run: ./scripts/${{ env.TARGET }}/raspios/${{ env.ARCH }}/build.sh
- name: Update Release armv7l
if: github.repository == 'openframeworks/apothecary' && github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/bleeding')
uses: softprops/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ env.RELEASE }}
draft: false
files: out/openFrameworksLibs_${{ env.RELEASE }}_${{ env.TARGET }}_${{ env.ARCH }}.tar.bz2