Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Ship fsync kernel on latest, drop HWE builds #1493

Draft
wants to merge 8 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions .github/workflows/reusable-build-iso.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,28 +28,11 @@ jobs:
image_flavor:
- main
- nvidia
- asus
- asus-nvidia
- surface
- surface-nvidia
base_name:
- ${{ inputs.brand_name }}
- ${{ inputs.brand_name }}-dx
fedora_version:
- ${{ inputs.fedora_version }}
exclude:
- fedora_version: gts
image_flavor: asus
- fedora_version: gts
image_flavor: asus-nvidia
- fedora_version: stable
image_flavor: asus
- fedora_version: stable
image_flavor: asus-nvidia
- fedora_version: stable
image_flavor: surface
- fedora_version: stable
image_flavor: surface-nvidia

steps:
- name: Free Disk Space (Ubuntu)
Expand Down
77 changes: 16 additions & 61 deletions .github/workflows/reusable-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,36 +34,11 @@ jobs:
image_flavor:
- main
- nvidia
- asus
- asus-nvidia
- surface
- surface-nvidia
base_name:
- ${{ inputs.brand_name }}
- ${{ inputs.brand_name }}-dx
fedora_version:
- ${{ inputs.fedora_version }}
exclude:
- fedora_version: gts
image_flavor: asus
- fedora_version: gts
image_flavor: asus-nvidia
- fedora_version: stable
image_flavor: asus
- fedora_version: stable
image_flavor: asus-nvidia
- fedora_version: stable
image_flavor: surface
- fedora_version: stable
image_flavor: surface-nvidia
- fedora_version: beta
image_flavor: asus
- fedora_version: beta
image_flavor: asus-nvidia
- fedora_version: beta
image_flavor: surface
- fedora_version: beta
image_flavor: surface-nvidia

steps:
- name: Checkout
Expand Down Expand Up @@ -93,31 +68,11 @@ jobs:
fi

# AKMODS_FLAVOR
if [[ "${{ matrix.image_flavor }}" =~ "asus" ]]; then
echo "AKMODS_FLAVOR=asus" >> $GITHUB_ENV
elif [[ "${{ matrix.image_flavor }}" =~ "surface" ]]; then
echo "AKMODS_FLAVOR=surface" >> $GITHUB_ENV
echo "KERNEL_SUFFIX=surface" >> $GITHUB_ENV
elif [[ "${{ matrix.fedora_version }}" == "stable" || \
"${{ matrix.fedora_version }}" == "gts" ]]; then
echo "AKMODS_FLAVOR=coreos" >> $GITHUB_ENV
else
echo "AKMODS_FLAVOR=main" >> $GITHUB_ENV
fi

# Env for matrix.image_flavor
if [[ "${{ matrix.image_flavor }}" == "nvidia" ]] && \
[[ "${{ matrix.fedora_version }}" == "stable" || \
"${{ matrix.fedora_version }}" == "gts" ]]; then
echo "image_flavor=main" >> $GITHUB_ENV
echo "coreos_type=nvidia" >> $GITHUB_ENV
elif [[ "${{ matrix.image_flavor }}" == "main" ]] && \
[[ "${{ matrix.fedora_version }}" == "stable" || \
if [[ "${{ matrix.fedora_version }}" == "stable" || \
"${{ matrix.fedora_version }}" == "gts" ]]; then
echo "image_flavor=${{ matrix.image_flavor }}" >> $GITHUB_ENV
echo "coreos_type=main" >> $GITHUB_ENV
echo "AKMODS_FLAVOR=coreos" >> $GITHUB_ENV
else
echo "image_flavor=${{ matrix.image_flavor }}" >> $GITHUB_ENV
echo "AKMODS_FLAVOR=fsync" >> $GITHUB_ENV
fi

- name: Get Current Fedora Version
Expand All @@ -126,19 +81,22 @@ jobs:
run: |
set -eo pipefail
if [[ ${{ matrix.fedora_version }} == "stable" ]]; then
KERNEL_RELEASE=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]')
KERNEL_RELEASE=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"')
elif [[ ${{ matrix.fedora_version }} == "gts" ]]; then
coreos_kernel_release=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]')
coreos_kernel_release=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"')
major_minor_patch=$(echo "$coreos_kernel_release" | cut -d '-' -f 1)
coreos_fedora_version=$(echo $coreos_kernel_release | grep -oP 'fc\K[0-9]+')
KERNEL_RELEASE="${major_minor_patch}-200.fc$(($coreos_fedora_version - 1))"
else
KERNEL_RELEASE=$(skopeo inspect docker://ghcr.io/ublue-os/silverblue-${{ env.image_flavor }}:${{ matrix.fedora_version }} | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]')
fsync_kernel_release=$(skopeo inspect docker://ghcr.io/ublue-os/fsync:latest | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"')
fsync_kernel_version=$(echo "${fsync_kernel_release//.fc*}")
fsync_fedora_version=$(echo "${fsync_kernel_release//*.fc}")
KERNEL_RELEASE="${fsync_kernel_version}.fsync.fc${fsync_fedora_version}"
fi
fedora_version=$(echo $KERNEL_RELEASE | grep -oP 'fc\K[0-9]+')
echo "kernel_release=$KERNEL_RELEASE" >> $GITHUB_OUTPUT
echo "fedora_version=$fedora_version" >> $GITHUB_OUTPUT
ver=$(skopeo inspect docker://ghcr.io/ublue-os/${{ env.BASE_IMAGE_NAME }}-${{ env.image_flavor }}:$fedora_version | jq -r '.Labels["org.opencontainers.image.version"]')
ver=$(skopeo inspect docker://ghcr.io/ublue-os/${{ env.BASE_IMAGE_NAME }}-main:$fedora_version | jq -r '.Labels["org.opencontainers.image.version"]')
if [ -z "$ver" ] || [ "null" = "$ver" ]; then
echo "inspected image version must not be empty or null"
exit 1
Expand All @@ -148,7 +106,7 @@ jobs:
- name: Verify base image
uses: EyeCantCU/cosign-action/verify@11f8c114a5e67c7a663c9dfcaf76d85429d254bc # v0.2.2
with:
containers: ${{ env.BASE_IMAGE_NAME}}-${{ env.image_flavor }}:${{ steps.labels.outputs.fedora_version }}
containers: ${{ env.BASE_IMAGE_NAME}}-main:${{ steps.labels.outputs.fedora_version }}

- name: Verify Chainguard images
if: matrix.base_name != 'bluefin' && matrix.base_name != 'aurora'
Expand All @@ -160,7 +118,7 @@ jobs:
registry: cgr.dev/chainguard

- name: Maximize build space
if: contains(matrix.base_name, '-dx') && (github.event_name == 'pull_request' && ( matrix.image_flavor == 'main' || matrix.image_flavor == 'nvidia' ) || github.event_name != 'pull_request')
if: contains(matrix.base_name, '-dx')
uses: ublue-os/remove-unwanted-software@517622d6452028f266b7ba4cc9a123b5f58a6b53 # v7

- name: Check just syntax
Expand Down Expand Up @@ -278,7 +236,6 @@ jobs:
# Build image using Buildah action
- name: Build Image
id: build_image
if: github.event_name == 'pull_request' && ( matrix.image_flavor == 'main' || matrix.image_flavor == 'nvidia' ) || github.event_name != 'pull_request'
uses: redhat-actions/buildah-build@7a95fa7ee0f02d552a32753e7414641a04307056 # v2
with:
containerfiles: |
Expand All @@ -289,12 +246,11 @@ jobs:
build-args: |
BASE_IMAGE_NAME=${{ env.BASE_IMAGE_NAME }}
IMAGE_NAME=${{ env.IMAGE_NAME }}
IMAGE_FLAVOR=${{ env.image_flavor }}
IMAGE_FLAVOR=${{ matrix.image_flavor }}
IMAGE_VENDOR=${{ github.repository_owner }}
FEDORA_MAJOR_VERSION=${{ steps.labels.outputs.fedora_version }}
TARGET_BASE=${{ matrix.target_base }}
AKMODS_FLAVOR=${{ env.AKMODS_FLAVOR }}
COREOS_TYPE=${{ env.coreos_type }}
KERNEL=${{ steps.labels.outputs.kernel_release }}
UBLUE_IMAGE_TAG=${{ matrix.fedora_version }}
labels: ${{ steps.meta.outputs.labels }}
Expand All @@ -314,7 +270,6 @@ jobs:
privkey: ${{ secrets.AKMOD_PRIVKEY_20230518 }}
pubkey: /etc/pki/akmods/certs/akmods-ublue.der
tags: ${{ steps.build_image.outputs.tags }}
kernel_suffix: ${{ env.KERNEL_SUFFIX }}
strip: false

# Workaround bug where capital letters in your GitHub username make it impossible to push to GHCR.
Expand Down Expand Up @@ -367,19 +322,19 @@ jobs:
DIGEST: ${{ steps.push.outputs.digest }}
IMAGE_REGISTRY: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}
IMAGE_NAME: ${{ env.IMAGE_NAME }}
IMAGE_FLAVOR: ${{ env.image_flavor }}
IMAGE_FLAVOR: ${{ matrix.image_flavor }}
FEDORA_VERSION: ${{ matrix.fedora_version }}
run: echo "${IMAGE_REGISTRY}@${DIGEST}" > "${IMAGE_NAME}-${IMAGE_FLAVOR}-${FEDORA_VERSION}.txt"

- name: Upload artifact
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4
with:
name: image-${{ env.IMAGE_NAME }}-${{ env.image_flavor }}-${{ matrix.fedora_version }}
name: image-${{ env.IMAGE_NAME }}-${{ matrix.image_flavor }}-${{ matrix.fedora_version }}
retention-days: 1
if-no-files-found: error
path: |
${{ env.IMAGE_NAME }}-${{ env.image_flavor }}-${{ matrix.fedora_version }}.txt
${{ env.IMAGE_NAME }}-${{ matrix.image_flavor }}-${{ matrix.fedora_version }}.txt

check:
name: Check all ${{ inputs.brand_name }} ${{ inputs.fedora_version }} builds successful
Expand Down
25 changes: 15 additions & 10 deletions Containerfile
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME:-silverblue}"
ARG IMAGE_FLAVOR="${IMAGE_FLAVOR:-main}"
ARG AKMODS_FLAVOR="${AKMODS_FLAVOR:-main}"
ARG SOURCE_IMAGE="${SOURCE_IMAGE:-${BASE_IMAGE_NAME}-${IMAGE_FLAVOR}}"
ARG SOURCE_IMAGE="${SOURCE_IMAGE:-${BASE_IMAGE_NAME}-main}"
ARG BASE_IMAGE="ghcr.io/ublue-os/${SOURCE_IMAGE}"
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-40}"
ARG TARGET_BASE="${TARGET_BASE:-bluefin}"
ARG COREOS_TYPE="${COREOS_TYPE:-}"
ARG KERNEL="${KERNEL:-}"
ARG UBLUE_IMAGE_TAG="${UBLUE_IMAGE_TAG:-latest}"

# FROM's for copying
# Sources for akmods
ARG KMOD_SOURCE_COMMON="ghcr.io/ublue-os/akmods:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION}"
ARG COREOS_KMODS="ghcr.io/ublue-os/ucore-kmods:stable"
ARG COREOS_NVIDIA="ghcr.io/ublue-os/akmods-nvidia:coreos-${FEDORA_MAJOR_VERSION}"
ARG KMOD_SOURCE_NVIDIA="ghcr.io/ublue-os/akmods-nvidia:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION}"

# Fetch akmods
FROM ${KMOD_SOURCE_COMMON} AS akmods
FROM ${COREOS_NVIDIA} AS coreos_nvidia
FROM ${KMOD_SOURCE_NVIDIA} AS akmods_nvidia

# Fetch fsync kernel
FROM ghcr.io/ublue-os/fsync:latest AS fsync

## bluefin image section
FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} AS base
Expand All @@ -25,7 +28,6 @@ ARG IMAGE_FLAVOR="${IMAGE_FLAVOR}"
ARG AKMODS_FLAVOR="${AKMODS_FLAVOR}"
ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME}"
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}"
ARG COREOS_TYPE="${COREOS_TYPE:-}"
ARG KERNEL="${KERNEL:-}"
ARG UBLUE_IMAGE_TAG="${UBLUE_IMAGE_TAG:-latest}"

Expand All @@ -37,9 +39,13 @@ COPY packages.json /tmp/packages.json

# Copy ublue-update.toml to tmp first, to avoid being overwritten.
COPY /system_files/shared/usr/etc/ublue-update/ublue-update.toml /tmp/ublue-update.toml
# COPY ublue kmods, add needed negativo17 repo and then immediately disable due to incompatibility with RPMFusion

# Copy ublue kmods
COPY --from=akmods /rpms /tmp/akmods-rpms
COPY --from=coreos_nvidia /rpms /tmp/akmods-rpms
COPY --from=akmods_nvidia /rpms /tmp/akmods-rpms

# Copy fsync kernel
COPY --from=fsync /tmp/rpms /tmp/fsync-rpms

# Build, cleanup, commit.
RUN rpm-ostree cliwrap install-to-root / && \
Expand All @@ -61,7 +67,6 @@ ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME}"
ARG IMAGE_FLAVOR="${IMAGE_FLAVOR}"
ARG AKMODS_FLAVOR="${AKMODS_FLAVOR}"
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}"
ARG COREOS_TYPE="${COREOS_TYPE:-}"
ARG KERNEL="${KERNEL:-}"
ARG UBLUE_IMAGE_TAG="${UBLUE_IMAGE_TAG:-latest}"

