From 5cdd6af7386e9d8cb60e854d17cc79c1ac55d3f4 Mon Sep 17 00:00:00 2001 From: AnErrupTion Date: Wed, 3 Jul 2024 09:52:00 +0200 Subject: [PATCH 1/6] Start Ly v1.0.1 development cycle Signed-off-by: AnErrupTion --- build.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.zig b/build.zig index 65c06a2..1d747f1 100644 --- a/build.zig +++ b/build.zig @@ -1,6 +1,6 @@ const std = @import("std"); -const ly_version = std.SemanticVersion{ .major = 1, .minor = 0, .patch = 0 }; +const ly_version = std.SemanticVersion{ .major = 1, .minor = 0, .patch = 1 }; var dest_directory: []const u8 = undefined; var data_directory: []const u8 = undefined; var exe_name: []const u8 = undefined; From 53d252232f465e7b8cb099ae2678ea195c299827 Mon Sep 17 00:00:00 2001 From: AnErrupTion Date: Wed, 3 Jul 2024 09:52:24 +0200 Subject: [PATCH 2/6] Backport: Fix dest_directory embedded in binary Signed-off-by: AnErrupTion --- build.zig | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/build.zig b/build.zig index 1d747f1..adcbfcc 100644 --- a/build.zig +++ b/build.zig @@ -6,13 +6,15 @@ var data_directory: []const u8 = undefined; var exe_name: []const u8 = undefined; pub fn build(b: *std.Build) !void { - dest_directory = b.option([]const u8, "dest_directory", "Specify a dest directory for installation") orelse ""; - data_directory = b.option([]const u8, "data_directory", "Specify a default data directory (default is /etc/ly)") orelse "/etc/ly"; - data_directory = try std.fs.path.join(b.allocator, &[_][]const u8{ dest_directory, data_directory }); + dest_directory = b.option([]const u8, "dest_directory", "Specify a destination directory for installation") orelse ""; + data_directory = b.option([]const u8, "data_directory", "Specify a default data directory (default is /etc/ly). This path gets embedded into the binary") orelse "/etc/ly"; exe_name = b.option([]const u8, "name", "Specify installed executable file name (default is ly)") orelse "ly"; + const bin_directory = try b.allocator.dupe(u8, data_directory); + data_directory = try std.fs.path.join(b.allocator, &[_][]const u8{ dest_directory, data_directory }); + const build_options = b.addOptions(); - build_options.addOption([]const u8, "data_directory", data_directory); + build_options.addOption([]const u8, "data_directory", bin_directory); const version_str = try getVersionStr(b, "ly", ly_version); @@ -113,7 +115,7 @@ pub fn ServiceInstaller(comptime init_system: InitSystem) type { .Openrc => { const service_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, "/etc/init.d" }); std.fs.cwd().makePath(service_path) catch {}; - var service_dir = std.fs.openDirAbsolute(service_path, .{}) catch unreachable; + var service_dir = std.fs.cwd().openDir(service_path, .{}) catch unreachable; defer service_dir.close(); try std.fs.cwd().copyFile("res/ly-openrc", service_dir, exe_name, .{ .override_mode = 755 }); @@ -121,7 +123,7 @@ pub fn ServiceInstaller(comptime init_system: InitSystem) type { .Runit => { const service_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, "/etc/sv/ly" }); std.fs.cwd().makePath(service_path) catch {}; - var service_dir = std.fs.openDirAbsolute(service_path, .{}) catch unreachable; + var service_dir = std.fs.cwd().openDir(service_path, .{}) catch unreachable; defer service_dir.close(); try std.fs.cwd().copyFile("res/ly-runit-service/conf", service_dir, "conf", .{}); @@ -131,7 +133,7 @@ pub fn ServiceInstaller(comptime init_system: InitSystem) type { .Systemd => { const service_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, "/usr/lib/systemd/system" }); std.fs.cwd().makePath(service_path) catch {}; - var service_dir = std.fs.openDirAbsolute(service_path, .{}) catch unreachable; + var service_dir = std.fs.cwd().openDir(service_path, .{}) catch unreachable; defer service_dir.close(); try std.fs.cwd().copyFile("res/ly.service", service_dir, "ly.service", .{ .override_mode = 644 }); @@ -161,14 +163,14 @@ fn install_ly(allocator: std.mem.Allocator, install_config: bool) !void { }; } - var executable_dir = std.fs.openDirAbsolute(exe_path, .{}) catch unreachable; + var executable_dir = std.fs.cwd().openDir(exe_path, .{}) catch unreachable; defer executable_dir.close(); try current_dir.copyFile("zig-out/bin/ly", executable_dir, exe_name, .{}); } { - var config_dir = std.fs.openDirAbsolute(data_directory, .{}) catch unreachable; + var config_dir = std.fs.cwd().openDir(data_directory, .{}) catch unreachable; defer config_dir.close(); if (install_config) { @@ -179,7 +181,7 @@ fn install_ly(allocator: std.mem.Allocator, install_config: bool) !void { } { - var lang_dir = std.fs.openDirAbsolute(lang_path, .{}) catch unreachable; + var lang_dir = std.fs.cwd().openDir(lang_path, .{}) catch unreachable; defer lang_dir.close(); try current_dir.copyFile("res/lang/cat.ini", lang_dir, "cat.ini", .{}); @@ -208,7 +210,7 @@ fn install_ly(allocator: std.mem.Allocator, install_config: bool) !void { }; } - var pam_dir = std.fs.openDirAbsolute(pam_path, .{}) catch unreachable; + var pam_dir = std.fs.cwd().openDir(pam_path, .{}) catch unreachable; defer pam_dir.close(); try current_dir.copyFile("res/pam.d/ly", pam_dir, "ly", .{ .override_mode = 644 }); @@ -217,27 +219,27 @@ fn install_ly(allocator: std.mem.Allocator, install_config: bool) !void { pub fn uninstallall(step: *std.Build.Step, progress: *std.Progress.Node) !void { _ = progress; - try std.fs.deleteTreeAbsolute(data_directory); + try std.fs.cwd().deleteTree(data_directory); const allocator = step.owner.allocator; const exe_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, "/usr/bin/", exe_name }); - try std.fs.deleteFileAbsolute(exe_path); + try std.fs.cwd().deleteFile(exe_path); const pam_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, "/etc/pam.d/ly" }); - try std.fs.deleteFileAbsolute(pam_path); + try std.fs.cwd().deleteFile(pam_path); const systemd_service_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, "/usr/lib/systemd/system/ly.service" }); - std.fs.deleteFileAbsolute(systemd_service_path) catch { + std.fs.cwd().deleteFile(systemd_service_path) catch { std.debug.print("warn: systemd service not found.\n", .{}); }; const openrc_service_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, "/etc/init.d/ly" }); - std.fs.deleteFileAbsolute(openrc_service_path) catch { + std.fs.cwd().deleteFile(openrc_service_path) catch { std.debug.print("warn: openrc service not found.\n", .{}); }; const runit_service_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, "/etc/sv/ly" }); - std.fs.deleteTreeAbsolute(runit_service_path) catch { + std.fs.cwd().deleteTree(runit_service_path) catch { std.debug.print("warn: runit service not found.\n", .{}); }; } From 6b7e7be387de486a7f5a314a35d3f798c18355bd Mon Sep 17 00:00:00 2001 From: AnErrupTion Date: Fri, 26 Jul 2024 19:32:30 +0200 Subject: [PATCH 3/6] Backport: Use octal prefix for file modes in build.zig Signed-off-by: AnErrupTion --- build.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.zig b/build.zig index adcbfcc..6cbe1a4 100644 --- a/build.zig +++ b/build.zig @@ -118,7 +118,7 @@ pub fn ServiceInstaller(comptime init_system: InitSystem) type { var service_dir = std.fs.cwd().openDir(service_path, .{}) catch unreachable; defer service_dir.close(); - try std.fs.cwd().copyFile("res/ly-openrc", service_dir, exe_name, .{ .override_mode = 755 }); + try std.fs.cwd().copyFile("res/ly-openrc", service_dir, exe_name, .{ .override_mode = 0o755 }); }, .Runit => { const service_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, "/etc/sv/ly" }); @@ -136,7 +136,7 @@ pub fn ServiceInstaller(comptime init_system: InitSystem) type { var service_dir = std.fs.cwd().openDir(service_path, .{}) catch unreachable; defer service_dir.close(); - try std.fs.cwd().copyFile("res/ly.service", service_dir, "ly.service", .{ .override_mode = 644 }); + try std.fs.cwd().copyFile("res/ly.service", service_dir, "ly.service", .{ .override_mode = 0o644 }); }, } } @@ -213,7 +213,7 @@ fn install_ly(allocator: std.mem.Allocator, install_config: bool) !void { var pam_dir = std.fs.cwd().openDir(pam_path, .{}) catch unreachable; defer pam_dir.close(); - try current_dir.copyFile("res/pam.d/ly", pam_dir, "ly", .{ .override_mode = 644 }); + try current_dir.copyFile("res/pam.d/ly", pam_dir, "ly", .{ .override_mode = 0o644 }); } } From 8e534c7bcd1b9130eb26a4c86edcd746a91d0c21 Mon Sep 17 00:00:00 2001 From: AnErrupTion Date: Fri, 26 Jul 2024 19:34:12 +0200 Subject: [PATCH 4/6] Backport: Fix incorrect shebang in xsetup.sh Signed-off-by: AnErrupTion --- res/xsetup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/xsetup.sh b/res/xsetup.sh index 487a078..9418530 100755 --- a/res/xsetup.sh +++ b/res/xsetup.sh @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/sh # Xsession - run as user # Copyright (C) 2016 Pier Luigi Fiorini From 391104cf342c0820e28d92baf1f2ed097b53379c Mon Sep 17 00:00:00 2001 From: AnErrupTion Date: Fri, 26 Jul 2024 19:34:46 +0200 Subject: [PATCH 5/6] Backport: Fix documentation issue about DOOM animation Signed-off-by: AnErrupTion --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 1402122..b323c0d 100644 --- a/readme.md +++ b/readme.md @@ -132,7 +132,7 @@ then you have to disable getty, so it doesn't respawn on top of ly # ln -s /etc/sv/ly /var/service/ ``` -By default, ly will run on tty2. To change the tty it must be set in `/etc/ly/config.ini` +By default, ly will run on tty2. To change the tty it must be set in `/etc/ly/config.ini` You should as well disable your existing display manager service if needed, e.g.: @@ -196,7 +196,7 @@ Take a look at your .xsession if X doesn't start, as it can interfere ## PSX DOOM fire animation To enable the famous PSX DOOM fire described by [Fabien Sanglard](http://fabiensanglard.net/doom_fire_psx/index.html), -just uncomment `animate = true` in `/etc/ly/config.ini`. You may also +just set `animation = doom` in `/etc/ly/config.ini`. You may also disable the main box borders with `hide_borders = true`. ## Additional Information From a042749a72bc0765b18e16bc7b6195251cc085b3 Mon Sep 17 00:00:00 2001 From: AnErrupTion Date: Fri, 26 Jul 2024 21:59:21 +0200 Subject: [PATCH 6/6] Backport: Make runit run and finish scripts executable Signed-off-by: AnErrupTion --- build.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.zig b/build.zig index 6cbe1a4..8535cfb 100644 --- a/build.zig +++ b/build.zig @@ -127,8 +127,8 @@ pub fn ServiceInstaller(comptime init_system: InitSystem) type { defer service_dir.close(); try std.fs.cwd().copyFile("res/ly-runit-service/conf", service_dir, "conf", .{}); - try std.fs.cwd().copyFile("res/ly-runit-service/finish", service_dir, "finish", .{}); - try std.fs.cwd().copyFile("res/ly-runit-service/run", service_dir, "run", .{}); + try std.fs.cwd().copyFile("res/ly-runit-service/finish", service_dir, "finish", .{ .override_mode = 0o755 }); + try std.fs.cwd().copyFile("res/ly-runit-service/run", service_dir, "run", .{ .override_mode = 0o755 }); }, .Systemd => { const service_path = try std.fs.path.join(allocator, &[_][]const u8{ dest_directory, "/usr/lib/systemd/system" });