authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-05-23 16:49:38-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-05-25 18:54:36-07:00
log626e4104131bd557ec0a3148a7c02a7125605b75
treef8403da8317a695e3c90372c4f5ea235349a9acb
parent4ba2bcbbec68cfc78f1dc0c2031188519bc37a68

Maker: fix regressed dyn lib symlink logic


1 files changed, 10 insertions(+), 8 deletions(-)

lib/compiler/Maker.zig+10-8
...@@ -1998,17 +1998,19 @@ fn installSymLinksInner(...@@ -1998,17 +1998,19 @@ fn installSymLinksInner(
1998) !void {1998) !void {
1999 const io = maker.graph.io;1999 const io = maker.graph.io;
2000 const step = stepByIndex(maker, asking_step_index);2000 const step = stepByIndex(maker, asking_step_index);
2001 const out_basename = Io.Dir.path.basename(output_path.sub_path);
2002
2001 const out_dir = output_path.dirname().?;2003 const out_dir = output_path.dirname().?;
2002 // sym link for libfoo.so.1 to libfoo.so.1.2.3
2003 const major_only_path = try out_dir.join(arena, filename_major_only);2004 const major_only_path = try out_dir.join(arena, filename_major_only);
2004 output_path.root_dir.handle.symLinkAtomic(io, output_path.sub_path, major_only_path.sub_path, .{}) catch |err| {
2005 return step.fail(maker, "unable to symlink {f} -> {f}: {t}", .{ output_path, major_only_path, err });
2006 };
2007 // sym link for libfoo.so to libfoo.so.1
2008 const name_only_path = try out_dir.join(arena, filename_name_only);2005 const name_only_path = try out_dir.join(arena, filename_name_only);
2009 major_only_path.root_dir.handle.symLinkAtomic(io, major_only_path.sub_path, name_only_path.sub_path, .{}) catch |err| {2006
2010 return step.fail(maker, "unable to symlink {f} -> {s}: {t}", .{ name_only_path, filename_major_only, err });2007 // libfoo.so.1 to libfoo.so.1.2.3
2011 };2008 major_only_path.root_dir.handle.symLinkAtomic(io, out_basename, major_only_path.sub_path, .{}) catch |err|
2009 return step.fail(maker, "failed symlinking {f} to {s}: {t}", .{ output_path, out_basename, err });
2010
2011 // libfoo.so to libfoo.so.1
2012 name_only_path.root_dir.handle.symLinkAtomic(io, filename_major_only, name_only_path.sub_path, .{}) catch |err|
2013 return step.fail(maker, "failed symlinking {f} to {s}: {t}", .{ name_only_path, filename_major_only, err });
2012}2014}
20132015
2014fn cleanExit(io: Io, scanned_config: *const ScannedConfig) void {2016fn cleanExit(io: Io, scanned_config: *const ScannedConfig) void {