Skip to content

feat: add gnome-desktop variant#244

Draft
gagath wants to merge 2 commits intoqualcomm-linux:mainfrom
gagath:gnome-image
Draft

feat: add gnome-desktop variant#244
gagath wants to merge 2 commits intoqualcomm-linux:mainfrom
gagath:gnome-image

Conversation

@gagath
Copy link
Copy Markdown
Contributor

@gagath gagath commented Feb 17, 2026

This reuses the existing work for the XFCE variant, the difference is that task-gnome-desktop was not manually pruned down as I cannot think of specific packages to remove from it yet. GNOME is not known for being small on disk in the first place.

Due to this, the image size and the debos --scratchsize need to be bumped to 7GiB. The resulting root partition in disk-sdcard.img has 529MiB free space left out of 5.4 GiB.

The generated image was successfully boot-tested on qemu and a Thinkpad T14s. GDM asks for a password change and then the GNOME desktop can be used as expected.

packages:
- plymouth-label- # we probably don't need a boot splash
# from task-gnome-desktop
- task-gnome-desktop
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

how about we start from gnome-core instead of the full desktop?

Copy link
Copy Markdown
Contributor Author

@gagath gagath Feb 17, 2026

Choose a reason for hiding this comment

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

Makes sense.

I see that task-gnome-desktop depends on gnome-core and only recommends gnome. The package even says that it is to allow it to fit on a CD-ROM. So I will retry by replacing this section with gnome-core instead of the full task-gnome-desktop.

{{- if eq $xfcedesktop "true" }}
echo "VARIANT_ID=xfce" >>/etc/buildinfo
{{- else if eq $gnomedesktop "true" }}
echo "VARIANT_ID=gnome" >>/etc/buildinfo
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Both variants can be selected though :-)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes I know… I did not have the courage to consider the case when both are selected by a funny user. The image creation may fail in the first place due to a lack of space for installing both the GNOME and XFCE desktops though. I will see what can be done in the templating language, we should probably bail out if both are selected.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

you can do something like:

{{ if eq $architecture "amd64" }}
      - linux-image-amd64/trixie-backports
{{ else if eq $architecture "arm64" }}
      - linux-image-arm64/trixie-backports
  {{ fail "architecture not supported" }}
{{ else }}
  {{ fail "architecture not supported" }}
{{ end }}

@@ -1,5 +1,5 @@
{{- $dtb := or .dtb "firmware" }}
{{- $imagesize := or .imagesize "4.5GiB" }}
{{- $imagesize := or .imagesize "7.0GiB" }}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

kind of unfortunate, let's see if gnome-core helps with that

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I'm proposing a bump here #286, hopefully enough to fit GNOME too

@lool
Copy link
Copy Markdown
Contributor

lool commented Feb 17, 2026

@gagath I'd suggest adding a gnome build in the github workflows; perhaps in this PR, make it only build gnome rather than gnome and xfce, so that you can iterate more comfortably; might make sense to make the PR a draft as it's likely going to take a few iterations

@gagath gagath marked this pull request as draft February 18, 2026 09:28
@gagath
Copy link
Copy Markdown
Contributor Author

gagath commented Feb 18, 2026

@gagath I'd suggest adding a gnome build in the github workflows; perhaps in this PR, make it only build gnome rather than gnome and xfce, so that you can iterate more comfortably

Thanks for the tip. I will add a temporary commit to this effect to reduce CI time, so I can iterate on the CI integration in this PR faster.

might make sense to make the PR a draft as it's likely going to take a few iterations

Good idea, done.

@lool
Copy link
Copy Markdown
Contributor

lool commented Feb 18, 2026

@gagath Two side goals beyond having a GNOME UX:

  • we need a Wayland UX, GNOME can deliver that, I think we should tie the two, and eventually move Xfce to Wayland later; Xorg session is going away in forky anyway, Xfce shoudl be Wayland ready by end of 2026
  • we're trying to stay within the guardrails of Qcom compliance as to have public redistributable images (even they are not yet publicly downloadable); this typically means avoiding problematic packages like codecs with patent implications, e.g. gst-plugins-bad, but there might be others; in practice, this means lets keep the image as small and conservative as possible to demonstrate our reference architecture, and iterate over the SBOM in internal reviews

@gagath
Copy link
Copy Markdown
Contributor Author

gagath commented Feb 18, 2026

Switching from gnome to gnome-core results in a smaller, still usable image (tested in QEMU). The size difference is documented below:

Package Free space on / (7GiB image)
gnome 529 MiB
gnome-core 1.5 GiB

If we want to stay close to the free space available in the original XFCE image (665 MiB), we can shrink the image to a theorical minimum of 6 GiB. As expected, this is bigger than the current XFCE image (4.5 GiB), but I think acceptable.

Maybe we should introduce different image sizes per variant? This would need to land prior to this PR, and would reflect the small size of the console image vs. the XFCE image. And the image resizing at first boot would still take care of the reduced free space in the initial image.

@lool
Copy link
Copy Markdown
Contributor

lool commented Feb 18, 2026

Switching from gnome to gnome-core results in a smaller, still usable image (tested in QEMU). The size difference is documented below:

Package Free space on / (7GiB image)
gnome 529 MiB
gnome-core 1.5 GiB

Nice, still feels a bit much, but perhaps it's what GNOME implies; if you don't mind pushing your WIP changes here, we could see the syft-generated SBOM and look at package list?

Maybe we should introduce different image sizes per variant? This would need to land prior to this PR, and would reflect the small size of the console image vs. the XFCE image. And the image resizing at first boot would still take care of the reduced free space in the initial image.

If we can avoid branching, the better; from our supported platforms, one of the most constrained one is UNO Q, but its 16G of storage should still be plenty. The other constraint is when building without passing scratch-size to debos, which tries to build in memory: this fails when I do that in a memory-constrained VM, which means it's raising the developer requirements. I don't believe it's an issue with scratch size though.

The rootfs will be grown on first boot, and a disk image full of zero will compress nicely, so I'm not worried about a larger default image size; the only downside is that I suspect flashing a rootfs image full of zeroes does take a bit longer, to we might want to keep the imagesize close to our needs.

@gagath gagath added the debos-recipes Relates to debos recipes label Feb 19, 2026
@gagath
Copy link
Copy Markdown
Contributor Author

gagath commented Feb 20, 2026

Pushed the gnome-core WIP changes for the CI to have a go at it, image size is now 5.5 GiB.

@gagath
Copy link
Copy Markdown
Contributor Author

gagath commented Feb 25, 2026

Pushed an additional commit to have the CI temporary build with gnomedesktop:true instead of xfcedesktop:true.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 25, 2026

Test Results

 2 files  ±0   6 suites  ±0   5m 57s ⏱️ + 2m 30s
20 tests ±0  20 ✅ +2  0 💤 ±0  0 ❌  - 2 
64 runs  ±0  64 ✅ +2  0 💤 ±0  0 ❌  - 2 

Results for commit 8b76aa0. ± Comparison against base commit 95081ca.

♻️ This comment has been updated with latest results.

@github-actions
Copy link
Copy Markdown

Test jobs for commit fe2e378

@gagath
Copy link
Copy Markdown
Contributor Author

gagath commented Mar 2, 2026

Created #296 towards allowing splitting console, XFCE and incoming GNOME images into dedicated debos recipes with an include system allowed by debos.

@gagath
Copy link
Copy Markdown
Contributor Author

gagath commented Mar 4, 2026

Created #308 related to introducing a GNOME variant by using separate debos recipes instead of template variables.

@gagath
Copy link
Copy Markdown
Contributor Author

gagath commented Mar 5, 2026

Rebased on top of main.

Idendified problematic dependencies:

# aptitude why gstreamer1.0-plugins-bad
i   gnome-core     Depends gnome-snapshot (>= 47~)
i A gnome-snapshot Depends gstreamer1.0-plugins-bad

Which then brings in x265 stuff. Will continue by manually listing all software from gnome-core but gnome-snapshot and should be better. gnome-music was moved from Depends to Recommends not so long ago, so maybe we can ask this as well for gnome-snapshot if we can motivate the choice.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 5, 2026

Test jobs for commit 2fb150f

gagath added 2 commits March 6, 2026 10:21
This reuses the existing work for the XFCE variant, this time for GNOME.
The full "gnome-core" package cannot be installed because it brings in
problematic codecs such as libx265. Manually list the gnome-core
dependencies and prune the problematic packages out of it.

The generated image was successfully boot-tested on qemu and a Thinkpad
T14s. GDM asks for a password change and then the GNOME desktop can be
used as expected.

Signed-off-by: Agathe Porte <agathe.porte@oss.qualcomm.com>
This is a temporary commit to have the CI run the full debos workflow
against the newly introduced GNOME desktop variant. The CI runs will be
used to investigate the generated SBOM.

Signed-off-by: Agathe Porte <agathe.porte@oss.qualcomm.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 6, 2026

Test jobs for commit 8b76aa0

@lool
Copy link
Copy Markdown
Contributor

lool commented Mar 7, 2026

@gagath from a quick look at the SBOM, we should try to see if we can get rid of:

  • libde265
  • libheif
  • opencore-amr
  • lame
  • twolame
  • libbluray
  • libvpx
  • libtheora
  • opus
  • flac

@gagath
Copy link
Copy Markdown
Contributor Author

gagath commented Mar 10, 2026

After creating a bug against gnome-control-center and proposing a patch, we found that Ubuntu recently tweaked libheif to Suggest libheif-plugin-libde265 instead of Depend. With this, libheif supports av1 and jpeg but not HEVC by default on Ubuntu.

I believe we could do the same for Debian proper, I have opened Bug#1130254 - libheif1: depends on libheif-plugin-libde265, should recommend/suggest instead to discuss it.

@gagath
Copy link
Copy Markdown
Contributor Author

gagath commented Mar 17, 2026

It seems that from the list the priority is to remove libde265 and libbluray.

EDIT: and libvpx as well

@lool
Copy link
Copy Markdown
Contributor

lool commented Mar 17, 2026

What would it take to drop libvpx?

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

Labels

debos-recipes Relates to debos recipes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants