diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8ff74d0f..59fad78d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,16 +3,15 @@ on: pull_request: merge_group: schedule: - - cron: '0 6 * * *' # 6am everyday (1h after 'config') + - cron: '0 14 * * *' # 2pm UTC everyday (timed against official fedora container pushes, and after 'config') workflow_dispatch: env: IMAGE_NAME: akmods IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} - SOURCE_IMAGE: base jobs: push-ghcr: - name: Build and push akmods image + name: akmods image runs-on: ubuntu-22.04 permissions: contents: read @@ -21,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - kernel_flavor: [main, asus, surface] + kernel_flavor: [main, asus, fsync, surface] cfile_suffix: [common, nvidia] major_version: [37, 38, 39] nvidia_version: [0, 470, 535, 545] @@ -36,6 +35,10 @@ jobs: nvidia_version: 0 - kernel_flavor: asus major_version: 37 + - kernel_flavor: fsync + major_version: 37 + - kernel_flavor: fsync + major_version: 38 - kernel_flavor: surface major_version: 37 - kernel_flavor: surface @@ -45,6 +48,17 @@ jobs: - name: Checkout Push to Registry action uses: actions/checkout@v4 + - name: Matrix Variables + shell: bash + run: | + if [[ "${{ matrix.major_version }}" -ge "40" ]]; then + echo "SOURCE_IMAGE=fedora-silverblue" >> $GITHUB_ENV + echo "SOURCE_ORG=fedora" >> $GITHUB_ENV + else + echo "SOURCE_IMAGE=base" >> $GITHUB_ENV + echo "SOURCE_ORG=fedora-ostree-desktops" >> $GITHUB_ENV + fi + - name: Generate tags id: generate-tags shell: bash @@ -99,7 +113,7 @@ jobs: - name: Get current versions id: labels run: | - skopeo inspect docker://quay.io/fedora-ostree-desktops/${{ env.SOURCE_IMAGE }}:${{ matrix.major_version }} > inspect.json + skopeo inspect docker://quay.io/${{ env.SOURCE_ORG }}/${{ env.SOURCE_IMAGE }}:${{ matrix.major_version }} > inspect.json version=$(jq -r '.Labels["org.opencontainers.image.version"]' inspect.json) linux=$(jq -r '.Labels["ostree.linux"]' inspect.json) echo "VERSION=$version" >> $GITHUB_OUTPUT @@ -132,6 +146,7 @@ jobs: ${{ steps.generate-tags.outputs.alias_tags }} build-args: | SOURCE_IMAGE=${{ env.SOURCE_IMAGE }} + SOURCE_ORG=${{ env.SOURCE_ORG }} KERNEL_FLAVOR=${{ matrix.kernel_flavor }} FEDORA_MAJOR_VERSION=${{ matrix.major_version }} NVIDIA_MAJOR_VERSION=${{ matrix.nvidia_version }} @@ -142,7 +157,7 @@ jobs: # https://github.com/macbre/push-to-ghcr/issues/12 - name: Lowercase Registry id: registry_case - uses: ASzc/change-string-case-action@v5 + uses: ASzc/change-string-case-action@v6 with: string: ${{ env.IMAGE_REGISTRY }} @@ -172,7 +187,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} # Sign container - - uses: sigstore/cosign-installer@v3.1.2 + - uses: sigstore/cosign-installer@v3.2.0 if: github.event_name != 'pull_request' - name: Sign container image diff --git a/Containerfile.common b/Containerfile.common index afa5a383..a7aeb005 100644 --- a/Containerfile.common +++ b/Containerfile.common @@ -4,7 +4,8 @@ #Build from base, simpley because it's the smallest image ARG SOURCE_IMAGE="${SOURCE_IMAGE:-base}" -ARG BASE_IMAGE="quay.io/fedora-ostree-desktops/${SOURCE_IMAGE}" +ARG SOURCE_ORG="${SOURCE_ORG:-fedora-ostree-desktops}" +ARG BASE_IMAGE="quay.io/${SOURCE_ORG}/${SOURCE_IMAGE}" ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}" FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} AS builder @@ -18,8 +19,6 @@ COPY certs /tmp/certs COPY ublue-os-akmods-addons.spec /tmp/ublue-os-akmods-addons/ublue-os-akmods-addons.spec ADD https://copr.fedorainfracloud.org/coprs/ublue-os/akmods/repo/fedora-${FEDORA_MAJOR_VERSION}/ublue-os-akmods-fedora-${FEDORA_MAJOR_VERSION}.repo \ /tmp/ublue-os-akmods-addons/rpmbuild/SOURCES/_copr_ublue-os-akmods.repo -ADD https://negativo17.org/repos/fedora-steam.repo \ - /tmp/ublue-os-akmods-addons/rpmbuild/SOURCES/negativo17-fedora-steam.repo ADD https://negativo17.org/repos/fedora-multimedia.repo \ /tmp/ublue-os-akmods-addons/rpmbuild/SOURCES/negativo17-fedora-multimedia.repo @@ -34,22 +33,24 @@ RUN if grep -qv "surface" <<< "${KERNEL_FLAVOR}"; then \ ; else \ export KERNEL_NAME="kernel-surface" \ ; fi && \ + if grep -qv "asus" <<< "${KERNEL_FLAVOR}"; then \ + /tmp/build-kmod-evdi.sh \ + ; fi && \ + if grep -qv "fsync" <<< "${KERNEL_FLAVOR}"; then \ + /tmp/build-kmod-steamdeck.sh \ + ; fi && \ /tmp/build-kmod-gasket.sh && \ /tmp/build-kmod-gcadapter_oc.sh && \ /tmp/build-kmod-nct6687d.sh && \ /tmp/build-kmod-openrazer.sh && \ /tmp/build-kmod-openrgb.sh && \ /tmp/build-kmod-ryzen-smu.sh && \ - /tmp/build-kmod-steamdeck.sh && \ /tmp/build-kmod-v4l2loopback.sh && \ /tmp/build-kmod-winesync.sh && \ /tmp/build-kmod-wl.sh && \ /tmp/build-kmod-xpadneo.sh && \ /tmp/build-kmod-xpad-noone.sh && \ - /tmp/build-kmod-xone.sh && \ - if [[ "${FEDORA_MAJOR_VERSION}" -le "38" ]]; then \ - /tmp/build-kmod-evdi.sh \ - ; fi + /tmp/build-kmod-xone.sh RUN cp /tmp/ublue-os-akmods-addons/rpmbuild/RPMS/noarch/ublue-os-akmods-addons*.rpm \ /var/cache/rpms/ublue-os/ diff --git a/Containerfile.nvidia b/Containerfile.nvidia index 21a38c57..3257167d 100644 --- a/Containerfile.nvidia +++ b/Containerfile.nvidia @@ -4,7 +4,8 @@ #Build from base, simpley because it's the smallest image ARG SOURCE_IMAGE="${SOURCE_IMAGE:-base}" -ARG BASE_IMAGE="quay.io/fedora-ostree-desktops/${SOURCE_IMAGE}" +ARG SOURCE_ORG="${SOURCE_ORG:-fedora-ostree-desktops}" +ARG BASE_IMAGE="quay.io/${SOURCE_ORG}/${SOURCE_IMAGE}" ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}" FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} AS builder diff --git a/build-kmod-steamdeck.sh b/build-kmod-steamdeck.sh index 00933774..70484dc1 100755 --- a/build-kmod-steamdeck.sh +++ b/build-kmod-steamdeck.sh @@ -17,7 +17,5 @@ modinfo /usr/lib/modules/${KERNEL}/extra/steamdeck/steamdeck-hwmon.ko.xz > /dev/ || (find /var/cache/akmods/steamdeck/ -name \*.log -print -exec cat {} \; && exit 1) modinfo /usr/lib/modules/${KERNEL}/extra/steamdeck/{extcon,leds}-steamdeck.ko.xz > /dev/null \ || (find /var/cache/akmods/steamdeck/ -name \*.log -print -exec cat {} \; && exit 1) -modinfo /usr/lib/modules/${KERNEL}/extra/steamdeck/dwc3-pci.ko.xz > /dev/null \ -|| (find /var/cache/akmods/steamdeck/ -name \*.log -print -exec cat {} \; && exit 1) rm -f /etc/yum.repos.d/_copr_ublue-os-akmods.repo diff --git a/build-kmod-xone.sh b/build-kmod-xone.sh index 1c448143..7116060b 100755 --- a/build-kmod-xone.sh +++ b/build-kmod-xone.sh @@ -3,7 +3,7 @@ set -oeux pipefail -cp /tmp/ublue-os-akmods-addons/rpmbuild/SOURCES/negativo17-fedora-steam.repo /etc/yum.repos.d/ +cp /tmp/ublue-os-akmods-addons/rpmbuild/SOURCES/negativo17-fedora-multimedia.repo /etc/yum.repos.d/ ARCH="$(rpm -E '%_arch')" KERNEL="$(rpm -q "${KERNEL_NAME}" --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}')" @@ -17,4 +17,4 @@ akmods --force --kernels "${KERNEL}" --kmod xone modinfo /usr/lib/modules/${KERNEL}/extra/xone/xone-{dongle,gip-chatpad,gip-gamepad,gip-guitar,gip-headset,gip,wired}.ko.xz > /dev/null \ || (find /var/cache/akmods/xone/ -name \*.log -print -exec cat {} \; && exit 1) -rm -f /etc/yum.repos.d/negativo17-fedora-steam.repo +rm -f /etc/yum.repos.d/negativo17-fedora-multimedia.repo diff --git a/build-kmod-xpadneo.sh b/build-kmod-xpadneo.sh index d2776d53..59b63590 100755 --- a/build-kmod-xpadneo.sh +++ b/build-kmod-xpadneo.sh @@ -3,7 +3,7 @@ set -oeux pipefail -cp /tmp/ublue-os-akmods-addons/rpmbuild/SOURCES/negativo17-fedora-steam.repo /etc/yum.repos.d/ +cp /tmp/ublue-os-akmods-addons/rpmbuild/SOURCES/negativo17-fedora-multimedia.repo /etc/yum.repos.d/ ARCH="$(rpm -E '%_arch')" KERNEL="$(rpm -q "${KERNEL_NAME}" --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}')" @@ -17,4 +17,4 @@ akmods --force --kernels "${KERNEL}" --kmod xpadneo modinfo /usr/lib/modules/${KERNEL}/extra/xpadneo/hid-xpadneo.ko.xz > /dev/null \ || (find /var/cache/akmods/xpadneo/ -name \*.log -print -exec cat {} \; && exit 1) -rm -f /etc/yum.repos.d/negativo17-fedora-steam.repo +rm -f /etc/yum.repos.d/negativo17-fedora-multimedia.repo diff --git a/build-prep.sh b/build-prep.sh index e12c95ee..63ae7de2 100755 --- a/build-prep.sh +++ b/build-prep.sh @@ -28,14 +28,6 @@ rpm-ostree install \ https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-${RELEASE}.noarch.rpm \ fedora-repos-archive -# force use of single rpmfusion mirror -sed -i.bak 's%^metalink=%#metalink=%' /etc/yum.repos.d/rpmfusion-*.repo -sed -i 's%^#baseurl=http://download1.rpmfusion.org%baseurl=http://mirrors.ocf.berkeley.edu/rpmfusion%' /etc/yum.repos.d/rpmfusion-*.repo -# after F39 launches, bump to 40 -if [[ "${FEDORA_MAJOR_VERSION}" -ge 39 ]]; then - sed -i 's%free/fedora/releases%free/fedora/development%' /etc/yum.repos.d/rpmfusion-*.repo -fi - ### PREPARE CUSTOM KERNEL SUPPORT if [[ "asus" == "${KERNEL_FLAVOR}" ]]; then @@ -52,6 +44,20 @@ if [[ "asus" == "${KERNEL_FLAVOR}" ]]; then kernel-modules \ kernel-modules-core \ kernel-modules-extra +elif [[ "fsync" == "${KERNEL_FLAVOR}" ]]; then + echo "Installing kernel-fsync:" + wget https://copr.fedorainfracloud.org/coprs/sentry/kernel-fsync/repo/fedora-$(rpm -E %fedora)/sentry-kernel-fsync-fedora-$(rpm -E %fedora).repo -O /etc/yum.repos.d/_copr_sentry-kernel-fsync.repo + rpm-ostree cliwrap install-to-root / + rpm-ostree override replace \ + --experimental \ + --from repo=copr:copr.fedorainfracloud.org:sentry:kernel-fsync \ + kernel \ + kernel-core \ + kernel-devel \ + kernel-devel-matched \ + kernel-modules \ + kernel-modules-core \ + kernel-modules-extra elif [[ "surface" == "${KERNEL_FLAVOR}" ]]; then echo "Installing Surface Kernel:" # Add Linux Surface repo diff --git a/ublue-os-akmods-addons.spec b/ublue-os-akmods-addons.spec index d057877a..8b1b31ff 100644 --- a/ublue-os-akmods-addons.spec +++ b/ublue-os-akmods-addons.spec @@ -1,5 +1,5 @@ Name: ublue-os-akmods-addons -Version: 0.3 +Version: 0.4 Release: 1%{?dist} Summary: Signing key and repos for ublue os akmods @@ -11,7 +11,7 @@ Supplements: mokutil policycoreutils Source0: public_key.der Source1: _copr_ublue-os-akmods.repo -Source2: negativo17-fedora-steam.repo +Source2: negativo17-fedora-multimedia.repo %description Adds the signing key for importing with mokutil to enable secure boot for kernel modules and repo files required to install akmod dependencies. @@ -24,23 +24,26 @@ Adds the signing key for importing with mokutil to enable secure boot for kernel # Have different name for *.der in case kmodgenca is needed for creating more keys install -Dm0644 %{SOURCE0} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der install -Dm0644 %{SOURCE1} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/_copr_ublue-os-akmods.repo -install -Dm0644 %{SOURCE2} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-steam.repo +install -Dm0644 %{SOURCE2} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-multimedia.repo -sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-steam.repo +sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-multimedia.repo install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der %{buildroot}%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/_copr_ublue-os-akmods.repo %{buildroot}%{_sysconfdir}/yum.repos.d/_copr_ublue-os-akmods.repo -install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-steam.repo %{buildroot}%{_sysconfdir}/yum.repos.d/negativo17-fedora-steam.repo +install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-multimedia.repo %{buildroot}%{_sysconfdir}/yum.repos.d/negativo17-fedora-multimedia.repo %files %attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der %attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/_copr_ublue-os-akmods.repo -%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-steam.repo +%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-multimedia.repo %attr(0644,root,root) %{_sysconfdir}/pki/akmods/certs/akmods-ublue.der %attr(0644,root,root) %{_sysconfdir}/yum.repos.d/_copr_ublue-os-akmods.repo -%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/negativo17-fedora-steam.repo +%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/negativo17-fedora-multimedia.repo %changelog +* Mon Nov 20 2023 RJ Trujillo - 0.4 +- Migrate xpadneo/xone modules from negativo17 fedora-steam to negativo17 fedora-multimedia + * Mon Jul 17 2023 Kyle Gospodnetich - 0.3 - Add ublue-os/akmods copr repo for modules not available upstream/elsewhere