Skip to content

Conversation

@tabrisnet
Copy link
Collaborator

@tabrisnet tabrisnet commented Nov 25, 2025

Description

more attempts at fixing #8965

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Please also note any relevant details for your test configuration.

  • time ./compile.sh artifact WHAT=rootfs BOARD=rock-5b BRANCH=current BUILD_DESKTOP=no BUILD_MINIMAL=no RELEASE=questing KERNEL_CONFIGURE=no KERNEL_GIT=full MANAGE_ACNG='http://squid.tabris.net:3142/' COMPRESS_OUTPUTIMAGE=xz DEB_COMPRESS=xz ARTIFACT_IGNORE_CACHE=yes
  • xfce & kde-plasma seem to work also

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
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules

Summary by CodeRabbit

Release Notes

  • Chores
    • Expanded configuration modularity with new environment-specific package lists for installation and removal operations
    • Established centralized references to shared system components across multiple profiles
    • Extended desktop configuration to support additional system environments and variants

✏️ Tip: You can customize this high-level summary in your review settings.

@github-actions github-actions bot added 11 Milestone: Fourth quarter release size/medium PR with more then 50 and less then 250 lines labels Nov 25, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 25, 2025

Walkthrough

This PR adds configuration files for two new CLI variants—questing and resolute—establishing debootstrap components, package references, additional package lists, and desktop distribution identifiers. Most files delegate to common shared configurations via relative path references.

Changes

Cohort / File(s) Summary
Debootstrap shared components & packages
config/cli/questing/debootstrap/components, config/cli/questing/debootstrap/packages, config/cli/resolute/debootstrap/components, config/cli/resolute/debootstrap/packages
Introduces references to shared Ubuntu debootstrap components and package configurations for both variants
Main packages references
config/cli/questing/main/packages, config/cli/resolute/main/packages
Links both variants to shared common main packages configuration
Additional packages
config/cli/questing/main/packages.additional, config/cli/resolute/main/packages.additional
Defines variant-specific supplementary Debian packages for installation
Package uninstall references
config/cli/questing/main/packages.uninstall, config/cli/resolute/main/packages.uninstall
Delegates uninstall behavior to shared common uninstall configuration
Desktop distribution identifier
config/desktop/questing, config/desktop/resolute
Sets distribution identifier as "sid" for both variants

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Package list contents in packages.additional files require verification against intended system requirements for each variant
  • Cross-reference the relative path delegations to ensure shared common files exist and contain expected content
  • Confirm consistency between questing and resolute configurations where applicable

Possibly related PRs

Suggested reviewers

  • igorpecovnik

Poem

🐰 Hop, hop, the configs align,
Questing and resolute, both so fine,
Symlinks to common, the packages in place,
Debian tools dancing, a well-ordered space!

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: copying/adding CLI package configuration files for questing and resolute from the sid distribution.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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 Desktop Graphical user interface Needs review Seeking for review Framework Framework components labels Nov 25, 2025
@tabrisnet tabrisnet added 02 Milestone: First quarter release and removed 11 Milestone: Fourth quarter release labels Nov 25, 2025
@tabrisnet
Copy link
Collaborator Author

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 25, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

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: 0

🧹 Nitpick comments (1)
config/cli/resolute/main/packages.additional (1)

1-55: Consider consolidating duplicate package lists.

This file appears identical to config/cli/questing/main/packages.additional. If both questing and resolute will always share the same additional packages, consider creating a common file (e.g., config/cli/common/main/packages.additional.sid) and referencing it from both locations to reduce maintenance burden.

However, keeping them separate is also valid if the releases may diverge in the future.

📜 Review details

Configuration used: Path: .coderabbit.yaml

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 6aa7828 and 8b4a60c.

