fix(desktop-environments): missing EWW build dep + non-idempotent clone
Found via a fresh-install test in a QEMU VM using the repo's answerfile
system (hyprlua, tablet/touch eww bar variant).
1. hyprlua.sh/hyprland.sh/niri.sh all compile EWW (GTK3) from source but
never installed gtk-layer-shell — only gtk4-layer-shell, which is a
separate package for astal-menu's GTK4 surface. Every fresh install
failed at the gtk-layer-shell-sys build script with a pkg-config
error ("gtk-layer-shell-0 ... was not found").
2. The EWW `git clone` isn't idempotent: a leftover ~/install-tmp/eww
from an earlier interrupted/retried install (e.g. the failure above)
makes the next clone abort with "already exists and is not an empty
directory", killing the whole script under set -e. `rm -rf eww`
before cloning fixes retries.
Both reproduced and fixed directly in the test VM before being applied
here: installing gtk-layer-shell and clearing the stale checkout let
the same run complete successfully.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TLz6HWsXCwzQ97LrLt2em6
main
parent
682e3769f6
commit
3e51579564
|
|
@ -141,6 +141,11 @@ HYPRLAND_PACKAGES=(
|
||||||
playerctl # MPRIS media player controller (play/pause CLI)
|
playerctl # MPRIS media player controller (play/pause CLI)
|
||||||
wf-recorder # screen recorder for wlroots compositors
|
wf-recorder # screen recorder for wlroots compositors
|
||||||
sound-theme-freedesktop # standard freedesktop sound event library
|
sound-theme-freedesktop # standard freedesktop sound event library
|
||||||
|
|
||||||
|
# EWW (compiled from source below) is GTK3, and its gtk-layer-shell-sys
|
||||||
|
# crate links against this library at build time — without it, `cargo
|
||||||
|
# build` fails at that build script with a pkg-config error.
|
||||||
|
gtk-layer-shell
|
||||||
)
|
)
|
||||||
sudo pacman -Syu --noconfirm --needed -- "${HYPRLAND_PACKAGES[@]}"
|
sudo pacman -Syu --noconfirm --needed -- "${HYPRLAND_PACKAGES[@]}"
|
||||||
|
|
||||||
|
|
@ -244,6 +249,9 @@ log "Compiling EWW..."
|
||||||
# ~/install-tmp is a staging area for source trees fetched during installation.
|
# ~/install-tmp is a staging area for source trees fetched during installation.
|
||||||
mkdir -p ~/install-tmp
|
mkdir -p ~/install-tmp
|
||||||
cd ~/install-tmp
|
cd ~/install-tmp
|
||||||
|
# A leftover checkout from an earlier interrupted/retried install would make
|
||||||
|
# a plain `git clone` fail with "already exists and is not an empty directory".
|
||||||
|
rm -rf eww
|
||||||
git clone https://github.com/elkowar/eww
|
git clone https://github.com/elkowar/eww
|
||||||
cd eww
|
cd eww
|
||||||
# --release → optimised binary (significantly faster than debug)
|
# --release → optimised binary (significantly faster than debug)
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,12 @@ HYPRLUA_PACKAGES=(
|
||||||
gtk4 # GTK4 toolkit (the menu's frontend)
|
gtk4 # GTK4 toolkit (the menu's frontend)
|
||||||
gtk4-layer-shell # wlr-layer-shell for GTK4 (the popup surface)
|
gtk4-layer-shell # wlr-layer-shell for GTK4 (the popup surface)
|
||||||
libshumate # GTK4 OpenStreetMap widget (Location quad)
|
libshumate # GTK4 OpenStreetMap widget (Location quad)
|
||||||
|
# EWW itself (compiled from source below) is GTK3, and its
|
||||||
|
# gtk-layer-shell-sys crate links against the GTK3 build of this library —
|
||||||
|
# a separate package from gtk4-layer-shell above. Without it, `cargo build`
|
||||||
|
# fails at the gtk-layer-shell-sys build script with a pkg-config error
|
||||||
|
# ("gtk-layer-shell-0 ... was not found").
|
||||||
|
gtk-layer-shell # wlr-layer-shell for GTK3 (EWW's build dependency)
|
||||||
networkmanager # nmcli backend for the Network quad (adapters/routes/vlan/dns)
|
networkmanager # nmcli backend for the Network quad (adapters/routes/vlan/dns)
|
||||||
bluez-utils # bluetoothctl + bluez CLI (Bluetooth quad fallbacks)
|
bluez-utils # bluetoothctl + bluez CLI (Bluetooth quad fallbacks)
|
||||||
iproute2 curl jq # ip/ss, HTTP fetches, JSON (Network/Weather backends)
|
iproute2 curl jq # ip/ss, HTTP fetches, JSON (Network/Weather backends)
|
||||||
|
|
@ -257,6 +263,9 @@ log "Compiling EWW..."
|
||||||
# ~/install-tmp is the staging directory for source trees fetched during install.
|
# ~/install-tmp is the staging directory for source trees fetched during install.
|
||||||
mkdir -p ~/install-tmp
|
mkdir -p ~/install-tmp
|
||||||
cd ~/install-tmp
|
cd ~/install-tmp
|
||||||
|
# A leftover checkout from an earlier interrupted/retried install would make
|
||||||
|
# a plain `git clone` fail with "already exists and is not an empty directory".
|
||||||
|
rm -rf eww
|
||||||
git clone https://github.com/elkowar/eww
|
git clone https://github.com/elkowar/eww
|
||||||
cd eww
|
cd eww
|
||||||
# --release → produce an optimised binary (noticeably faster UI)
|
# --release → produce an optimised binary (noticeably faster UI)
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,10 @@ sudo pacman -Syu --noconfirm --needed \
|
||||||
thunar tumbler thunar-archive-plugin thunar-shares-plugin thunar-volman \
|
thunar tumbler thunar-archive-plugin thunar-shares-plugin thunar-volman \
|
||||||
pcmanfm-qt udisks2 ly kew \
|
pcmanfm-qt udisks2 ly kew \
|
||||||
pavucontrol playerctl wf-recorder sound-theme-freedesktop \
|
pavucontrol playerctl wf-recorder sound-theme-freedesktop \
|
||||||
xinput jq python-opencv v4l-utils
|
xinput jq python-opencv v4l-utils \
|
||||||
|
gtk-layer-shell # GTK3 wlr-layer-shell library EWW's gtk-layer-shell-sys
|
||||||
|
# crate links against; without it `cargo build` below
|
||||||
|
# fails at that build script with a pkg-config error.
|
||||||
|
|
||||||
# 3. Enable essential services
|
# 3. Enable essential services
|
||||||
log "Enabling essential services..."
|
log "Enabling essential services..."
|
||||||
|
|
@ -72,6 +75,9 @@ esac
|
||||||
log "Compiling EWW..."
|
log "Compiling EWW..."
|
||||||
mkdir -p ~/install-tmp
|
mkdir -p ~/install-tmp
|
||||||
cd ~/install-tmp
|
cd ~/install-tmp
|
||||||
|
# A leftover checkout from an earlier interrupted/retried install would make
|
||||||
|
# a plain `git clone` fail with "already exists and is not an empty directory".
|
||||||
|
rm -rf eww
|
||||||
git clone https://github.com/elkowar/eww
|
git clone https://github.com/elkowar/eww
|
||||||
cd eww
|
cd eww
|
||||||
cargo build --release --no-default-features --features=wayland
|
cargo build --release --no-default-features --features=wayland
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue