feat(x11): migrate to pure Xlibre + dwm/dmenu/st stack, fix fcitx5-t9 bottom bar, PM8909 PON shutdown, and remove Wayland

This commit is contained in:
Luxferre
2026-10-20 21:15:16 +03:00
parent ad012360c3
commit 7bab7b7a11
422 changed files with 63226 additions and 2342 deletions
+51 -2
View File
@@ -42,8 +42,11 @@ esac
echo "[1/4] Installing Bananarchy rootfs overlay (artwork, branding, Sxmo 240x320, UCM, udev)..."
rm -f "$TARGET_ROOTFS/usr/bin/bantam" "$TARGET_ROOTFS/usr/local/bin/bantam" "$TARGET_ROOTFS/etc/doas.d/wheel.conf"
cp -af "$BASE_DIR/overlay/rootfs/." "$TARGET_ROOTFS/"
chown -R 10000:10000 "$TARGET_ROOTFS/home/user" 2>/dev/null || true
chown 0:0 "$TARGET_ROOTFS/etc/doas.d/50-sxmo.conf" 2>/dev/null || true
chmod 640 "$TARGET_ROOTFS/etc/doas.d/50-sxmo.conf" 2>/dev/null || true
chown 0:0 "$TARGET_ROOTFS/usr/bin/sudo" "$TARGET_ROOTFS/usr/bin/doas" "$TARGET_ROOTFS/bin/su" 2>/dev/null || true
chmod 4755 "$TARGET_ROOTFS/usr/bin/sudo" "$TARGET_ROOTFS/usr/bin/doas" "$TARGET_ROOTFS/bin/su" 2>/dev/null || true
echo "[2/4] Installing prebuilt QDSP6/Q6Voice kernel modules, torch LED module, camera module, and DTBs..."
if [ -d "$TARGET_ROOTFS/lib/modules/6.12.1-msm8916/kernel/sound/soc/qcom/qdsp6" ]; then
@@ -65,14 +68,60 @@ mkdir -p "$TARGET_ROOTFS/boot/dtbs"
cp -af "$BASE_DIR/prebuilt/kernel-6.12.1-msm8916/dtbs/"*.dtb "$TARGET_ROOTFS/boot/dtbs/"
cp -af "$BASE_DIR/prebuilt/kernel-6.12.1-msm8916/dtbs/$DTB_FILE" "$TARGET_ROOTFS/boot/$DTB_FILE"
echo "[3/4] Installing prebuilt multi-mode fcitx5-t9 and Bantam AI agent..."
echo "[3/4] Installing prebuilt Xlibre, Sxmo X11 (dwm/dmenu/st), fcitx5-t9, and Bantam AI agent..."
if [ -d "$BASE_DIR/prebuilt/xlibre/usr" ]; then
cp -af "$BASE_DIR/prebuilt/xlibre/usr/bin/." "$TARGET_ROOTFS/usr/bin/"
cp -af "$BASE_DIR/prebuilt/xlibre/usr/lib/xorg/." "$TARGET_ROOTFS/usr/lib/xorg/"
cp -af "$BASE_DIR/prebuilt/xlibre/usr/share/X11/xorg.conf.d/." "$TARGET_ROOTFS/usr/share/X11/xorg.conf.d/"
fi
if [ -d "$BASE_DIR/prebuilt/sxmo-x11/usr" ]; then
cp -af "$BASE_DIR/prebuilt/sxmo-x11/usr/." "$TARGET_ROOTFS/usr/"
fi
cp -af "$BASE_DIR/prebuilt/fcitx5-t9/usr/." "$TARGET_ROOTFS/usr/"
cp -af "$BASE_DIR/prebuilt/bantam/bantam" "$TARGET_ROOTFS/usr/bin/bantam"
cp -af "$BASE_DIR/prebuilt/bantam/bantam" "$TARGET_ROOTFS/usr/local/bin/bantam"
rm -f \
rm -rf \
"$TARGET_ROOTFS/usr/bin/sxmo_swayinitconf.sh" \
"$TARGET_ROOTFS/usr/bin/sxmo_swayinit.sh" \
"$TARGET_ROOTFS/usr/bin/sxmo_riverinit.sh" \
"$TARGET_ROOTFS/usr/bin/sxmo_riverbar.sh" \
"$TARGET_ROOTFS/usr/bin/bemenu" \
"$TARGET_ROOTFS/usr/bin/bemenu-run" \
"$TARGET_ROOTFS/usr/lib/bemenu" \
"$TARGET_ROOTFS/usr/share/wayland-sessions" \
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/sway_template" \
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/wob.ini" \
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/river" \
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/wofi.config" \
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/wofi.css" \
"$TARGET_ROOTFS/usr/share/sxmo/appcfg/foot.ini" \
"$TARGET_ROOTFS/usr/share/sxmo/sessions/sxmo_river.desktop" \
"$TARGET_ROOTFS/usr/share/sxmo/services/sxmo_riverbar.service" \
"$TARGET_ROOTFS/usr/share/sxmo/services/sxmo_wob.service" \
"$TARGET_ROOTFS/usr/share/sxmo/appscripts/sxmo_record.sh" \
"$TARGET_ROOTFS/usr/share/sxmo/appscripts/sxmo_screenshot.sh" \
"$TARGET_ROOTFS/usr/share/sxmo/appscripts/sxmo_websearch.sh" \
"$TARGET_ROOTFS/usr/share/sxmo/appscripts/sxmo_youtube.sh" \
"$TARGET_ROOTFS/usr/share/sxmo/appscripts/sxmo_youtube_audio.sh" \
"$TARGET_ROOTFS/usr/lib/fcitx5/libwayland.so" \
"$TARGET_ROOTFS/usr/lib/fcitx5/libwaylandim.so" \
"$TARGET_ROOTFS/usr/share/fcitx5/addon/wayland.conf" \
"$TARGET_ROOTFS/usr/share/fcitx5/addon/waylandim.conf" \
"$TARGET_ROOTFS/home/user/.config/fcitx5/conf/waylandim.conf" \
"$TARGET_ROOTFS/etc/skel/.config/fcitx5/conf/waylandim.conf" \
"$TARGET_ROOTFS/home/user/.config/wob" \
"$TARGET_ROOTFS/etc/skel/.config/wob" \
"$TARGET_ROOTFS/home/user/.config/wofi" \
"$TARGET_ROOTFS/etc/skel/.config/wofi" \
"$TARGET_ROOTFS/home/user/.config/foot" \
"$TARGET_ROOTFS/etc/skel/.config/foot" \
"$TARGET_ROOTFS/home/user/.config/sxmo/sway" \
"$TARGET_ROOTFS/etc/skel/.config/sxmo/sway" \
"$TARGET_ROOTFS/home/user/.bantam.cfg" \
"$TARGET_ROOTFS/etc/skel/.bantam.cfg" \
"$TARGET_ROOTFS/root/.bantam.cfg"
mkdir -p "$TARGET_ROOTFS/var/lib/tinydm"
ln -sf /usr/share/xsessions/sxmo.desktop "$TARGET_ROOTFS/var/lib/tinydm/default-session.desktop"
echo "[4/4] Installing deviceinfo for $DEVICE ($DTB_FILE)..."
if [ -f "$BASE_DIR/devices/$DEVICE/deviceinfo" ]; then
+1 -1
View File
@@ -58,7 +58,7 @@ EOF
if [ -d /kcache ] && [ -f /kcache/Makefile ]; then
echo "[1/5] Using cached kernel tree in /kcache..."
cd /kcache
if ! grep -q "Q6VOICE_PATH_VOICE" include/dt-bindings/sound/qcom,q6voice.h 2>/dev/null; then
if ! grep -q "VOICEMMODE1" include/dt-bindings/sound/qcom,q6voice.h 2>/dev/null; then
echo "[2/5] Applying Bananarchy QDSP6/Q6Voice and MSM8905/MSM8909 DTS patches..."
patch -p1 < /bananarchy/patches/kernel/0001-msm8909-qdsp6-voice-sound-nokia-argon-6.12.patch
fi
+106
View File
@@ -0,0 +1,106 @@
#!/bin/sh
# Cross-compile Bananarchy X11 UI components for armv7 (Cortex-A7 + NEON-VFPv4):
# - sxmo-st (patched with HarfBuzz ligatures for Fira Code + XIM)
# - sxmo-dmenu (patched with XIM + 240x320 vertical search bar + Fira Code)
# - sxmo-dwm (configured for 240x320 + Fira Code + Pango statusbar + Nokia keypad)
set -eu
BASE_DIR="$(cd "$(dirname "$0")/.." && pwd)"
ROOTFS_DIR="${ROOTFS_DIR:-$BASE_DIR/rootfs}"
if [ -e "$ROOTFS_DIR" ]; then
ROOTFS_DIR="$(realpath "$ROOTFS_DIR")"
fi
exec docker run --rm --network=host \
-e HOST_UID="$(id -u)" \
-e HOST_GID="$(id -g)" \
-v "$BASE_DIR:/bananarchy" \
-v "$ROOTFS_DIR:/target-rootfs" \
alpine:3.24 sh -eu -c '
cat > /etc/apk/repositories <<EOF
https://mirror.nura.eco/postmarketos/v26.06
https://dl-cdn.alpinelinux.org/alpine/edge/main
https://dl-cdn.alpinelinux.org/alpine/edge/community
https://dl-cdn.alpinelinux.org/alpine/edge/testing
EOF
cp /bananarchy/keys/* /etc/apk/keys/
echo "[1/5] Installing host cross-compilation toolchain..."
apk add --no-cache \
build-base \
gcc-armv7 \
g++-armv7 \
binutils-armv7 \
pkgconf >/dev/null
echo "[2/5] Preparing armv7 sysroot (X11, Xft, HarfBuzz, Pango, FreeType, Fontconfig)..."
SYSROOT="/tmp/armv7-sysroot"
mkdir -p "$SYSROOT/etc/apk/keys"
cp /etc/apk/repositories "$SYSROOT/etc/apk/repositories"
cp /etc/apk/keys/* "$SYSROOT/etc/apk/keys/"
apk --root "$SYSROOT" --initdb --arch armv7 add --no-scripts \
alpine-baselayout \
musl-dev \
linux-headers \
libx11-dev \
libxft-dev \
libxinerama-dev \
libxext-dev \
libxrender-dev \
libxcb-dev \
xcb-util-dev \
fontconfig-dev \
freetype-dev \
harfbuzz-dev \
pango-dev \
glib-dev \
cairo-dev >/dev/null
export PKG_CONFIG_SYSROOT_DIR="$SYSROOT"
export PKG_CONFIG_LIBDIR="$SYSROOT/usr/lib/pkgconfig:$SYSROOT/usr/share/pkgconfig"
CC="armv7-alpine-linux-musleabihf-gcc --sysroot=$SYSROOT"
STRIP="armv7-alpine-linux-musleabihf-strip"
OPT_CFLAGS="-O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -fno-plt -fomit-frame-pointer"
mkdir -p /bananarchy/prebuilt/sxmo-x11/usr/bin
echo "[3/5] Compiling patched sxmo-st (with HarfBuzz Fira Code ligatures + XIM)..."
cd /bananarchy/src/sxmo-st
cp -f config.def.h config.h
ST_INCS="$(pkgconf --cflags x11 xft fontconfig freetype2 harfbuzz)"
ST_LIBS="$(pkgconf --libs x11 xft fontconfig freetype2 harfbuzz) -lm -lrt -lutil"
$CC $OPT_CFLAGS -DVERSION=\"0.8.4.1-bananarchy\" -D_XOPEN_SOURCE=600 $ST_INCS \
st.c x.c hb.c $ST_LIBS -o /bananarchy/prebuilt/sxmo-x11/usr/bin/st
$STRIP --strip-unneeded /bananarchy/prebuilt/sxmo-x11/usr/bin/st
echo "[4/5] Compiling patched sxmo-dmenu (with XIM + 240x320 vertical layout + Fira Code)..."
cd /bananarchy/src/sxmo-dmenu
cp -f config.def.h config.h
DMENU_INCS="$(pkgconf --cflags x11 xinerama xft fontconfig freetype2)"
DMENU_LIBS="$(pkgconf --libs x11 xinerama xft fontconfig freetype2)"
$CC $OPT_CFLAGS -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"5.0.14-bananarchy\" -DXINERAMA $DMENU_INCS \
dmenu.c drw.c util.c $DMENU_LIBS -o /bananarchy/prebuilt/sxmo-x11/usr/bin/dmenu
$CC $OPT_CFLAGS -D_DEFAULT_SOURCE -DVERSION=\"5.0.14-bananarchy\" \
stest.c -o /bananarchy/prebuilt/sxmo-x11/usr/bin/stest
cp -f dmenu_path dmenu_run /bananarchy/prebuilt/sxmo-x11/usr/bin/
chmod 755 /bananarchy/prebuilt/sxmo-x11/usr/bin/dmenu_path /bananarchy/prebuilt/sxmo-x11/usr/bin/dmenu_run
$STRIP --strip-unneeded /bananarchy/prebuilt/sxmo-x11/usr/bin/dmenu /bananarchy/prebuilt/sxmo-x11/usr/bin/stest
echo "[5/5] Compiling patched sxmo-dwm (240x320 + Fira Code + Pango statusbar + Nokia keypad)..."
cd /bananarchy/src/sxmo-dwm
cp -f config.def.h config.h
DWM_INCS="$(pkgconf --cflags x11 xinerama xft fontconfig freetype2 pango pangoxft xcb xcb-res)"
DWM_LIBS="$(pkgconf --libs x11 xinerama xft fontconfig freetype2 pango pangoxft xcb xcb-res) -lX11-xcb -lrt"
$CC $OPT_CFLAGS -std=c99 -Wno-deprecated-declarations -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=2 -DVERSION=\"6.3.1-bananarchy\" -DXINERAMA -DNOBONSAI $DWM_INCS \
dwm.c drw.c util.c $DWM_LIBS -o /bananarchy/prebuilt/sxmo-x11/usr/bin/dwm
$STRIP --strip-unneeded /bananarchy/prebuilt/sxmo-x11/usr/bin/dwm
mkdir -p /bananarchy/overlay/rootfs/usr/bin
cp -a /bananarchy/prebuilt/sxmo-x11/usr/bin/. /bananarchy/overlay/rootfs/usr/bin/
if [ -d /target-rootfs/usr/bin ]; then
cp -a /bananarchy/prebuilt/sxmo-x11/usr/bin/. /target-rootfs/usr/bin/
fi
chown -R "$HOST_UID:$HOST_GID" /bananarchy/prebuilt/sxmo-x11 /bananarchy/overlay/rootfs/usr/bin /bananarchy/src/sxmo-st /bananarchy/src/sxmo-dmenu /bananarchy/src/sxmo-dwm
ls -lh /bananarchy/prebuilt/sxmo-x11/usr/bin/st /bananarchy/prebuilt/sxmo-x11/usr/bin/dmenu /bananarchy/prebuilt/sxmo-x11/usr/bin/dwm
'
+283
View File
@@ -0,0 +1,283 @@
#!/bin/sh
# Cross-compile Xlibre (X11Libre/xserver) + xf86-input-libinput + xf86-video-fbdev
# optimized for Qualcomm MSM8905/MSM8909 (ARMv7 Cortex-A7 + NEON-VFPv4, 240x320 KMS/SPI)
set -eu
BASE_DIR="$(cd "$(dirname "$0")/.." && pwd)"
ROOTFS_DIR="${ROOTFS_DIR:-$BASE_DIR/rootfs}"
if [ -e "$ROOTFS_DIR" ]; then
ROOTFS_DIR="$(realpath "$ROOTFS_DIR")"
fi
exec docker run --rm --network=host \
-e HOST_UID="$(id -u)" \
-e HOST_GID="$(id -g)" \
-e FORCE_REBUILD="${FORCE_REBUILD:-0}" \
-v "$BASE_DIR:/bananarchy" \
-v "$ROOTFS_DIR:/target-rootfs" \
alpine:3.24 sh -eu -c '
cat > /etc/apk/repositories <<EOF
https://mirror.nura.eco/postmarketos/v26.06
https://dl-cdn.alpinelinux.org/alpine/edge/main
https://dl-cdn.alpinelinux.org/alpine/edge/community
https://dl-cdn.alpinelinux.org/alpine/edge/testing
EOF
cp /bananarchy/keys/* /etc/apk/keys/
echo "[1/5] Installing host cross-compilation toolchain and meson/ninja..."
apk add --no-cache \
build-base \
git \
ca-certificates \
patch \
gcc-armv7 \
g++-armv7 \
binutils-armv7 \
meson \
ninja \
pkgconf \
python3 >/dev/null
XLIBRE_SRC="/bananarchy/src/xlibre"
if [ ! -f "$XLIBRE_SRC/meson.build" ]; then
echo "[1b/5] Cloning X11Libre/xserver and applying Bananarchy MSM8905 SPI DRM patch..."
XLIBRE_SRC="/tmp/xlibre-src"
rm -rf "$XLIBRE_SRC"
git clone --depth 1 https://github.com/X11Libre/xserver.git "$XLIBRE_SRC"
patch -d "$XLIBRE_SRC" -p1 < /bananarchy/patches/xlibre/0001-xlibre-msm8905-spi-drm-and-shared-vt.patch
fi
echo "[2/5] Preparing armv7 sysroot for Xlibre + DDX drivers..."
SYSROOT="/tmp/armv7-sysroot"
mkdir -p "$SYSROOT/etc/apk/keys"
cp /etc/apk/repositories "$SYSROOT/etc/apk/repositories"
cp /etc/apk/keys/* "$SYSROOT/etc/apk/keys/"
apk --root "$SYSROOT" --initdb --arch armv7 add --no-scripts \
alpine-baselayout \
musl-dev \
linux-headers \
xorgproto \
xtrans \
font-util-dev \
pixman-dev \
libx11-dev \
libxext-dev \
libxfont2-dev \
libxkbfile-dev \
libxshmfence-dev \
libxdmcp-dev \
libxau-dev \
libxcvt-dev \
libdrm-dev \
mesa-dev \
eudev-dev \
dbus-dev \
libpciaccess-dev \
openssl-dev \
libinput-dev \
mtdev-dev >/dev/null
OPT_CFLAGS="-O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -fno-plt -fomit-frame-pointer"
cat > /tmp/armv7-cross.ini <<EOF
[binaries]
c = '\''armv7-alpine-linux-musleabihf-gcc'\''
cpp = '\''armv7-alpine-linux-musleabihf-g++'\''
ar = '\''armv7-alpine-linux-musleabihf-ar'\''
strip = '\''armv7-alpine-linux-musleabihf-strip'\''
pkg-config = '\''pkgconf'\''
[built-in options]
c_args = ['\''--sysroot=/tmp/armv7-sysroot'\'', '\''-O2'\'', '\''-march=armv7-a'\'', '\''-mtune=cortex-a7'\'', '\''-mfpu=neon-vfpv4'\'', '\''-mfloat-abi=hard'\'', '\''-fno-plt'\'', '\''-fomit-frame-pointer'\'']
c_link_args = ['\''--sysroot=/tmp/armv7-sysroot'\'', '\''-Wl,-O1,--as-needed'\'']
[properties]
sys_root = '\''/tmp/armv7-sysroot'\''
pkg_config_libdir = '\''/tmp/armv7-sysroot/usr/lib/pkgconfig:/tmp/armv7-sysroot/usr/share/pkgconfig'\''
[host_machine]
system = '\''linux'\''
cpu_family = '\''arm'\''
cpu = '\''armv7l'\''
endian = '\''little'\''
EOF
ABI_MOD_DIR="/usr/lib/xorg/modules/xlibre-25"
if [ "${FORCE_REBUILD:-0}" = "1" ] || [ ! -f /bananarchy/prebuilt/xlibre/usr/bin/Xorg ] || ! grep -q "continuing in shared VT mode" /bananarchy/prebuilt/xlibre/usr/bin/Xorg 2>/dev/null; then
echo "[3/5] Configuring and compiling Xlibre (X11Libre/xserver) for armv7..."
rm -rf /tmp/build-xlibre
meson setup /tmp/build-xlibre "$XLIBRE_SRC" \
--cross-file=/tmp/armv7-cross.ini \
--prefix=/usr \
--libdir=lib \
--libexecdir=libexec \
--sysconfdir=/etc \
--localstatedir=/var \
--buildtype=release \
-Dxorg=true \
-Dxorg-sdk=true \
-Dglamor=false \
-Dglx=false \
-Ddri1=false \
-Ddri2=true \
-Ddri3=true \
-Ddrm=true \
-Dgbm=true \
-Dudev=true \
-Dudev_kms=true \
-Dsystemd_logind=true \
-Dseatd_libseat=false \
-Dsuid_wrapper=false \
-Dpciaccess=true \
-Dvgahw=false \
-Dint10=false \
-Ddga=false \
-Dxv=false \
-Dxvmc=false \
-Dxephyr=false \
-Dxnest=false \
-Dxvfb=false \
-Dxfake=false \
-Dxfbdev=false \
-Dxmodesetting=false \
-Dxf86-input-inputtest=false \
-Dxf86-input-null=false \
-Dlegacy_nvidia_340x=false \
-Dlegacy_nvidia_padding=false \
-Ddocs=false \
-Ddevel-docs=false \
-Dtests=false \
-Dlibunwind=false \
-Dsha1=libcrypto \
-Dinput_thread=true \
-Ddefault_font_path=/usr/share/fonts/misc,/usr/share/fonts/TTF,/usr/share/fonts/OTF \
-Dxkb_dir=/usr/share/X11/xkb \
-Dxkb_output_dir=/tmp \
-Dxkb_bin_dir=/usr/bin \
-Dlog_dir=/tmp
ninja -C /tmp/build-xlibre -j"$(nproc)"
rm -rf /bananarchy/prebuilt/xlibre
mkdir -p /bananarchy/prebuilt/xlibre
DESTDIR="/bananarchy/prebuilt/xlibre" ninja -C /tmp/build-xlibre install
elif ! grep -q "Failed to allocate cursor BOs" "/bananarchy/prebuilt/xlibre$ABI_MOD_DIR/drivers/modesetting_drv.so" 2>/dev/null; then
echo "[3/5] Rebuilding patched modesetting_drv.so in Xlibre..."
rm -rf /tmp/build-xlibre
meson setup /tmp/build-xlibre "$XLIBRE_SRC" \
--cross-file=/tmp/armv7-cross.ini \
--prefix=/usr \
--libdir=lib \
--libexecdir=libexec \
--sysconfdir=/etc \
--localstatedir=/var \
--buildtype=release \
-Dxorg=true \
-Dxorg-sdk=true \
-Dglamor=false \
-Dglx=false \
-Ddri1=false \
-Ddri2=true \
-Ddri3=true \
-Ddrm=true \
-Dgbm=true \
-Dudev=true \
-Dudev_kms=true \
-Dsystemd_logind=true \
-Dseatd_libseat=false \
-Dsuid_wrapper=false \
-Dpciaccess=true \
-Dvgahw=false \
-Dint10=false \
-Ddga=false \
-Dxv=false \
-Dxvmc=false \
-Dxephyr=false \
-Dxnest=false \
-Dxvfb=false \
-Dxfake=false \
-Dxfbdev=false \
-Dxmodesetting=false \
-Dxf86-input-inputtest=false \
-Dxf86-input-null=false \
-Dlegacy_nvidia_340x=false \
-Dlegacy_nvidia_padding=false \
-Ddocs=false \
-Ddevel-docs=false \
-Dtests=false \
-Dlibunwind=false \
-Dsha1=libcrypto \
-Dinput_thread=true \
-Dxkb_dir=/usr/share/X11/xkb \
-Dxkb_output_dir=/tmp \
-Dxkb_bin_dir=/usr/bin \
-Dlog_dir=/tmp
ninja -C /tmp/build-xlibre -j"$(nproc)" hw/xfree86/drivers/video/modesetting/modesetting_drv.so
cp -f /tmp/build-xlibre/hw/xfree86/drivers/video/modesetting/modesetting_drv.so "/bananarchy/prebuilt/xlibre$ABI_MOD_DIR/drivers/modesetting_drv.so"
else
echo "[3/5] Reusing compiled Xlibre in /bananarchy/prebuilt/xlibre..."
fi
if [ -d /bananarchy/prebuilt/xlibre/tmp/armv7-sysroot/usr ]; then
cp -a /bananarchy/prebuilt/xlibre/tmp/armv7-sysroot/usr/. /bananarchy/prebuilt/xlibre/usr/
rm -rf /bananarchy/prebuilt/xlibre/tmp
fi
cp -a /bananarchy/prebuilt/xlibre/usr/. "$SYSROOT/usr/"
echo "[4/5] Compiling X11Libre/xf86-input-libinput and xf86-video-fbdev against Xlibre SDK..."
ABI_MOD_DIR="/usr/lib/xorg/modules/xlibre-25"
if [ ! -f "/bananarchy/prebuilt/xlibre$ABI_MOD_DIR/input/libinput_drv.so" ]; then
rm -rf /tmp/build-libinput
meson setup /tmp/build-libinput /bananarchy/src/xf86-input-libinput \
--cross-file=/tmp/armv7-cross.ini \
--prefix=/usr \
--libdir=lib \
--sysconfdir=/etc \
--buildtype=release \
-Dxorg-module-dir="$ABI_MOD_DIR/input" \
-Dsdkdir=/usr/include/xorg \
-Dxorg-conf-dir=/usr/share/X11/xorg.conf.d
ninja -C /tmp/build-libinput -j"$(nproc)"
DESTDIR="/bananarchy/prebuilt/xlibre" ninja -C /tmp/build-libinput install
fi
mkdir -p "/bananarchy/prebuilt/xlibre$ABI_MOD_DIR/drivers" /tmp/fbdev-inc
cat > /tmp/fbdev-inc/config.h <<EOF
#include "xorg-server.h"
#define PACKAGE_VERSION_MAJOR 0
#define PACKAGE_VERSION_MINOR 5
#define PACKAGE_VERSION_PATCHLEVEL 0
EOF
armv7-alpine-linux-musleabihf-gcc \
--sysroot="$SYSROOT" \
$OPT_CFLAGS -shared -fPIC \
-I/tmp/fbdev-inc \
-I"$SYSROOT/usr/include/xorg" \
-I"$SYSROOT/usr/include/pixman-1" \
-I"$SYSROOT/usr/include/X11/dri" \
-I"$SYSROOT/usr/include/libdrm" \
/bananarchy/src/xf86-video-fbdev/src/fbdev.c \
-o "/bananarchy/prebuilt/xlibre$ABI_MOD_DIR/drivers/fbdev_drv.so"
echo "[5/5] Stripping Xlibre binaries and installing into prebuilt, overlay, and rootfs..."
find /bananarchy/prebuilt/xlibre/usr/bin /bananarchy/prebuilt/xlibre/usr/lib -type f \( -name "Xorg" -o -name "gtf" -o -name "*.so" \) -exec armv7-alpine-linux-musleabihf-strip --strip-unneeded {} +
rm -rf /bananarchy/prebuilt/xlibre/usr/share/X11/xorg.conf.d/10-nvidia*.conf \
/bananarchy/prebuilt/xlibre/etc/X11/xorg.conf.d/10-nvidia*
mkdir -p /bananarchy/overlay/rootfs/usr/bin \
/bananarchy/overlay/rootfs/usr/lib/xorg \
/bananarchy/overlay/rootfs/usr/share/X11/xorg.conf.d
cp -a /bananarchy/prebuilt/xlibre/usr/bin/. /bananarchy/overlay/rootfs/usr/bin/
cp -a /bananarchy/prebuilt/xlibre/usr/lib/xorg/. /bananarchy/overlay/rootfs/usr/lib/xorg/
cp -a /bananarchy/prebuilt/xlibre/usr/share/X11/xorg.conf.d/. /bananarchy/overlay/rootfs/usr/share/X11/xorg.conf.d/
if [ -d /target-rootfs/usr ]; then
cp -a /bananarchy/overlay/rootfs/usr/bin/Xorg /bananarchy/overlay/rootfs/usr/bin/X /bananarchy/overlay/rootfs/usr/bin/gtf /target-rootfs/usr/bin/
cp -a /bananarchy/overlay/rootfs/usr/lib/xorg/. /target-rootfs/usr/lib/xorg/
cp -a /bananarchy/overlay/rootfs/usr/share/X11/xorg.conf.d/. /target-rootfs/usr/share/X11/xorg.conf.d/
fi
chown -R "$HOST_UID:$HOST_GID" /bananarchy/prebuilt/xlibre /bananarchy/overlay/rootfs/usr /target-rootfs/usr/lib/xorg /target-rootfs/usr/share/X11/xorg.conf.d /target-rootfs/usr/bin/Xorg /target-rootfs/usr/bin/X /target-rootfs/usr/bin/gtf 2>/dev/null || true
ls -lh /bananarchy/prebuilt/xlibre/usr/bin/Xorg "/bananarchy/prebuilt/xlibre$ABI_MOD_DIR/drivers/"*.so "/bananarchy/prebuilt/xlibre$ABI_MOD_DIR/input/"*.so
'
+36 -3
View File
@@ -343,21 +343,35 @@ Layout=
EOF
cp "$ROOTFS/etc/skel/.config/fcitx5/profile" "$ROOTFS/home/user/.config/fcitx5/profile"
cat > "$ROOTFS/etc/profile.d/fcitx5-t9.sh" <<EOF
cat > "$ROOTFS/etc/profile.d/fcitx5-t9.sh" <<'EOF'
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SXMO_MENU=wofi
export SXMO_BEMENU_PORTRAIT_LINES=11
export SXMO_BEMENU_LANDSCAPE_LINES=8
export BEMENU_OPTS='--fn "Sxmo 11.5" -H 24 -B 2 --hp 4 -s --no-overlap --fixed-height --scrollbar none --cw 2 --bdr "#005577" --tb "#383838" --tf "#aaaaaa" --fb "#383838" --ff "#ffffff" --cb "#ffffff" --cf "#383838" --nb "#1c1c1c" --nf "#ffffff" --ab "#1c1c1c" --af "#ffffff" --hb "#005577" --hf "#ffffff" -w -i'
EOF
chmod 755 "$ROOTFS/etc/profile.d/fcitx5-t9.sh"
if ! grep -q "GTK_IM_MODULE=fcitx" "$ROOTFS/etc/skel/.profile" 2>/dev/null; then
cat >> "$ROOTFS/etc/skel/.profile" <<EOF
cat >> "$ROOTFS/etc/skel/.profile" <<'EOF'
export PATH="$HOME/.local/bin:$PATH"
export WLR_RENDERER=pixman
export WLR_NO_HARDWARE_CURSORS=1
export SXMO_DISABLE_LEDS=1
export SXMO_NO_VIRTUAL_KEYBOARD=1
export NO_AT_BRIDGE=1
export GTK_A11Y=none
export GTK_USE_PORTAL=0
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SXMO_MENU=wofi
export SXMO_BEMENU_PORTRAIT_LINES=11
export SXMO_BEMENU_LANDSCAPE_LINES=8
export BEMENU_OPTS='--fn "Sxmo 11.5" -H 24 -B 2 --hp 4 -s --no-overlap --fixed-height --scrollbar none --cw 2 --bdr "#005577" --tb "#383838" --tf "#aaaaaa" --fb "#383838" --ff "#ffffff" --cb "#ffffff" --cf "#383838" --nb "#1c1c1c" --nf "#ffffff" --ab "#1c1c1c" --af "#ffffff" --hb "#005577" --hf "#ffffff" -w -i'
EOF
fi
cp "$ROOTFS/etc/skel/.profile" "$ROOTFS/home/user/.profile"
@@ -446,8 +460,16 @@ export SXMO_ENTER_BUTTON="0:352:KEY_OK"
# Nokia 8110 4G has a physical keypad and no touchscreen
export SXMO_NO_VIRTUAL_KEYBOARD=1
export SXMO_DISABLE_LEDS=1
export KEYBOARD_ARGS="-H 1 -L 1"
export WLR_RENDERER=pixman
export WLR_NO_HARDWARE_CURSORS=1
export NO_AT_BRIDGE=1
export GTK_A11Y=none
export GTK_USE_PORTAL=0
export SXMO_MENU=wofi
export SXMO_BEMENU_PORTRAIT_LINES=11
export SXMO_BEMENU_LANDSCAPE_LINES=8
EOF
chmod 755 "$ROOTFS/usr/bin/sxmo_deviceprofile_nokia,argon.sh"
@@ -667,12 +689,23 @@ PYEOF
"$target_home/.config/fontconfig/conf.d"
cp "$ROOTFS/usr/share/sxmo/appcfg/profile_template" "$target_home/.config/sxmo/profile"
if ! grep -q "SXMO_MENU=wofi" "$target_home/.config/sxmo/profile"; then
cat >> "$target_home/.config/sxmo/profile" <<EOF
cat >> "$target_home/.config/sxmo/profile" <<'EOF'
export PATH="$HOME/.local/bin:$PATH"
export WLR_RENDERER=pixman
export WLR_NO_HARDWARE_CURSORS=1
export SXMO_DISABLE_LEDS=1
export SXMO_NO_VIRTUAL_KEYBOARD=1
export NO_AT_BRIDGE=1
export GTK_A11Y=none
export GTK_USE_PORTAL=0
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SXMO_MENU=wofi
export SXMO_BEMENU_PORTRAIT_LINES=11
export SXMO_BEMENU_LANDSCAPE_LINES=8
export BEMENU_OPTS='--fn "Sxmo 11.5" -H 24 -B 2 --hp 4 -s --no-overlap --fixed-height --scrollbar none --cw 2 --bdr "#005577" --tb "#383838" --tf "#aaaaaa" --fb "#383838" --ff "#ffffff" --cb "#ffffff" --cf "#383838" --nb "#1c1c1c" --nf "#ffffff" --ab "#1c1c1c" --af "#ffffff" --hb "#005577" --hf "#ffffff" -w -i'
EOF
fi
cp "$ROOTFS/usr/share/sxmo/appcfg/sway_template" "$target_home/.config/sxmo/sway"