diff options
| -rw-r--r-- | lib/std/builtin.zig | 1 | ||||
| -rw-r--r-- | lib/std/zig/system.zig | 13 |
2 files changed, 4 insertions, 10 deletions
diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig index c90614b3d2..699cdba761 100644 --- a/lib/std/builtin.zig +++ b/lib/std/builtin.zig @@ -567,6 +567,7 @@ pub fn testVersionParse() !void { try f.eql("2.7.pre", 2, 7, 0); try f.eql("0..3", 0, 0, 0); try f.eql("8.008.", 8, 8, 0); + try f.eql("01...", 1, 0, 0); try f.eql("55", 55, 0, 0); try f.eql("4294967295.0.1", 4294967295, 0, 1); try f.eql("429496729_6", 429496729, 0, 0); diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index b1947058cc..f6c129591d 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -209,16 +209,9 @@ pub const NativeTargetInfo = struct { .linux => { const uts = std.os.uname(); const release = mem.spanZ(&uts.release); - // The release field may have several other fields after the - // kernel version - const kernel_version = if (mem.indexOfScalar(u8, release, '-')) |pos| - release[0..pos] - else if (mem.indexOfScalar(u8, release, '_')) |pos| - release[0..pos] - else - release; - - if (std.builtin.Version.parse(kernel_version)) |ver| { + // The release field sometimes has a weird format, + // `Version.parse` will attempt to find some meaningful interpretation. + if (std.builtin.Version.parse(release)) |ver| { os.version_range.linux.range.min = ver; os.version_range.linux.range.max = ver; } else |err| switch (err) { |
