Skip to content

Conversation

@timsurber
Copy link
Contributor

Description

This adds the new Debian 14 (forky) as target which is currently in testing.
Because the last release Debian 13 (trixie) is quite recent there should not be any major breaking changing, so all the appgroups are symlinked to trixie.

How Has This Been Tested?

./compile.sh SKIP_ARMBIAN_REPO=yes for several board / desktop combinations, tested on physical rock5b with Gnome

Checklist:

Please delete options that are not relevant.

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • [ x] My changes generate no new warnings

@timsurber timsurber requested review from a team and igorpecovnik as code owners October 23, 2025 22:40
@github-actions github-actions bot added 11 Milestone: Fourth quarter release size/small PR with less then 50 lines Desktop Graphical user interface labels Oct 23, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 23, 2025

Walkthrough

Adds a new Debian distribution "Forky" via multiple config files (config/distributions/forky/{architectures,name,order,support,upgrade}) and simple entries for CLI and desktop (config/cli/forky, config/desktop/forky). Updates config/distributions/sid/order from 9 to 10 and changes config/distributions/trixie/upgrade from "testing" to "forky,testing". Extends release handling in lib/functions/rootfs/distro-specific.sh to recognize trixie and forky alongside existing releases.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Changes are repetitive configuration additions and a small, localized update to a shell case statement; review mainly verifies correctness of new values and that the release mapping was updated consistently.

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The pull request title "add Debian Forky as CSC target" directly and clearly summarizes the main objective of the changeset. The changes across multiple configuration files (config/cli/forky, config/desktop/forky, config/distributions/forky/, and updates to lib/functions/rootfs/distro-specific.sh) all support the core purpose of introducing Debian Forky as a new target. The title is concise, specific, and avoids vague terminology, making it clear to anyone scanning the history that this PR adds a new Debian distribution variant.
Description Check ✅ Passed The pull request description is clearly related to the changeset. It explains that the PR adds Debian 14 (forky) as a new target currently in testing, provides rationale for the implementation approach (symlink appgroups to trixie due to recent trixie release), and documents testing performed on multiple board/desktop combinations and physical hardware. The description contains meaningful information that aligns with the actual code changes observed in the raw summary.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 85da0b0 and 76db74d.

📒 Files selected for processing (10)
  • config/cli/forky (1 hunks)
  • config/desktop/forky (1 hunks)
  • config/distributions/forky/architectures (1 hunks)
  • config/distributions/forky/name (1 hunks)
  • config/distributions/forky/order (1 hunks)
  • config/distributions/forky/support (1 hunks)
  • config/distributions/forky/upgrade (1 hunks)
  • config/distributions/sid/order (1 hunks)
  • config/distributions/trixie/upgrade (1 hunks)
  • lib/functions/rootfs/distro-specific.sh (2 hunks)
✅ Files skipped from review due to trivial changes (3)
  • config/distributions/forky/upgrade
  • config/distributions/forky/order
  • config/cli/forky
🚧 Files skipped from review as they are similar to previous changes (6)
  • config/distributions/forky/name
  • config/distributions/forky/architectures
  • lib/functions/rootfs/distro-specific.sh
  • config/distributions/sid/order
  • config/desktop/forky
  • config/distributions/forky/support
🔇 Additional comments (1)
config/distributions/trixie/upgrade (1)

1-1: LGTM! Provides flexibility for upgrade strategies.

The change adds "forky" as an explicit upgrade target alongside "testing". While currently redundant (since forky IS the testing release), this provides users with two upgrade strategies:

  1. Pin to the forky codename (Debian 14)
  2. Follow the testing suite (currently forky, will change when forky becomes stable)

This is a standard Debian pattern and allows users to choose between stability (pinning to a codename) and following the rolling testing release.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added Needs review Seeking for review Framework Framework components labels Oct 23, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 3c7ace8 and 85da0b0.

📒 Files selected for processing (10)
  • config/cli/forky (1 hunks)
  • config/desktop/forky (1 hunks)
  • config/distributions/forky/architectures (1 hunks)
  • config/distributions/forky/name (1 hunks)
  • config/distributions/forky/order (1 hunks)
  • config/distributions/forky/support (1 hunks)
  • config/distributions/forky/upgrade (1 hunks)
  • config/distributions/sid/order (1 hunks)
  • config/distributions/trixie/upgrade (1 hunks)
  • lib/functions/rootfs/distro-specific.sh (2 hunks)
🔇 Additional comments (11)
config/cli/forky (1)

1-1: CLI alias to trixie matches desktop—verified and correct.

Both config/cli/forky and config/desktop/forky are symlinks pointing to trixie, and both target directories exist. Aliases maintain parity as intended.

config/desktop/forky (1)

1-1: Verified: aliases and targets are correctly configured.

Both config/desktop/forky and config/cli/forky are properly set as symlinks to trixie, and both target directories exist. The structural differences between them (appgroups/environments vs debootstrap/main) reflect their different distribution-specific schemas, which is expected. No action needed.

config/distributions/forky/upgrade (1)

1-1: Code is correct; no changes needed.

