Skip to content

Instantly share code, notes, and snippets.

@hholst80
Created February 11, 2026 11:34
Show Gist options
  • Select an option

  • Save hholst80/573f3116b0535b9d02b6dfd60a254b8c to your computer and use it in GitHub Desktop.

Select an option

Save hholst80/573f3116b0535b9d02b6dfd60a254b8c to your computer and use it in GitHub Desktop.
River 0.4.0-dev build log - updating from 0.3.13 with dependency chain rebuild
# River 0.4.0-dev Build Log
# Date: 2026-02-11
# Updating river from 0.3.13 (river-classic) to 0.4.0-dev (main branch)
## Initial State
Current forge.yaml source: river-classic v0.3.13
Installed binary version: 0.4.0-dev.335+a5a9dce (old dev build)
Target: latest main branch commit
## Step 1: Find latest river main branch commit
No official 0.4.x releases exist yet. river-classic is a fork maintaining 0.3.x.
The main river project at codeberg.org/river/river has 0.4.0-dev on main branch.
Latest commit on main: 1a934be392aec5eef4fadef298010468eeeb2b54 (2026-02-10)
Commit message: "layer-shell: ensure non_exclusive_area sent on x/y change"
Author: Isaac Freund
build.zig.zon version: "0.4.0-dev"
## Step 2: Update river forge.yaml
Changed source from:
https://codeberg.org/river/river-classic/releases/download/v0.3.13/river-classic-0.3.13.tar.gz
sha256:e4a6569ae5097bba1f22234b2081fdc962fcebb991df995c516be9d9bbff0ac2
To:
https://codeberg.org/river/river/archive/1a934be392aec5eef4fadef298010468eeeb2b54.tar.gz
sha256:27f6d1ed25aa438a29283fffffcf321c9e23487fe7a8f85f85fa75dac12ff43f
## Step 3: First build attempt — FAILED
Error: unable to find dynamic system library 'wlroots-0.19'
Cause: river 0.4.0-dev requires wlroots 0.19, but container image has wlroots 0.18.
Note: wlroots forge.yaml already pointed to 0.19.2 but the container image was stale.
## Step 4: Rebuild wayland-protocols — FAILED
Error: Build-time dependency wayland-scanner found: NO
Dependency wayland-protocols found: NO found 1.36 but need: '>=1.41'
Cause: wlroots 0.19.2 requires wayland-protocols >= 1.41.
wayland-protocols forge.yaml already had 1.41 but container image was stale.
Also, wayland-protocols 1.41 needs wayland-scanner (from wayland package) as build dep.
Fix: Added `wayland` to wayland-protocols makedepends.
## Step 5: Rebuild wayland-protocols — SUCCESS
wayland-protocols 1.41 built and published.
## Step 6: Rebuild wlroots — FAILED (attempt 1)
Error: Dependency "egl" not found
Cause: wlroots 0.19.2 requires EGL, which comes from the libglvnd package.
Fix: Added `libglvnd` to wlroots makedepends.
## Step 7: Rebuild wlroots — FAILED (attempt 2)
Error: xwayland/meson.build:23:11: ERROR: Neither a subproject directory nor a xserver.wrap file was found.
Cause: -Dxwayland=enabled was set but xwayland is not available (Ironforge is Wayland-only).
Fix: Changed -Dxwayland=enabled to -Dxwayland=disabled in wlroots forge.yaml.
## Step 8: Rebuild wlroots — SUCCESS
wlroots 0.19.2 built and published.
Summary: disabled libliftoff (optional, not available), disabled xwayland.
## Step 9: Build river — FAILED (attempt 2)
Error: 'wlr/util/log.h' file not found
'wlr/config.h' file not found
'wlr/version.h' file not found
libinput_device_config_3fg_drag_get_finger_count undefined
LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_TIMEOUT undefined
Cause:
1. wlroots 0.19 installs headers to /usr/include/wlroots-0.19/wlr/ instead of /usr/include/wlr/
The zig build system wasn't propagating the pkg-config include path to C source files.
2. River uses newer libinput APIs not in 1.26.2.
Fix 1: Added patch step to symlink /usr/include/wlr -> /usr/include/wlroots-0.19/wlr
Fix 2: Added libglvnd to river makedepends
Fix 3: Update libinput (next step)
## Step 10: Update and rebuild libinput
Updated from 1.26.2 to 1.30.1.
Source: https://gitlab.freedesktop.org/libinput/libinput/-/archive/1.30.1/libinput-1.30.1.tar.bz2
Checksum: sha256:c5169568f337c4a3bda927c42afef3a9d4c891e48a405cba39d57cb4631b9fb0
libinput 1.30.1 built and published — SUCCESS.
## Step 11: Build river — FAILED (attempt 3)
Error: undefined symbol: xkb_keymap_mod_get_mask
undefined symbol: xkb_keymap_get_as_string2
Cause: River uses newer xkbcommon APIs not in 1.7.0.
## Step 12: Update and rebuild xkbcommon — FAILED (attempt 1)
Updated from 1.7.0 to 1.13.1.
Source: https://github.com/xkbcommon/libxkbcommon/archive/refs/tags/xkbcommon-1.13.1.tar.gz
Checksum: sha256:aeb951964c2f7ecc08174cb5517962d157595e9e3f38fc4a130b91dc2f9fec18
Error: pkgconfig.generate keyword argument "variables" empty variable value
Cause: xkeyboard-config pkg-config not available, causing empty extension directory
paths in pkgconfig.generate variables.
Fix: Added explicit meson options:
-Dxkb-config-root=/usr/share/X11/xkb
-Dxkb-config-extra-path=/etc/xkb
-Dxkb-config-unversioned-extensions-path=/usr/share/X11/xkb.d
-Dxkb-config-versioned-extensions-path=/usr/share/X11/xkb.d
## Step 13: Rebuild xkbcommon — SUCCESS
xkbcommon 1.13.1 built and published.
## Step 14: Build river — SUCCESS
River 0.4.0-dev built and published from commit 1a934be.
Binary: ELF 64-bit LSB pie executable, x86-64, dynamically linked, stripped (718 KB)
Man pages: river.1
## Summary of all package changes
### river (pkg/river/forge.yaml)
- Source: river-classic 0.3.13 -> river main 1a934be (0.4.0-dev)
- Added makedepend: libglvnd
- Added patch: ln -s wlroots-0.19/wlr /usr/include/wlr
### wayland-protocols (pkg/wayland-protocols/forge.yaml)
- Added makedepend: wayland (for wayland-scanner)
### wlroots (pkg/wlroots/forge.yaml)
- Added makedepend: libglvnd (for EGL)
- Changed: -Dxwayland=enabled -> -Dxwayland=disabled
### libinput (pkg/libinput/forge.yaml)
- Updated: 1.26.2 -> 1.30.1
### xkbcommon (pkg/xkbcommon/forge.yaml)
- Updated: 1.7.0 -> 1.13.1
- Source URL changed to GitHub archive
- Added meson options for xkb config paths
### Dependency chain rebuilt
wayland-protocols 1.41 -> wlroots 0.19.2 -> river 0.4.0-dev
libinput 1.30.1 -> river 0.4.0-dev
xkbcommon 1.13.1 -> wlroots 0.19.2 -> river 0.4.0-dev
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment