[Buildroot] [PATCH 00/13] Sway fixups

Adam Duskett adam.duskett at amarulasolutions.com
Thu Nov 23 00:08:06 UTC 2023


To test the ivi-homescreen package, I needed to figure out how to use Wayland
and a compositor, which led me to the Sway package. However, in its current
form, the package has several issues.
  - All the options that make it worthwhile are disabled.
  - Sway's default terminal (foot) doesn't exist as a package.
  - BR2_PACKAGE_XKEYBOARD_CONFIG isn't selected, which is a runtime dependency
    (same as Weston)

Included are several patches to make Sway a worthwhile package for most people
looking for a Wayland compositor to test packages with.

If you wish to test the changes, below is the defconfig I used:

```
BR2_x86_64=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_INIT_SYSTEMD=y
BR2_SYSTEM_BIN_SH_BASH=y
BR2_TARGET_GENERIC_GETTY_PORT="tty1"
BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin"
BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image-efi.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.2"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="support/testing/tests/package/test_flutter/linux-vkms.fragment"
BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
BR2_PACKAGE_FOOT=y
BR2_PACKAGE_FOOT_GRAPHEME_CLUSTERING=y
BR2_PACKAGE_FOOT_THEMES=y
BR2_PACKAGE_SWAY=y
BR2_PACKAGE_SWAY_DEFAULT_WALLPAPER=y
BR2_PACKAGE_SWAY_SWAYBAR=y
BR2_PACKAGE_SWAY_SWAYBAR_TRAY=y
BR2_PACKAGE_SWAY_SWAYNAG=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL=y
BR2_PACKAGE_MESA3D_OPENGL_ES=y
BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y
BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y
BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y
BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
BR2_PACKAGE_ACPID=y
BR2_PACKAGE_LIBUTEMPTER=y
BR2_PACKAGE_CONNMAN=y
BR2_PACKAGE_CONNMAN_WIFI=y
BR2_PACKAGE_CONNMAN_CLIENT=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="256M"
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_X86_64_EFI=y
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
```

And the qemu-system-x86_64 script I used:

```
#!/usr/bin/env bash
set -e

LIBGL_DRIVERS_PATH=/usr/lib64/dri \
FONTCONFIG_PATH=/etc/fonts \
qemu-system-x86_64 \
  -enable-kvm \
  -M pc \
  -cpu host \
  -m 1024M \
  -bios /usr/share/OVMF/OVMF_CODE.fd \
  -drive file=output/images/disk.img,if=virtio,format=raw \
  -net nic,model=virtio \
  -net user \
  -device virtio-vga-gl \
  -display gtk,gl=es,show-cursor=on \
  -usb \
  -device usb-ehci,id=ehci \
  -device usb-tablet,bus=usb-bus.0
```

At the main prompt, run `export XDG_RUNTIME_DIR=/tmp && sway`

By default:
super + return: opens the terminal
super + shift + e: opens an exit prompt on the tray
suprt + {1,2,3...} changes desktops

Enjoy!

Adam Duskett (13):
  package/sway/Config.in: select BR2_PACKAGE_XKEYBOARD_CONFIG
  package/dmenu-wayland: new package
  package/tllist: new package
  package/fcft: new package
  package/libutempter: new package
  package/foot: new package
  package/ncurses: install terminfo if foot is selected
  package/sway: enable bash-completion support
  package/sway: enable default-wallpaper support
  package/sway: enable swaybar support
  package/sway: enable swaybar tray support
  package/sway: enable swaynag support
  package/sway/Config.in: Add a help note about the default terminal

 DEVELOPERS                                    |  5 ++
 package/Config.in                             |  5 ++
 package/dmenu-wayland/Config.in               | 26 ++++++++++
 package/dmenu-wayland/dmenu-wayland.hash      |  3 ++
 package/dmenu-wayland/dmenu-wayland.mk        | 28 ++++++++++
 package/fcft/Config.in                        | 52 +++++++++++++++++++
 package/fcft/fcft.hash                        |  3 ++
 package/fcft/fcft.mk                          | 44 ++++++++++++++++
 package/foot/Config.in                        | 36 +++++++++++++
 package/foot/foot.hash                        |  3 ++
 package/foot/foot.mk                          | 51 ++++++++++++++++++
 .../0001-force-symlink-creation.patch         | 36 +++++++++++++
 package/libutempter/Config.in                 | 11 ++++
 package/libutempter/libutempter.hash          |  3 ++
 package/libutempter/libutempter.mk            | 27 ++++++++++
 package/ncurses/ncurses.mk                    |  7 +++
 package/sway/Config.in                        | 34 ++++++++++++
 package/sway/sway.mk                          | 35 +++++++++++--
 package/tllist/Config.in                      |  6 +++
 package/tllist/tllist.hash                    |  3 ++
 package/tllist/tllist.mk                      | 16 ++++++
 21 files changed, 429 insertions(+), 5 deletions(-)
 create mode 100644 package/dmenu-wayland/Config.in
 create mode 100644 package/dmenu-wayland/dmenu-wayland.hash
 create mode 100644 package/dmenu-wayland/dmenu-wayland.mk
 create mode 100644 package/fcft/Config.in
 create mode 100644 package/fcft/fcft.hash
 create mode 100644 package/fcft/fcft.mk
 create mode 100644 package/foot/Config.in
 create mode 100644 package/foot/foot.hash
 create mode 100644 package/foot/foot.mk
 create mode 100644 package/libutempter/0001-force-symlink-creation.patch
 create mode 100644 package/libutempter/Config.in
 create mode 100644 package/libutempter/libutempter.hash
 create mode 100644 package/libutempter/libutempter.mk
 create mode 100644 package/tllist/Config.in
 create mode 100644 package/tllist/tllist.hash
 create mode 100644 package/tllist/tllist.mk

-- 
2.42.0




More information about the buildroot mailing list