The codebase already properly recognizes "forky" as Debian (line 88, lib/functions/rootfs/distro-specific.sh) and maps it to the correct APT suites: forky and forky-updates. The new config/distributions/forky/upgrade file containing "testing" is metadata only (used in /etc/armbian-distribution-status), not APT suite configuration. The suite names are hardcoded based on the ${release} variable and correctly reflect that Forky is Debian's testing branch.

config/distributions/trixie/upgrade (1)

1-1: Change is correct and follows the established multi-target upgrade pattern.

All distributions consistently use comma-separated targets in their upgrade files (e.g., bookworm: trixie,testing; bullseye: bookworm,trixie,testing). The forky,testing format for trixie aligns with this convention, representing a fallback sequence: prefer forky, fall back to testing. This is consumed by armbian-config and motd as documented in the build code.

Optional: Consider dropping ,testing from trixie/upgrade once Forky reaches stable status, similar to how forky/upgrade currently lists only testing.

config/distributions/forky/support (1)

1-1: Distribution support level correctly set.

The "csc" value properly marks Forky as a Community-Supported Component target, aligning with the PR objective.

config/distributions/forky/order (1)

1-1: Ordering value is logically sound.

Forky (9) will sort before Sid (10), which is appropriate since Forky is testing and Sid is unstable.

config/distributions/forky/name (1)

1-1: Distribution display name is clear and follows Debian's official naming.

"Debian 14 Forky" is appropriate and aligns with the Debian release nomenclature.

lib/functions/rootfs/distro-specific.sh (3)

72-72: Documentation comment correctly updated to reflect supported releases.

Forky is now listed as a valid release parameter, keeping the documentation in sync with the implementation.


87-99: Forky correctly integrated into Debian-based distribution handling.

Adding Forky to the case statement alongside Trixie ensures it receives the appropriate APT source configuration with security updates and backports (since it's neither buster nor bullseye). The release will be treated as a tested distribution rather than unstable, which is correct for Forky's testing branch status.


101-216: Forky will correctly utilize existing Debian infrastructure.

The release will leverage the standard Debian APT configuration, keyrings, and mirrors without requiring special handling. Armbian repository logic uses the RELEASE variable generically, so Forky components (main, desktop, utils) will be available automatically through the standard Armbian mirror configuration.

config/distributions/forky/architectures (1)

1-1: Format is consistent with all other distributions.

The verification confirms that all architecture configuration files across distributions use the same comma-separated format without spaces. The forky file matches this standard.

@@ -1 +1 @@
9
10
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Ensure order values remain unique across distributions.

Bumping Sid to 10 makes sense after adding Forky at 9. Verify no duplicate order numbers.

Run:


🏁 Script executed:

#!/bin/bash
set -e
# List all orders and detect duplicates
find config/distributions -type f -name order -print0 \
| xargs -0 -I{} sh -c 'v=$(tr -d " \t\r" < "{}"); echo "${v} {}"' \
| sort -n \
| tee /tmp/orders.txt \
| awk 'NR>1 && $1==prev {dup=1; print "DUP:",$0} {prev=$1} END{exit dup?1:0}'

Length of output: 41


🏁 Script executed:

#!/bin/bash
set -e
# List all orders and detect duplicates (without tee)
find config/distributions -type f -name order | while read file; do
  v=$(tr -d " \t\r" < "$file")
  echo "$v $file"
done | sort -n -k1,1 | awk 'NR>1 && $1==prev {print "DUPLICATE:", $0; dup=1} {prev=$1} END{if(dup) exit 1}'

# Also show all unique orders for inspection
echo "---"
echo "All order files and values:"
find config/distributions -type f -name order | while read file; do
  v=$(tr -d " \t\r" < "$file")
  echo "$v $file"
done | sort -n -k1,1

Length of output: 143


🏁 Script executed:

#!/bin/bash
# Find all "order" files and check for duplicates
echo "Finding all 'order' files in repository..."
find . -type f -name "order" 2>/dev/null | head -20

echo ""
echo "Extracting and sorting order values..."
find . -type f -name "order" 2>/dev/null | while read file; do
  v=$(tr -d " \t\r\n" < "$file")
  echo "$v $file"
done | sort -n -k1,1

echo ""
echo "Checking for duplicates..."
find . -type f -name "order" 2>/dev/null | while read file; do
  v=$(tr -d " \t\r\n" < "$file")
  echo "$v"
done | sort -n | uniq -d | while read dup; do
  echo "DUPLICATE ORDER VALUE: $dup"
done

Length of output: 948


Critical: Pre-existing duplicate order values detected—oracular and plucky both have order 8.

Sid's change to 10 is unique and correct. However, verification revealed a pre-existing duplicate: both oracular/order and plucky/order contain value 8. This must be resolved to maintain order uniqueness across distributions.

🤖 Prompt for AI Agents
In config/distributions/sid/order at line 1: Sid's change to 10 is fine, but
there is a pre-existing duplicate where oracular/order and plucky/order both use
value 8; update one of those two files (preferably the one that is less
semantically constrained) to a unique, non-conflicting order value (e.g., pick
the next unused integer), ensure no other distribution uses that value, commit
the change, and run the distribution-order validation/tests to confirm
uniqueness across all distributions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

11 Milestone: Fourth quarter release Desktop Graphical user interface Framework Framework components Needs review Seeking for review size/small PR with less then 50 lines

Development

Successfully merging this pull request may close these issues.

1 participant