diff --git a/config/redbear-desktop.toml b/config/redbear-desktop.toml index ed750255..99450530 100644 --- a/config/redbear-desktop.toml +++ b/config/redbear-desktop.toml @@ -18,6 +18,7 @@ redbear-hwutils = {} # Redox-native netctl compatibility command redbear-netctl = {} +redbear-netctl-console = {} # Native network reporting and connect-scan tools redbear-netstat = {} @@ -25,8 +26,10 @@ redbear-traceroute = {} redbear-mtr = {} redbear-nmap = {} -# Firmware loading +# Firmware loading + Wi-Fi control plane +redbear-firmware = {} firmware-loader = {} +redbear-wifictl = {} # Input/runtime service prerequisites evdevd = {} @@ -78,6 +81,21 @@ args = ["2"] type = "oneshot_async" """ +[[files]] +path = "/usr/lib/init.d/29_activate_console.service" +data = """ +[unit] +description = "Activate Orbital VT" +requires_weak = [ + "20_orbital.service", +] + +[service] +cmd = "inputd" +args = ["-A", "3"] +type = "oneshot" +""" + [[files]] path = "/usr/lib/init.d/31_debug_console.service" data = """ diff --git a/config/redbear-device-services.toml b/config/redbear-device-services.toml index 069f9ef0..5e9f0c9e 100644 --- a/config/redbear-device-services.toml +++ b/config/redbear-device-services.toml @@ -1,9 +1,9 @@ # Red Bear OS shared device-service wiring # -# Shared by profiles that ship the firmware/input compatibility stack. +# Shared by profiles that ship the firmware/input/Wi-Fi control compatibility stack. [[files]] -path = "/usr/firmware" +path = "/lib/firmware" data = "" directory = true mode = 0o755 @@ -36,6 +36,21 @@ cmd = "udev-shim" type = { scheme = "udev" } """ +[[files]] +path = "/usr/lib/init.d/11_wifictl.service" +data = """ +[unit] +description = "Wi-Fi control daemon" +requires_weak = [ + "00_pcid-spawner.service", + "05_firmware-loader.service", +] + +[service] +cmd = "redbear-wifictl" +type = { scheme = "wifictl" } +""" + [[files]] path = "/usr/lib/init.d/10_evdevd.service" data = """ diff --git a/config/redbear-full.toml b/config/redbear-full.toml index eff607a6..0c62248a 100644 --- a/config/redbear-full.toml +++ b/config/redbear-full.toml @@ -30,6 +30,7 @@ redbear-hwutils = {} # Redox-native netctl compatibility command redbear-netctl = {} +redbear-netctl-console = {} # Native network reporting and connect-scan tools redbear-netstat = {} @@ -43,8 +44,10 @@ mc = {} # ext4 filesystem support (our custom port) ext4d = {} -# Firmware loading +# Firmware loading + Wi-Fi control plane +redbear-firmware = {} firmware-loader = {} +redbear-wifictl = {} # Input layer evdevd = {} @@ -76,7 +79,7 @@ qtbase = {} # Firmware directory for AMD/Intel GPU blobs [[files]] -path = "/usr/firmware/amdgpu" +path = "/lib/firmware/amdgpu" data = "" directory = true mode = 0o755 @@ -118,6 +121,21 @@ args = ["2"] type = "oneshot_async" """ +[[files]] +path = "/usr/lib/init.d/29_activate_console.service" +data = """ +[unit] +description = "Activate Orbital VT" +requires_weak = [ + "20_orbital.service", +] + +[service] +cmd = "inputd" +args = ["-A", "3"] +type = "oneshot" +""" + [[files]] path = "/usr/lib/init.d/31_debug_console.service" data = """ diff --git a/config/redbear-kde.toml b/config/redbear-kde.toml index e0e4bc2b..704f662c 100644 --- a/config/redbear-kde.toml +++ b/config/redbear-kde.toml @@ -24,8 +24,10 @@ redbear-release = {} # ext4 filesystem support ext4d = {} -# Firmware loading +# Firmware loading + Wi-Fi control plane +redbear-firmware = {} firmware-loader = {} +redbear-wifictl = {} # Input layer evdevd = {} @@ -38,6 +40,7 @@ dbus = {} redbear-info = {} redbear-hwutils = {} redbear-netctl = {} +redbear-netctl-console = {} redbear-netstat = {} redbear-traceroute = {} redbear-mtr = {} @@ -95,7 +98,7 @@ libdrm = {} # Firmware directory for AMD/Intel GPU blobs [[files]] -path = "/usr/firmware/amdgpu" +path = "/lib/firmware/amdgpu" data = "" directory = true mode = 0o755 @@ -188,6 +191,21 @@ args = ["2"] type = "oneshot_async" """ +[[files]] +path = "/usr/lib/init.d/29_activate_console.service" +data = """ +[unit] +description = "Activate Orbital VT" +requires_weak = [ + "20_orbital.service", +] + +[service] +cmd = "inputd" +args = ["-A", "3"] +type = "oneshot" +""" + [[files]] path = "/usr/lib/init.d/31_debug_console.service" data = """ diff --git a/config/redbear-minimal.toml b/config/redbear-minimal.toml index 9c1b40ec..247bb668 100644 --- a/config/redbear-minimal.toml +++ b/config/redbear-minimal.toml @@ -17,6 +17,7 @@ redbear-hwutils = {} # Redox-native netctl compatibility command redbear-netctl = {} +redbear-netctl-console = {} # Native network reporting and connect-scan tools redbear-netstat = {} @@ -24,8 +25,10 @@ redbear-traceroute = {} redbear-mtr = {} redbear-nmap = {} -# Firmware loading +# Firmware loading + Wi-Fi control plane +redbear-firmware = {} firmware-loader = {} +redbear-wifictl = {} # Input/runtime service prerequisites evdevd = {} @@ -49,13 +52,28 @@ data = "wired-dhcp\n" path = "/usr/lib/init.d/30_console" data = "" +[[files]] +path = "/usr/lib/init.d/29_activate_console.service" +data = """ +[unit] +description = "Activate console VT" +requires_weak = [ + "10_net.target", +] + +[service] +cmd = "inputd" +args = ["-A", "2"] +type = "oneshot" +""" + [[files]] path = "/usr/lib/init.d/30_console.service" data = """ [unit] description = "Console terminals" requires_weak = [ - "10_net.target", + "29_activate_console.service", ] [service] diff --git a/config/redbear-netctl.toml b/config/redbear-netctl.toml index f576f04a..2152e895 100644 --- a/config/redbear-netctl.toml +++ b/config/redbear-netctl.toml @@ -23,6 +23,15 @@ Connection=ethernet IP=dhcp """ +[[files]] +path = "/etc/netctl/wired-dhcp" +data = """ +Description='Red Bear wired DHCP profile' +Interface=eth0 +Connection=ethernet +IP=dhcp +""" + [[files]] path = "/etc/netctl/examples/wired-static" data = """ @@ -35,6 +44,51 @@ Gateway='192.168.1.1' DNS=('1.1.1.1') """ +[[files]] +path = "/etc/netctl/examples/wifi-dhcp" +data = """ +Description='Red Bear Wi-Fi DHCP profile' +Interface=wlan0 +Connection=wifi +SSID='example-ssid' +Security=wpa2-psk +Key='example-passphrase' +IP=dhcp +""" + +[[files]] +path = "/etc/netctl/examples/wifi-open" +data = """ +Description='Red Bear Wi-Fi open-network profile' +Interface=wlan0 +Connection=wifi +SSID='example-open-ssid' +Security=open +IP=dhcp +""" + +[[files]] +path = "/etc/netctl/examples/wifi-open-bounded" +data = """ +Description='Red Bear Wi-Fi bounded lifecycle profile' +Interface=wlan0 +Connection=wifi +SSID='example-open-ssid' +Security=open +IP=bounded +""" + +[[files]] +path = "/etc/netctl/wifi-open-bounded" +data = """ +Description='Red Bear Wi-Fi bounded lifecycle profile' +Interface=wlan0 +Connection=wifi +SSID='example-open-ssid' +Security=open +IP=bounded +""" + [[files]] path = "/usr/lib/init.d/12_netctl.service" data = """ @@ -46,7 +100,7 @@ requires_weak = [ ] [service] -cmd = "netctl" +cmd = "redbear-netctl" args = ["--boot"] type = "oneshot" """ diff --git a/config/redbear-wayland.toml b/config/redbear-wayland.toml index 202c0d2f..f8f8cbc8 100644 --- a/config/redbear-wayland.toml +++ b/config/redbear-wayland.toml @@ -4,3 +4,6 @@ # Run: ./local/scripts/test-phase4-wayland-qemu.sh include = ["wayland.toml"] + +[packages] +qt6-wayland-smoke = {} diff --git a/config/wayland.toml b/config/wayland.toml index abafb5d3..33429b5c 100644 --- a/config/wayland.toml +++ b/config/wayland.toml @@ -55,6 +55,21 @@ args = ["2"] type = "oneshot_async" """ +[[files]] +path = "/usr/lib/init.d/29_activate_console.service" +data = """ +[unit] +description = "Activate Orbital VT" +requires_weak = [ + "20_orbital.service", +] + +[service] +cmd = "inputd" +args = ["-A", "3"] +type = "oneshot" +""" + [[files]] path = "/usr/lib/init.d/31_debug_console.service" data = """ @@ -80,6 +95,9 @@ data = """ export DISPLAY="" export COSMIC_BACKEND=winit export HOME=/root +export QT_PLUGIN_PATH=/usr/plugins +export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/plugins/platforms +export QML2_IMPORT_PATH=/usr/qml export RUST_BACKTRACE=full export RUST_LOG=debug export XCURSOR_THEME=Pop @@ -98,7 +116,7 @@ if test -d /usr/share/glib-2.0/schemas end # Default to the smaller Smithay path first. -smallvil -c wayland-session +smallvil -c /usr/bin/wayland-session """ [[files]] @@ -109,11 +127,83 @@ data = """ # env G_MAIN_POLL_DEBUG=1 G_MESSAGES_DEBUG=all LD_DEBUG=all WEBKIT_DEBUG=all MiniBrowser& printenv +let session_started = "/home/root/.wayland-session.started" +rm -f $session_started +echo "started" > $session_started +export QT_PLUGIN_PATH=/usr/plugins +export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/plugins/platforms +export QML2_IMPORT_PATH=/usr/qml +let smoke_ok = "/home/root/.qt6-wayland-smoke.ok" +let smoke_err = "/home/root/.qt6-wayland-smoke.err" +let smoke_log = "/home/root/.qt6-wayland-smoke.log" +let bootstrap_ok = "/home/root/.qt6-bootstrap-minimal.ok" +let bootstrap_log = "/home/root/.qt6-bootstrap-minimal.log" +let plugin_ok = "/home/root/.qt6-plugin-minimal.ok" +let plugin_err = "/home/root/.qt6-plugin-minimal.err" +let plugin_log = "/home/root/.qt6-plugin-minimal.log" +let smoke_minimal_ok = "/home/root/.qt6-wayland-smoke-minimal.ok" +let smoke_offscreen_ok = "/home/root/.qt6-wayland-smoke-offscreen.ok" +let smoke_wayland_ok = "/home/root/.qt6-wayland-smoke-wayland.ok" +let smoke_minimal_log = "/home/root/.qt6-wayland-smoke-minimal.log" +let smoke_offscreen_log = "/home/root/.qt6-wayland-smoke-offscreen.log" +let smoke_wayland_log = "/home/root/.qt6-wayland-smoke-wayland.log" +rm -f $smoke_ok $smoke_err +rm -f $smoke_log +rm -f $bootstrap_ok $bootstrap_log +rm -f $plugin_ok $plugin_err $plugin_log +rm -f $smoke_minimal_ok $smoke_offscreen_ok $smoke_wayland_ok +rm -f $smoke_minimal_log $smoke_offscreen_log $smoke_wayland_log #wayland-rs_simple_window #winit-wayland_window #softbuffer-wayland_animation #iced-wayland_sctk_lazy #gtk3-widget-factory +if which qt6-wayland-smoke >/scheme/null + if test -f /usr/plugins/platforms/libqminimal.so + echo "=== qminimal ELF header (guest) ===" + stat /usr/plugins/platforms/libqminimal.so + dd if=/usr/plugins/platforms/libqminimal.so bs=64 count=1 | od -An -tx1 + else + echo "=== qminimal ELF header (guest) missing ===" + end + if env LD_DEBUG=all QT_DEBUG_PLUGINS=1 QT_QPA_PLATFORM=minimal qt6-bootstrap-check > $bootstrap_log ^> $bootstrap_log + touch $bootstrap_ok + else + if test -f $bootstrap_log + cat $bootstrap_log + end + echo "qt6-bootstrap-check minimal failed; see $bootstrap_log" > $smoke_err + end + + if env LD_DEBUG=all QT_DEBUG_PLUGINS=1 QT_PLUGIN_PATH=/usr/plugins QT_QPA_PLATFORM_PLUGIN_PATH=/usr/plugins/platforms qt6-plugin-check /usr/plugins/platforms/libqminimal.so > $plugin_log ^> $plugin_log + touch $plugin_ok + else + if test -f $plugin_log + cat $plugin_log + end + echo "qt6-plugin-check failed; see $plugin_log" > $plugin_err + echo "qt6-plugin-check failed; see $plugin_log" > $smoke_err + end + + if env QT_DEBUG_PLUGINS=1 QT_QPA_PLATFORM=minimal qt6-wayland-smoke > $smoke_minimal_log ^> $smoke_minimal_log + touch $smoke_minimal_ok + else + echo "qt6-wayland-smoke minimal failed; see $smoke_minimal_log" > $smoke_err + end + + if env QT_DEBUG_PLUGINS=1 QT_QPA_PLATFORM=offscreen qt6-wayland-smoke > $smoke_offscreen_log ^> $smoke_offscreen_log + touch $smoke_offscreen_ok + else + echo "qt6-wayland-smoke offscreen failed; see $smoke_offscreen_log" > $smoke_err + end + + if env QT_DEBUG_PLUGINS=1 QT_QPA_PLATFORM=wayland qt6-wayland-smoke > $smoke_wayland_log ^> $smoke_wayland_log + touch $smoke_wayland_ok + touch $smoke_ok + else + echo "qt6-wayland-smoke wayland failed; see $smoke_wayland_log" > $smoke_err + end +end """