From 2dddcfc76824b089d9c7cfd5d51bb77aebf71a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 12:53:23 +0200 Subject: [PATCH 01/26] Add AGENTS.md with attribution requirements for AI-assisted commits Define requirements for AI agents to disclose tool and model information in commit footers using "Assisted-by" format. Assisted-by: Claude Sonnet 4.5 via Claude Code --- AGENTS.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..385eb69 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,13 @@ +### Attribution Requirements + +AI agents must disclose what tool and model they are using in the "Assisted-by" commit footer: + +```text +Assisted-by: [Model Name] via [Tool Name] +``` + +Example: + +```text +Assisted-by: GLM 4.6 via Claude Code +``` \ No newline at end of file From 22a631cf4e532ed773ed174282f626b8f750ab06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 12:53:41 +0200 Subject: [PATCH 02/26] Add automation scripts for kernel ebuild generation and manifest management - Add generate-raspberrypi-kernel-ebuild.sh: Automatically generates new raspberrypi-kernel ebuilds by fetching latest versions from upstream sources (Raspberry Pi kernel releases, genpatches, gentoo-kernel-config, and fedora-kernel-config) - Add regenerate-manifest.sh: Regenerates manifests for all modified ebuilds in the git working directory - Add raspberrypi-kernel-6.12.47-r1.ebuild: Example ebuild generated using the new automation script Assisted-by: Claude Sonnet 4.5 via Claude Code --- generate-raspberrypi-kernel-ebuild.sh | 221 ++++++++++++++++++ regenerate-manifest.sh | 60 +++++ .../raspberrypi-kernel-6.12.47-r1.ebuild | 109 +++++++++ 3 files changed, 390 insertions(+) create mode 100755 generate-raspberrypi-kernel-ebuild.sh create mode 100644 regenerate-manifest.sh create mode 100644 sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild diff --git a/generate-raspberrypi-kernel-ebuild.sh b/generate-raspberrypi-kernel-ebuild.sh new file mode 100755 index 0000000..87afda2 --- /dev/null +++ b/generate-raspberrypi-kernel-ebuild.sh @@ -0,0 +1,221 @@ +#!/usr/bin/env bash +# Script to automatically generate new raspberrypi-kernel ebuild files +# Fetches the latest versions automatically from upstream sources + +set -e + +echo "Fetching latest Raspberry Pi kernel release..." +LATEST_TAG=$(curl -s https://api.github.com/repos/raspberrypi/linux/tags | grep -o '"name": "stable_[0-9]*"' | head -1 | grep -o '[0-9]*') +if [ -z "$LATEST_TAG" ]; then + echo "Error: Could not fetch latest Raspberry Pi kernel tag" + exit 1 +fi +STABLE_DATE="$LATEST_TAG" +echo " Latest stable date: ${STABLE_DATE}" + +# Extract kernel version from the tag +echo "Fetching kernel version from tag..." +KERNEL_VERSION=$(curl -sL "https://raw.githubusercontent.com/raspberrypi/linux/stable_${STABLE_DATE}/Makefile" | awk '/^VERSION =/{v=$3} /^PATCHLEVEL =/{p=$3} /^SUBLEVEL =/{s=$3} END{print v"."p"."s}') +if [ -z "$KERNEL_VERSION" ]; then + echo "Error: Could not determine kernel version" + exit 1 +fi +echo " Kernel version: ${KERNEL_VERSION}" + +# Determine genpatches version (use the major.minor version) +KERNEL_MAJOR_MINOR=$(echo "$KERNEL_VERSION" | cut -d. -f1,2) +echo "Checking for genpatches for kernel ${KERNEL_MAJOR_MINOR}..." + +# Try to find the latest genpatches version +GENPATCHES_VERSION="" +for i in {50..1}; do + if curl -sIf "https://dev.gentoo.org/~alicef/dist/genpatches/genpatches-${KERNEL_MAJOR_MINOR}-${i}.base.tar.xz" >/dev/null 2>&1; then + GENPATCHES_VERSION="${KERNEL_MAJOR_MINOR}-${i}" + break + fi +done + +if [ -z "$GENPATCHES_VERSION" ]; then + echo "Warning: Could not find genpatches, using previous version pattern" + # Fallback to previous minor version + PREV_MINOR=$(($(echo "$KERNEL_MAJOR_MINOR" | cut -d. -f2) - 1)) + KERNEL_MAJOR=$(echo "$KERNEL_MAJOR_MINOR" | cut -d. -f1) + GENPATCHES_VERSION="${KERNEL_MAJOR}.${PREV_MINOR}-38" +fi +echo " Genpatches version: ${GENPATCHES_VERSION}" + +# Fetch latest gentoo-kernel-config version +echo "Fetching latest gentoo-kernel-config version..." +GENTOO_CONFIG_VERSION=$(curl -s https://api.github.com/repos/projg2/gentoo-kernel-config/tags | grep -o '"name": "g[0-9]*"' | head -1 | grep -o 'g[0-9]*') +if [ -z "$GENTOO_CONFIG_VERSION" ]; then + GENTOO_CONFIG_VERSION="g13" + echo " Warning: Could not fetch, using default: ${GENTOO_CONFIG_VERSION}" +else + echo " Gentoo config version: ${GENTOO_CONFIG_VERSION}" +fi + +# Fetch latest fedora-kernel-config version for the kernel series +echo "Fetching latest fedora-kernel-config version..." +ALL_TAGS=$(curl -s https://api.github.com/repos/projg2/fedora-kernel-config-for-gentoo/tags | grep -o '"name": "[^"]*"' | cut -d'"' -f4) + +# Try exact kernel series match (e.g., 6.6.x-gentoo) +CONFIG_VERSION=$(echo "$ALL_TAGS" | grep "^${KERNEL_MAJOR_MINOR}\." | grep -- "-gentoo$" | sort -V | tail -1) + +if [ -z "$CONFIG_VERSION" ]; then + echo " No exact match for ${KERNEL_MAJOR_MINOR}, trying closest version..." + # Find any version from the same major series + CONFIG_VERSION=$(echo "$ALL_TAGS" | grep "^${KERNEL_MAJOR}\." | grep -- "-gentoo$" | sort -V | tail -1) +fi + +if [ -z "$CONFIG_VERSION" ]; then + CONFIG_VERSION="${KERNEL_MAJOR_MINOR}.12-gentoo" + echo " Warning: Could not fetch, using estimated: ${CONFIG_VERSION}" +else + echo " Config version: ${CONFIG_VERSION}" +fi + +# Determine revision number +REVISION=1 +EBUILD_DIR="sys-kernel/raspberrypi-kernel" +while [ -f "${EBUILD_DIR}/raspberrypi-kernel-${KERNEL_VERSION}-r${REVISION}.ebuild" ]; do + REVISION=$((REVISION + 1)) +done +echo " Using revision: r${REVISION}" + +EBUILD_NAME="raspberrypi-kernel-${KERNEL_VERSION}-r${REVISION}.ebuild" +EBUILD_PATH="${EBUILD_DIR}/${EBUILD_NAME}" + +# Get current year for copyright +CURRENT_YEAR=$(date +%Y) + +echo "" +echo "Generating ebuild: ${EBUILD_PATH}" +echo "" + +# Create the ebuild file +cat > "${EBUILD_PATH}" << EOF +# Copyright 2020-${CURRENT_YEAR} Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 +# Largely derived from gentoo-kernel-${KERNEL_VERSION}.ebuild + +EAPI=8 + +inherit pikernel-build + +MY_P=linux-stable_${STABLE_DATE} +GENPATCHES_P=genpatches-${GENPATCHES_VERSION} +# https://koji.fedoraproject.org/koji/packageinfo?packageID=8 +# forked to https://github.com/projg2/fedora-kernel-config-for-gentoo +CONFIG_VER=${CONFIG_VERSION} +GENTOO_CONFIG_VER=${GENTOO_CONFIG_VERSION} + +DESCRIPTION="Raspberry Pi Foundation Linux kernel built with Gentoo patches" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ + https://github.com/raspberrypi/linux +" +SRC_URI+=" + https://github.com/raspberrypi/linux/archive/refs/tags/stable_${STABLE_DATE}.tar.gz + https://dev.gentoo.org/~alicef/dist/genpatches/\${GENPATCHES_P}.base.tar.xz + https://dev.gentoo.org/~alicef/dist/genpatches/\${GENPATCHES_P}.extras.tar.xz + https://github.com/projg2/gentoo-kernel-config/archive/\${GENTOO_CONFIG_VER}.tar.gz + -> gentoo-kernel-config-\${GENTOO_CONFIG_VER}.tar.gz + amd64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/\${CONFIG_VER}/kernel-x86_64-fedora.config + -> kernel-x86_64-fedora.config.\${CONFIG_VER} + ) + arm64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/\${CONFIG_VER}/kernel-aarch64-fedora.config + -> kernel-aarch64-fedora.config.\${CONFIG_VER} + ) + ppc64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/\${CONFIG_VER}/kernel-ppc64le-fedora.config + -> kernel-ppc64le-fedora.config.\${CONFIG_VER} + ) + x86? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/\${CONFIG_VER}/kernel-i686-fedora.config + -> kernel-i686-fedora.config.\${CONFIG_VER} + ) +" +S=\${WORKDIR}/\${MY_P} + +LICENSE="GPL-2" +KEYWORDS="~arm ~arm64" +IUSE="debug hardened bcm2711 bcm2712" +REQUIRED_USE=" + arm? ( savedconfig ) + hppa? ( savedconfig ) + riscv? ( savedconfig ) + sparc? ( savedconfig ) +" + +RDEPEND=" + !sys-kernel/gentoo-kernel-bin:\${SLOT} +" +BDEPEND=" + debug? ( dev-util/pahole ) +" +PDEPEND=" + >=virtual/dist-kernel-\${PV} +" + +QA_FLAGS_IGNORED=" + usr/src/linux-.*/scripts/gcc-plugins/.*.so + usr/src/linux-.*/vmlinux + usr/src/linux-.*/arch/powerpc/kernel/vdso.*/vdso.*.so.dbg +" + +src_prepare() { + # Copied from raspberrypi-sources-6.1.21_p20230405.ebuild + UNIPATCH_EXCLUDE=" + 10* + 15* + 1700 + 2000 + 29* + 3000 + 4567" + + # Copied from kernel-2.eclass + + # So now lets get rid of the patch numbers we want to exclude + for i in \${UNIPATCH_EXCLUDE}; do + ebegin "Excluding Patch #\${i}" + rm -f \${WORKDIR}/\${i}* 2>/dev/null; + eend \$? + done + + # Only set PATCHES if there are patches remaining... + if compgen -G "\${WORKDIR}/*.patch" > /dev/null; then + local PATCHES=( + # meh, genpatches have no directory + "\${WORKDIR}"/*.patch + ) + else + echo "No patches selected" + fi + + default +} + +# Override function from kernel-install eclass to skip checking of kernel.release file(s). +pkg_preinst() { + debug-print-function \${FUNCNAME} "\${@}" +} +EOF + +echo "✓ Successfully created: ${EBUILD_PATH}" +echo "" +echo "Summary:" +echo " Kernel version: ${KERNEL_VERSION}" +echo " Stable date: ${STABLE_DATE}" +echo " Genpatches version: ${GENPATCHES_VERSION}" +echo " Config version: ${CONFIG_VERSION}" +echo " Gentoo config version: ${GENTOO_CONFIG_VERSION}" +echo " Revision: r${REVISION}" +echo "" +echo "Next steps:" +echo " 1. Verify the ebuild is correct: cat ${EBUILD_PATH}" +echo " 2. Generate the manifest: ebuild ${EBUILD_PATH} manifest" +echo " 3. Test the ebuild: emerge -av =${EBUILD_NAME%.ebuild}" diff --git a/regenerate-manifest.sh b/regenerate-manifest.sh new file mode 100644 index 0000000..a29ed6f --- /dev/null +++ b/regenerate-manifest.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +# Script to regenerate manifests for modified ebuilds +# Useful for PRs when ebuilds have been updated + +set -e + +echo "Finding modified ebuild files..." + +# Get list of modified .ebuild files in git +MODIFIED_EBUILDS=$(git diff --name-only HEAD | grep '\.ebuild$' || true) + +if [ -z "$MODIFIED_EBUILDS" ]; then + echo "No modified ebuild files found in current changes." + echo "Checking for new/untracked ebuild files..." + MODIFIED_EBUILDS=$(git ls-files --others --exclude-standard | grep '\.ebuild$' || true) +fi + +if [ -z "$MODIFIED_EBUILDS" ]; then + echo "No ebuild files to process." + exit 0 +fi + +echo "Found ebuild files:" +echo "$MODIFIED_EBUILDS" | sed 's/^/ - /' +echo "" + +# Process each ebuild +for EBUILD in $MODIFIED_EBUILDS; do + if [ ! -f "$EBUILD" ]; then + echo "⚠ Skipping $EBUILD (file not found)" + continue + fi + + echo "Processing: $EBUILD" + + # Get the directory containing the ebuild + EBUILD_DIR=$(dirname "$EBUILD") + + # Run ebuild manifest + if ebuild "$EBUILD" manifest; then + echo "✓ Manifest generated for $EBUILD" + else + echo "✗ Failed to generate manifest for $EBUILD" + exit 1 + fi + + echo "" +done + +echo "✓ All manifests regenerated successfully" +echo "" + +# Check if Manifest files were modified +MODIFIED_MANIFESTS=$(git diff --name-only | grep 'Manifest$' || true) +if [ -n "$MODIFIED_MANIFESTS" ]; then + echo "Modified Manifest files:" + echo "$MODIFIED_MANIFESTS" | sed 's/^/ - /' + echo "" + echo "Run 'git add' to stage these changes for commit." +fi diff --git a/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild b/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild new file mode 100644 index 0000000..3c9af84 --- /dev/null +++ b/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild @@ -0,0 +1,109 @@ +# Copyright 2020-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 +# Largely derived from gentoo-kernel-6.12.47.ebuild + +EAPI=8 + +inherit pikernel-build + +MY_P=linux-stable_20250916 +GENPATCHES_P=genpatches-6.12-50 +# https://koji.fedoraproject.org/koji/packageinfo?packageID=8 +# forked to https://github.com/projg2/fedora-kernel-config-for-gentoo +CONFIG_VER=6.12.12-gentoo +GENTOO_CONFIG_VER=g17 + +DESCRIPTION="Raspberry Pi Foundation Linux kernel built with Gentoo patches" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ + https://github.com/raspberrypi/linux +" +SRC_URI+=" + https://github.com/raspberrypi/linux/archive/refs/tags/stable_20250916.tar.gz + https://dev.gentoo.org/~alicef/dist/genpatches/${GENPATCHES_P}.base.tar.xz + https://dev.gentoo.org/~alicef/dist/genpatches/${GENPATCHES_P}.extras.tar.xz + https://github.com/projg2/gentoo-kernel-config/archive/${GENTOO_CONFIG_VER}.tar.gz + -> gentoo-kernel-config-${GENTOO_CONFIG_VER}.tar.gz + amd64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-x86_64-fedora.config + -> kernel-x86_64-fedora.config.${CONFIG_VER} + ) + arm64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-aarch64-fedora.config + -> kernel-aarch64-fedora.config.${CONFIG_VER} + ) + ppc64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-ppc64le-fedora.config + -> kernel-ppc64le-fedora.config.${CONFIG_VER} + ) + x86? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-i686-fedora.config + -> kernel-i686-fedora.config.${CONFIG_VER} + ) +" +S=${WORKDIR}/${MY_P} + +LICENSE="GPL-2" +KEYWORDS="~arm ~arm64" +IUSE="debug hardened bcm2711 bcm2712" +REQUIRED_USE=" + arm? ( savedconfig ) + hppa? ( savedconfig ) + riscv? ( savedconfig ) + sparc? ( savedconfig ) +" + +RDEPEND=" + !sys-kernel/gentoo-kernel-bin:${SLOT} +" +BDEPEND=" + debug? ( dev-util/pahole ) +" +PDEPEND=" + >=virtual/dist-kernel-${PV} +" + +QA_FLAGS_IGNORED=" + usr/src/linux-.*/scripts/gcc-plugins/.*.so + usr/src/linux-.*/vmlinux + usr/src/linux-.*/arch/powerpc/kernel/vdso.*/vdso.*.so.dbg +" + +src_prepare() { + # Copied from raspberrypi-sources-6.1.21_p20230405.ebuild + UNIPATCH_EXCLUDE=" + 10* + 15* + 1700 + 2000 + 29* + 3000 + 4567" + + # Copied from kernel-2.eclass + + # So now lets get rid of the patch numbers we want to exclude + for i in ${UNIPATCH_EXCLUDE}; do + ebegin "Excluding Patch #${i}" + rm -f ${WORKDIR}/${i}* 2>/dev/null; + eend $? + done + + # Only set PATCHES if there are patches remaining... + if compgen -G "${WORKDIR}/*.patch" > /dev/null; then + local PATCHES=( + # meh, genpatches have no directory + "${WORKDIR}"/*.patch + ) + else + echo "No patches selected" + fi + + default +} + +# Override function from kernel-install eclass to skip checking of kernel.release file(s). +pkg_preinst() { + debug-print-function ${FUNCNAME} "${@}" +} From 45c8a4c65a95e82e3740b8365c2a93ae7f5d7370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 12:53:49 +0200 Subject: [PATCH 03/26] Add GitHub Actions workflow for automatic manifest regeneration Add CI workflow that automatically regenerates manifests for modified ebuilds in pull requests. Runs in a Gentoo container to provide access to portage tools (ebuild, repoman) and commits updated manifests back to the PR branch. Assisted-by: Claude Sonnet 4.5 via Claude Code --- .github/workflows/regenerate-manifest.yml | 122 ++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 .github/workflows/regenerate-manifest.yml diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml new file mode 100644 index 0000000..bb508e3 --- /dev/null +++ b/.github/workflows/regenerate-manifest.yml @@ -0,0 +1,122 @@ +name: Regenerate Manifests + +on: + pull_request: + paths: + - '**/*.ebuild' + workflow_dispatch: + +jobs: + regenerate-manifests: + runs-on: ubuntu-latest + container: + image: gentoo/stage3:latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.head.ref }} + repository: ${{ github.event.pull_request.head.repo.full_name }} + + - name: Configure Gentoo environment + run: | + # Sync portage tree (minimal sync) + emerge-webrsync || emerge --sync + + # Install app-portage/repoman for manifest generation + emerge --quiet app-portage/repoman + + - name: Find modified ebuilds + id: find-ebuilds + run: | + # Find modified and new ebuild files + MODIFIED_EBUILDS=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | grep '\.ebuild$' || true) + + if [ -z "$MODIFIED_EBUILDS" ]; then + echo "No modified ebuild files found." + echo "has_changes=false" >> $GITHUB_OUTPUT + exit 0 + fi + + echo "Modified ebuilds:" + echo "$MODIFIED_EBUILDS" + echo "has_changes=true" >> $GITHUB_OUTPUT + echo "ebuilds<> $GITHUB_OUTPUT + echo "$MODIFIED_EBUILDS" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + - name: Regenerate manifests + if: steps.find-ebuilds.outputs.has_changes == 'true' + run: | + # Set the repository location + export PORTDIR_OVERLAY="${GITHUB_WORKSPACE}" + + echo "${{ steps.find-ebuilds.outputs.ebuilds }}" | while read -r EBUILD; do + if [ -z "$EBUILD" ]; then + continue + fi + + echo "Processing: $EBUILD" + + if [ ! -f "$EBUILD" ]; then + echo "Warning: $EBUILD not found, skipping" + continue + fi + + # Generate manifest + ebuild "$EBUILD" manifest || { + echo "Error: Failed to generate manifest for $EBUILD" + exit 1 + } + + echo "✓ Manifest generated for $EBUILD" + done + + - name: Check for manifest changes + if: steps.find-ebuilds.outputs.has_changes == 'true' + id: check-changes + run: | + if git diff --quiet '**/Manifest'; then + echo "No manifest changes detected." + echo "manifests_changed=false" >> $GITHUB_OUTPUT + else + echo "Manifest changes detected:" + git diff --name-only '**/Manifest' + echo "manifests_changed=true" >> $GITHUB_OUTPUT + fi + + - name: Commit and push manifest changes + if: steps.check-changes.outputs.manifests_changed == 'true' + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + # Add all Manifest files + git add '**/Manifest' + + # Commit + git commit -m "chore: regenerate manifests + + 🤖 Generated with GitHub Actions" + + # Push to the PR branch + git push + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Summary + if: steps.find-ebuilds.outputs.has_changes == 'true' + run: | + echo "## Manifest Regeneration Summary" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + + if [ "${{ steps.check-changes.outputs.manifests_changed }}" == "true" ]; then + echo "✅ Manifests were regenerated and committed to the PR" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "### Modified Manifests:" >> $GITHUB_STEP_SUMMARY + git diff HEAD~1 --name-only '**/Manifest' | sed 's/^/- /' >> $GITHUB_STEP_SUMMARY + else + echo "ℹ️ No manifest changes were needed" >> $GITHUB_STEP_SUMMARY + fi From 2edb7d82d6ab076897713c73addc980ecb971263 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 13:18:50 +0200 Subject: [PATCH 04/26] Add Docker-compatible sandbox settings and binary package caching Configure Gentoo for Docker environment and enable binary package caching to significantly speed up CI runs: - Disable sandbox features that don't work in Docker containers (ipc-sandbox, network-sandbox, pid-sandbox) - Enable buildpkg to create binary packages for all builds - Configure emerge to use binary packages with --usepkg - Cache /var/cache/binpkgs directory to persist binary packages Assisted-by: Claude Sonnet 4.5 via Claude Code --- .github/workflows/regenerate-manifest.yml | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index db04aea..55492fd 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -20,10 +20,31 @@ jobs: ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} + - name: Cache Gentoo packages + uses: actions/cache@v4 + with: + path: | + /var/db/repos/gentoo + /var/cache/binpkgs + key: gentoo-${{ runner.os }}-${{ hashFiles('**/package.*') }} + restore-keys: | + gentoo-${{ runner.os }}- + - name: Configure Gentoo environment run: | + # Disable sandbox features that don't work in Docker + cat >> /etc/portage/make.conf < Date: Wed, 5 Nov 2025 13:21:43 +0200 Subject: [PATCH 05/26] Fix working directory for git commands in CI workflow Explicitly change to GITHUB_WORKSPACE before running git commands to ensure they execute in the correct repository directory. Assisted-by: Claude Sonnet 4.5 via Claude Code --- .github/workflows/regenerate-manifest.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 55492fd..2e9c27a 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -20,6 +20,7 @@ jobs: ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} + - name: Cache Gentoo packages uses: actions/cache@v4 with: @@ -52,6 +53,8 @@ jobs: - name: Find modified ebuilds id: find-ebuilds run: | + cd $GITHUB_WORKSPACE + # Find modified and new ebuild files MODIFIED_EBUILDS=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | grep '\.ebuild$' || true) From 17f1afdfc1e45753e1b152b353ef1583d033c0f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 13:34:05 +0200 Subject: [PATCH 06/26] ci: checkout the repo just step before it needs to be used. --- .github/workflows/regenerate-manifest.yml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 2e9c27a..9409726 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -13,14 +13,6 @@ jobs: image: gentoo/stage3:latest steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - ref: ${{ github.event.pull_request.head.ref }} - repository: ${{ github.event.pull_request.head.repo.full_name }} - - - name: Cache Gentoo packages uses: actions/cache@v4 with: @@ -50,6 +42,19 @@ jobs: # Install dev-util/pkgdev for manifest generation emerge dev-util/pkgdev + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.head.ref }} + repository: ${{ github.event.pull_request.head.repo.full_name }} + + - name: debug + run: | + ls -al $GITHUB_WORKSPACE + pwd + + - name: Find modified ebuilds id: find-ebuilds run: | From 6c05fe4486d0b8448253785700388981bc8e57b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 13:35:17 +0200 Subject: [PATCH 07/26] ci: That checksum wouldn't really work. --- .github/workflows/regenerate-manifest.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 9409726..99ef839 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -19,9 +19,9 @@ jobs: path: | /var/db/repos/gentoo /var/cache/binpkgs - key: gentoo-${{ runner.os }}-${{ hashFiles('**/package.*') }} + key: gentoo-${{ runner.os }} restore-keys: | - gentoo-${{ runner.os }}- + gentoo-${{ runner.os }} - name: Configure Gentoo environment run: | From 7bb5d9f4791686221aea0f9724673ddfb5e34c9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 13:53:29 +0200 Subject: [PATCH 08/26] Update workflow to use action-changed-files action Replace custom git diff logic with bjw-s-labs/action-changed-files action for more reliable detection of modified ebuild files. - Remove debug step - Configure action to filter for *.ebuild files - Update all step conditionals to use the action's outputs - Parse space-separated files output from the action Assisted-by: Claude Sonnet 4.5 via Claude Code --- .github/workflows/regenerate-manifest.yml | 42 ++++++----------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 99ef839..457bf0f 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -49,40 +49,20 @@ jobs: ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} - - name: debug - run: | - ls -al $GITHUB_WORKSPACE - pwd - - - - name: Find modified ebuilds - id: find-ebuilds - run: | - cd $GITHUB_WORKSPACE - - # Find modified and new ebuild files - MODIFIED_EBUILDS=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | grep '\.ebuild$' || true) - - if [ -z "$MODIFIED_EBUILDS" ]; then - echo "No modified ebuild files found." - echo "has_changes=false" >> $GITHUB_OUTPUT - exit 0 - fi - - echo "Modified ebuilds:" - echo "$MODIFIED_EBUILDS" - echo "has_changes=true" >> $GITHUB_OUTPUT - echo "ebuilds<> $GITHUB_OUTPUT - echo "$MODIFIED_EBUILDS" >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT + - name: Find modified files + uses: bjw-s-labs/action-changed-files@v0.4.1 + id: find-changed + with: + patterns: '**/*.ebuild' - name: Regenerate manifests - if: steps.find-ebuilds.outputs.has_changes == 'true' + if: steps.find-changed.outputs.changed_files run: | # Set the repository location export PORTDIR_OVERLAY="${GITHUB_WORKSPACE}" - echo "${{ steps.find-ebuilds.outputs.ebuilds }}" | while read -r EBUILD; do + # Process each modified ebuild + echo "${{ steps.find-changed.outputs.files }}" | tr ' ' '\n' | while read -r EBUILD; do if [ -z "$EBUILD" ]; then continue fi @@ -107,7 +87,7 @@ jobs: done - name: Check for manifest changes - if: steps.find-ebuilds.outputs.has_changes == 'true' + if: steps.find-changed.outputs.changed_files id: check-changes run: | if git diff --quiet '**/Manifest'; then @@ -120,7 +100,7 @@ jobs: fi - name: Commit and push manifest changes - if: steps.check-changes.outputs.manifests_changed == 'true' + if: steps.check-changes.outputs.changed_files run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" @@ -139,7 +119,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Summary - if: steps.find-ebuilds.outputs.has_changes == 'true' + if: steps.find-changed.outputs.changed_files run: | echo "## Manifest Regeneration Summary" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY From 55b8e00b81de8886535c7b4d124cf5decd956198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 13:59:34 +0200 Subject: [PATCH 09/26] Update manifest regeneration workflow to use correct action outputs - Rename action output from `files` to `changed_files` for parsing modified ebuilds. - Update conditional from `changed_files` to `manifests_changed` for commit step. --- .github/workflows/regenerate-manifest.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 457bf0f..c937039 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -62,7 +62,7 @@ jobs: export PORTDIR_OVERLAY="${GITHUB_WORKSPACE}" # Process each modified ebuild - echo "${{ steps.find-changed.outputs.files }}" | tr ' ' '\n' | while read -r EBUILD; do + echo "${{ steps.find-changed.outputs.changed_files }}" | tr ' ' '\n' | while read -r EBUILD; do if [ -z "$EBUILD" ]; then continue fi @@ -100,7 +100,7 @@ jobs: fi - name: Commit and push manifest changes - if: steps.check-changes.outputs.changed_files + if: steps.check-changes.outputs.manifests_changed run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" From f7720e463af93c6bc5ad51ca970d69ef16239c1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 14:08:46 +0200 Subject: [PATCH 10/26] Simplify manifest change detection and commit logic Remove redundant check-changes step and use git diff --cached to detect if there are actually changes to commit. This is simpler and more reliable than checking file globs. - Combine check and commit steps into one - Use git diff --cached to detect staged changes - Only commit and push if there are actual changes - Simplify summary output Assisted-by: Claude Sonnet 4.5 via Claude Code --- .github/workflows/regenerate-manifest.yml | 41 ++++++----------------- 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index c937039..8e7b716 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -86,21 +86,8 @@ jobs: echo "✓ Manifest generated for $EBUILD" done - - name: Check for manifest changes - if: steps.find-changed.outputs.changed_files - id: check-changes - run: | - if git diff --quiet '**/Manifest'; then - echo "No manifest changes detected." - echo "manifests_changed=false" >> $GITHUB_OUTPUT - else - echo "Manifest changes detected:" - git diff --name-only '**/Manifest' - echo "manifests_changed=true" >> $GITHUB_OUTPUT - fi - - name: Commit and push manifest changes - if: steps.check-changes.outputs.manifests_changed + if: steps.find-changed.outputs.changed_files run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" @@ -108,13 +95,14 @@ jobs: # Add all Manifest files git add '**/Manifest' - # Commit - git commit -m "chore: regenerate manifests - - 🤖 Generated with GitHub Actions" - - # Push to the PR branch - git push + # Commit and push if there are changes + if git diff --cached --quiet; then + echo "No manifest changes to commit" + else + git commit -m "chore: regenerate manifests" + git push + echo "Manifests committed and pushed" + fi env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -122,13 +110,4 @@ jobs: if: steps.find-changed.outputs.changed_files run: | echo "## Manifest Regeneration Summary" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - - if [ "${{ steps.check-changes.outputs.manifests_changed }}" == "true" ]; then - echo "✅ Manifests were regenerated and committed to the PR" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "### Modified Manifests:" >> $GITHUB_STEP_SUMMARY - git diff HEAD~1 --name-only '**/Manifest' | sed 's/^/- /' >> $GITHUB_STEP_SUMMARY - else - echo "ℹ️ No manifest changes were needed" >> $GITHUB_STEP_SUMMARY - fi + echo "✅ Manifests regenerated for modified ebuilds" >> $GITHUB_STEP_SUMMARY From 96db6bab0f5f8c248aea201cb7de9679314fa37c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 14:22:23 +0200 Subject: [PATCH 11/26] ci: Add git config --- .github/workflows/regenerate-manifest.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 8e7b716..12962f7 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -49,6 +49,12 @@ jobs: ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} + - name: Configure Git + run: | + cd "$GITHUB_WORKSPACE" + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + - name: Find modified files uses: bjw-s-labs/action-changed-files@v0.4.1 id: find-changed @@ -88,10 +94,8 @@ jobs: - name: Commit and push manifest changes if: steps.find-changed.outputs.changed_files + working-directory: ${{ github.workspace }} run: | - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - # Add all Manifest files git add '**/Manifest' From 19460836a2802ff4fe8787f5c321ece7d89cb68a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 14:31:06 +0200 Subject: [PATCH 12/26] ci: Try to get it to work --- .github/workflows/regenerate-manifest.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 12962f7..41b6fce 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -50,8 +50,9 @@ jobs: repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Configure Git + working-directory: ${{ github.workspace }} run: | - cd "$GITHUB_WORKSPACE" + pwd git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" @@ -65,7 +66,7 @@ jobs: if: steps.find-changed.outputs.changed_files run: | # Set the repository location - export PORTDIR_OVERLAY="${GITHUB_WORKSPACE}" + export PORTDIR_OVERLAY="${{ github.workspace }}" # Process each modified ebuild echo "${{ steps.find-changed.outputs.changed_files }}" | tr ' ' '\n' | while read -r EBUILD; do From 2f84a4c54d6b49dc3b7e2dbf706082f7102e04fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 14:34:23 +0200 Subject: [PATCH 13/26] ci: Try to get it to work, part two --- .github/workflows/regenerate-manifest.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 41b6fce..62b5056 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -45,7 +45,6 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 with: - fetch-depth: 0 ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} From fbb794b24bb6e1254045c4a09fb2208d59cf27b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 14:52:49 +0200 Subject: [PATCH 14/26] ci: Try to get it to work, part three --- .github/workflows/regenerate-manifest.yml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 62b5056..1621d53 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -7,7 +7,7 @@ on: workflow_dispatch: jobs: - regenerate-manifests: + regenerate: runs-on: ubuntu-latest container: image: gentoo/stage3:latest @@ -48,13 +48,18 @@ jobs: ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} + - name: Verify repository is in container + run: | + echo "Running in directory: $(pwd)" + echo "Workspace contents:" + ls -lA + - name: Configure Git - working-directory: ${{ github.workspace }} run: | pwd + ls -alh .git git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - - name: Find modified files uses: bjw-s-labs/action-changed-files@v0.4.1 id: find-changed @@ -64,8 +69,10 @@ jobs: - name: Regenerate manifests if: steps.find-changed.outputs.changed_files run: | + export PORTDIR_OVERLAY="${GITHUB_WORKSPACE}" # Set the repository location - export PORTDIR_OVERLAY="${{ github.workspace }}" + export PORTDIR_OVERLAY="${{ github.workspace }} + # Process each modified ebuild echo "${{ steps.find-changed.outputs.changed_files }}" | tr ' ' '\n' | while read -r EBUILD; do @@ -102,7 +109,7 @@ jobs: # Commit and push if there are changes if git diff --cached --quiet; then echo "No manifest changes to commit" - else + git push "https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }}" HEAD:${{ github.event.pull_request.head.ref }} git commit -m "chore: regenerate manifests" git push echo "Manifests committed and pushed" From 6a81b5321f7fc6034b0b26171c4d6b7a1ff2d475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 15:01:26 +0200 Subject: [PATCH 15/26] ci: Try to get it to work, part four --- .github/workflows/regenerate-manifest.yml | 32 +++++++---------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 1621d53..6ada34c 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -56,10 +56,9 @@ jobs: - name: Configure Git run: | - pwd - ls -alh .git - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" + git config --global --add safe.directory "$GITHUB_WORKSPACE" + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" - name: Find modified files uses: bjw-s-labs/action-changed-files@v0.4.1 id: find-changed @@ -70,9 +69,6 @@ jobs: if: steps.find-changed.outputs.changed_files run: | export PORTDIR_OVERLAY="${GITHUB_WORKSPACE}" - # Set the repository location - export PORTDIR_OVERLAY="${{ github.workspace }} - # Process each modified ebuild echo "${{ steps.find-changed.outputs.changed_files }}" | tr ' ' '\n' | while read -r EBUILD; do @@ -101,21 +97,13 @@ jobs: - name: Commit and push manifest changes if: steps.find-changed.outputs.changed_files - working-directory: ${{ github.workspace }} - run: | - # Add all Manifest files - git add '**/Manifest' - - # Commit and push if there are changes - if git diff --cached --quiet; then - echo "No manifest changes to commit" - git push "https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }}" HEAD:${{ github.event.pull_request.head.ref }} - git commit -m "chore: regenerate manifests" - git push - echo "Manifests committed and pushed" - fi - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + uses: EndBug/add-and-commit@v9.1.4 + with: + message: "Regenerate manifests for modified ebuilds" + add: '**/Manifest' + author_name: 'github-actions[bot]' + author_email: 'github-actions[bot]@users.noreply.github.com' + push: true - name: Summary if: steps.find-changed.outputs.changed_files From 8863c2e2b9de9445b7f40b40dd21ae1dac9e2939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 15:05:26 +0200 Subject: [PATCH 16/26] ci: Try to get it to work, part five --- .github/workflows/regenerate-manifest.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 6ada34c..ce017f9 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -72,6 +72,7 @@ jobs: # Process each modified ebuild echo "${{ steps.find-changed.outputs.changed_files }}" | tr ' ' '\n' | while read -r EBUILD; do + EBUILD=$(echo "$EBUILD" | tr -d "[]'") if [ -z "$EBUILD" ]; then continue fi From 016f4bb36a240ddce41f20e11f17bde8bd652e69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 15:10:41 +0200 Subject: [PATCH 17/26] Update REQUIRED_USE handling for EAPI 8 compatibility --- eclass/pikernel-build.eclass | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/eclass/pikernel-build.eclass b/eclass/pikernel-build.eclass index 5e2eb8f..3c8706c 100644 --- a/eclass/pikernel-build.eclass +++ b/eclass/pikernel-build.eclass @@ -22,7 +22,11 @@ inherit kernel-build IUSE="+bcm2711 +bcm2712 -initramfs" -REQUIRED_USE="|| ( bcm2711 bcm2712)" +if [[ ${EAPI} == 8 ]]; then + REQUIRED_USE+=" || ( bcm2711 bcm2712 )" +else + REQUIRED_USE+=" bcm2711? ( bcm2711 ) bcm2712? ( bcm2712 )" +fi SLOT="0" From 9fbbc2349426f3bb9d1d3ceedca52502d0d6091c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 15:14:21 +0200 Subject: [PATCH 18/26] ci: Some more tweaks --- .github/workflows/regenerate-manifest.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index ce017f9..15911cd 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -11,6 +11,7 @@ jobs: runs-on: ubuntu-latest container: image: gentoo/stage3:latest + options: --privileged steps: - name: Cache Gentoo packages @@ -87,7 +88,7 @@ jobs: # Get the package directory and generate manifest using pkgdev EBUILD_DIR=$(dirname "$EBUILD") cd "$EBUILD_DIR" - pkgdev manifest || { + sudo pkgdev manifest || { echo "Error: Failed to generate manifest for $EBUILD" exit 1 } From 3fc5bf586f8c435a7ec13b719e8791657a468c4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 15:16:37 +0200 Subject: [PATCH 19/26] ci: Some more tweaks, part two --- .github/workflows/regenerate-manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 15911cd..1165af4 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -88,7 +88,7 @@ jobs: # Get the package directory and generate manifest using pkgdev EBUILD_DIR=$(dirname "$EBUILD") cd "$EBUILD_DIR" - sudo pkgdev manifest || { + pkgdev manifest || { echo "Error: Failed to generate manifest for $EBUILD" exit 1 } From 91bf6e39bab4a484edbe71f66fa5096f6e39eab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 15:20:48 +0200 Subject: [PATCH 20/26] ci: Some more tweaks, part three --- .github/workflows/regenerate-manifest.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/regenerate-manifest.yml b/.github/workflows/regenerate-manifest.yml index 1165af4..b94f864 100644 --- a/.github/workflows/regenerate-manifest.yml +++ b/.github/workflows/regenerate-manifest.yml @@ -66,6 +66,12 @@ jobs: with: patterns: '**/*.ebuild' + - name: Fix distfiles permissions + run: | + mkdir -p /var/cache/distfiles + chown portage:portage /var/cache/distfiles + chmod 775 /var/cache/distfiles + - name: Regenerate manifests if: steps.find-changed.outputs.changed_files run: | From 2a88ba2134594d1c1ceedcaa127379e97ea68e6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 16:03:25 +0200 Subject: [PATCH 21/26] ci: Some more tweaks, part four --- generate-raspberrypi-kernel-ebuild.py | 381 ++++++++++++++++++ generate-raspberrypi-kernel-ebuild.sh | 34 +- .../raspberrypi-kernel-6.12.47-r1.ebuild | 109 ----- 3 files changed, 403 insertions(+), 121 deletions(-) create mode 100755 generate-raspberrypi-kernel-ebuild.py delete mode 100644 sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild diff --git a/generate-raspberrypi-kernel-ebuild.py b/generate-raspberrypi-kernel-ebuild.py new file mode 100755 index 0000000..7ef56a6 --- /dev/null +++ b/generate-raspberrypi-kernel-ebuild.py @@ -0,0 +1,381 @@ +#!/usr/bin/env python3 +# Script to automatically generate new raspberrypi-kernel ebuild files +# Fetches the latest versions automatically from upstream sources + +import os +import re +import sys +import datetime +from packaging.version import parse as parse_version + +try: + import requests +except ImportError: + print("Error: 'requests' library not found. Please install it with 'pip install requests'", file=sys.stderr) + sys.exit(1) + +# --- Configuration --- +HEADERS = {"Accept": "application/vnd.github.v3+json"} +EBUILD_DIR = "sys-kernel/raspberrypi-kernel" + +# --- Helper Functions --- + +def fetch_json(url): + """Fetches JSON from a URL and handles errors.""" + try: + response = requests.get(url, headers=HEADERS) + response.raise_for_status() + return response.json() + except requests.exceptions.RequestException as e: + print(f"Error fetching URL {url}: {e}", file=sys.stderr) + return None + +def check_url_exists(url): + """Checks if a URL exists by sending a HEAD request.""" + try: + response = requests.head(url, timeout=5) + return response.status_code == 200 + except requests.exceptions.RequestException: + return False + +def get_latest_rpi_kernel_tag(): + """Fetches the latest stable kernel tag from the Raspberry Pi linux repo.""" + print("Fetching latest Raspberry Pi kernel release...") + tags = fetch_json("https://api.github.com/repos/raspberrypi/linux/tags") + if not tags: + return None + for tag in tags: + if tag['name'].startswith('stable_'): + stable_date = tag['name'].replace('stable_', '') + print(f" Latest stable date: {stable_date}") + return stable_date + return None + +def get_kernel_version_from_makefile(stable_date): + """Extracts the kernel version from the Makefile of a given stable tag.""" + print("Fetching kernel version from tag...") + url = f"https://raw.githubusercontent.com/raspberrypi/linux/stable_{stable_date}/Makefile" + try: + response = requests.get(url) + response.raise_for_status() + makefile_content = response.text + version = re.search(r"^VERSION\s*=\s*(\d+)", makefile_content, re.M) + patchlevel = re.search(r"^PATCHLEVEL\s*=\s*(\d+)", makefile_content, re.M) + sublevel = re.search(r"^SUBLEVEL\s*=\s*(\d+)", makefile_content, re.M) + if version and patchlevel and sublevel: + kernel_version = f"{version.group(1)}.{patchlevel.group(1)}.{sublevel.group(1)}" + print(f" Kernel version: {kernel_version}") + return kernel_version + except requests.exceptions.RequestException as e: + print(f"Error fetching Makefile: {e}", file=sys.stderr) + return None + +def get_genpatches_version(kernel_version): + """Finds the appropriate genpatches version by checking for existing files.""" + major_minor = ".".join(kernel_version.split('.')[:2]) + print(f"Checking for genpatches for kernel {major_minor}...") + for i in range(50, 0, -1): + version_to_check = f"{major_minor}-{i}" + url = f"https://dev.gentoo.org/~alicef/dist/genpatches/genpatches-{version_to_check}.base.tar.xz" + if check_url_exists(url): + print(f" Genpatches version: {version_to_check}") + return version_to_check + + print("Warning: Could not find genpatches, using previous version pattern") + major, minor = major_minor.split('.') + prev_minor = int(minor) - 1 + fallback_version = f"{major}.{prev_minor}-38" + print(f" Genpatches version: {fallback_version}") + return fallback_version + +def get_gentoo_config_version(): + """Fetches the latest gentoo-kernel-config tag.""" + print("Fetching latest gentoo-kernel-config version...") + tags = fetch_json("https://api.github.com/repos/projg2/gentoo-kernel-config/tags") + if tags: + for tag in tags: + if tag['name'].startswith('g'): + version = tag['name'] + print(f" Gentoo config version: {version}") + return version + print(" Warning: Could not fetch, using fallback: g17") + return "g17" # A known good fallback + +def get_fedora_config_version(kernel_version): + """Finds the best matching fedora-kernel-config version.""" + print("Fetching all fedora-kernel-config tags...") + all_tags = [] + page = 1 + per_page = 100 # Max allowed by GitHub API + + while True: + url = f"https://api.github.com/repos/projg2/fedora-kernel-config-for-gentoo/tags?page={page}&per_page={per_page}" + tags = fetch_json(url) + if not tags: + break + + all_tags.extend(tags) + print(f" Fetched page {page} with {len(tags)} tags (total: {len(all_tags)})") + + # Stop if we got less than the requested number (last page) + if len(tags) < per_page: + break + + page += 1 + + if not all_tags: + print(" Error: No tags found in repository", file=sys.stderr) + return None + + # Filter and sort tags + gentoo_tags = sorted( + [tag['name'] for tag in all_tags if tag['name'].endswith('-gentoo')], + key=lambda v: parse_version(v.replace('-gentoo', '')), + reverse=True # Sort in descending order + ) + + print(f" Found {len(gentoo_tags)} gentoo config tags") + print(f" Latest 5 tags: {gentoo_tags[:5]}") + + target_version = parse_version(kernel_version) + major_minor = f"{target_version.major}.{target_version.minor}" + + # First try exact match + exact_match = f"{kernel_version}-gentoo" + if exact_match in gentoo_tags: + print(f" Found exact config version: {exact_match}") + return exact_match + + # Then try minor version matches (6.12.x) + minor_matches = [tag for tag in gentoo_tags + if tag.startswith(f"{major_minor}.") or tag == f"{major_minor}-gentoo"] + + if minor_matches: + # Get the highest patch version available + best_minor_match = sorted( + minor_matches, + key=lambda v: parse_version(v.replace('-gentoo', '')) + )[-1] + print(f" Found minor version match: {best_minor_match}") + + # Verify the config exists + config_url = f"https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/{best_minor_match}/kernel-x86_64-fedora.config" + if check_url_exists(config_url): + return best_minor_match + else: + print(f" Warning: Config URL doesn't exist for {best_minor_match}", file=sys.stderr) + + # Then try previous minor version (6.11.x) + prev_minor = int(major_minor.split('.')[1]) - 1 + if prev_minor >= 0: # Make sure we don't go negative + prev_major_minor = f"{target_version.major}.{prev_minor}" + prev_minor_matches = [tag for tag in gentoo_tags + if tag.startswith(f"{prev_major_minor}.") or tag == f"{prev_major_minor}-gentoo"] + + if prev_minor_matches: + best_prev_minor_match = sorted( + prev_minor_matches, + key=lambda v: parse_version(v.replace('-gentoo', '')) + )[-1] + print(f" Found previous minor version match: {best_prev_minor_match}") + + # Verify the config exists + config_url = f"https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/{best_prev_minor_match}/kernel-x86_64-fedora.config" + if check_url_exists(config_url): + return best_prev_minor_match + else: + print(f" Warning: Config URL doesn't exist for {best_prev_minor_match}", file=sys.stderr) + + # If we get here, no suitable version was found + print(f" Error: Could not find a suitable fedora-kernel-config version for {kernel_version}", file=sys.stderr) + print(f" Available gentoo tags: {gentoo_tags}", file=sys.stderr) + return None + + + +def get_ebuild_revision(kernel_version): + """Determines the next revision number for the ebuild.""" + revision = 1 + while os.path.exists(os.path.join(EBUILD_DIR, f"raspberrypi-kernel-{kernel_version}-r{revision}.ebuild")): + revision += 1 + print(f" Using revision: r{revision}") + return revision + +def generate_ebuild_content(data): + """Generates the ebuild file content from a template.""" + return f"""# Copyright 2020-{data['current_year']} Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 +# Largely derived from gentoo-kernel-{data['kernel_version']}.ebuild + +EAPI=8 + +inherit pikernel-build + +MY_P=linux-stable_{data['stable_date']} +GENPATCHES_P=genpatches-{data['genpatches_version']} +# https://koji.fedoraproject.org/koji/packageinfo?packageID=8 +# forked to https://github.com/projg2/fedora-kernel-config-for-gentoo +CONFIG_VER={data['config_version']} +GENTOO_CONFIG_VER={data['gentoo_config_version']} + +DESCRIPTION="Raspberry Pi Foundation Linux kernel built with Gentoo patches" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ + https://github.com/raspberrypi/linux +" +SRC_URI+=" + https://github.com/raspberrypi/linux/archive/refs/tags/stable_{data['stable_date']}.tar.gz -> rpi-kernel-$(MY_P).tar.gz + https://dev.gentoo.org/~alicef/dist/genpatches/${{GENPATCHES_P}}.base.tar.xz + https://dev.gentoo.org/~alicef/dist/genpatches/${{GENPATCHES_P}}.extras.tar.xz + https://github.com/projg2/gentoo-kernel-config/archive/${{GENTOO_CONFIG_VER}}.tar.gz + -> gentoo-kernel-config-${{GENTOO_CONFIG_VER}}.tar.gz + amd64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${{CONFIG_VER}}/kernel-x86_64-fedora.config + -> kernel-x86_64-fedora.config.${{CONFIG_VER}} + ) + arm64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${{CONFIG_VER}}/kernel-aarch64-fedora.config + -> kernel-aarch64-fedora.config.${{CONFIG_VER}} + ) + ppc64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${{CONFIG_VER}}/kernel-ppc64le-fedora.config + -> kernel-ppc64le-fedora.config.${{CONFIG_VER}} + ) + x86? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${{CONFIG_VER}}/kernel-i686-fedora.config + -> kernel-i686-fedora.config.${{CONFIG_VER}} + ) +" +S=${{WORKDIR}}/${{MY_P}} + +LICENSE="GPL-2" +KEYWORDS="~arm ~arm64" +IUSE="debug hardened bcm2711 bcm2712" +REQUIRED_USE=" + arm? ( savedconfig ) + hppa? ( savedconfig ) + riscv? ( savedconfig ) + sparc? ( savedconfig ) +" + +RDEPEND=" + !sys-kernel/gentoo-kernel-bin:${{SLOT}} +" +BDEPEND=" + debug? ( dev-util/pahole ) +" +PDEPEND=" + >=virtual/dist-kernel-${{PV}} +" + +QA_FLAGS_IGNORED=" + usr/src/linux-.*/scripts/gcc-plugins/.*.so + usr/src/linux-.*/vmlinux + usr/src/linux-.*/arch/powerpc/kernel/vdso.*/vdso.*.so.dbg +" + +src_prepare() {{ + # Copied from raspberrypi-sources-6.1.21_p20230405.ebuild + UNIPATCH_EXCLUDE=" + 10* + 15* + 1700 + 2000 + 29* + 3000 + 4567" + + # Copied from kernel-2.eclass + + # So now lets get rid of the patch numbers we want to exclude + for i in ${{UNIPATCH_EXCLUDE}}; do + ebegin "Excluding Patch #${{i}}" + rm -f ${{WORKDIR}}/${{i}}* 2>/dev/null; + eend $? + done + + # Only set PATCHES if there are patches remaining... + if compgen -G "${{WORKDIR}}/*.patch" > /dev/null; then + local PATCHES=( + # meh, genpatches have no directory + "${{WORKDIR}}"/*.patch + ) + else + echo "No patches selected" + fi + + default +}} + +# Override function from kernel-install eclass to skip checking of kernel.release file(s). +pkg_preinst() {{ + debug-print-function ${{FUNCNAME}} "${{@}}" +}} +""" + +def main(): + """Main script execution.""" + stable_date = get_latest_rpi_kernel_tag() + if not stable_date: + sys.exit(1) + + kernel_version = get_kernel_version_from_makefile(stable_date) + if not kernel_version: + sys.exit(1) + + genpatches_version = get_genpatches_version(kernel_version) + if not genpatches_version: + sys.exit(1) + + gentoo_config_version = get_gentoo_config_version() + if not gentoo_config_version: + sys.exit(1) + + config_version = get_fedora_config_version(kernel_version) + if not config_version: + sys.exit(1) + + revision = get_ebuild_revision(kernel_version) + + ebuild_name = f"raspberrypi-kernel-{kernel_version}-r{revision}.ebuild" + ebuild_path = os.path.join(EBUILD_DIR, ebuild_name) + + ebuild_data = { + 'current_year': datetime.date.today().year, + 'kernel_version': kernel_version, + 'stable_date': stable_date, + 'genpatches_version': genpatches_version, + 'config_version': config_version, + 'gentoo_config_version': gentoo_config_version, + } + + content = generate_ebuild_content(ebuild_data) + + print(f"\nGenerating ebuild: {ebuild_path}\n") + + try: + os.makedirs(EBUILD_DIR, exist_ok=True) + with open(ebuild_path, 'w') as f: + f.write(content) + except IOError as e: + print(f"Error writing ebuild file {ebuild_path}: {e}", file=sys.stderr) + sys.exit(1) + + print(f"✓ Successfully created: {ebuild_path}\n") + print("Summary:") + print(f" Kernel version: {kernel_version}") + print(f" Stable date: {stable_date}") + print(f" Genpatches version: {genpatches_version}") + print(f" Config version: {config_version}") + print(f" Gentoo config version: {gentoo_config_version}") + print(f" Revision: r{revision}\n") + print("Next steps:") + print(f" 1. Verify the ebuild is correct: cat {ebuild_path}") + print(f" 2. Generate the manifest: ebuild {ebuild_path} manifest") + print(f" 3. Test the ebuild: emerge -av ={ebuild_name.replace('.ebuild', '')}") + + +if __name__ == "__main__": + main() + diff --git a/generate-raspberrypi-kernel-ebuild.sh b/generate-raspberrypi-kernel-ebuild.sh index 87afda2..e5208a1 100755 --- a/generate-raspberrypi-kernel-ebuild.sh +++ b/generate-raspberrypi-kernel-ebuild.sh @@ -46,33 +46,43 @@ echo " Genpatches version: ${GENPATCHES_VERSION}" # Fetch latest gentoo-kernel-config version echo "Fetching latest gentoo-kernel-config version..." -GENTOO_CONFIG_VERSION=$(curl -s https://api.github.com/repos/projg2/gentoo-kernel-config/tags | grep -o '"name": "g[0-9]*"' | head -1 | grep -o 'g[0-9]*') +GENTOO_CONFIG_VERSION=$(curl -s https://api.github.com/repos/projg2/gentoo-kernel-config/tags | grep -o '"name": "g[0-9]*"' | head -1 | grep -o 'g[0-9]*' || echo "") if [ -z "$GENTOO_CONFIG_VERSION" ]; then - GENTOO_CONFIG_VERSION="g13" - echo " Warning: Could not fetch, using default: ${GENTOO_CONFIG_VERSION}" + GENTOO_CONFIG_VERSION="g17" # A known good fallback + echo " Warning: Could not fetch, using fallback: ${GENTOO_CONFIG_VERSION}" else echo " Gentoo config version: ${GENTOO_CONFIG_VERSION}" fi # Fetch latest fedora-kernel-config version for the kernel series echo "Fetching latest fedora-kernel-config version..." -ALL_TAGS=$(curl -s https://api.github.com/repos/projg2/fedora-kernel-config-for-gentoo/tags | grep -o '"name": "[^"]*"' | cut -d'"' -f4) +ALL_TAGS=$(curl -s https://api.github.com/repos/projg2/fedora-kernel-config-for-gentoo/tags | grep -o '"name": "[^"]*"' | cut -d'"' -f4 | grep -- "-gentoo$" | sort -V) # Try exact kernel series match (e.g., 6.6.x-gentoo) -CONFIG_VERSION=$(echo "$ALL_TAGS" | grep "^${KERNEL_MAJOR_MINOR}\." | grep -- "-gentoo$" | sort -V | tail -1) +CONFIG_VERSION=$(echo "$ALL_TAGS" | grep "^${KERNEL_MAJOR_MINOR}\." | tail -1) +# If no exact match, find the latest version that is not newer than the current kernel if [ -z "$CONFIG_VERSION" ]; then - echo " No exact match for ${KERNEL_MAJOR_MINOR}, trying closest version..." - # Find any version from the same major series - CONFIG_VERSION=$(echo "$ALL_TAGS" | grep "^${KERNEL_MAJOR}\." | grep -- "-gentoo$" | sort -V | tail -1) + echo " No exact match for ${KERNEL_MAJOR_MINOR}, finding latest version older than ${KERNEL_VERSION}..." + # Filter tags that are less than or equal to the current kernel version and take the latest one + CONFIG_VERSION=$(echo "$ALL_TAGS" | awk -v ver="${KERNEL_VERSION}" '{ if ($1 <= ver) print $1 }' | tail -1) fi if [ -z "$CONFIG_VERSION" ]; then - CONFIG_VERSION="${KERNEL_MAJOR_MINOR}.12-gentoo" - echo " Warning: Could not fetch, using estimated: ${CONFIG_VERSION}" + echo "Error: Could not determine a valid fedora-kernel-config version." + exit 1 else - echo " Config version: ${CONFIG_VERSION}" + echo " Found potential config version: ${CONFIG_VERSION}" +fi + +# Verify the found config version actually exists +FEDORA_CONFIG_URL="https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VERSION}/kernel-x86_64-fedora.config" +echo " Verifying URL: ${FEDORA_CONFIG_URL}" +if ! curl -s --head --fail "${FEDORA_CONFIG_URL}" > /dev/null; then + echo "Error: Fedora config version ${CONFIG_VERSION} does not exist at expected URL." + exit 1 fi +echo " Config version is valid: ${CONFIG_VERSION}" # Determine revision number REVISION=1 @@ -116,7 +126,7 @@ HOMEPAGE=" https://github.com/raspberrypi/linux " SRC_URI+=" - https://github.com/raspberrypi/linux/archive/refs/tags/stable_${STABLE_DATE}.tar.gz + https://github.com/raspberrypi/linux/archive/refs/tags/stable_${STABLE_DATE}.tar.gz -> rpi-$(MY_P).tar.gz https://dev.gentoo.org/~alicef/dist/genpatches/\${GENPATCHES_P}.base.tar.xz https://dev.gentoo.org/~alicef/dist/genpatches/\${GENPATCHES_P}.extras.tar.xz https://github.com/projg2/gentoo-kernel-config/archive/\${GENTOO_CONFIG_VER}.tar.gz diff --git a/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild b/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild deleted file mode 100644 index 3c9af84..0000000 --- a/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright 2020-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 -# Largely derived from gentoo-kernel-6.12.47.ebuild - -EAPI=8 - -inherit pikernel-build - -MY_P=linux-stable_20250916 -GENPATCHES_P=genpatches-6.12-50 -# https://koji.fedoraproject.org/koji/packageinfo?packageID=8 -# forked to https://github.com/projg2/fedora-kernel-config-for-gentoo -CONFIG_VER=6.12.12-gentoo -GENTOO_CONFIG_VER=g17 - -DESCRIPTION="Raspberry Pi Foundation Linux kernel built with Gentoo patches" -HOMEPAGE=" - https://wiki.gentoo.org/wiki/Project:Distribution_Kernel - https://www.kernel.org/ - https://github.com/raspberrypi/linux -" -SRC_URI+=" - https://github.com/raspberrypi/linux/archive/refs/tags/stable_20250916.tar.gz - https://dev.gentoo.org/~alicef/dist/genpatches/${GENPATCHES_P}.base.tar.xz - https://dev.gentoo.org/~alicef/dist/genpatches/${GENPATCHES_P}.extras.tar.xz - https://github.com/projg2/gentoo-kernel-config/archive/${GENTOO_CONFIG_VER}.tar.gz - -> gentoo-kernel-config-${GENTOO_CONFIG_VER}.tar.gz - amd64? ( - https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-x86_64-fedora.config - -> kernel-x86_64-fedora.config.${CONFIG_VER} - ) - arm64? ( - https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-aarch64-fedora.config - -> kernel-aarch64-fedora.config.${CONFIG_VER} - ) - ppc64? ( - https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-ppc64le-fedora.config - -> kernel-ppc64le-fedora.config.${CONFIG_VER} - ) - x86? ( - https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-i686-fedora.config - -> kernel-i686-fedora.config.${CONFIG_VER} - ) -" -S=${WORKDIR}/${MY_P} - -LICENSE="GPL-2" -KEYWORDS="~arm ~arm64" -IUSE="debug hardened bcm2711 bcm2712" -REQUIRED_USE=" - arm? ( savedconfig ) - hppa? ( savedconfig ) - riscv? ( savedconfig ) - sparc? ( savedconfig ) -" - -RDEPEND=" - !sys-kernel/gentoo-kernel-bin:${SLOT} -" -BDEPEND=" - debug? ( dev-util/pahole ) -" -PDEPEND=" - >=virtual/dist-kernel-${PV} -" - -QA_FLAGS_IGNORED=" - usr/src/linux-.*/scripts/gcc-plugins/.*.so - usr/src/linux-.*/vmlinux - usr/src/linux-.*/arch/powerpc/kernel/vdso.*/vdso.*.so.dbg -" - -src_prepare() { - # Copied from raspberrypi-sources-6.1.21_p20230405.ebuild - UNIPATCH_EXCLUDE=" - 10* - 15* - 1700 - 2000 - 29* - 3000 - 4567" - - # Copied from kernel-2.eclass - - # So now lets get rid of the patch numbers we want to exclude - for i in ${UNIPATCH_EXCLUDE}; do - ebegin "Excluding Patch #${i}" - rm -f ${WORKDIR}/${i}* 2>/dev/null; - eend $? - done - - # Only set PATCHES if there are patches remaining... - if compgen -G "${WORKDIR}/*.patch" > /dev/null; then - local PATCHES=( - # meh, genpatches have no directory - "${WORKDIR}"/*.patch - ) - else - echo "No patches selected" - fi - - default -} - -# Override function from kernel-install eclass to skip checking of kernel.release file(s). -pkg_preinst() { - debug-print-function ${FUNCNAME} "${@}" -} From cd008b0967072855ae81107e818ba7fdf8a3d1b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 16:04:53 +0200 Subject: [PATCH 22/26] ci: Some more tweaks, part four.5 --- .../raspberrypi-kernel-6.12.47-r1.ebuild | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild diff --git a/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild b/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild new file mode 100644 index 0000000..8aec915 --- /dev/null +++ b/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild @@ -0,0 +1,109 @@ +# Copyright 2020-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 +# Largely derived from gentoo-kernel-6.12.47.ebuild + +EAPI=8 + +inherit pikernel-build + +MY_P=linux-stable_20250916 +GENPATCHES_P=genpatches-6.12-50 +# https://koji.fedoraproject.org/koji/packageinfo?packageID=8 +# forked to https://github.com/projg2/fedora-kernel-config-for-gentoo +CONFIG_VER=6.12.41-gentoo +GENTOO_CONFIG_VER=g17 + +DESCRIPTION="Raspberry Pi Foundation Linux kernel built with Gentoo patches" +HOMEPAGE=" + https://wiki.gentoo.org/wiki/Project:Distribution_Kernel + https://www.kernel.org/ + https://github.com/raspberrypi/linux +" +SRC_URI+=" + https://github.com/raspberrypi/linux/archive/refs/tags/stable_20250916.tar.gz -> rpi-kernel-$(MY_P).tar.gz + https://dev.gentoo.org/~alicef/dist/genpatches/${GENPATCHES_P}.base.tar.xz + https://dev.gentoo.org/~alicef/dist/genpatches/${GENPATCHES_P}.extras.tar.xz + https://github.com/projg2/gentoo-kernel-config/archive/${GENTOO_CONFIG_VER}.tar.gz + -> gentoo-kernel-config-${GENTOO_CONFIG_VER}.tar.gz + amd64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-x86_64-fedora.config + -> kernel-x86_64-fedora.config.${CONFIG_VER} + ) + arm64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-aarch64-fedora.config + -> kernel-aarch64-fedora.config.${CONFIG_VER} + ) + ppc64? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-ppc64le-fedora.config + -> kernel-ppc64le-fedora.config.${CONFIG_VER} + ) + x86? ( + https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-i686-fedora.config + -> kernel-i686-fedora.config.${CONFIG_VER} + ) +" +S=${WORKDIR}/${MY_P} + +LICENSE="GPL-2" +KEYWORDS="~arm ~arm64" +IUSE="debug hardened bcm2711 bcm2712" +REQUIRED_USE=" + arm? ( savedconfig ) + hppa? ( savedconfig ) + riscv? ( savedconfig ) + sparc? ( savedconfig ) +" + +RDEPEND=" + !sys-kernel/gentoo-kernel-bin:${SLOT} +" +BDEPEND=" + debug? ( dev-util/pahole ) +" +PDEPEND=" + >=virtual/dist-kernel-${PV} +" + +QA_FLAGS_IGNORED=" + usr/src/linux-.*/scripts/gcc-plugins/.*.so + usr/src/linux-.*/vmlinux + usr/src/linux-.*/arch/powerpc/kernel/vdso.*/vdso.*.so.dbg +" + +src_prepare() { + # Copied from raspberrypi-sources-6.1.21_p20230405.ebuild + UNIPATCH_EXCLUDE=" + 10* + 15* + 1700 + 2000 + 29* + 3000 + 4567" + + # Copied from kernel-2.eclass + + # So now lets get rid of the patch numbers we want to exclude + for i in ${UNIPATCH_EXCLUDE}; do + ebegin "Excluding Patch #${i}" + rm -f ${WORKDIR}/${i}* 2>/dev/null; + eend $? + done + + # Only set PATCHES if there are patches remaining... + if compgen -G "${WORKDIR}/*.patch" > /dev/null; then + local PATCHES=( + # meh, genpatches have no directory + "${WORKDIR}"/*.patch + ) + else + echo "No patches selected" + fi + + default +} + +# Override function from kernel-install eclass to skip checking of kernel.release file(s). +pkg_preinst() { + debug-print-function ${FUNCNAME} "${@}" +} From 739bb737bc03de46eae84b74190340bbb0a71824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 16:08:03 +0200 Subject: [PATCH 23/26] ci: Some more tweaks, part five --- .../raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild b/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild index 8aec915..8d033d2 100644 --- a/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild +++ b/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild @@ -20,7 +20,7 @@ HOMEPAGE=" https://github.com/raspberrypi/linux " SRC_URI+=" - https://github.com/raspberrypi/linux/archive/refs/tags/stable_20250916.tar.gz -> rpi-kernel-$(MY_P).tar.gz + https://github.com/raspberrypi/linux/archive/refs/tags/stable_20250916.tar.gz -> rpi-kernel-stable_20250916.tar.gz https://dev.gentoo.org/~alicef/dist/genpatches/${GENPATCHES_P}.base.tar.xz https://dev.gentoo.org/~alicef/dist/genpatches/${GENPATCHES_P}.extras.tar.xz https://github.com/projg2/gentoo-kernel-config/archive/${GENTOO_CONFIG_VER}.tar.gz From 9f6096bd0a30a36c36430a0c3bf11d2f52d6a2d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 16:15:30 +0200 Subject: [PATCH 24/26] ci: Some more tweaks, part six --- .../raspberrypi-kernel-6.12.47-r1.ebuild | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild b/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild index 8d033d2..4e15a53 100644 --- a/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild +++ b/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.12.47-r1.ebuild @@ -7,7 +7,7 @@ EAPI=8 inherit pikernel-build MY_P=linux-stable_20250916 -GENPATCHES_P=genpatches-6.12-50 +GENPATCHES_P=genpatches-6.12-62 # https://koji.fedoraproject.org/koji/packageinfo?packageID=8 # forked to https://github.com/projg2/fedora-kernel-config-for-gentoo CONFIG_VER=6.12.41-gentoo @@ -33,14 +33,6 @@ SRC_URI+=" https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-aarch64-fedora.config -> kernel-aarch64-fedora.config.${CONFIG_VER} ) - ppc64? ( - https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-ppc64le-fedora.config - -> kernel-ppc64le-fedora.config.${CONFIG_VER} - ) - x86? ( - https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-i686-fedora.config - -> kernel-i686-fedora.config.${CONFIG_VER} - ) " S=${WORKDIR}/${MY_P} From 55c44f27381e921a6152657e1213609bbc9f363c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Skyler=20M=C3=A4ntysaari?= Date: Wed, 5 Nov 2025 16:16:58 +0200 Subject: [PATCH 25/26] sys-kernel/raspberrypi-kernel: Yeet old version that doesn't probably even work right. --- .../raspberrypi-kernel-6.6.31-r1.ebuild | 110 ------------------ 1 file changed, 110 deletions(-) delete mode 100644 sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.6.31-r1.ebuild diff --git a/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.6.31-r1.ebuild b/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.6.31-r1.ebuild deleted file mode 100644 index a199ea4..0000000 --- a/sys-kernel/raspberrypi-kernel/raspberrypi-kernel-6.6.31-r1.ebuild +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright 2020-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 -# Largely derived from gentoo-kernel-6.6.31.ebuild - -EAPI=8 - -inherit pikernel-build - -MY_P=linux-stable_20240529 -GENPATCHES_P=genpatches-6.5-38 -# https://koji.fedoraproject.org/koji/packageinfo?packageID=8 -# forked to https://github.com/projg2/fedora-kernel-config-for-gentoo -CONFIG_VER=6.6.12-gentoo -GENTOO_CONFIG_VER=g13 - -DESCRIPTION="Raspberry Pi Foundation Linux kernel built with Gentoo patches" -HOMEPAGE=" - https://wiki.gentoo.org/wiki/Project:Distribution_Kernel - https://www.kernel.org/ - https://github.com/raspberrypi/linux -" -SRC_URI+=" - https://github.com/raspberrypi/linux/archive/refs/tags/stable_20240529.tar.gz - https://dev.gentoo.org/~alicef/dist/genpatches/${GENPATCHES_P}.base.tar.xz - https://dev.gentoo.org/~alicef/dist/genpatches/${GENPATCHES_P}.extras.tar.xz - https://github.com/projg2/gentoo-kernel-config/archive/${GENTOO_CONFIG_VER}.tar.gz - -> gentoo-kernel-config-${GENTOO_CONFIG_VER}.tar.gz - amd64? ( - https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-x86_64-fedora.config - -> kernel-x86_64-fedora.config.${CONFIG_VER} - ) - arm64? ( - https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-aarch64-fedora.config - -> kernel-aarch64-fedora.config.${CONFIG_VER} - ) - ppc64? ( - https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-ppc64le-fedora.config - -> kernel-ppc64le-fedora.config.${CONFIG_VER} - ) - x86? ( - https://raw.githubusercontent.com/projg2/fedora-kernel-config-for-gentoo/${CONFIG_VER}/kernel-i686-fedora.config - -> kernel-i686-fedora.config.${CONFIG_VER} - ) -" -S=${WORKDIR}/${MY_P} - -LICENSE="GPL-2" -KEYWORDS="~arm ~arm64" -IUSE="debug hardened bcm2711 bcm2712" -REQUIRED_USE=" - arm? ( savedconfig ) - hppa? ( savedconfig ) - riscv? ( savedconfig ) - sparc? ( savedconfig ) -" - -RDEPEND=" - !sys-kernel/gentoo-kernel-bin:${SLOT} -" -BDEPEND=" - debug? ( dev-util/pahole ) -" -PDEPEND=" - >=virtual/dist-kernel-${PV} -" - -QA_FLAGS_IGNORED=" - usr/src/linux-.*/scripts/gcc-plugins/.*.so - usr/src/linux-.*/vmlinux - usr/src/linux-.*/arch/powerpc/kernel/vdso.*/vdso.*.so.dbg -" - -src_prepare() { - # Copied from raspberrypi-sources-6.1.21_p20230405.ebuild - UNIPATCH_EXCLUDE=" - 10* - 15* - 1700 - 2000 - 29* - 3000 - 4567" - - # Copied from kernel-2.eclass - - # So now lets get rid of the patch numbers we want to exclude - for i in ${UNIPATCH_EXCLUDE}; do - ebegin "Excluding Patch #${i}" - rm -f ${WORKDIR}/${i}* 2>/dev/null; - eend $? - done - - # Only set PATCHES if there are patches remaining... - if compgen -G "${WORKDIR}/*.patch" > /dev/null; then - local PATCHES=( - # meh, genpatches have no directory - "${WORKDIR}"/*.patch - ) - else - echo "No patches selected" - fi - - default -} - -# Override function from kernel-install eclass to skip checking of kernel.release file(s). -pkg_preinst() { - debug-print-function ${FUNCNAME} "${@}" -} - From 7f38e38b71790fd6b327ce2d9e2d1edad848ec28 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 5 Nov 2025 14:20:43 +0000 Subject: [PATCH 26/26] Regenerate manifests for modified ebuilds --- sys-kernel/raspberrypi-kernel/Manifest | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys-kernel/raspberrypi-kernel/Manifest b/sys-kernel/raspberrypi-kernel/Manifest index a17a76a..2ac650f 100644 --- a/sys-kernel/raspberrypi-kernel/Manifest +++ b/sys-kernel/raspberrypi-kernel/Manifest @@ -4,13 +4,21 @@ DIST genpatches-5.15-68.base.tar.xz 2897744 BLAKE2B e1aebd74737e787df999aabb0153 DIST genpatches-5.15-68.extras.tar.xz 3932 BLAKE2B 34fd77b8464322ad369de5b86dd8dc83ce7510bca139d4e6036b0b2ab34d1c80698b5f965e44a09dd25ee3b4d80abbccc5920e7984803be2451281c74ff735ea SHA512 970a1e5a03f786d05bb1ae9217a467442f16344fffcf2c77a2572c6db656b0fcd5b3329eae193999c47bbb45c8b02f0fd9010760ef74a6aacc474729f0ee9369 DIST genpatches-6.1-25.base.tar.xz 1200876 BLAKE2B 7050f6e95a28f5886cce9b53823f6219a22a5b23cad5471bfa9e83eca208b8369395075e9aabdbe4d33b53b8c01aff3d3d0886115850e327baf12a946b851e1d SHA512 ea30e0d44ab64a2aa36ad7a83cf2df7924ba5e699c92268bc5f3d54acadefc9c836a00e7e27cc02400a6751ffe1c3cd45e6b9891a3fc0aa8d23ad8e535f18e4c DIST genpatches-6.1-25.extras.tar.xz 3812 BLAKE2B f73698c57031c9d7f5edd9ba2b865e32064c38b528649a8144f856bacf35ae3570d1fc936ee25a88bd52fd0765fff05bec42686b8b3fc5566df187bd57d59be5 SHA512 ac2bdccbc6bd1de82cbdfe4edac978e068445b8e064bcc6a833b04f15b86592304c19651884dc0769719ade1b220c8c0f704beca240ce24ab370621ad6849aee +DIST genpatches-6.12-62.base.tar.xz 3466908 BLAKE2B 167186bbcfaf0dd03538a78cb57a4e176f1c3f58d836669665c61b9ead463fde1f3e24e658590671d27ba115c9532e72af22c3657300571d3614e99c9e6d209f SHA512 aa4a33f6bda897298541a4f97a865361e6c03704e98086a20fa0ca5b2b475f2e8073b0596f7621c8d4e53edb2a7a5af873e69b85e9d8f8542817e5c4809b8184 +DIST genpatches-6.12-62.extras.tar.xz 4060 BLAKE2B 82ed105cfb4535c6913c7b98ae3f440bbbf487b113fff6b53cd944aedfa3aeab2ab3110c0f52a56122db0c24b661b08e7f8c7d1554b6e13c300a9ff2e820ad7a SHA512 8178e8a645b6f0e8a116813faad07aaa6f6b3e4408554e5f069619c34d495335e7eec55cbd2398c35a48900d65d34499588f57baa0e9a34af927a051af991756 DIST gentoo-kernel-config-g1.tar.gz 4283 BLAKE2B 44dd51ec45ebc71bffcd6d85a2fefba053f7bce8035057f0bbe928e24816ad4ba03c9bf67dcfcd6d6d1833c0a2ea93e0fd486c2093664dc41ccce316e1e60588 SHA512 3a45f28df9d457df0fe0d185da8b10f4e35f49dad75075e041e8cf3cf6972fecc8145cd557b0bf3a8dea20ddffae0194f88e61c1e5098fa0a5ca301d40aeea2e +DIST gentoo-kernel-config-g17.tar.gz 6024 BLAKE2B 53ecea1c19cc83bc3f6e13ad3b2e813999a09e2b29526115480e8ea7b870da2f4728918713f8eb0b351730b2cdd9f75e7515dc99a9b34a4079f7d15a1cd78425 SHA512 a5a78da8027492a229f54bfbcddf4e8e14304280db01d856071a9eb1ed9cd86111254498c5546a9908d617a012c914e8ded0afad5bdf28e9f237e321b9ab0f63 DIST gentoo-kernel-config-g7.tar.gz 4625 BLAKE2B 72ba0d038ee34ca5eb26d43bd373735aef3a50d02b414993ea05485e49d83d46df98a6cb0f6f3170a8ec0c99b557432fd9a11cbb92ff7c2837625a7f4469831e SHA512 2d74a8ca9f5402b4290ed93cd3ddba04a7f2ff42c8d8d3f2cbbe22fc20daa0fca119368daa8af39b7a26b1b99e4e3187c3c5d95886a651675ad94ff98d686628 DIST kernel-aarch64-fedora.config.5.15.19 242615 BLAKE2B 94e59440681535e38137b71814e1ae53f57a347f62cf31e0c1c8571ae43d9ae9be9957743c8cbc9ec74850c964eaabefe6799a28bc311ea7b99ee31391b47fb1 SHA512 fb77d3b73a215f97d70cd6d8c96ed20e497786b99ed7d7a7f2ed60cc1251289c1a4c7e058c41b5efac62e4a9b4b3d917dbdb11585955bba2b6584981430f4ddb DIST kernel-aarch64-fedora.config.6.1.7-gentoo 252811 BLAKE2B f6bad0d23132bf0dfbaa25db928a95f39763b6500fd1df9b4aeca4351e3e75f185891c0df96b111ad840e4bac431d74a9b11e7344e766ab49715663c89e4dbfc SHA512 41ebf195d8b656801d49c6bb693ebe1404b6725d70d88d93a75bc4af230030d65ef0701ea931846b022a3c598dcca068fbc38ecf6d064262b3f5b88e57060437 +DIST kernel-aarch64-fedora.config.6.12.41-gentoo 288081 BLAKE2B 08273a34c387621d0ccffcc325a0a34b40e0a8fbe78f2429c8a9efc73aa05f8fb563ed53e5fadb25662089f23ebafb61b2d08f91ea00b073e67e702798255e9c SHA512 58ea4f247aa9af6f7535ab5fe44dae2fbf286c7fbceeda86df532125807bbd4c25a89ddeeff4284592efefbaaef5022626abad7f1d1d64976e3040dc6e89251a DIST kernel-i686-fedora.config.5.15.19 222233 BLAKE2B 9e0f4dd37058f59610e46a87d3165039e76299d3c186fbfc3312101bac1b8b198de404075f5bbc6f5e2ba04cfd45f9d02bdf94b01c3ed11b9275f37f11ee7617 SHA512 49ffc39de86763e707a5c0c07c1367d34e9249615f29fdf97904d7b61a375a86fc4ba37a2f02b5f61e4c76ad65d9ba12716d2523af6faa003f6336d7ae61a953 DIST kernel-i686-fedora.config.6.1.7-gentoo 228053 BLAKE2B 1b06ca68465d7833905b6236a6ccf9a594f44613cbd102990c1667c1ece53ad982fa3abbfe475333e3297331ce1cfadf27c00c3e7de6293e213278e8ca97cd3b SHA512 1ed70eb5254a04d99d28ad901d4556dfa7e8ec8b739a0a33040315718effe9348e75ca8ac19d3b33fa7b3dcad9b4bb0531075692087c0dbe57ec6a4d873a4b27 DIST kernel-ppc64le-fedora.config.5.15.19 213339 BLAKE2B db6bbc9f402b8b48a2441e39d1a78dc112656ae842bc5594065cfd2ec3f6d462e4bde200e8736a70192af35fb3a5d1fc42683783a5b7620881f3a95bb0bc5f4d SHA512 b43439c24be8fa8bdd17d4c0beece799544ae45b2c289f0202fa5eb7a52dce0165a0cbc924b0decf877582af9688efd675cbfbd2313ff85fcc2c8563bba4b1ad DIST kernel-ppc64le-fedora.config.6.1.7-gentoo 218278 BLAKE2B f4dda4430e9801c4660be4bbf6e4b37052e720656e77c928adb7176ff3dba55feb2fe66dd564d41a181809488941cf392ec9c94d786e4a3d813fbe5d683d305f SHA512 a5e12ab1045fae61b494938047cf1c2a3c34693d3d242968e4ab564a012c70e6d232b9d5333347f5ba114a64bb59dd96919b38c5a1327fb8c5154ef40ad28d2c DIST kernel-x86_64-fedora.config.5.15.19 223286 BLAKE2B 239995703c01dcb6d179133dd115bc0a57872c07d7a08afaf4d92cf6d78f0c17b19487b5b399ac7fdde5d460fa7931628147817a569fef2c3a62951c96054bdf SHA512 9bee4aff7e5ef4ada57bee7496aaf47b8fdd5c936c4c9b580660d130db0678eaecdebdbcab0dfcaf5c17a71f6419069840db10f5886806b6fc810f8a3619554f DIST kernel-x86_64-fedora.config.6.1.7-gentoo 228685 BLAKE2B e68236ccc1d51b2aff850eda9f3197b7ea95b8a88716bc7b07dad30348a86fdbb99a948060300dddae73ca82267d851d357f1c9547a9dcefae1364deebdbd124 SHA512 42bec2ddb9cf7eb6e84bbdeb23eb98dc11c9cea41f6134b776010c6b36833b520a290f0ef0145379de15c7f7834398fa5e3aaabd7258d7d4e89567faa09eeb4c +DIST kernel-x86_64-fedora.config.6.12.41-gentoo 256210 BLAKE2B f14f7de8ae573561824df47cf94c3c0ce52a820456ebd0e618e4c1e7f5454b7d3f6f86c559a3cd98dd94c55aaeed397f3d0cee6b0e37cf6b47d3aedd920a9dea SHA512 ea87b4b45c78888e02d0288dd5844cf2d97a14e251b565c7d6451a0e62fbe0dbef38f46715467af2f869995d6bbc8be61d5b70476a86d607a5bfa27fbaf36e92 +DIST rpi-kernel-stable_20250916.tar.gz 246822724 BLAKE2B 65250b110ddc9b0510e2e64f1b15c43495a8e073dde40f43c6c0257ffe377067c4d6125aa3c5a2ae39af8586e3d98ac54efd73500774351b48ab57edf6441e42 SHA512 5818d7ac495dc31a27c9b967bf146d291ab6fd06b99e819d9c685d5413472593cd99a4d7ce10218c45d7fb631adceed8e20806b1f2f9909277ce0de7ad204565 +DIST stable_20231024.tar.gz 222264345 BLAKE2B e46d694e12b75190bc3de1932f017477fcd42f4c7f4b156438e3bd2ece43b9619cdd283e99944f3140829b065cb1e38cdd466aeb0453fdd810450a6f8d594b8e SHA512 0d7637e2de61c95f6a0af83bc3960f37cb233bd2d17517c19c45e34c4f858bbf1e71aed44fb292ee178416dffc80829e91f76aba3087ee5170e412ed698c728a +DIST stable_20231123.tar.gz 222298325 BLAKE2B cea675ff341f4a3e26f91461056175df1aff281cc86bbbda2dfd4a534911aaf19508efbccfd14f707a9051a2d974eba1252606c3ae0ff4c064f29608e8ee7ee9 SHA512 5ca2ed0fabc098687952230d7161ce51f078faf5de3fa55bbf2482054edb7ecd1fdcc247d82f9db14bb4e08030e679942d8ab845e171c08a7694ef6f58bc1f92