📒 Files selected for processing (12)
  • config/cli/questing/debootstrap/components (1 hunks)
  • config/cli/questing/debootstrap/packages (1 hunks)
  • config/cli/questing/main/packages (1 hunks)
  • config/cli/questing/main/packages.additional (1 hunks)
  • config/cli/questing/main/packages.uninstall (1 hunks)
  • config/cli/resolute/debootstrap/components (1 hunks)
  • config/cli/resolute/debootstrap/packages (1 hunks)
  • config/cli/resolute/main/packages (1 hunks)
  • config/cli/resolute/main/packages.additional (1 hunks)
  • config/cli/resolute/main/packages.uninstall (1 hunks)
  • config/desktop/questing (1 hunks)
  • config/desktop/resolute (1 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub or the PR API to get the complete picture of what files are being added or modified.
Learnt from: EvilOlaf
Repo: armbian/build PR: 8428
File: config/boards/lckfb-taishanpi.csc:5-9
Timestamp: 2025-07-25T03:51:50.830Z
Learning: When reviewing PRs in the Armbian build system, U-Boot defconfig files and patches may be added as part of the PR changes but might not be visible in the current repository clone state during review. It's important to check the actual PR file changes directly via GitHub API (https://api.github.com/repos/armbian/build/pulls/{pr_number}/files) to get the complete picture of what files are being added or modified, especially for U-Boot patches that will be applied during the build process.
📚 Learning: 2025-10-24T04:46:22.901Z
Learnt from: tabrisnet
Repo: armbian/build PR: 0
File: :0-0
Timestamp: 2025-10-24T04:46:22.901Z
Learning: The `debootstrap` tool doesn't use `apt`, which is important context when reviewing apt-related configuration in rootfs creation code.

Applied to files:

  • config/cli/resolute/debootstrap/components
  • config/cli/questing/debootstrap/components
  • config/cli/questing/debootstrap/packages
  • config/cli/resolute/debootstrap/packages
📚 Learning: 2025-07-23T10:01:36.094Z
Learnt from: amazingfate
Repo: armbian/build PR: 8419
File: lib/functions/configuration/main-config.sh:373-376
Timestamp: 2025-07-23T10:01:36.094Z
Learning: Debian sid (unstable) does not use separate security repositories like stable releases. Security fixes in sid are incorporated directly into regular package updates, so DEBIAN_SECURTY configuration is not needed for sid builds.

Applied to files:

  • config/desktop/resolute
  • config/desktop/questing
📚 Learning: 2025-07-23T10:01:32.430Z
Learnt from: amazingfate
Repo: armbian/build PR: 8419
File: lib/functions/configuration/main-config.sh:374-376
Timestamp: 2025-07-23T10:01:32.430Z
Learning: Debian sid (unstable) does not have a separate security repository. Security fixes for sid go directly into the main repository, unlike stable and testing releases which have security.debian.org. Therefore, DEBIAN_SECURITY adjustments are not needed for sid builds.

Applied to files:

  • config/desktop/resolute
  • config/desktop/questing
📚 Learning: 2025-06-22T00:45:26.182Z
Learnt from: djurny
Repo: armbian/build PR: 8315
File: lib/functions/rootfs/distro-agnostic.sh:54-68
Timestamp: 2025-06-22T00:45:26.182Z
Learning: In Armbian build system, external command dependencies like envsubst are handled by adding the required packages (e.g., gettext for envsubst) to host_dependencies in adaptative_prepare_host_dependencies function in lib/functions/host/prepare-host.sh, rather than checking command availability at runtime.

Applied to files:

  • config/cli/questing/main/packages.additional
  • config/cli/resolute/main/packages.additional
🔇 Additional comments (11)
config/desktop/resolute (1)

1-1: LGTM!

The desktop configuration correctly maps resolute to Debian sid (unstable). This aligns with the learnings that sid doesn't require separate security repositories.

config/desktop/questing (1)

1-1: LGTM!

Correctly maps questing desktop to Debian sid, consistent with the parallel resolute configuration.

config/cli/questing/main/packages.uninstall (1)

1-1: LGTM!

Appropriately delegates to the common uninstall package list.

config/cli/questing/debootstrap/packages (1)

1-1: LGTM!

Correctly references the common debootstrap packages configuration.

config/cli/questing/main/packages (1)

1-1: I'm unable to directly verify the path due to repository access limitations. However, I can assess the original review comment based on the information provided.

The original review comment requests verification of a referenced common packages file, but the review structure itself already includes an approval marker `` along with the verification request. This creates an inconsistent signal - approving code while simultaneously requesting verification.

Based on the context provided (a single-line delegation to a common configuration file), I'll rewrite the review comment to be more definitive:


Verify the referenced common packages file exists and contains valid configuration.

The delegation to ../../common/main/packages appears intentional for maintainability, but the target path should be confirmed to exist in the repository structure before approving this change.


config/cli/questing/main/packages.additional (1)

1-55: Package list appears appropriate for Debian sid CLI distribution, but cross-variant verification could not be completed.

The packages cover essential development tools, system utilities, and network management. libfuse2t64 is the correct transitional package name for Debian's 64-bit time_t transition.

Verify the package list is identical to the resolute variant for consistency:

diff config/cli/questing/main/packages.additional config/cli/resolute/main/packages.additional
config/cli/resolute/debootstrap/components (1)

1-1: Alias to shared debootstrap components looks correct and consistent.

The relative path cleanly resolves to config/cli/common/debootstrap/components.ubuntu and matches the centralization pattern used elsewhere.

config/cli/resolute/main/packages (1)

1-1: Shared main package list alias is wired correctly.

The reference to ../../common/main/packages resolves to the common main package set and aligns with the other CLI variants’ structure.

config/cli/resolute/debootstrap/packages (1)

1-1: Debootstrap package list delegation is consistent with common layout.

The alias to ../../common/debootstrap/packages correctly points at the shared debootstrap package list and keeps resolute aligned with other CLIs.

config/cli/questing/debootstrap/components (1)

1-1: Questing debootstrap components correctly reuse the common Ubuntu set.

The ../../common/debootstrap/components.ubuntu reference matches the shared components file and mirrors the resolute configuration.

config/cli/resolute/main/packages.uninstall (1)

1-1: Uninstall list delegation to common path looks good.

The alias to ../../common/main/packages.uninstall centralizes uninstall behavior alongside other CLIs and maintains consistency.

@leggewie leggewie self-requested a review November 25, 2025 21:00
Copy link
Collaborator

@leggewie leggewie left a comment

Choose a reason for hiding this comment

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

No, don't do this. Don't even think about it.

This is again yet another attempt of going 'aggregation' which we are trying to get away from

Give me a compilation that fails (let's start with minimal and CLI images first and move up from there, if you don't mind) and I will happily let you know what needs to be done or push whatever changes we need in APA. I do expect quite a few, especially in Desktop Images as APA is only now seeing a bit wider adoption.

@igorpecovnik
Copy link
Member

Deboostrap needs to know what to install ... on top of nothing. I think this is way before APA comes into action.

@leggewie
Copy link
Collaborator

leggewie commented Nov 25, 2025

Is the APA repository already installed in the chroot at that point? If you absolutely require a package list, I guess give it "armbian-common". But while I will not pretend to be an expert on debootstrap, the few times I used it, I didn't need to supply it with a list of packages at all. And https://wiki.debian.org/Debootstrap confirms that:

To setup a [stable](https://wiki.debian.org/DebianStable) system:

main # mkdir /stable-chroot
main # debootstrap stable /stable-chroot http://deb.debian.org/debian/

You guys keep asking again and again for a list of packages to install. That is the old way. APA is instead defining lists of meta-package dependencies/conflicts, etc. and then it leverages apt to resolve that depency web and install those. Only a few high-level packages will be installed and the rest will be pulled in automatically.

@igorpecovnik
Copy link
Member

Is the APA repository already installed in the chroot at that point?

I think stage one doesn't have that option, but could be wrong.

But while I will not pretend to be an expert on debootstrap

Neither I am, but at least we know that we need to provide either package or a list. Now - making some very basic common stuff that is unlikely to change + armbian-common.

@tabrisnet
Copy link
Collaborator Author

No, don't do this. Don't even think about it.

Not really what I wanted to do anyway... we lack any example of what should be here.
That is, APA lacks many things. e.g. armbian-cli, armbian-minimal [unless armbian-common is supposed to cover that].
I also get the distinct idea that armbian-desktop-kde is wrong, it should be armbian-desktop-kde-plasma or armbian-desktop-kde-neon et al.

fwiw, I can instead of this PR I can make mmdebstrap drop --include & --components if the vars from aggregation.py are empty.
I also expect this to break all over itself if we've never demonstrated armbian-common's completeness.

@tabrisnet tabrisnet closed this Nov 25, 2025
@igorpecovnik
Copy link
Member

APA lacks many things

Probably. But once we have to iron out what is missing. I said its better to make a slow transition, starting with Sid / Ubuntu rolling ... and them drop the old way - once we are happy.

I can instead of this PR I can make

OK. But will that generate rootfs with basic packages as before?

@tabrisnet
Copy link
Collaborator Author

fwiw, I made a branch with the above idea, and it did in fact 💩 all over itself, and pretty quick.

[🐳|🌱] mmdebstrap version [ '1.4.3-6' for /armbian/cache/sources/mmdebstrap-ubuntu-devel/mmdebstrap ]
[🐳|🌱] Installing base system with 0 packages [ Stage 1/1 ]
[🐳|🌱] fetch_distro_keyring(questing) [ cache found, skipping ]
[🐳|🔨]   I: automatically chosen mode: root
[🐳|🔨]   I: arm64 cannot be executed natively, but transparently using qemu-user binfmt emulation
[🐳|🔨]   I: automatically chosen format: directory
[🐳|🔨]   I: skipping check/empty as requested
[🐳|🔨]   I: running special hook: copy-in /armbian/cache/keyrings/ubuntu/usr /armbian/cache/keyrings/ubuntu/etc /
[🐳|🔨]   I: running --setup-hook in shell: sh -c 'mkdir -p /armbian/cache/aptcache/questing-arm64/archives "$1"/var/cache/apt/archives/' exec /armbian/.tmp/rootfs-7ef84ebc-1862-4daa-9c30-06b3fedff35a
[🐳|🔨]   I: running special hook: sync-in /armbian/cache/aptcache/questing-arm64/archives /var/cache/apt/archives/
[🐳|🔨]   I: running apt-get update...
[🐳|🔨]   I: downloading packages with apt...
[🐳|🔨]   I: extracting archives...
[🐳|🔨]   I: installing essential packages...
[🐳|🔨]   I: installing remaining packages inside the chroot...
[🐳|🔨]   I: running special hook: sync-out /var/cache/apt/archives/ /armbian/cache/aptcache/questing-arm64/archives
[🐳|🔨]   I: cleaning package lists and apt cache...
[🐳|🔨]   I: success in 41.1181 seconds
[🐳|🌱] Deploying qemu-user-static binary to chroot [ qemu-aarch64-static during rootfs ]
[🐳|🔨]   '/usr/bin/qemu-aarch64-static' -> '/armbian/.tmp/rootfs-7ef84ebc-1862-4daa-9c30-06b3fedff35a/usr/bin/qemu-aarch64-static'
[🐳|🌱] Cleaning up after mmdebstrap [ mmdebstrap cleanup ]
[🐳|🌱] Diverting [ initctl/start-stop-daemon ]
[🐳|🔨]   bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory
[🐳|🔨]   bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory
[🐳|🌱] Configuring locales [ DEST_LANG: en_US.UTF-8 ]
[🐳|🔨]   bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory
[🐳|🔨]   bash: line 1: locale-gen: command not found
[🐳|💥] Error 127 occurred in main shell [ at /armbian/lib/functions/logging/runners.sh:223

I don't think it even made it as far as running APA. still efforting.

@tabrisnet
Copy link
Collaborator Author

APA lacks many things

Probably. But once we have to iron out what is missing. I said its better to make a slow transition, starting with Sid / Ubuntu rolling ... and them drop the old way - once we are happy.

I can instead of this PR I can make

OK. But will that generate rootfs with basic packages as before?

I expect not. I've already found stuff missing like locales & believe it or not apt

@tabrisnet tabrisnet mentioned this pull request Nov 25, 2025
8 tasks
@tabrisnet
Copy link
Collaborator Author

effort ongoing in #9000 [unfortunately, it's not yet OVER 9000!!!]

image

@leggewie
Copy link
Collaborator

leggewie commented Nov 26, 2025

My suggestion #9001 is pretty close to this in fact. Turns out, it's maybe not such a bad idea after all, but we need a clear idea of how to move away from this stuff eventually (which I believe I have now).

I never looked at the code behind this aggregation.py. My suggestion now is to remove all links from sid, link other release pockets that have also been ported to APA to sid and then slowly drop everything under config/{cli,desktop}/sid

BTW, what is this stuff under config/optional/architectures/*/_config/*/sid ?

@leggewie
Copy link
Collaborator

believe it or not apt

what's unbelievable here?

apt is a package of priority important, it is part of required and base packages and should be installed as part of the bootstrap process. And that is indeed the case as you can easily verify by "mkdir debootstrap;sudo debootstrap noble debootstrap/". The same is also true for the locales package.

It seems kind of bloated to add those packages to depends for armbian-common as their removal is not trivial to accomplish. My assumption with APA is that all packages installed by the debootstrap call above are present and don't need to be listed explicitly. It's also best in my opinion to leave the list of such packages under debootstrap's responsibility instead of adding the burden to the Armbian project to maintain such a list.

@igorpecovnik
Copy link
Member

BTW, what is this stuff under config/optional/architectures//_config//sid ?

Packages per architecture. Example: discord/something is only for x86 ...

My assumption with APA is that all packages installed by the debootstrap call above are present and don't need to be listed explicitly. It's also best in my opinion to leave the list of such packages under debootstrap's responsibility instead of adding the burden to the Armbian project to maintain such a list.

Then we need to have "deboostrap list", packages that are always there, perhaps even hardcoded.

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

Labels

02 Milestone: First quarter release Desktop Graphical user interface Framework Framework components Needs review Seeking for review size/medium PR with more then 50 and less then 250 lines

Development

Successfully merging this pull request may close these issues.

3 participants