Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package waylock for openSUSE:Factory checked in at 2023-10-24 20:08:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/waylock (Old) and /work/SRC/openSUSE:Factory/.waylock.new.24901 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "waylock" Tue Oct 24 20:08:16 2023 rev:3 rq:1119756 version:0.6.2 Changes: -------- --- /work/SRC/openSUSE:Factory/waylock/waylock.changes 2023-02-14 16:47:07.339044868 +0100 +++ /work/SRC/openSUSE:Factory/.waylock.new.24901/waylock.changes 2023-10-24 20:08:21.748536053 +0200 @@ -1,0 +2,13 @@ +Sun Oct 22 11:41:06 UTC 2023 - Soc Virnyl Estela <[email protected]> + +- update 0001-update-zig-version.patch + * update to support zig version 0.11.0 +- Add zig-wayland.tar.gz and zig-xkbcommon.tar.gz + +------------------------------------------------------------------- +Sat Oct 21 06:57:58 UTC 2023 - Soc Virnyl Estela <[email protected]> + +- Add 0001-update-zig-version.patch + * update to support zig version 0.11.0 + +------------------------------------------------------------------- New: ---- 0001-update-zig-version.patch zig-wayland.tar.gz zig-xkbcommon.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ waylock.spec ++++++ --- /var/tmp/diff_new_pack.WL4zCn/_old 2023-10-24 20:08:22.552565284 +0200 +++ /var/tmp/diff_new_pack.WL4zCn/_new 2023-10-24 20:08:22.556565430 +0200 @@ -26,6 +26,9 @@ Source1: waylock.pamd Source2: https://isaacfreund.com/public_key.txt#/%{name}.keyring Source3: https://github.com/ifreund/waylock/releases/download/v%{version}/waylock-%{version}.tar.gz.sig +Source4: https://github.com/ifreund/zig-wayland/archive/b9c6fcb8cab3a85c5583ef371055cb589b1e7b18.tar.gz#/zig-wayland.tar.gz +Source5: https://github.com/ifreund/zig-xkbcommon/archive/e93ceb0436c66a7e4c727fdb59020e889519e489.tar.gz#/zig-xkbcommon.tar.gz +Patch1: https://github.com/ifreund/waylock/pull/64/commits/c7a3f2678ed2a31932ee1aaea899f253c4800aba.patch#/0001-update-zig-version.patch BuildRequires: pkgconfig BuildRequires: scdoc >= 1.9.2 BuildRequires: zig @@ -43,7 +46,16 @@ cause the session to be unlocked.) %prep -%autosetup -n %{name}-%{version} -p1 +%setup -n %{name}-%{version} +sed -i 's/0.6.2/0.7.0-dev/g' build.zig +%patch1 -p1 + +# Update deps +rm -rv ./deps/zig-wayland/* +rm -rv ./deps/zig-xkbcommon/* +tar -xvf %{SOURCE4} --strip-components=1 -C ./deps/zig-wayland/ +tar -xvf %{SOURCE5} --strip-components=1 -C ./deps/zig-xkbcommon/ + # Replace with configuration that works in openSUSE cp %{SOURCE1} ./pam.d/waylock @@ -52,6 +64,7 @@ %install %zig_install -Dpie + # Removes rpmlint error: filelist-forbidden-move-to-usr error mkdir -p %{buildroot}%{_pam_vendordir} mv %{buildroot}%{_sysconfdir}/pam.d/%{name} %{buildroot}%{_pam_vendordir}/%{name} ++++++ 0001-update-zig-version.patch ++++++ >From c7a3f2678ed2a31932ee1aaea899f253c4800aba Mon Sep 17 00:00:00 2001 From: Soc Virnyl Estela <[email protected]> Date: Sat, 21 Oct 2023 14:38:09 +0800 Subject: [PATCH] update to zig 0.11.0 Signed-off-by: Soc Virnyl Estela <[email protected]> --- build.zig | 61 +++++++++++++++++++++++++++++--------------------- src/Lock.zig | 22 +++++++++--------- src/Output.zig | 6 ++--- src/Seat.zig | 6 ++--- src/auth.zig | 10 ++++----- src/flags.zig | 12 +++++----- src/main.zig | 2 +- 7 files changed, 65 insertions(+), 54 deletions(-) diff --git a/build.zig b/build.zig index baac039..ea534d9 100644 --- a/build.zig +++ b/build.zig @@ -1,10 +1,11 @@ const std = @import("std"); const assert = std.debug.assert; -const zbs = std.build; +const Build = std.Build; +const Step = std.Build.Step; const fs = std.fs; const mem = std.mem; -const ScanProtocolsStep = @import("deps/zig-wayland/build.zig").ScanProtocolsStep; +const Scanner = @import("deps/zig-wayland/build.zig").Scanner; /// While a waylock release is in development, this string should contain the version in /// development with the "-dev" suffix. @@ -12,9 +13,9 @@ const ScanProtocolsStep = @import("deps/zig-wayland/build.zig").ScanProtocolsSte /// Directly after the tagged commit, the version should be bumped and the "-dev" suffix added. const version = "0.7.0-dev"; -pub fn build(b: *zbs.Builder) !void { +pub fn build(b: *Build) !void { const target = b.standardTargetOptions(.{}); - const mode = b.standardReleaseOptions(); + const optimize = b.standardOptimizeOption(.{}); const strip = b.option(bool, "strip", "Omit debug information") orelse false; const pie = b.option(bool, "pie", "Build a Position Independent Executable") orelse false; @@ -24,7 +25,7 @@ pub fn build(b: *zbs.Builder) !void { "man-pages", "Set to true to build man pages. Requires scdoc. Defaults to true if scdoc is found.", ) orelse scdoc_found: { - _ = b.findProgram(&[_][]const u8{"scdoc"}, &[_][]const u8{}) catch |err| switch (err) { + _ = b.findProgram(&.{"scdoc"}, &.{}) catch |err| switch (err) { error.FileNotFound => break :scdoc_found false, else => return err, }; @@ -32,8 +33,17 @@ pub fn build(b: *zbs.Builder) !void { }; if (man_pages) { - const scdoc_step = try ScdocStep.create(b); - try scdoc_step.install(); + inline for (.{"waylock"}) |page| { + // Taken from river. The rationale is of the following: + // Workaround for https://github.com/ziglang/zig/issues/16369 + // Even passing a buffer to std.Build.Step.Run appears to be racy and occasionally deadlocks. + const scdoc = b.addSystemCommand(&.{ "sh", "-c", "scdoc < doc/" ++ page ++ ".1.scd" }); + + scdoc.addFileArg(.{ .path = "doc/" ++ page ++ ".1.scd" }); + + const stdout = scdoc.captureStdOut(); + b.getInstallStep().dependOn(&b.addInstallFile(stdout, "share/man/man1/" ++ page ++ ".1").step); + } } const install_prefix = try std.fs.path.resolve(b.allocator, &[_][]const u8{b.install_prefix}); @@ -48,12 +58,12 @@ pub fn build(b: *zbs.Builder) !void { var ret: u8 = undefined; const git_describe_long = b.execAllowFail( - &[_][]const u8{ "git", "-C", b.build_root, "describe", "--long" }, + &.{ "git", "-C", b.build_root.path orelse ".", "describe", "--long" }, &ret, .Inherit, ) catch break :blk version; - var it = mem.split(u8, mem.trim(u8, git_describe_long, &std.ascii.spaces), "-"); + var it = mem.split(u8, mem.trim(u8, git_describe_long, &std.ascii.whitespace), "-"); _ = it.next().?; // previous tag const commit_count = it.next().?; const commit_hash = it.next().?; @@ -73,7 +83,7 @@ pub fn build(b: *zbs.Builder) !void { const options = b.addOptions(); options.addOption([]const u8, "version", full_version); - const scanner = ScanProtocolsStep.create(b); + const scanner = Scanner.create(b, .{}); scanner.addSystemProtocol("staging/ext-session-lock/ext-session-lock-v1.xml"); scanner.addSystemProtocol("staging/single-pixel-buffer/single-pixel-buffer-v1.xml"); scanner.addSystemProtocol("stable/viewporter/viewporter.xml"); @@ -85,17 +95,18 @@ pub fn build(b: *zbs.Builder) !void { scanner.generate("wp_viewporter", 1); scanner.generate("wp_single_pixel_buffer_manager_v1", 1); - const waylock = b.addExecutable("waylock", "src/main.zig"); - waylock.setTarget(target); - waylock.setBuildMode(mode); + const waylock = b.addExecutable(.{ + .name = "waylock", + .root_source_file = .{ .path = "src/main.zig" }, + .target = target, + .optimize = optimize, + }); waylock.addOptions("build_options", options); - waylock.addPackage(.{ - .name = "wayland", - .source = .{ .generated = &scanner.result }, - }); - waylock.step.dependOn(&scanner.step); - waylock.addPackagePath("xkbcommon", "deps/zig-xkbcommon/src/xkbcommon.zig"); + const wayland = b.createModule(.{ .source_file = scanner.result }); + waylock.addModule("wayland", wayland); + const xkbcommon = b.createModule(.{ .source_file = .{ .path = "deps/zig-xkbcommon/src/xkbcommon.zig" } }); + waylock.addModule("xkbcommon", xkbcommon); waylock.linkLibC(); waylock.linkSystemLibrary("wayland-client"); waylock.linkSystemLibrary("xkbcommon"); @@ -105,23 +116,23 @@ pub fn build(b: *zbs.Builder) !void { waylock.strip = strip; waylock.pie = pie; - waylock.install(); + b.installArtifact(waylock); } const ScdocStep = struct { - builder: *zbs.Builder, - step: zbs.Step, + builder: *Build, + step: *Step, - fn create(builder: *zbs.Builder) !*ScdocStep { + fn create(builder: *Build) !*ScdocStep { const self = try builder.allocator.create(ScdocStep); self.* = .{ .builder = builder, - .step = zbs.Step.init(.custom, "Generate man pages", builder.allocator, make), + .step = Step.init(.custom, "Generate man pages", builder.allocator, make), }; return self; } - fn make(step: *zbs.Step) !void { + fn make(step: *Step) !void { const self = @fieldParentPtr(ScdocStep, "step", step); _ = try self.builder.exec( &[_][]const u8{ "sh", "-c", "scdoc < doc/waylock.1.scd > doc/waylock.1" }, diff --git a/src/Lock.zig b/src/Lock.zig index a54d038..fa4bf9f 100644 --- a/src/Lock.zig +++ b/src/Lock.zig @@ -172,12 +172,12 @@ pub fn run(options: Options) void { fatal("failed to read response from child authentication process: {s}", .{@errorName(err)}); }; switch (byte) { - @boolToInt(true) => { + @intFromBool(true) => { lock.session_lock.?.unlockAndDestroy(); lock.session_lock = null; lock.state = .exiting; }, - @boolToInt(false) => { + @intFromBool(false) => { lock.set_color(.fail); }, else => { @@ -278,15 +278,15 @@ fn registry_listener(registry: *wl.Registry, event: wl.Registry.Event, lock: *Lo fn registry_event(lock: *Lock, registry: *wl.Registry, event: wl.Registry.Event) !void { switch (event) { .global => |ev| { - if (std.cstr.cmp(ev.interface, wl.Compositor.getInterface().name) == 0) { + if (mem.orderZ(u8, ev.interface, wl.Compositor.getInterface().name) == .eq) { // Version 4 required for wl_surface.damage_buffer if (ev.version < 4) { fatal("advertised wl_compositor version too old, version 4 required", .{}); } lock.compositor = try registry.bind(ev.name, wl.Compositor, 4); - } else if (std.cstr.cmp(ev.interface, ext.SessionLockManagerV1.getInterface().name) == 0) { + } else if (mem.orderZ(u8, ev.interface, ext.SessionLockManagerV1.getInterface().name) == .eq) { lock.session_lock_manager = try registry.bind(ev.name, ext.SessionLockManagerV1, 1); - } else if (std.cstr.cmp(ev.interface, wl.Output.getInterface().name) == 0) { + } else if (mem.orderZ(u8, ev.interface, wl.Output.getInterface().name) == .eq) { // Version 3 required for wl_output.release if (ev.version < 3) { fatal("advertised wl_output version too old, version 3 required", .{}); @@ -308,7 +308,7 @@ fn registry_event(lock: *Lock, registry: *wl.Registry, event: wl.Registry.Event) .initializing, .exiting => {}, .locking, .locked => try node.data.create_surface(), } - } else if (std.cstr.cmp(ev.interface, wl.Seat.getInterface().name) == 0) { + } else if (mem.orderZ(u8, ev.interface, wl.Seat.getInterface().name) == .eq) { // Version 5 required for wl_seat.release if (ev.version < 5) { fatal("advertised wl_seat version too old, version 5 required.", .{}); @@ -321,9 +321,9 @@ fn registry_event(lock: *Lock, registry: *wl.Registry, event: wl.Registry.Event) node.data.init(lock, ev.name, wl_seat); lock.seats.prepend(node); - } else if (std.cstr.cmp(ev.interface, wp.Viewporter.getInterface().name) == 0) { + } else if (mem.orderZ(u8, ev.interface, wp.Viewporter.getInterface().name) == .eq) { lock.viewporter = try registry.bind(ev.name, wp.Viewporter, 1); - } else if (std.cstr.cmp(ev.interface, wp.SinglePixelBufferManagerV1.getInterface().name) == 0) { + } else if (mem.orderZ(u8, ev.interface, wp.SinglePixelBufferManagerV1.getInterface().name) == .eq) { lock.buffer_manager = try registry.bind(ev.name, wp.SinglePixelBufferManagerV1, 1); } }, @@ -389,7 +389,7 @@ pub fn submit_password(lock: *Lock) void { fn send_password_to_auth(lock: *Lock) !void { defer lock.password.clear(); const writer = lock.auth_connection.writer(); - try writer.writeIntNative(u32, @intCast(u32, lock.password.buffer.len)); + try writer.writeIntNative(u32, @as(u32, @intCast(lock.password.buffer.len))); try writer.writeAll(lock.password.buffer); } @@ -400,7 +400,7 @@ pub fn set_color(lock: *Lock, color: Color) void { var it = lock.outputs.first; while (it) |node| : (it = node.next) { - node.data.attach_buffer(lock.buffers[@enumToInt(lock.color)]); + node.data.attach_buffer(lock.buffers[@intFromEnum(lock.color)]); } } @@ -424,7 +424,7 @@ fn create_buffers( var buffers: [3]*wl.Buffer = undefined; for ([_]Color{ .init, .input, .fail }) |color| { const rgb = options.rgb(color); - buffers[@enumToInt(color)] = try buffer_manager.createU32RgbaBuffer( + buffers[@intFromEnum(color)] = try buffer_manager.createU32RgbaBuffer( @as(u32, (rgb >> 16) & 0xff) * (0xffff_ffff / 0xff), @as(u32, (rgb >> 8) & 0xff) * (0xffff_ffff / 0xff), @as(u32, (rgb >> 0) & 0xff) * (0xffff_ffff / 0xff), diff --git a/src/Output.zig b/src/Output.zig index ae0b4b1..d3c5429 100644 --- a/src/Output.zig +++ b/src/Output.zig @@ -56,10 +56,10 @@ fn lock_surface_listener( const lock = output.lock; switch (event) { .configure => |ev| { - output.width = @truncate(u31, ev.width); - output.height = @truncate(u31, ev.height); + output.width = @as(u31, @truncate(ev.width)); + output.height = @as(u31, @truncate(ev.height)); output.lock_surface.?.ackConfigure(ev.serial); - output.attach_buffer(lock.buffers[@enumToInt(lock.color)]); + output.attach_buffer(lock.buffers[@intFromEnum(lock.color)]); }, } } diff --git a/src/Seat.zig b/src/Seat.zig index e7bcc38..c7b1b44 100644 --- a/src/Seat.zig +++ b/src/Seat.zig @@ -95,7 +95,7 @@ fn keyboard_listener(_: *wl.Keyboard, event: wl.Keyboard.Event, seat: *Seat) voi defer os.close(ev.fd); if (ev.format != .xkb_v1) { - log.err("unsupported keymap format {d}", .{@enumToInt(ev.format)}); + log.err("unsupported keymap format {d}", .{@intFromEnum(ev.format)}); return; } @@ -155,7 +155,7 @@ fn keyboard_listener(_: *wl.Keyboard, event: wl.Keyboard.Event, seat: *Seat) voi const keysym = xkb_state.keyGetOneSym(keycode); if (keysym == .NoSymbol) return; - switch (@enumToInt(keysym)) { + switch (@intFromEnum(keysym)) { xkb.Keysym.Return => { // Ignore the attempt to submit the password if the locked event has not yet // been received. This should be pretty much impossible to happen in practice @@ -176,7 +176,7 @@ fn keyboard_listener(_: *wl.Keyboard, event: wl.Keyboard.Event, seat: *Seat) voi const Component = xkb.State.Component; const ctrl_active = xkb_state.modNameIsActive( xkb.names.mod.ctrl, - @intToEnum(Component, Component.mods_depressed | Component.mods_latched), + @as(Component, @enumFromInt(Component.mods_depressed | Component.mods_latched)), ) == 1; if (ctrl_active) { diff --git a/src/auth.zig b/src/auth.zig index b5643c0..299ce26 100644 --- a/src/auth.zig +++ b/src/auth.zig @@ -91,7 +91,7 @@ pub fn run(conn: Connection) noreturn { if (auth_result == .success) { log.debug("PAM authentication succeeded", .{}); - conn.writer().writeByte(@boolToInt(true)) catch |err| { + conn.writer().writeByte(@intFromBool(true)) catch |err| { log.err("failed to notify parent of success: {s}", .{@errorName(err)}); os.exit(1); }; @@ -115,7 +115,7 @@ pub fn run(conn: Connection) noreturn { } else { log.err("PAM authentication failed: {s}", .{auth_result.description()}); - conn.writer().writeByte(@boolToInt(false)) catch |err| { + conn.writer().writeByte(@intFromBool(false)) catch |err| { log.err("failed to notify parent of failure: {s}", .{@errorName(err)}); os.exit(1); }; @@ -148,15 +148,15 @@ fn converse( ) callconv(.C) pam.Result { const ally = std.heap.raw_c_allocator; - const count = @intCast(usize, num_msg); + const count = @as(usize, @intCast(num_msg)); const responses = ally.alloc(pam.Response, count) catch { return .buf_err; }; - mem.set(pam.Response, responses, .{}); + @memset(responses, .{}); resp.* = responses.ptr; - for (msg[0..count]) |message, i| { + for (msg[0..count], 0..) |message, i| { switch (message.msg_style) { .prompt_echo_off => { responses[i] = .{ diff --git a/src/flags.zig b/src/flags.zig index aa162aa..de3c600 100644 --- a/src/flags.zig +++ b/src/flags.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const cstr = std.cstr; +const mem = std.mem; pub const Flag = struct { name: [*:0]const u8, @@ -24,7 +24,7 @@ pub fn ParseResult(comptime flags: []const Flag) type { flag_data: [flags.len]FlagData = blk: { // Init all flags to false/null var flag_data: [flags.len]FlagData = undefined; - inline for (flags) |flag, i| { + inline for (flags, 0..) |flag, i| { flag_data[i] = switch (flag.kind) { .boolean => .{ .name = flag.name, @@ -41,14 +41,14 @@ pub fn ParseResult(comptime flags: []const Flag) type { pub fn boolFlag(self: Self, flag_name: [*:0]const u8) bool { for (self.flag_data) |flag_data| { - if (cstr.cmp(flag_data.name, flag_name) == 0) return flag_data.value.boolean; + if (mem.orderZ(u8, flag_data.name, flag_name) == .eq) return flag_data.value.boolean; } unreachable; // Invalid flag_name } pub fn argFlag(self: Self, flag_name: [*:0]const u8) ?[:0]const u8 { for (self.flag_data) |flag_data| { - if (cstr.cmp(flag_data.name, flag_name) == 0) { + if (mem.orderZ(u8, flag_data.name, flag_name) == .eq) { return std.mem.span(flag_data.value.arg); } } @@ -63,8 +63,8 @@ pub fn parse(args: [][*:0]const u8, comptime flags: []const Flag) !ParseResult(f var arg_idx: usize = 0; while (arg_idx < args.len) : (arg_idx += 1) { var parsed_flag = false; - inline for (flags) |flag, flag_idx| { - if (cstr.cmp(flag.name, args[arg_idx]) == 0) { + inline for (flags, 0..) |flag, flag_idx| { + if (mem.orderZ(u8, flag.name, args[arg_idx]) == .eq) { switch (flag.kind) { .boolean => ret.flag_data[flag_idx].value.boolean = true, .arg => { diff --git a/src/main.zig b/src/main.zig index fde9c73..8fc163d 100644 --- a/src/main.zig +++ b/src/main.zig @@ -111,7 +111,7 @@ pub fn log( // waylock is small enough that we don't need scopes comptime assert(scope == .default); - if (@enumToInt(level) > @enumToInt(runtime_log_level)) return; + if (@intFromEnum(level) > @intFromEnum(runtime_log_level)) return; const stderr = io.getStdErr().writer(); stderr.print(level.asText() ++ ": " ++ format ++ "\n", args) catch {};
