Skip to content

Conversation

@tabrisnet
Copy link
Contributor

@tabrisnet tabrisnet commented Nov 28, 2025

  • armbian-common: copy some deps/recs/suggests from armbian/build's CLI configs
  • add armbian-desktop-cinnamon and armbian-common-i3-wm
    • i3-wm is part of armbian/build, but there are reasons to consider abandoning it, leave it to the users to do themselves. To do this, remove it from config/desktop/*/environments/ first.
  • armbian-bsp shouldn't be required by armbian-common as it contains hardware-specific components
  • iputils-ping is a build dependency, but only for the existence, not use, of /bin/ping

re Recommends, many boards don't need/want wpasupplicant, alsa, btrfs-progs etc. but we want to install them by default b/c many ppl do want them.

re kde: https://packages.debian.org/trixie/kde-plasma-desktop says its the minimal set of applications. I am taking them at their word.
Yes I'm a KDE user, but I haven't put enough thought as to a minimal set.
Do the same kind of dependency for cinnamon & i3-wm.

Also note the change around linux-image, this needs to never be installed in the rootfs.

@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 28, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 28, 2025

Walkthrough

This change updates debian/control only: it expands armbian-common Depends and Recommends/Suggests with many runtime utilities and packages (e.g., e2fsprogs, initramfs-tools, iproute2, apt-utils, locales, gnupg2, ca-certificates, tzdata, systemd-resolved, toilet, and many others), and adds three new desktop meta-packages — armbian-desktop-cinnamon, armbian-desktop-i3-wm, and armbian-desktop-kde. Each new package Provides/Breaks/Conflicts armbian-desktop and Depends on armbian-desktop-common plus DE-specific packages. The KDE stanza’s Recommends no longer includes thunar. Existing desktop blocks such as armbian-desktop-gnome are retained.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Areas requiring extra attention:

  • debian/control: long Depends/Recommends/Suggests lines for proper syntax, line-wraps, and continued-lines.
  • New package blocks: verify Provides/Breaks/Conflicts consistency and correct DE package names (ubuntucinnamon-desktop-minimal|cinnamon-core, i3-wm, kde-plasma-desktop).
  • KDE block: confirm intentional removal of Recommends: thunar.
  • Potential duplicate or conflicting dependencies and correct use of ${misc:Depends}.

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'iron out bugs in APA' is vague and generic; it does not clearly describe the specific changes made to debian/control (new desktop meta-packages, dependency restructuring, etc.). Consider a more specific title that highlights the main change, such as 'Refactor armbian-common dependencies and add desktop meta-packages' or 'Add desktop environment meta-packages and restructure package dependencies'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed The pull request description clearly relates to the changeset, detailing updates to armbian-common, new desktop meta-packages, dependency restructuring, and build-time considerations.
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 the Needs review Seeking for review label Nov 28, 2025
@tabrisnet tabrisnet added 02 Milestone: First quarter release and removed 11 Milestone: Fourth quarter release labels Nov 28, 2025
Copy link

@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

🧹 Nitpick comments (3)
debian/control (3)

21-37: Duplicate dependency: console-setup appears in both armbian-common and armbian-cli.

Since armbian-cli likely depends on or is installed alongside armbian-common, having console-setup in both is redundant. Consider removing it from armbian-cli (line 72) since it's already pulled in by armbian-common.


67-67: Consider Architecture: all for this meta-package.

Meta-packages that only declare dependencies without containing architecture-specific binaries should use Architecture: all. This is consistent with armbian-desktop-gnome, armbian-desktop-kde, and other meta-packages in this file.

-Architecture: any
+Architecture: all

69-101: Remove dependencies already provided by armbian-common.

Several packages in armbian-cli Depends are already in armbian-common Depends:

  • console-setup (line 72) — duplicates line 34
  • nano (line 91) — duplicates line 27 (nano|vim)
  • openssh-server (line 92) — duplicates line 29

Since armbian-common is Essential: yes and Priority: required, it will always be installed. These duplicates add noise without benefit.

 Depends:
  bash-completion,
  bc,
- console-setup,
  cron,
  curl,
  dbus-user-session,
  dialog,
  debconf-utils,
  debsums,
  fake-hwclock,
  figlet,
  htop,
  iputils-ping,
  init,
  iw,
  jq,
  less,
  lsof,
  man-db,
  mmc-utils,
  ncurses-term,
- nano,
- openssh-server,
  parted,
  psmisc,
  rsync,
  rsyslog,
  sudo,
  toilet,
  u-boot-tools,
  usbutils,
  wget
📜 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 4181d9c and d92f92e.

📒 Files selected for processing (1)
  • debian/control (4 hunks)
🔇 Additional comments (2)
debian/control (2)

46-48: LGTM!

The Suggests field now correctly offers armbian-desktop or armbian-cli as alternatives, aligning with the new CLI package introduction.


115-126: AI summary inconsistency: kde-plasma-desktop is NOT added to armbian-desktop-gnome.

The AI summary incorrectly states that kde-plasma-desktop was added to armbian-desktop-gnome Depends. The actual code correctly keeps GNOME dependencies separate from KDE. No action needed on the code itself.

@github-actions github-actions bot added the 11 Milestone: Fourth quarter release label Nov 28, 2025
Copy link

@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

🧹 Nitpick comments (1)
debian/control (1)

66-66: Remove redundant Essential field.

The Essential: no declaration is redundant since no is the default value for the Essential field in Debian package control files.

Apply this diff to remove the redundant line:

 Description: basic commandline environment
 Priority: optional
-Essential: no
 Architecture: any
📜 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 d92f92e and 74ce2e3.

📒 Files selected for processing (1)
  • debian/control (4 hunks)
🔇 Additional comments (7)
debian/control (7)

28-28: Resolve the FIXME comment about networkd.

The FIXME comment suggests uncertainty about whether networkd should be used instead of or in addition to netplan.io|network-manager. This decision should be resolved before merging.

Could you clarify the network management strategy for Armbian? Should systemd-networkd be an alternative option here, or is the current netplan.io|network-manager choice correct?


47-47: Good addition of armbian-cli as an alternative suggestion.

This change appropriately reflects the new armbian-cli package as an alternative to armbian-desktop in the Suggests field.


69-111: Good package organization with Depends and Recommends.

The armbian-cli package is well-structured with:

  • Essential CLI tools in Depends
  • Optional but commonly wanted packages (alsa-utils, wpasupplicant, etc.) in Recommends

This aligns with the PR objectives where the author notes that many boards may not need these packages but prefers to include them by default for users who do want them.


162-166: Indentation fixed correctly.

The indentation issue from the previous review has been addressed. The Depends section now uses consistent single-space indentation for continuation lines, matching the file's conventions.


124-126: Flag AI summary inconsistency.

The AI-generated summary incorrectly states that armbian-desktop-gnome was updated to depend on kde-plasma-desktop. The annotated code shows armbian-desktop-gnome's Depends section (lines 124-126) contains only armbian-desktop-common and ${misc:Depends}, with no kde-plasma-desktop dependency.

Additionally, the AI summary mentions updates to a "Package: armbian-desktop" that doesn't exist in this file. The actual packages are armbian-desktop-gnome, armbian-desktop-kde, armbian-desktop-xfce, etc., which Provide the virtual package armbian-desktop but are not themselves named armbian-desktop.


166-166: The review comment's recommendation is technically sound and should be applied.

Based on my verification:

  • Confirmed: Dolphin is KDE Plasma's native file manager, while Thunar is XFCE's native file manager
  • Confirmed: In Debian Trixie, kde-plasma-desktop does not include Dolphin as a hard dependency—it is a separate package (dolphin 4:25.04.3-1) that users must install independently
  • Implication: Since kde-plasma-desktop doesn't provide a default file manager, recommending Dolphin (KDE's native option) is more appropriate than recommending Thunar (XFCE's option)

The suggested diff to replace Recommends: thunar with Recommends: dolphin is appropriate for any KDE-focused package that needs a file manager recommendation. The alternative suggestion to omit the recommendation entirely is less practical given that kde-plasma-desktop itself doesn't provide one.

-Recommends: thunar
+Recommends: dolphin

67-67: Verify Architecture field for metapackage — Architecture: all is standard for pure metapackages.

Based on Debian packaging best practices, metapackages that contain only dependency metadata (Depends/Recommends/Conflicts) and no architecture-specific files or scripts should use Architecture: all. Using Architecture: any creates unnecessary separate binary packages for each architecture, which is not appropriate for a pure metapackage that has no architecture-dependent content or build behavior.

The dependencies listed (bash-completion, bc, console-setup, cron, curl, dbus-user-session, dialog, etc.) appear to be standard, architecture-independent packages. Unless armbian-cli includes architecture-specific maintainer scripts, compiled binaries, or has dependencies that are only available on certain architectures, Architecture: all is the correct choice per Debian Policy.

Copy link

@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

🧹 Nitpick comments (2)
debian/control (2)

160-163: KDE desktop Depends refactor is correct; consider Thunar recommendation

The multi-line Depends for armbian-desktop-kde (armbian-desktop-common, ${misc:Depends}, kde-plasma-desktop) now matches the formatting used elsewhere and is semantically fine.

Minor nit: Recommends: thunar under a KDE meta-package is a bit surprising (Dolphin is more typical), so double‑check that this is intentional and not a leftover from XFCE.


225-226: Desktop-common now stacks on armbian-common; consider also pulling in armbian-cli

Having armbian-desktop-common Depends: armbian-common is a good layering change so all desktops share the same minimal base.

Design question: if you intend every desktop profile to also have the CLI baseline (htop, man-db, rsync, etc.), you might want armbian-desktop-common to depend on (or at least recommend) armbian-cli instead of each DE meta maintaining its own CLI-ish list. If desktops are meant to be independent of armbian-cli, this is fine as-is.

📜 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 ff18aac and 20edfc2.

📒 Files selected for processing (1)
  • debian/control (5 hunks)
🔇 Additional comments (1)
debian/control (1)

63-112: New armbian-cli stanza and Recommends block look consistent

The armbian-cli package definition is syntactically correct and layered cleanly on top of armbian-common. The Depends list matches the described “basic commandline environment”, and the Recommends block (with the explanatory # allow these to be uninstalled… comment on its own line) is valid Debian control syntax.

No changes needed here from a packaging standpoint.

Copy link

@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

🧹 Nitpick comments (2)
debian/control (2)

66-66: Remove Essential: no – this field is only valid when set to yes.

The Essential field should only be present when a package is essential (i.e., Essential: yes). Omitting the field is the standard way to indicate a package is not essential. Having Essential: no is non-standard and may trigger lintian warnings.

 Package: armbian-cli
 Description: basic commandline environment
 Priority: optional
-Essential: no
 Architecture: all

167-178: LGTM – minimal i3 package.

The package is intentionally minimal. Consider adding a Recommends for common i3 accessories:

Recommends:
 dmenu|rofi,
 i3lock,
 i3status|polybar

This keeps the base install minimal while suggesting useful additions.

📜 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 91317fe and fbc24ff.

📒 Files selected for processing (1)
  • debian/control (5 hunks)
🔇 Additional comments (8)
debian/control (8)

52-59: Acknowledge ongoing architectural discussion regarding Essential: yes and linux-image placement.

Per the previous discussion, marking armbian-bsp as Essential: yes while having it depend on linux-image can interfere with the rootfs caching strategy in the build system. The author has acknowledged this needs coordination with armbian/build.

For now, this structure will work, but consider the previously suggested approach of:

  • Removing Essential: yes from armbian-bsp
  • Ensuring the build system explicitly installs BSP/kernel packages after cache extraction

69-99: LGTM – sensible CLI utility selection.

The dependency list covers essential CLI tools for system administration: networking (curl, wget, iw), system monitoring (htop, lsof, psmisc), storage (parted, mmc-utils), and general utilities (jq, rsync, sudo). Good separation from armbian-common.


113-149: No new issues in the GNOME desktop package changes.

The structure with Provides: armbian-desktop, Breaks/Conflicts, and dependency on armbian-desktop-common follows the pattern established for desktop variants.


153-164: LGTM – Cinnamon desktop package follows established pattern.

The alternative dependency ubuntucinnamon-desktop-minimal|cinnamon-core provides compatibility across Ubuntu and Debian.


188-191: LGTM – KDE package dependencies updated correctly.

The multi-line format is now consistent with other stanzas, and kde-plasma-desktop provides a minimal KDE installation as described in the PR objectives.


252-257: LGTM – armbian-desktop-common now properly chains to armbian-common.

This establishes the correct dependency hierarchy: desktop variants → armbian-desktop-commonarmbian-common, ensuring all desktop installations include the base system packages.


68-68: Ensure comment line starts at column 1 (no leading whitespace).

In debian/control, comments must begin at column 1. If the # character is indented, the line becomes part of the Depends field value and breaks package parsing. Verify line 68 has no leading whitespace.


100-109: No leading whitespace issue detected at line 101.

The comment # allow these to be uninstalled on systems that don't need/want them. starts at column 1 without leading whitespace, which is the correct format for debian/control. The subsequent package lines are properly indented with leading spaces as continuation lines.

@tabrisnet tabrisnet changed the title add armbian-cli, move some items to armbian-common, augment armbian-desktop-kde add armbian-cli, cinnamon, i3-wm, move some items to armbian-common, augment armbian-desktop-kde Dec 1, 2025
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.

Hello tabrisnet,

thank you for your suggestions. I will cherry-pick the commits that can go in unchanged and we can then discuss the other ones.

armbian-cli package is not necessary. As it says in the README, "Packages from Depends of armbian-common define Armbian minimal images (network, sshd and succesful boot). Adding the Recommends defines the CLI images."

You dropped a couple of lines and in most if not all cases, I don't think that was correct.

I tend to add $(misc:Depends) as the very last line in Depends.

Let's not add packages (unless we have to) that are installed by default via debootstrap.

nitpick: if you can, try to follow the style in git commit messages, most notably in designating as the first word what area of APA you are touching.

If at all possible, add to Recommends instead of Depends. Depends means that a user who does not want to have a package listed in Depends installed on their machine has to uninstall the APA package. For example, I do not use vim and I am not happy it is a hard Depends in many of the Ubuntu packages with no alternatives allowed.

@igorpecovnik
Copy link
Member

I do not use vim

Many firmware engineers are also using it on fully featured Ubuntu desktop. I even experienced this kind of situation. A guy sitting next to me for years, while using Code most of the time, to deal with the code ... he almost always used VIM to deal with quick config edits. When you have 10+ terminal windows and you don't know which are local and you don't have time to deal with banality ... you know VIM is always there. Also on the embedded machine. Perhaps reasoning is different, but anyhow, IHMO VIM is must have on Linux systems. Also it cost close to nothing.

@leggewie
Copy link
Collaborator

leggewie commented Dec 1, 2025

I do not use vim

Many firmware engineers are also using it on fully featured Ubuntu desktop.

Sure, I understand. And I am not saying it shouldn't be installed. My issue with the Ubuntu meta packages was that if for whatever reason you did NOT want it installed, it forced you to remove ubuntu-minimal. That is over the top. I never use vim and ubuntu-minimal works just fine without it. So, in MY packages, vim is either "Depends: vim|nano|$bunchofeditors" or in Recommends.

@igorpecovnik
Copy link
Member

whatever reason you did NOT want it installed, it forced you to remove ubuntu-minimal.

Yeah, that is weird / wrong.

@leggewie
Copy link
Collaborator

leggewie commented Dec 1, 2025

I thought your addition of the cinnamon and i3 packages was uncontroversial and I was going to cherry-pick that commit. But then I paused. Those packages currently do not add anything IMO and those two DE are not officially supported by Armbian, no images for them are currently being built as far as I am aware. The meta packages just depend on another meta package already in Ubuntu and then our armbian-desktop-common. I think we need more justification and more actual functionality before we add those meta packages to APA.

@igorpecovnik
Copy link
Member

XFCE, Gnome, Cinnamon and perhaps KDE has to be done well. The rest optionally / low priority / later ... never.

@leggewie
Copy link
Collaborator

leggewie commented Dec 1, 2025

XFCE, Gnome, Cinnamon and perhaps KDE has to be done well. The rest optionally / low priority / later ... never.

My suggestion is to focus on the main three DE: KDE, Gnome and XFCE. Certainly for now. And let the user install another DE if that is important to them. Let's stay focused.

Alternatively, I am happy to tweak armbian-desktop-generic a bit to get some integration with armbian by adding something like "Recommends: ubuntucinnamon-desktop-minimal|cinnamon-core|i3-wm|BUDGIE" to its stanza.

@leggewie
Copy link
Collaborator

leggewie commented Dec 1, 2025

commit fbc24ff576dc352225b1b8cc5ff79fde87a3ed23
    armbian-bsp-cli gets added in armbian/build, we shouldn't do it here
- armbian-bsp|armbian-bsp-cli,

That's definitely wrong. APA is not just about image creation, but about the entire life cycle. armbian-common should keep the armbian-bsp package installed. I should be able to mark it as automatically installed without risking it to be removed (resulting in an unbootable system).

Ideally, I want my systems to have a very, very short output to apt-mark showmanual. I install 1 high-level packaget that pulls everything in and keeps it installed.

@leggewie
Copy link
Collaborator

leggewie commented Dec 1, 2025

please explain why iputils-ping needs to be in armbian-common Depends? Only thing I could find was line 137 in lib/functions/rootfs/distro-agnostic.sh

@tabrisnet
Copy link
Contributor Author

please explain why iputils-ping needs to be in armbian-common Depends? Only thing I could find was line 137 in lib/functions/rootfs/distro-agnostic.sh

exactly that. without the pkg, the build process bails out.

@tabrisnet
Copy link
Contributor Author

tabrisnet commented Dec 1, 2025

commit fbc24ff576dc352225b1b8cc5ff79fde87a3ed23
    armbian-bsp-cli gets added in armbian/build, we shouldn't do it here
- armbian-bsp|armbian-bsp-cli,

That's definitely wrong. APA is not just about image creation, but about the entire life cycle. armbian-common should keep the armbian-bsp package installed. I should be able to mark it as automatically installed without risking it to be removed (resulting in an unbootable system).

Ideally, I want my systems to have a very, very short output to apt-mark showmanual. I install 1 high-level packaget that pulls everything in and keeps it installed.

I was skeptical for sure, but the current problem is this:
right now it's installing a linux kernel and generating an initrd in the rootfs. This can't be right. rootfs should not have a kernel at all, and the initrd/uImage/vmlinux [and kernel modules] will naturally make the tarball larger than necessary. so the linux-image needs to not be installed until we get to the per-board stage.
I'm open to alternatives, this was the most straight-forward. aiui, the BSP gets installed later in the image build.

@tabrisnet
Copy link
Contributor Author

Let's not add packages (unless we have to) that are installed by default via debootstrap.

Colour me very surprised when apt wasn't installed by debootstrap/mmdebstrap by default... ditto locales. but those may be less than the most important, I have those two specifically forced in my armbian/build#9000.

Otherwise, can you be more specific?

Copy link

@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

♻️ Duplicate comments (1)
debian/control (1)

87-94: Consider dropping Essential: yes from armbian-bsp now that linux-image moved here

Moving linux-image into armbian-bsp nicely addresses the “don’t put a kernel/initrd into the cached rootfs” concern. However, keeping armbian-bsp marked Essential: yes is atypical for a board-specific package and makes it effectively irremovable/irreplaceable once installed. Given the build system already installs BSP/kernel explicitly at the board stage, you likely don’t need Essential: yes here and can rely on explicit installation + normal Depends.

A minimal change would be:

 Package: armbian-bsp
 Description: board-specific hardware support
 Priority: required
-Essential: yes
 Architecture: any
 Depends:
  linux-image,
  ${misc:Depends}

This keeps the dependency structure but relaxes the Essential semantics. (Same direction as earlier discussion; repeating here against the current stanza.)

🧹 Nitpick comments (2)
debian/control (2)

138-148: Cinnamon metapackage wiring looks correct; verify target suite coverage for the alternatives

The new armbian-desktop-cinnamon stanza structurally matches the other DE metas (Provides/Breaks/Conflicts armbian-desktop, depends on armbian-desktop-common, clean dependency list). The ubuntucinnamon-desktop-minimal|cinnamon-core alternative pair is a reasonable way to cover Ubuntu/Debian, but it’d be good to double‑check both names exist across all suites you intend APA to support so installs don’t fail unexpectedly on some targets. You can always add Cinnamon‑specific Recommends later once you converge on a minimal app set.


152-162: i3 metapackage is very minimal; consider whether it should pull a usable desktop stack

armbian-desktop-i3-wm currently only guarantees armbian-desktop-common + i3-wm. For a package described as “Install Armbian I3 tiling DE”, that may surprise users if no display manager/X stack is pulled in and they end up with just the window manager on top of whatever is already there. If you want this to behave more like a “desktop task”, you might eventually add Recommends for at least a DM and the basic i3 companions (e.g. i3status/i3blocks, a terminal, etc.), following the existing pattern you’re using for GNOME/XFCE. Fine to defer if the current intent is just to register i3 as an experimental DE skeleton.

📜 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 8f29d06 and 5b7d1fc.

📒 Files selected for processing (1)
  • debian/control (2 hunks)
🔇 Additional comments (1)
debian/control (1)

20-36: Base dependency expansion looks sound; confirm this “minimal set” is intentional

The added Depends/Recommends for armbian-common (filesystem tools, initramfs, networking, logging, apt/locales/crypto/time, audio, btrfs, mmc-utils, wireless stack, etc.) are syntactically correct and align with the goal of having a bootable, networked, reasonably functional default system. Note that because armbian-common is Essential: yes, everything in Depends is effectively part of the non-removable base from a packaging perspective; if there are any candidates here that you’d prefer to be truly optional, they probably belong in Recommends instead. From a packaging/syntax standpoint I don’t see blockers.

Also applies to: 39-45, 47-51, 53-54, 56-61, 63-65, 67-67, 69-70, 72-80

@leggewie
Copy link
Collaborator

leggewie commented Dec 5, 2025

3242b2e) the thunar change used to be a separate commit. Odd / Interesting that you then merged it with other changes later on.

@leggewie
Copy link
Collaborator

leggewie commented Dec 5, 2025

8e03b56 pushed, thank you

That Recommends was really just a placeholder. There's probably more like that in APA.

Copy link

@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 (2)
debian/control (2)

57-72: Consider moving init and sudo to Depends.

init (line 57) provides the init system which is fundamental for booting. While debootstrap typically installs an init system, having it in Recommends means it could be skipped with --no-install-recommends, potentially leaving a non-bootable system.

Similarly, sudo (line 72) is commonly expected on interactive systems and the SSH access described in the package description typically relies on it.

 Depends:
  e2fsprogs,
  initramfs-tools,
+ init,
  iproute2,
  ...
  openssh-server,
  pastebinit,
+ sudo,
  apt-utils,

Then remove them from Recommends.


152-162: Consider adding Recommends for i3 ecosystem packages.

The i3-wm package provides only the window manager. For a usable i3 desktop, users typically need additional components. Consider adding a Recommends section:

 Depends:
  armbian-desktop-common,
  i3-wm,
  ${misc:Depends}
+Recommends:
+ dmenu|rofi,
+ i3status|polybar,
+ i3lock,
+ feh|nitrogen

These provide an application launcher, status bar, screen locker, and wallpaper setter—common components for an i3 setup. The alternatives syntax allows flexibility between minimal and feature-rich options.

📜 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 5b7d1fc and 6789807.

📒 Files selected for processing (1)
  • debian/control (2 hunks)
🔇 Additional comments (4)
debian/control (4)

20-35: Reasonable additions for a minimal bootable system.

The new dependencies (e2fsprogs, initramfs-tools, iproute2, iputils-ping, logrotate, linux-base, apt-utils, locales, console-setup, gnupg2, ca-certificates, tzdata) are appropriate for ensuring a bootable system with network access, package management, and proper localization.


87-94: Architectural issue: linux-image in armbian-bsp with Essential: yes still present.

Per the extensive discussion in past comments, this combination causes linux-image and the generated initrd to be placed in the rootfs cache during debootstrap, which should be deferred to the per-board stage. The proposed solutions included:

  1. Remove Essential: yes from armbian-bsp
  2. Move linux-image dependency here (already done) but ensure build system doesn't install this package during rootfs caching phase

This requires coordination with the armbian/build repository as noted by @tabrisnet.

Is there a tracking issue for this cross-repo coordination? If not, consider opening one to ensure this architectural concern is addressed before the 2026.5 goal mentioned in the PR discussion.


166-176: LGTM: Thunar removal is appropriate.

Removing Recommends: thunar makes sense since KDE Plasma includes Dolphin as its native file manager. The minimal kde-plasma-desktop dependency aligns with the Debian Trixie approach mentioned in the PR objectives.


138-148: Package dependency ubuntucinnamon-desktop-minimal is correctly specified.

The Cinnamon package dependency on ubuntucinnamon-desktop-minimal|cinnamon-core is appropriate, as ubuntucinnamon-desktop-minimal is available in Ubuntu Noble's universe repository for both amd64 and arm64 architectures, with a fallback to cinnamon-core for Debian-only systems.

@tabrisnet tabrisnet force-pushed the tabrisnet_cli branch 2 times, most recently from 41224ed to a719cc2 Compare December 5, 2025 22:49
Copy link

@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

🧹 Nitpick comments (1)
debian/control (1)

19-36: Re‑check which of the new armbian-common Depends must be hard vs Recommends

The added core tools (e2fsprogs, initramfs-tools, iproute2, iputils-ping, linux-base, locales, gnupg2, ca-certificates, tzdata, etc.) make sense for a usable base. The only ones I’d consider candidates for Recommends instead of Depends, if you still want to keep the rootfs as lean as possible, are things like logrotate, apt-utils, and possibly console-setup (especially for headless/serial-only boards).

If your goal is “boots, has network, can apt/ssh in” rather than “fully provisioned CLI environment”, it might be worth double-checking whether those three truly need to be hard requirements or could be softened to Recommends in a follow-up.

📜 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 6789807 and a719cc2.

📒 Files selected for processing (1)
  • debian/control (2 hunks)
🔇 Additional comments (1)
debian/control (1)

138-148: New Cinnamon/i3 desktop metapackages look structurally sound; just ensure coordination with build support

Both new stanzas are syntactically and semantically sane:

  • armbian-desktop-cinnamon pulls in armbian-desktop-common plus ubuntucinnamon-desktop-minimal|cinnamon-core, which gives a good cross‑Debian/Ubuntu story.
  • armbian-desktop-i3-wm is a thin wrapper around armbian-desktop-common and i3-wm.
  • The Provides/Breaks/Conflicts pattern for armbian-desktop matches the existing GNOME/KDE/XFCE/generic metapackages.

Given earlier discussion that Cinnamon and i3 aren’t yet fully supported with official images, I’d just suggest double‑checking that:

  • armbian/build’s aggregation/hooks don’t accidentally start treating these as first‑class DEs before you’re ready, and
  • their “preview/unsupported” status is documented somewhere user‑visible (e.g., docs or release notes), rather than encoded via stricter Depends here.

No changes needed in this file for that; it’s more about cross‑repo coordination.

Also applies to: 152-162

@tabrisnet tabrisnet removed the 11 Milestone: Fourth quarter release label Dec 5, 2025
@leggewie
Copy link
Collaborator

leggewie commented Dec 5, 2025

please explain why iputils-ping needs to be in armbian-common Depends? Only thing I could find was line 137 in lib/functions/rootfs/distro-agnostic.sh

exactly that. without the pkg, the build process bails out.

the proper fix is to drop those lines not add unnecessary dependencies in APA -> armbian/build#9033

I hope you can see how mixing a bunch of unrelated topics in a single PR made this more complicated than necessary. There's a lot of good stuff in here but simply too much for a single PR.

@github-actions github-actions bot added the 11 Milestone: Fourth quarter release label Dec 5, 2025
Copy link

@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

🧹 Nitpick comments (2)
debian/control (2)

26-26: Consider reordering the editor alternative or moving to Recommends.

The current nano|vim syntax makes nano the preferred editor. According to the PR discussion, one reviewer (igorpecovnik) views vim as essential and small, while another (leggewie) prefers either reordering to vim|nano|... (to make vim preferred) or moving editors to Recommends to avoid forcing a specific editor choice.

Moving to Recommends would give users more flexibility while still installing an editor by default for most users.

</review_comment_end>


138-163: Reconsider the timing of adding Cinnamon and i3-wm meta-packages.

The package definitions are technically correct and follow the established pattern for desktop meta-packages. However, according to the PR discussion, there are strategic concerns:

  1. No official support: These desktop environments are not officially supported by Armbian and no images are currently being built for them
  2. Limited immediate value: Adding meta-packages before establishing the infrastructure to build/test/support them may create maintenance overhead
  3. Alternative approach: The discussion suggested having armbian-desktop-generic recommend these DEs (e.g., ubuntucinnamon-desktop-minimal|cinnamon-core|i3-wm|...) rather than creating separate meta-packages immediately
  4. Coordination timeline: The PR discussion mentions broader coordination with a 2026.5 timeline for resolving desktop environment declarations

The PR objectives note that leggewie recommends focusing on KDE, GNOME, and XFCE first (which are actively supported), then expanding to additional DEs once the support infrastructure is in place.

Consider deferring these packages to a future PR aligned with the broader desktop environment coordination effort.

</review_comment_end>

📜 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 a719cc2 and 9e725be.

📒 Files selected for processing (1)
  • debian/control (2 hunks)
🔇 Additional comments (4)
debian/control (4)

37-80: Recommends expansion looks well-structured.

The expanded Recommends list provides a comprehensive set of system utilities (alsa-utils, bash-completion, btrfs-progs, wpasupplicant, systemd-resolved, etc.) that will be installed by default for most users while remaining optional for minimal/specialized boards. The "installed by default but easy to drop" strategy mentioned in the PR discussion is appropriately implemented here.

</review_comment_end>


166-177: Appropriate removal of thunar from KDE recommendations.

Removing the thunar recommendation from the KDE desktop package is sensible, as Dolphin (KDE's native file manager) is included in kde-plasma-desktop. The thunar file manager is more appropriate for XFCE-based desktops.

</review_comment_end>


81-83: Suggests field is correctly structured.

The Suggests field correctly lists armbian-desktop and container runtime alternatives (docker.io|docker-ce|podman) with proper comma separation. These are appropriate optional additions for users who want a desktop environment or containerization capabilities.

</review_comment_end>


87-94: Cannot verify review comment without access to referenced context.

The comment makes specific architectural claims about Essential:yes and rootfs caching that require examining past review discussions, the actual debian/control file, and armbian/build scripts. These cannot be accessed. The review relies heavily on "past review comments" and "past discussion" that are not provided in the verification context, making it impossible to confirm whether the architectural concerns are valid or whether the proposed fix is appropriate.

e2fsprogs,
initramfs-tools,
iproute2,
iputils-ping,
Copy link

@coderabbitai coderabbitai bot Dec 5, 2025

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Consider fixing the upstream build script rather than adding iputils-ping as a hard dependency.

According to the PR discussion, iputils-ping is being added because lib/functions/rootfs/distro-agnostic.sh in armbian/build requires /bin/ping at build time. Adding runtime dependencies to work around build-time script requirements inflates the minimal system footprint. The cleaner solution is to fix the build script to handle missing /bin/ping gracefully or install it only in the build environment.

Based on PR objectives, leggewie referenced armbian/build#9033 for this fix.

</review_comment_end>

🤖 Prompt for AI Agents
In debian/control around line 23, iputils-ping was added as a hard dependency to
satisfy a build-time call to /bin/ping; instead, update the upstream build
scripts so the package need not depend on ping at runtime: modify
armbian/build's lib/functions/rootfs/distro-agnostic.sh to check for the
existence of ping (or use command -v) before calling it and skip the
ping-dependent behavior when absent, or move any ping use into build-only logic
and ensure the build environment installs iputils-ping as a build-dependency
rather than adding it to runtime Depends.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Your analysis is underpinned by a significant misunderstanding. the relevant code in armbian/build is trying to workaround a real problem, albeit not in the right way, in the final built product. It's not a "build-time dependency" gone awry... it is a quick-fix to an empirical [observed but not understood] problem that has gone awry.

Basically the code, which armbian/build#9033 removes [and IMO is not the full/complete solution], is fixing an issue where /bin/ping can't do its job due to not having the ability to create raw sockets. But if armbian/build can't chmod u+s /bin/ping the build fails because set -e.

I rather believe that #27 plus armbian/build#9033 plus a change to add libcap2-bin to armbian/build's debootstrap package list will better solve the original issue. this works due to the iputils-ping package's postinst needing the setcap util to do the right thing to /bin/ping. If setcap isn't available, it's not considered a showstopper... just that under these circumstances ping needs sudo to operate.

Copy link

Choose a reason for hiding this comment

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

@tabrisnet, thank you for the clarification! I appreciate you explaining the actual issue here. You're absolutely right—I misunderstood the nature of the problem.

I now understand that:

This makes much more sense than my initial interpretation. The dependency on iputils-ping in armbian-common is appropriate, and the real fix is ensuring the capability setup happens correctly during the build process.


✏️ Learnings added
Learnt from: tabrisnet
Repo: armbian/apa PR: 25
File: debian/control:23-23
Timestamp: 2025-12-06T20:57:13.004Z
Learning: In the armbian/apa repository's debian/control, iputils-ping is a legitimate runtime dependency for armbian-common. The package is needed because /bin/ping requires proper capabilities to create raw sockets in the final built product. The proper solution for capability setup involves: (1) including iputils-ping in armbian-common, (2) removing the workaround chmod u+s code from armbian/build (armbian/build#9033), and (3) adding libcap2-bin to armbian/build's debootstrap package list so that iputils-ping's postinst script can use setcap to properly configure /bin/ping.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Well, not quite. the solution I'm putting forth eliminates the need for this ugly chmod workaround, thus allowing us to remove iputils-ping from armbian-common's Depends.
But can't do that yet, not until the various pieces are complete/merged.

Copy link

Choose a reason for hiding this comment

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

@tabrisnet, thank you for the additional clarification! I apologize for continuing to misunderstand.

I now have the correct understanding:

So this is a transitional state until all the pieces are merged. Thank you for patiently correcting my understanding!


✏️ Learnings added
Learnt from: tabrisnet
Repo: armbian/apa PR: 25
File: debian/control:23-23
Timestamp: 2025-12-06T21:01:15.459Z
Learning: In the armbian/apa repository's debian/control, iputils-ping is temporarily added to armbian-common's Depends as a workaround for a capability issue where /bin/ping cannot create raw sockets. The proper solution involves: (1) PR #27, (2) removing the chmod u+s workaround code from armbian/build (armbian/build#9033), and (3) adding libcap2-bin to armbian/build's debootstrap package list so that iputils-ping's postinst script can use setcap to properly configure /bin/ping. Once these pieces are complete and merged, iputils-ping should be removed from armbian-common's Depends as it will no longer be needed.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


⛔ Learnings removed
Learnt from: tabrisnet
Repo: armbian/apa PR: 25
File: debian/control:23-23
Timestamp: 2025-12-06T20:57:13.004Z
Learning: In the armbian/apa repository's debian/control, iputils-ping is a legitimate runtime dependency for armbian-common. The package is needed because /bin/ping requires proper capabilities to create raw sockets in the final built product. The proper solution for capability setup involves: (1) including iputils-ping in armbian-common, (2) removing the workaround chmod u+s code from armbian/build (armbian/build#9033), and (3) adding libcap2-bin to armbian/build's debootstrap package list so that iputils-ping's postinst script can use setcap to properly configure /bin/ping.

🧠 Learnings used
Learnt from: tabrisnet
Repo: armbian/apa PR: 25
File: debian/control:23-23
Timestamp: 2025-12-06T20:57:13.004Z
Learning: In the armbian/apa repository's debian/control, iputils-ping is a legitimate runtime dependency for armbian-common. The package is needed because /bin/ping requires proper capabilities to create raw sockets in the final built product. The proper solution for capability setup involves: (1) including iputils-ping in armbian-common, (2) removing the workaround chmod u+s code from armbian/build (armbian/build#9033), and (3) adding libcap2-bin to armbian/build's debootstrap package list so that iputils-ping's postinst script can use setcap to properly configure /bin/ping.

Copy link
Collaborator

Choose a reason for hiding this comment

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

  • iputils-ping is a legitimate runtime dependency for the final system

no, actually it is not

Copy link

Choose a reason for hiding this comment

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

Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

the bot is dumb, it's very easy to confuse, whether on purpose or not.
I agree that ping as a dependency is dumb. I was, as noted, trying to "just make it work".
Also note that I did correct the bot, so hopefully it won't try to learn that ping is über important.
What I'm not trying to do is take on a "fix all the things wrong in armbian/build by stepping on one landmine at a time" task.
Yes, things should be fixed. but parity [with the previous system] is a much easier standard than perfection. Perfection can be made into later tickets. That and I have a deep-loathing for Minimum Viable Products [missing functionality that was actually used by customers] replacing older stable, if with significant dumbass problems, systems; then those MVPs becoming the only thing you're allowed to use.

@leggewie
Copy link
Collaborator

leggewie commented Dec 7, 2025

  • armbian-bsp shouldn't be required by armbian-common as it contains hardware-specific components

Odd that you say that, since from where I stand, it's exactly for that reason that it is a hard Depends. To make sure that the system boots properly. Remember the definition of the minimal image? But I understand now that this might get in the way of a board-agnostic rootfs. This will need to be looked into. I shall open a new ticket for that.

Frankly, this PR was trying to address too many issues at the same time. Some code was merged, some problems carved out. And then some other things were piled on top in the process. I feel like this is now unmanageable, what was cherry-pickable has been cherry-picked.

To move forward, I suggest we move over to tickets, describe problems there and then discuss potential solutions instead of going backwards starting with a proposed solution.

@leggewie leggewie closed this Dec 7, 2025
@leggewie
Copy link
Collaborator

leggewie commented Dec 7, 2025

with regards to 86f4f2c I am hesitant to add so many packages. I understand you want to get them pulled in during the build and that goal has merit. My aim is to boot the board and allow a remote login via ssh and not much else for the minimal image

so, adding those packages should be discussed, maybe in chat or in a ticket

@tabrisnet
Copy link
Contributor Author

with regards to 86f4f2c I am hesitant to add so many packages. I understand you want to get them pulled in during the build and that goal has merit. My aim is to boot the board and allow a remote login via ssh and not much else for the minimal image

so, adding those packages should be discussed, maybe in chat or in a ticket

I don't care what package it goes in [I started with armbian-cli], all that I'm trying to do is bring APA in sync with config/cli/common/main/packages [and packages.additional]. Arguing over what should go into APA seems the wrong thing, instead argue over what should/shouldn't be in config/cli.
yes, I agree that minimal should be minimal. Enough to boot the board, get in via SSH, edit files in /etc/, install more packages.

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

Labels

02 Milestone: First quarter release 11 Milestone: Fourth quarter release Needs review Seeking for review size/medium PR with more then 50 and less then 250 lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants