authorgravatar for michael.dusan@gmail.comMichael Dusan <michael.dusan@gmail.com> 2023-06-23 17:46:57-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-06-23 23:41:29-07:00
log1cf06706be7408a84c7b2ef0530c7a6af51ee41a
treee16dc1c62d248aabd672ed9e5924cd91c3fd8965
parent148e2a5a89c978dab8037e08f940803ff494acbf

openbsd: fix NativeTargetInfo semver

- supply ".0" as .Z component and satisfy semver X.Y.Z requirement - previously only X.Y was supplied and semver parse failed

1 files changed, 9 insertions(+), 2 deletions(-)

lib/std/zig/system/NativeTargetInfo.zig+9-2
...@@ -132,7 +132,9 @@ pub fn detect(cross_target: CrossTarget) DetectError!NativeTargetInfo {...@@ -132,7 +132,9 @@ pub fn detect(cross_target: CrossTarget) DetectError!NativeTargetInfo {
132 std.os.KERN.OSRELEASE,132 std.os.KERN.OSRELEASE,
133 };133 };
134 var buf: [64]u8 = undefined;134 var buf: [64]u8 = undefined;
135 var len: usize = buf.len;135 // consider that sysctl result includes null-termination
136 // reserve 1 byte to ensure we never overflow when appending ".0"
137 var len: usize = buf.len - 1;
136138
137 std.os.sysctl(&mib, &buf, &len, null, 0) catch |err| switch (err) {139 std.os.sysctl(&mib, &buf, &len, null, 0) catch |err| switch (err) {
138 error.NameTooLong => unreachable, // constant, known good value140 error.NameTooLong => unreachable, // constant, known good value
...@@ -142,7 +144,12 @@ pub fn detect(cross_target: CrossTarget) DetectError!NativeTargetInfo {...@@ -142,7 +144,12 @@ pub fn detect(cross_target: CrossTarget) DetectError!NativeTargetInfo {
142 error.Unexpected => return error.OSVersionDetectionFail,144 error.Unexpected => return error.OSVersionDetectionFail,
143 };145 };
144146
145 if (std.SemanticVersion.parse(buf[0 .. len - 1])) |ver| {147 // append ".0" to satisfy semver
148 buf[len - 1] = '.';
149 buf[len] = '0';
150 len += 1;
151
152 if (std.SemanticVersion.parse(buf[0..len])) |ver| {
146 os.version_range.semver.min = ver;153 os.version_range.semver.min = ver;
147 os.version_range.semver.max = ver;154 os.version_range.semver.max = ver;
148 } else |_| {155 } else |_| {