Commit e8810f5794
Changed files (3)
src/config.zig.in
@@ -1,6 +1,11 @@
pub const have_llvm = true;
pub const version: [:0]const u8 = "@ZIG_VERSION@";
-pub const semver = try @import("std").SemanticVersion.parse(version);
+pub const semver: @import("std").SemanticVersion = .{
+ .major = @ZIG_VERSION_MAJOR@,
+ .minor = @ZIG_VERSION_MINOR@,
+ .patch = @ZIG_VERSION_PATCH@,
+ .build = "@ZIG_GIT_REV@",
+};
pub const log_scopes: []const []const u8 = &[_][]const u8{};
pub const zir_dumps: []const []const u8 = &[_][]const u8{};
pub const enable_tracy = false;
build.zig
@@ -11,7 +11,7 @@ const fs = std.fs;
const InstallDirectoryOptions = std.build.InstallDirectoryOptions;
const assert = std.debug.assert;
-const zig_version = std.builtin.Version{ .major = 0, .minor = 8, .patch = 0 };
+const zig_version = std.builtin.Version{ .major = 0, .minor = 7, .patch = 1 };
pub fn build(b: *Builder) !void {
b.setPreferredReleaseMode(.ReleaseFast);
@@ -227,42 +227,24 @@ pub fn build(b: *Builder) !void {
const version_string = b.fmt("{}.{}.{}", .{ zig_version.major, zig_version.minor, zig_version.patch });
var code: u8 = undefined;
- const git_describe_untrimmed = b.execAllowFail(&[_][]const u8{
- "git", "-C", b.build_root, "describe", "--match", "*.*.*", "--tags",
+ const git_sha_untrimmed = b.execAllowFail(&[_][]const u8{
+ "git", "-C", b.build_root, "name-rev", "HEAD",
+ "--tags", "--name-only", "--no-undefined", "--always",
}, &code, .Ignore) catch {
break :v version_string;
};
- const git_describe = mem.trim(u8, git_describe_untrimmed, " \n\r");
-
- switch (mem.count(u8, git_describe, "-")) {
- 0 => {
- // Tagged release version (e.g. 0.7.0).
- if (!mem.eql(u8, git_describe, version_string)) {
- std.debug.print("Zig version '{}' does not match Git tag '{}'\n", .{ version_string, git_describe });
- std.process.exit(1);
- }
- break :v version_string;
- },
- 2 => {
- // Untagged development build (e.g. 0.7.0-684-gbbe2cca1a).
- var it = mem.split(git_describe, "-");
- const tagged_ancestor = it.next() orelse unreachable;
- const commit_height = it.next() orelse unreachable;
- const commit_id = it.next() orelse unreachable;
-
- const ancestor_ver = try std.builtin.Version.parse(tagged_ancestor);
- if (zig_version.order(ancestor_ver) != .gt) {
- std.debug.print("Zig version '{}' must be greater than tagged ancestor '{}'\n", .{ zig_version, ancestor_ver });
- std.process.exit(1);
- }
-
- // The version is reformatted in accordance with the https://semver.org specification.
- break :v b.fmt("{}-dev.{}+{}", .{ version_string, commit_height, commit_id });
- },
- else => {
- std.debug.print("Failed to parse `git describe` output: {}\n", .{git_describe});
- break :v version_string;
- },
+ const git_sha_trimmed = mem.trim(u8, git_sha_untrimmed, " \n\r");
+
+ // This will look like e.g. "0.7.0^0" for a tag commit.
+ if (mem.endsWith(u8, git_sha_trimmed, "^0")) {
+ const git_ver_string = git_sha_trimmed[0 .. git_sha_trimmed.len - 2];
+ if (!mem.eql(u8, git_ver_string, version_string)) {
+ std.debug.print("Expected git tag '{}', found '{}'\n", .{ version_string, git_ver_string });
+ std.process.exit(1);
+ }
+ break :v b.fmt("{}", .{version_string});
+ } else {
+ break :v b.fmt("{}+{}", .{ version_string, git_sha_trimmed });
}
};
exe.addBuildOption([:0]const u8, "version", try b.allocator.dupeZ(u8, version));
CMakeLists.txt
@@ -44,7 +44,7 @@ if("${ZIG_VERSION}" STREQUAL "")
# Tagged release version.
set(GIT_TAG ${CMAKE_MATCH_1})
if(NOT GIT_TAG VERSION_EQUAL ZIG_VERSION)
- message(SEND_ERROR "Zig version (${ZIG_VERSION}) does not match Git tag (${GIT_TAG}).")
+ message(SEND_ERROR "Configured Zig version (${ZIG_VERSION}) does not match Git tag (${GIT_TAG}).")
endif()
elseif(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)-([0-9]+)-(.+)$")
# Untagged pre-release. The Zig version is updated to include the number of commits
@@ -54,7 +54,7 @@ if("${ZIG_VERSION}" STREQUAL "")
set(GIT_COMMITS_AFTER_TAG ${CMAKE_MATCH_2})
set(GIT_COMMIT ${CMAKE_MATCH_3})
if(NOT ZIG_VERSION VERSION_GREATER GIT_TAG)
- message(SEND_ERROR "Zig version (${ZIG_VERSION}) must be greater than tagged ancestor (${GIT_TAG}).")
+ message(SEND_ERROR "Configured Zig version (${ZIG_VERSION}) must be greater than tagged ancestor (${GIT_TAG}).")
endif()
set(ZIG_VERSION "${ZIG_VERSION}-dev.${GIT_COMMITS_AFTER_TAG}+${GIT_COMMIT}")
else()