authorgravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2020-03-10 12:16:56+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-10 12:55:35-04:00
log3e93dce0a12e8b09f2de30276364d9ee18c6ada0
tree4d0a5e5abd71527ca54543365266a77759476324
parent675f01f1768aa08c307640b53e8a5240fa190fab

std: Fix detection of Linux kernel version


2 files changed, 15 insertions(+), 8 deletions(-)

lib/std/os/bits/linux.zig+6-6
......@@ -1296,12 +1296,12 @@ pub const io_uring_files_update = struct {
12961296};
12971297
12981298pub const utsname = extern struct {
1299 sysname: [65]u8,
1300 nodename: [65]u8,
1301 release: [65]u8,
1302 version: [65]u8,
1303 machine: [65]u8,
1304 domainname: [65]u8,
1299 sysname: [64:0]u8,
1300 nodename: [64:0]u8,
1301 release: [64:0]u8,
1302 version: [64:0]u8,
1303 machine: [64:0]u8,
1304 domainname: [64:0]u8,
13051305};
13061306pub const HOST_NAME_MAX = 64;
13071307
lib/std/zig/system.zig+9-2
......@@ -201,8 +201,15 @@ pub const NativeTargetInfo = struct {
201201 switch (Target.current.os.tag) {
202202 .linux => {
203203 const uts = std.os.uname();
204 const release = mem.toSliceConst(u8, @ptrCast([*:0]const u8, &uts.release));
205 if (std.builtin.Version.parse(release)) |ver| {
204 const release = mem.toSliceConst(u8, &uts.release);
205 // The release field may have several other fields after the
206 // kernel version
207 const kernel_version = if (mem.indexOfScalar(u8, release, '-')) |pos|
208 release[0..pos]
209 else
210 release;
211
212 if (std.builtin.Version.parse(kernel_version)) |ver| {
206213 os.version_range.linux.range.min = ver;
207214 os.version_range.linux.range.max = ver;
208215 } else |err| switch (err) {