name: Raspberry Pi Linux Kernel (Proxmox) (Bookworm) on: push: branches: - release env: RELEASE: 'Raspberry Pi Linux Kernel (Proxmox)' jobs: sources: name: Raspberry Pi Linux Sources runs-on: bookworm steps: - name: Linux Sources [Clone] run: | /usr/bin/git clone --verbose --depth='1' 'https://github.com/raspberrypi/linux' - name: Environment [Define] id: environment run: | VERSION=$(/usr/bin/make --directory='./linux' kernelversion | /usr/bin/grep --extended-regexp --only-matching '^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}$') /usr/bin/echo "VERSION=${VERSION}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "VERSION=${VERSION}" >> './.env' /usr/bin/echo "Set Variable 'VERSION' to '${VERSION}'" - name: Environment [Artifact Upload] uses: christopherHX/gitea-upload-artifact@v4 with: name: .env path: ./.env if-no-files-found: error overwrite: true - name: Linux Kernel [Archive] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/tar --create --directory="./linux" --file="./linux-sources-${VERSION}.tar.gz" --gzip '.' --verbose - name: Linux Kernel [Artifact Upload] uses: christopherHX/gitea-upload-artifact@v4 with: name: linux-sources-${{ steps.environment.outputs.version }}.tar.gz path: ./linux-sources-${{ steps.environment.outputs.version }}.tar.gz if-no-files-found: error compression-level: 0 overwrite: true bcm2711-build: name: Raspberry Pi Linux Kernel (bcm2711) needs: - sources runs-on: bookworm steps: - name: Repository [Clone] uses: https://github.com/actions/checkout@v5 - name: Environment [Artifact Download] uses: christopherhx/gitea-download-artifact@v4 with: name: .env - name: Environment [Define] id: environment run: | VERSION=$(/usr/bin/awk -F '=' '/VERSION/{print $2}' './.env') /usr/bin/echo "VERSION=${VERSION}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'VERSION' to '${VERSION}'" - name: Environment [Artifact Download] uses: christopherhx/gitea-download-artifact@v4 with: name: linux-sources-${{ steps.environment.outputs.version }}.tar.gz - name: Linux Sources [Extract] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/install --directory --verbose './linux-sources' /usr/bin/tar --directory="./linux-sources" --extract --gzip --file="./linux-sources-${VERSION}.tar.gz" --verbose - name: Linux Sources [Prepare] run: | /usr/bin/mv --verbose './defconfig/bcm2711_pve_defconfig' './linux-sources/arch/arm64/configs/bcm2711_pve_defconfig' - name: Linux Sources [Configuration] run: | /usr/bin/make --directory='./linux-sources' --jobs='6' bcm2711_pve_defconfig - name: Linux Sources [Build] run: | /usr/bin/make LOCALVERSION='+pve-rpi-v8' --directory='./linux-sources' --jobs='6' Image.gz modules dtbs - name: Debian Binary Packages [Build] run: | /usr/bin/make --directory='./linux-sources' --jobs='6' bindeb-pkg - name: Linux Kernel [Prepare] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/rm --recursive --verbose "./linux-sources/debian/linux-image-${VERSION}+pve-rpi-v8/DEBIAN" /usr/bin/rm --recursive --verbose "./linux-sources/debian/linux-image-${VERSION}+pve-rpi-v8/etc" /usr/bin/rm --recursive --verbose "./linux-sources/debian/linux-image-${VERSION}+pve-rpi-v8/usr/share" - name: Linux Kernel [Archive] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/tar --create --directory="./linux-sources/debian/linux-image-${VERSION}+pve-rpi-v8" --file="./linux-image-${VERSION}.tar.gz" --gzip '.' --verbose - name: Linux Kernel [Artifact Upload] uses: christopherHX/gitea-upload-artifact@v4 with: name: linux-image-${{ steps.environment.outputs.version }}.tar.gz path: ./linux-image-${{ steps.environment.outputs.version }}.tar.gz if-no-files-found: error compression-level: 0 overwrite: true - name: Linux Headers [Prepare] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/rm --recursive --verbose "./linux-sources/debian/linux-headers-${VERSION}+pve-rpi-v8/DEBIAN" /usr/bin/rm --recursive --verbose "./linux-sources/debian/linux-headers-${VERSION}+pve-rpi-v8/usr/share" - name: Linux Headers [Archive] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/tar --create --directory="./linux-sources/debian/linux-headers-${VERSION}+pve-rpi-v8" --file="./linux-headers-${VERSION}.tar.gz" --gzip '.' --verbose - name: Linux Headers [Artifact Upload] uses: christopherHX/gitea-upload-artifact@v4 with: name: linux-headers-${{ steps.environment.outputs.version }}.tar.gz path: ./linux-headers-${{ steps.environment.outputs.version }}.tar.gz if-no-files-found: error compression-level: 0 overwrite: true - name: Linux libc Development [Prepare] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/rm --recursive --verbose './linux-sources/debian/linux-libc-dev/DEBIAN' /usr/bin/rm --recursive --verbose './linux-sources/debian/linux-libc-dev/usr/share' - name: Linux libc Development [Archive] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/tar --create --directory='./linux-sources/debian/linux-libc-dev' --file="./linux-libc-dev-${VERSION}.tar.gz" --gzip '.' --verbose - name: Linux libc Development [Artifact Upload] uses: christopherHX/gitea-upload-artifact@v4 with: name: linux-libc-dev-${{ steps.environment.outputs.version }}.tar.gz path: ./linux-libc-dev-${{ steps.environment.outputs.version }}.tar.gz if-no-files-found: error compression-level: 0 overwrite: true bcm2711-linux-image-rpi-v8: name: Raspberry Pi v8 Linux Kernel (Meta-Package) needs: - bcm2711-linux-image-pve-rpi-v8 runs-on: bookworm steps: - name: Repository [Clone] uses: https://github.com/actions/checkout@v5 - name: Environment [Artifact Download] uses: christopherhx/gitea-download-artifact@v4 with: name: .env - name: Environment [Define] id: environment run: | REPOCODENAME='bookworm' /usr/bin/echo "REPOCODENAME=${REPOCODENAME}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'REPOCODENAME' to '${REPOCODENAME}'" REPOCOMPONENT='pve8' /usr/bin/echo "REPOCOMPONENT=${REPOCOMPONENT}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'REPOCOMPONENT' to '${REPOCOMPONENT}'" VERSION=$(/usr/bin/awk -F '=' '/VERSION/{print $2}' './.env') /usr/bin/echo "VERSION=${VERSION}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'VERSION' to '${VERSION}'" - name: Debian Package [Prepare] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/sed --in-place --expression="s/x.x.x/${VERSION}/g" './linux-image-rpi-v8/DEBIAN/control' - name: Debian Package [Build] run: | /usr/bin/dpkg-gen './linux-image-rpi-v8' - name: Debian Repository [Prepare] env: REPOCODENAME: ${{ steps.environment.outputs.repocodename }} REPOCOMPONENT: ${{ steps.environment.outputs.repocomponent }} SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} run: | /usr/bin/echo "${SSH_PRIVATE_KEY}" > './id_ed25519' /usr/bin/chmod --quiet '0400' './id_ed25519' /usr/bin/echo "REPOCODENAME='${REPOCODENAME}'" > './linux-image-rpi-v8.cfg' /usr/bin/echo "REPOCOMPONENT='${REPOCOMPONENT}'" >> './linux-image-rpi-v8.cfg' - name: Debian Package [Debian Repository Upload] env: SSH_HOSTNAME: ${{ vars.SSH_HOSTNAME }} SSH_USER: ${{ vars.SSH_USER }} run: | /usr/bin/scp -4 -B -C -i './id_ed25519' -o 'StrictHostKeyChecking no' -o "UserKnownHostsFile './known_hosts'" './linux-image-rpi-v8.deb' "${SSH_USER}"@"${SSH_HOSTNAME}":'/var/lib/reprepro/include' /usr/bin/scp -4 -B -C -i './id_ed25519' -o 'StrictHostKeyChecking no' -o "UserKnownHostsFile './known_hosts'" './linux-image-rpi-v8.cfg' "${SSH_USER}"@"${SSH_HOSTNAME}":'/var/lib/reprepro/include' bcm2711-linux-image-pve-rpi-v8: name: Raspberry Pi v8 Linux Kernel needs: - bcm2711-build runs-on: bookworm steps: - name: Repository [Clone] uses: https://github.com/actions/checkout@v5 - name: Environment [Artifact Download] uses: christopherhx/gitea-download-artifact@v4 with: name: .env - name: Environment [Define] id: environment run: | REPOCODENAME='bookworm' /usr/bin/echo "REPOCODENAME=${REPOCODENAME}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'REPOCODENAME' to '${REPOCODENAME}'" REPOCOMPONENT='pve8' /usr/bin/echo "REPOCOMPONENT=${REPOCOMPONENT}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'REPOCOMPONENT' to '${REPOCOMPONENT}'" VERSION=$(/usr/bin/awk -F '=' '/VERSION/{print $2}' './.env') /usr/bin/echo "VERSION=${VERSION}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'VERSION' to '${VERSION}'" - name: Debian Package [Prepare] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/mv --verbose './linux-image-x.x.x+pve-rpi-v8 ' "./linux-image-${VERSION}+pve-rpi-v8" /usr/bin/sed --in-place --expression="s/x.x.x/${VERSION}/g" "./linux-image-${VERSION}+pve-rpi-v8/DEBIAN/control" /usr/bin/sed --in-place --expression="s/x.x.x/${VERSION}/g" "./linux-image-${VERSION}+pve-rpi-v8/DEBIAN/postinst" /usr/bin/sed --in-place --expression="s/x.x.x/${VERSION}/g" "./linux-image-${VERSION}+pve-rpi-v8/DEBIAN/postrm" /usr/bin/sed --in-place --expression="s/x.x.x/${VERSION}/g" "./linux-image-${VERSION}+pve-rpi-v8/DEBIAN/preinst" /usr/bin/sed --in-place --expression="s/x.x.x/${VERSION}/g" "./linux-image-${VERSION}+pve-rpi-v8/DEBIAN/prerm" /usr/bin/chmod --verbose '0755' './linux-image-${VERSION}+pve-rpi-v8/etc/kernel/postinst.d/z10-dkms-zfs' /usr/bin/install --directory --verbose "./linux-image-${VERSION}+pve-rpi-v8/etc/kernel/postrm.d" /usr/bin/install --directory --verbose "./linux-image-${VERSION}+pve-rpi-v8/etc/kernel/preinst.d" /usr/bin/install --directory --verbose "./linux-image-${VERSION}+pve-rpi-v8/etc/kernel/prerm.d" - name: Debian Package [Artifact Download] uses: christopherhx/gitea-download-artifact@v4 with: name: linux-image-${{ steps.environment.outputs.version }}.tar.gz - name: Debian Package [Extract] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/tar --directory="./linux-image-${VERSION}+pve-rpi-v8" --extract --gzip --file="./linux-image-${VERSION}.tar.gz" --verbose - name: Debian Package [Build] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/dpkg-gen "./linux-image-${VERSION}+pve-rpi-v8" - name: Debian Repository [Prepare] env: REPOCODENAME: ${{ steps.environment.outputs.repocodename }} REPOCOMPONENT: ${{ steps.environment.outputs.repocomponent }} SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/echo "${SSH_PRIVATE_KEY}" > './id_ed25519' /usr/bin/chmod --quiet '0400' './id_ed25519' /usr/bin/echo "REPOCODENAME='${REPOCODENAME}'" > "./linux-image-${VERSION}+pve-rpi-v8.cfg" /usr/bin/echo "REPOCOMPONENT='${REPOCOMPONENT}'" >> "./linux-image-${VERSION}+pve-rpi-v8.cfg" - name: Debian Package [Debian Repository Upload] env: SSH_HOSTNAME: ${{ vars.SSH_HOSTNAME }} SSH_USER: ${{ vars.SSH_USER }} run: | /usr/bin/scp -4 -B -C -i './id_ed25519' -o 'StrictHostKeyChecking no' -o "UserKnownHostsFile './known_hosts'" "./linux-image-${VERSION}+pve-rpi-v8.deb" "${SSH_USER}"@"${SSH_HOSTNAME}":'/var/lib/reprepro/include' /usr/bin/scp -4 -B -C -i './id_ed25519' -o 'StrictHostKeyChecking no' -o "UserKnownHostsFile './known_hosts'" "./linux-image-${VERSION}+pve-rpi-v8.cfg" "${SSH_USER}"@"${SSH_HOSTNAME}":'/var/lib/reprepro/include' bcm2711-linux-headers-rpi-v8: name: Raspberry Pi v8 Linux Headers (Meta-Package) needs: - bcm2711-linux-headers-pve-rpi-v8 runs-on: bookworm steps: - name: Repository [Clone] uses: https://github.com/actions/checkout@v5 - name: Environment [Artifact Download] uses: christopherhx/gitea-download-artifact@v4 with: name: .env - name: Environment [Define] id: environment run: | REPOCODENAME='bookworm' /usr/bin/echo "REPOCODENAME=${REPOCODENAME}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'REPOCODENAME' to '${REPOCODENAME}'" REPOCOMPONENT='pve8' /usr/bin/echo "REPOCOMPONENT=${REPOCOMPONENT}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'REPOCOMPONENT' to '${REPOCOMPONENT}'" VERSION=$(/usr/bin/awk -F '=' '/VERSION/{print $2}' './.env') /usr/bin/echo "VERSION=${VERSION}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'VERSION' to '${VERSION}'" - name: Debian Package [Prepare] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/sed --in-place --expression="s/x.x.x/${VERSION}/g" './linux-headers-rpi-v8/DEBIAN/control' - name: Debian Package [Build] run: | /usr/bin/dpkg-gen './linux-headers-rpi-v8' - name: Debian Repository [Prepare] env: REPOCODENAME: ${{ steps.environment.outputs.repocodename }} REPOCOMPONENT: ${{ steps.environment.outputs.repocomponent }} SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} run: | /usr/bin/echo "${SSH_PRIVATE_KEY}" > './id_ed25519' /usr/bin/chmod --quiet '0400' './id_ed25519' /usr/bin/echo "REPOCODENAME='${REPOCODENAME}'" > './linux-headers-rpi-v8.cfg' /usr/bin/echo "REPOCOMPONENT='${REPOCOMPONENT}'" >> './linux-headers-rpi-v8.cfg' - name: Debian Package [Debian Repository Upload] env: SSH_HOSTNAME: ${{ vars.SSH_HOSTNAME }} SSH_USER: ${{ vars.SSH_USER }} run: | /usr/bin/scp -4 -B -C -i './id_ed25519' -o 'StrictHostKeyChecking no' -o "UserKnownHostsFile './known_hosts'" './linux-headers-rpi-v8.deb' "${SSH_USER}"@"${SSH_HOSTNAME}":'/var/lib/reprepro/include' /usr/bin/scp -4 -B -C -i './id_ed25519' -o 'StrictHostKeyChecking no' -o "UserKnownHostsFile './known_hosts'" './linux-headers-rpi-v8.cfg' "${SSH_USER}"@"${SSH_HOSTNAME}":'/var/lib/reprepro/include' bcm2711-linux-headers-pve-rpi-v8: name: Raspberry Pi v8 Linux Headers needs: - bcm2711-build runs-on: bookworm steps: - name: Repository [Clone] uses: https://github.com/actions/checkout@v5 - name: Environment [Artifact Download] uses: christopherhx/gitea-download-artifact@v4 with: name: .env - name: Environment [Define] id: environment run: | REPOCODENAME='bookworm' /usr/bin/echo "REPOCODENAME=${REPOCODENAME}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'REPOCODENAME' to '${REPOCODENAME}'" REPOCOMPONENT='pve8' /usr/bin/echo "REPOCOMPONENT=${REPOCOMPONENT}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'REPOCOMPONENT' to '${REPOCOMPONENT}'" VERSION=$(/usr/bin/awk -F '=' '/VERSION/{print $2}' './.env') /usr/bin/echo "VERSION=${VERSION}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'VERSION' to '${VERSION}'" - name: Debian Package [Prepare] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/mv --verbose './linux-headers-x.x.x+pve-rpi-v8' "./linux-headers-${VERSION}+pve-rpi-v8" /usr/bin/sed --in-place --expression="s/x.x.x/${VERSION}/g" "./linux-headers-${VERSION}+pve-rpi-v8/DEBIAN/control" /usr/bin/sed --in-place --expression="s/x.x.x/${VERSION}/g" "./linux-headers-${VERSION}+pve-rpi-v8/DEBIAN/postinst" - name: Debian Package [Artifact Download] uses: christopherhx/gitea-download-artifact@v4 with: name: linux-headers-${{ steps.environment.outputs.version }}.tar.gz - name: Debian Package [Extract] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/tar --directory="./linux-headers-${VERSION}+pve-rpi-v8" --extract --gzip --file="./linux-headers-${VERSION}.tar.gz" --verbose - name: Debian Package [Build] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/dpkg-gen "./linux-headers-${VERSION}+pve-rpi-v8" - name: Debian Repository [Prepare] env: REPOCODENAME: ${{ steps.environment.outputs.repocodename }} REPOCOMPONENT: ${{ steps.environment.outputs.repocomponent }} SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/echo "${SSH_PRIVATE_KEY}" > './id_ed25519' /usr/bin/chmod --quiet '0400' './id_ed25519' /usr/bin/echo "REPOCODENAME='${REPOCODENAME}'" > "./linux-headers-${VERSION}+pve-rpi-v8.cfg" /usr/bin/echo "REPOCOMPONENT='${REPOCOMPONENT}'" >> "./linux-headers-${VERSION}+pve-rpi-v8.cfg" - name: Debian Package [Debian Repository Upload] env: SSH_HOSTNAME: ${{ vars.SSH_HOSTNAME }} SSH_USER: ${{ vars.SSH_USER }} run: | /usr/bin/scp -4 -B -C -i './id_ed25519' -o 'StrictHostKeyChecking no' -o "UserKnownHostsFile './known_hosts'" "./linux-headers-${VERSION}+pve-rpi-v8.deb" "${SSH_USER}"@"${SSH_HOSTNAME}":'/var/lib/reprepro/include' /usr/bin/scp -4 -B -C -i './id_ed25519' -o 'StrictHostKeyChecking no' -o "UserKnownHostsFile './known_hosts'" "./linux-headers-${VERSION}+pve-rpi-v8.cfg" "${SSH_USER}"@"${SSH_HOSTNAME}":'/var/lib/reprepro/include' bcm2711-linux-libc-dev: name: Raspberry Pi v8 Linux libc Development needs: - bcm2711-build runs-on: bookworm steps: - name: Repository [Clone] uses: https://github.com/actions/checkout@v5 - name: Environment [Artifact Download] uses: christopherhx/gitea-download-artifact@v4 with: name: .env - name: Environment [Define] id: environment run: | REPOCODENAME='bookworm' /usr/bin/echo "REPOCODENAME=${REPOCODENAME}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'REPOCODENAME' to '${REPOCODENAME}'" REPOCOMPONENT='pve8' /usr/bin/echo "REPOCOMPONENT=${REPOCOMPONENT}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'REPOCOMPONENT' to '${REPOCOMPONENT}'" VERSION=$(/usr/bin/awk -F '=' '/VERSION/{print $2}' './.env') /usr/bin/echo "VERSION=${VERSION}" >> "${GITHUB_OUTPUT}" /usr/bin/echo "Set Variable 'VERSION' to '${VERSION}'" - name: Debian Package [Prepare] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/sed --in-place --expression="s/x.x.x/${VERSION}/g" './linux-libc-dev/DEBIAN/control' - name: Debian Package [Artifact Download] uses: christopherhx/gitea-download-artifact@v4 with: name: linux-libc-dev-${{ steps.environment.outputs.version }}.tar.gz - name: Debian Package [Extract] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/tar --directory='./linux-libc-dev' --extract --gzip --file="./linux-libc-dev-${VERSION}.tar.gz" --verbose - name: Debian Package [Build] env: VERSION: ${{ steps.environment.outputs.version }} run: | /usr/bin/dpkg-gen './linux-libc-dev' - name: Debian Repository [Prepare] env: REPOCODENAME: ${{ steps.environment.outputs.repocodename }} REPOCOMPONENT: ${{ steps.environment.outputs.repocomponent }} SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} run: | /usr/bin/echo "${SSH_PRIVATE_KEY}" > './id_ed25519' /usr/bin/chmod --quiet '0400' './id_ed25519' /usr/bin/echo "REPOCODENAME='${REPOCODENAME}'" > './linux-libc-dev.cfg' /usr/bin/echo "REPOCOMPONENT='${REPOCOMPONENT}'" >> './linux-libc-dev.cfg' - name: Debian Package [Debian Repository Upload] env: SSH_HOSTNAME: ${{ vars.SSH_HOSTNAME }} SSH_USER: ${{ vars.SSH_USER }} run: | /usr/bin/scp -4 -B -C -i './id_ed25519' -o 'StrictHostKeyChecking no' -o "UserKnownHostsFile './known_hosts'" './linux-libc-dev.deb' "${SSH_USER}"@"${SSH_HOSTNAME}":'/var/lib/reprepro/include' /usr/bin/scp -4 -B -C -i './id_ed25519' -o 'StrictHostKeyChecking no' -o "UserKnownHostsFile './known_hosts'" './linux-libc-dev.cfg' "${SSH_USER}"@"${SSH_HOSTNAME}":'/var/lib/reprepro/include'