Dit rapport beschrijft het proces van het porten van de nieuwste versie van de Enlightenment-desktopomgeving naar NetBSD via pkgsrc. Het doel is om de desktop beschikbaar te maken voor NetBSD en portability-fixes upstream aan te dragen.
Technische details:
- Omgeving: Ontwikkeld op Ubuntu 26.04 met QEMU-virtuele machines en een Intel N3540 laptop met bare metal NetBSD-11.0.
- Build-proces: De Enlightenment Foundation Libraries (EFL) konden zonder patching worden gebouwd, terwijl de window manager specifieke patches vereiste om compatibel te zijn met NetBSD.
Huidige status en knelpunten: Hoewel de desktopomgeving functioneel is, zijn er nog diverse bugs aanwezig, waaronder OpenGL-glitches op Intel GPU's (bijv. in e-mixer en browsers), cache-fouten in efreet waardoor iconen ontbreken, en een shutdown-functie die onbedoeld een reboot triggert.
Toekomst: De auteur streeft ernaar de window manager wijzigingen upstream af te ronden, extra software zoals Evisum (systeemmonitor) en Edi (IDE) te porten, en de resterende bugs op te lossen.
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.
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.