Expand Down
2 changes: 1 addition & 1 deletion build_files/base/build-base.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
set -ouex pipefail

. /tmp/build/firmware.sh
. /tmp/build/coreos_kernel.sh
. /tmp/build/install-kernel.sh
. /tmp/build/copr-repos.sh
. /tmp/build/install-akmods.sh
. /tmp/build/packages.sh
Expand Down
15 changes: 5 additions & 10 deletions build_files/base/install-akmods.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

set -ouex pipefail

if [[ -n "${COREOS_TYPE:-}" ]]; then
if [[ "${AKMODS_FLAVOR}" == "coreos" ]]; then
curl -L -o /etc/yum.repos.d/fedora-coreos-pool.repo \
https://raw.githubusercontent.com/coreos/fedora-coreos-config/testing-devel/fedora-coreos-pool.repo
fi

# Nvidia for gts/stable - nvidia
if [[ "${COREOS_TYPE}" == "nvidia" ]]; then
# Nvidia
if [[ "${AKMODS_FLAVOR}" == "nvidia" ]]; then
curl -Lo /tmp/nvidia-install.sh https://raw.githubusercontent.com/ublue-os/hwe/main/nvidia-install.sh && \
chmod +x /tmp/nvidia-install.sh && \
IMAGE_NAME="${BASE_IMAGE_NAME}" RPMFUSION_MIRROR="" /tmp/nvidia-install.sh
Expand All @@ -20,23 +20,18 @@ sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_ublue-os-akmods.repo

# Everyone
rpm-ostree install \
/tmp/akmods-rpms/kmods/*evdi*.rpm \
/tmp/akmods-rpms/kmods/*xpadneo*.rpm \
/tmp/akmods-rpms/kmods/*xone*.rpm \
/tmp/akmods-rpms/kmods/*openrazer*.rpm \
/tmp/akmods-rpms/kmods/*wl*.rpm \
/tmp/akmods-rpms/kmods/*v4l2loopback*.rpm
# /tmp/akmods-rpms/kmods/*framework-laptop*.rpm

# All but Asus
if grep -qv "asus" <<< "${AKMODS_FLAVOR}"; then
rpm-ostree install \
/tmp/akmods-rpms/kmods/*evdi*.rpm
fi

sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/negativo17-fedora-multimedia.repo

# ZFS for gts/stable
if [[ -n "${COREOS_TYPE:-}" ]]; then
if [[ "${AKMODS_FLAVOR}" == "coreos" ]]; then
rpm-ostree install /tmp/akmods-rpms/kmods/zfs/*.rpm \
pv
depmod -a -v "${KERNEL}".x86_64
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,24 @@

set -eoux pipefail

if [[ -n "${COREOS_TYPE:-}" ]]; then
KERNEL_VERSION="${KERNEL}"
KERNEL_MAJOR_MINOR_PATCH=$(echo "$KERNEL_VERSION" | cut -d '-' -f 1)
KERNEL_RELEASE=$(echo "$KERNEL_VERSION" | cut -d '-' -f 2)
KERNEL_VERSION="${KERNEL}"
KERNEL_MAJOR_MINOR_PATCH=$(echo "$KERNEL_VERSION" | cut -d '-' -f 1)
KERNEL_RELEASE=$(echo "$KERNEL_VERSION" | cut -d '-' -f 2)

if [[ "${AKMODS_FLAVOR}" == "coreos" ]]; then
rpm-ostree override replace --experimental \
"https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \
"https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \
"https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \
"https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \
"https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-extra-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm"
elif [[ "${AKMODS_FLAVOR}" == "fsync" ]]; then
rpm-ostree override replace --experimental \
"/tmp/fsync-rpms/kernel-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \
"/tmp/fsync-rpms/kernel-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \
"/tmp/fsync-rpms/kernel-headers-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \
"/tmp/fsync-rpms/kernel-modules-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \
"/tmp/fsync-rpms/kernel-modules-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \
"/tmp/fsync-rpms/kernel-modules-extra-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \
"/tmp/fsync-rpms/kernel-uki-virt-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm"
fi
2 changes: 1 addition & 1 deletion build_files/base/nvidia.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
set -ouex pipefail

# Nvidia Configurations
if [[ "${IMAGE_FLAVOR}" =~ "nvidia" || "${COREOS_TYPE}" =~ "nvidia" ]]; then
if [[ "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then
# Restore x11 for Nvidia Images
if [[ "${BASE_IMAGE_NAME}" =~ "kinoite" && "${FEDORA_MAJOR_VERSION}" -gt "39" ]]; then
rpm-ostree install plasma-workspace-x11
Expand Down
9 changes: 1 addition & 8 deletions build_files/shared/image-info.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,10 @@ set -ouex pipefail
IMAGE_INFO="/usr/share/ublue-os/image-info.json"
IMAGE_REF="ostree-image-signed:docker://ghcr.io/$IMAGE_VENDOR/$IMAGE_NAME"

#shellcheck disable=SC2153
image_flavor="${IMAGE_FLAVOR}"

if [[ "${COREOS_TYPE}" == "nvidia" ]]; then
image_flavor="nvidia"
fi

cat > $IMAGE_INFO <<EOF
{
"image-name": "$IMAGE_NAME",
"image-flavor": "$image_flavor",
"image-flavor": "$IMAGE_FLAVOR",
"image-vendor": "$IMAGE_VENDOR",
"image-ref": "$IMAGE_REF",
"image-tag":"$UBLUE_IMAGE_TAG",
Expand Down
Loading
Loading