From da75271d1db99ec2c5785e9bba4c209f8408ebc4 Mon Sep 17 00:00:00 2001
From: LN Liberda <lauren@selfisekai.rocks>
Date: Sun, 9 Mar 2025 22:15:16 +0100
Subject: [PATCH river-bedload] Update to Zig 0.14

---
 build.zig        |  7 ++-----
 build.zig.zon    |  9 +++++----
 common/flags.zig |  6 +++---
 src/Backend.zig  | 14 +++++++-------
 src/main.zig     |  2 +-
 5 files changed, 18 insertions(+), 20 deletions(-)

diff --git a/build.zig b/build.zig
index 2718840..138b411 100644
--- a/build.zig
+++ b/build.zig
@@ -1,6 +1,6 @@
 const std = @import("std");
 
-const Scanner = @import("zig-wayland").Scanner;
+const Scanner = @import("wayland").Scanner;
 
 pub fn build(b: *std.Build) void {
     const target = b.standardTargetOptions(.{});
@@ -17,7 +17,7 @@ pub fn build(b: *std.Build) void {
 
     const scanner = Scanner.create(b, .{});
 
-    scanner.addCustomProtocol("protocol/river-status-unstable-v1.xml");
+    scanner.addCustomProtocol(b.path("protocol/river-status-unstable-v1.xml"));
 
     scanner.generate("wl_compositor", 4);
     scanner.generate("wl_shm", 1);
@@ -43,9 +43,6 @@ pub fn build(b: *std.Build) void {
 
     exe.root_module.addImport("flags", flags);
 
-    // TODO: remove when https://github.com/ziglang/zig/issues/131 is implemented
-    scanner.addCSource(exe);
-
     exe.pie = pie;
 
     b.installArtifact(exe);
diff --git a/build.zig.zon b/build.zig.zon
index 8c4bf41..4752118 100644
--- a/build.zig.zon
+++ b/build.zig.zon
@@ -1,11 +1,12 @@
 .{
-    .name = "river-bedload",
+    .name = .river_bedload,
     .version = "0.1.1",
     .dependencies = .{
-        .@"zig-wayland" = .{
-            .url = "https://codeberg.org/ifreund/zig-wayland/archive/v0.2.0.tar.gz",
-            .hash = "1220687c8c47a48ba285d26a05600f8700d37fc637e223ced3aa8324f3650bf52242",
+        .wayland = .{
+            .url = "https://codeberg.org/ifreund/zig-wayland/archive/v0.3.0.tar.gz",
+            .hash = "wayland-0.3.0-lQa1kjPIAQDmhGYpY-zxiRzQJFHQ2VqhJkQLbKKdt5wl",
         },
     },
     .paths = .{""},
+    .fingerprint = 0x3fcdadc076da625d,
 }
diff --git a/common/flags.zig b/common/flags.zig
index 5b7b552..79adde9 100644
--- a/common/flags.zig
+++ b/common/flags.zig
@@ -42,21 +42,21 @@ pub fn parser(comptime Arg: type, comptime flags: []const Flag) type {
                         .boolean => .{
                             .name = flag.name,
                             .type = bool,
-                            .default_value = &false,
+                            .default_value_ptr = &false,
                             .is_comptime = false,
                             .alignment = @alignOf(bool),
                         },
                         .arg => .{
                             .name = flag.name,
                             .type = ?[:0]const u8,
-                            .default_value = &@as(?[:0]const u8, null),
+                            .default_value_ptr = &@as(?[:0]const u8, null),
                             .is_comptime = false,
                             .alignment = @alignOf(?[:0]const u8),
                         },
                     };
                     fields = fields ++ [_]std.builtin.Type.StructField{field};
                 }
-                break :flags_type @Type(.{ .Struct = .{
+                break :flags_type @Type(.{ .@"struct" = .{
                     .layout = .auto,
                     .fields = fields,
                     .decls = &.{},
diff --git a/src/Backend.zig b/src/Backend.zig
index b16c66d..b63c514 100644
--- a/src/Backend.zig
+++ b/src/Backend.zig
@@ -499,11 +499,11 @@ fn registry_listener(registry: *wl.Registry, event: wl.Registry.Event, backend:
 fn registry_event(backend: *Backend, registry: *wl.Registry, event: wl.Registry.Event) !void {
     switch (event) {
         .global => |ev| {
-            if (mem.orderZ(u8, ev.interface, wl.Compositor.getInterface().name) == .eq) {
+            if (mem.orderZ(u8, ev.interface, wl.Compositor.interface.name) == .eq) {
                 backend.compositor = try registry.bind(ev.name, wl.Compositor, 5);
-            } else if (mem.orderZ(u8, ev.interface, wl.Shm.getInterface().name) == .eq) {
+            } else if (mem.orderZ(u8, ev.interface, wl.Shm.interface.name) == .eq) {
                 backend.shm = try registry.bind(ev.name, wl.Shm, 1);
-            } else if (mem.orderZ(u8, ev.interface, wl.Output.getInterface().name) == .eq) {
+            } else if (mem.orderZ(u8, ev.interface, wl.Output.interface.name) == .eq) {
                 // Version 4 required for wl_output.name.
                 if (ev.version < 4) fatal_version(wl.Output, ev.version, 4);
 
@@ -517,7 +517,7 @@ fn registry_event(backend: *Backend, registry: *wl.Registry, event: wl.Registry.
                 backend.outputs.prepend(node);
 
                 if (backend.river_status_manager != null) try node.data.get_output_status();
-            } else if (mem.orderZ(u8, ev.interface, wl.Seat.getInterface().name) == .eq) {
+            } else if (mem.orderZ(u8, ev.interface, wl.Seat.interface.name) == .eq) {
                 // Version 5 required for wl_seat.release.
                 if (ev.version < 5) fatal_version(wl.Seat, ev.version, 5);
 
@@ -531,7 +531,7 @@ fn registry_event(backend: *Backend, registry: *wl.Registry, event: wl.Registry.
                 backend.seats.prepend(node);
 
                 if (backend.river_status_manager != null) try node.data.get_seat_status();
-            } else if (mem.orderZ(u8, ev.interface, zriver.StatusManagerV1.getInterface().name) == .eq) {
+            } else if (mem.orderZ(u8, ev.interface, zriver.StatusManagerV1.interface.name) == .eq) {
                 backend.river_status_manager = try registry.bind(ev.name, zriver.StatusManagerV1, 4);
             }
         },
@@ -563,10 +563,10 @@ fn fatal_version(comptime Global: type, found_version: u32, req_version: u32) no
     ctx.fatal(
         .backend,
         "the advertised {s} version is too old({d}). Version {d} is required",
-        .{ Global.getInterface().name, found_version, req_version },
+        .{ Global.interface.name, found_version, req_version },
     );
 }
 
 fn fatal_not_advertised(comptime Global: type) noreturn {
-    ctx.fatal(.backend, "{s} not advertised", .{Global.getInterface().name});
+    ctx.fatal(.backend, "{s} not advertised", .{Global.interface.name});
 }
diff --git a/src/main.zig b/src/main.zig
index d666c31..e1fba2a 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -54,7 +54,7 @@ const Context = struct {
 
     pub fn fatal(
         _: Context,
-        comptime scope: @Type(.EnumLiteral),
+        comptime scope: @Type(.enum_literal),
         comptime format: []const u8,
         args: anytype,
     ) noreturn {