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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Executable
+106
@@ -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
|
||||
'
|
||||
Executable
+283
@@ -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
|
||||
'
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user