Google Summer of Code 2026 rapporten: Porting van de Enlightenment-desktopomgeving naar NetBSD

Inleiding

De Enlightenment-desktop is een desktopomgeving die weinig systeembronnen verbruikt zonder in te leveren op het visuele aspect. De ondersteuning voor deze BSD-gelicentieerde desktop binnen NetBSD liep enkele jaren achter. Het doel van dit project is om de nieuwste versie van de desktop te porten naar pkgsrc en, waar nodig, portability-fixes upstream te committen om toekomstige versie-updates voor NetBSD te vergemakkelijken.

Dankwoord

Veel dank aan mijn mentoren Leonardo Taccari (leot) en Nia Alarie (nia) voor hun steun, assistentie en begrip tijdens de eerste periode van het project.

Ook veel dank aan Carsten Haitzler (raster) van het Enlightenment-project, alsook aan Robert Bagdan (kikadf) and Matthew Danielson voor hun eerdere werk aan Enlightenment in pkgsrc-wip.

Ontwikkeling

Voor de ontwikkeling heb ik gebruikgemaakt van Ubuntu 26.04 met een QEMU-virtuele machine installatie van netbsd-11.0 en een laptop met een Intel N3540 (Bay Trail) met een bare metal installatie van netbsd-11.0.

Enlightenment biedt al upstream ondersteuning voor FreeBSD en OpenBSD. Daarom was het ideale startpunt om de build-instructies voor deze platforms te volgen, zoals beschreven in de documentatie van Enlightenment. Gelukkig zijn alle vereiste build-afhankelijkheden al beschikbaar in pkgsrc (dank aan NetBSD).

Deze kunnen worden geïnstalleerd met:

pkgin install bullet check fribidi gettext-tools giflib git gstreamer1 gst-plugins1-base gst-plugins1-good gst-plugins1-bad gst-plugins1-ugly gst-plugins1-libav jpeg libraw librsvg libexif libtool libspectre lua52 MesaLib pkg-config poppler poppler-cpp pulseaudio python314 scim

Met wat experimenteren en geduld bij het oplossen van build-fouten, kon men de benodigde commando's bepalen om onder NetBSD te compileren:

export PKG_CONFIG_PATH="/usr/pkg/lib/pkgconfig:/usr/X11R7/lib/pkconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
export CFLAGS="-I/usr/pkg/include -I/usr/include -I/usr/X11R7/include -I/usr/local/include:$CFLAGS"
export LDFLAGS="-L/usr/lib -L/usr/X11R7/lib -L/usr/pkg/lib -L/usr/pkg/lib/pulseaudio -L/usr/local/lib:$LDFLAGS"

Enlightenment Foundation Libraries (EFL)

De volgende commando's worden gebruikt voor EFL:

meson build --prefix=/usr/pkg -Dsystemd=false -Dv4l2=false -Deeze=false -Dinput=false
ninja -C build
su
ninja -C build install

Verrassend genoeg vereiste EFL geen aangepaste patching om onder NetBSD te bouwen. Toch is er al een pull request upstream samengevoegd (dank aan raster) om een vergelijkbaar gedrag mogelijk te maken als bij de overige BSD's.

Enlightenment Window Manager

De volgende commando's worden gebruikt voor de window manager:

meson build --prefix=/usr/pkg -Dsystemd=false -Dbluez5=false -Ddevice-udev=false -Delput=false -Dgesture-recognition=false
ninja -C build
su
ninja -C build install

Het window manager-gedeelte van de desktop vereiste iets meer patching om onder NetBSD te bouwen. Voor wie geïnteresseerd is in de noodzakelijke wijzigingen: deze kunnen worden gevolgd in de betreffende pull request (op het moment van schrijven is hiervoor een account nodig).

Resultaten

Indien u dit voortgangsrapport heeft gevolgd, zou u nu moeten worden begroet door een standaard Enlightenment-desktop onder NetBSD. U kunt nu gebruikmaken van uw nieuwe, coole Enlightenment-desktopomgeving. Veel plezier!

Huidige problemen

Momenteel zijn er enkele problemen die opgelost moeten worden, maar deze moeten wachten tot het tweede voortgangsrapport. Dit zijn:

  • De e-mixer panel applet veroorzaakt glitches in de desktop wanneer OpenGL-acceleratie is ingeschakeld voor de compositor (mogelijke fout in de Intel Xorg-driver).
  • Vergelijkbaar met bovenstaande: Chromium, Firefox en zelfs Terminology kunnen willekeurig display-glitches veroorzaken bij het afspelen van audio (waarschijnlijk opnieuw gerelateerd aan mijn Intel GPU, aangezien dit ook gebeurt onder IceWM).
  • Een efreet cache-fout pop-up verschijnt bij het laden van de desktop; dit leidt er ook toe dat app-iconen in het menu ontbreken.
  • De shutdown-functie triggert in plaats daarvan een reboot.
  • Soms maximaliseren Firefox/Chromium niet correct binnen het schermgebied (de sluitknop bevindt zich dan buiten het scherm).

Wat ik heb geleerd

Dit project is een geweldige kans geweest om te werken met diverse technologieën waar ik voorheen geen ervaring mee had. Ik heb veel geleerd over NetBSD, de packaging (pkgsrc) en hoe het systeem verschilt van Linux, waarmee ik meer bekend ben. Daarnaast heb ik tijdens mijn tests uitgebreid kunnen experimenteren met QEMU, virt-manager and meson.

Volgende stappen

  • De wijzigingen in de window manager upstream afronden.
  • Meer Enlightenment-software porten naar NetBSD (Evisum (systeemmonitor), Edi (IDE)).
  • De resterende problemen oplossen.
  • De pkgsrc-wip Enlightenment-pakketten bijwerken met het laatste werk.