feat: add make_release helper script
This commit is contained in:
parent
6d351080a8
commit
92b3b93a1c
2 changed files with 69 additions and 1 deletions
25
build.zig
25
build.zig
|
@ -87,8 +87,20 @@ fn build_release(
|
||||||
};
|
};
|
||||||
const optimize = .ReleaseSafe;
|
const optimize = .ReleaseSafe;
|
||||||
|
|
||||||
|
var version = std.ArrayList(u8).init(b.allocator);
|
||||||
|
defer version.deinit();
|
||||||
|
gen_version(b, version.writer()) catch unreachable;
|
||||||
|
const write_file_step = b.addWriteFiles();
|
||||||
|
const version_file = write_file_step.add("version", version.items);
|
||||||
|
b.getInstallStep().dependOn(&b.addInstallFile(version_file, "version").step);
|
||||||
|
|
||||||
for (targets) |t| {
|
for (targets) |t| {
|
||||||
const target = b.resolveTargetQuery(t);
|
const target = b.resolveTargetQuery(t);
|
||||||
|
var triple = std.mem.splitScalar(u8, t.zigTriple(b.allocator) catch unreachable, '-');
|
||||||
|
const arch = triple.next() orelse unreachable;
|
||||||
|
const os = triple.next() orelse unreachable;
|
||||||
|
const target_path = std.mem.join(b.allocator, "-", &[_][]const u8{ os, arch }) catch unreachable;
|
||||||
|
|
||||||
build_exe(
|
build_exe(
|
||||||
b,
|
b,
|
||||||
run_step,
|
run_step,
|
||||||
|
@ -97,7 +109,7 @@ fn build_release(
|
||||||
lint_step,
|
lint_step,
|
||||||
target,
|
target,
|
||||||
optimize,
|
optimize,
|
||||||
.{ .dest_dir = .{ .override = .{ .custom = t.zigTriple(b.allocator) catch unreachable } } },
|
.{ .dest_dir = .{ .override = .{ .custom = target_path } } },
|
||||||
tracy_enabled,
|
tracy_enabled,
|
||||||
use_tree_sitter,
|
use_tree_sitter,
|
||||||
strip orelse true,
|
strip orelse true,
|
||||||
|
@ -506,3 +518,14 @@ fn gen_version_info(b: *std.Build, writer: anytype) !void {
|
||||||
if (diff.len > 0)
|
if (diff.len > 0)
|
||||||
try writer.print("\nwith the following uncommited changes:\n\n{s}\n", .{diff});
|
try writer.print("\nwith the following uncommited changes:\n\n{s}\n", .{diff});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn gen_version(b: *std.Build, writer: anytype) !void {
|
||||||
|
var code: u8 = 0;
|
||||||
|
|
||||||
|
const describe = try b.runAllowFail(&[_][]const u8{ "git", "describe", "--always", "--tags" }, &code, .Ignore);
|
||||||
|
const diff_ = try b.runAllowFail(&[_][]const u8{ "git", "diff", "--stat", "--patch", "HEAD" }, &code, .Ignore);
|
||||||
|
const diff = std.mem.trimRight(u8, diff_, "\r\n ");
|
||||||
|
const version = std.mem.trimRight(u8, describe, "\r\n ");
|
||||||
|
|
||||||
|
try writer.print("{s}{s}", .{ version, if (diff.len > 0) "-dirty" else "" });
|
||||||
|
}
|
||||||
|
|
45
contrib/make_release
Executable file
45
contrib/make_release
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
BASEDIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||||
|
APPNAME="$(basename "$BASEDIR")"
|
||||||
|
|
||||||
|
cd "$BASEDIR"
|
||||||
|
|
||||||
|
if [ -e "release" ]; then
|
||||||
|
echo directory \"release\" already exists
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo building...
|
||||||
|
|
||||||
|
./zig build -Dpackage_release --prefix release/build
|
||||||
|
|
||||||
|
cd release/build
|
||||||
|
|
||||||
|
VERSION=$(/bin/cat version)
|
||||||
|
TARGETS=$(/bin/ls)
|
||||||
|
|
||||||
|
for target in $TARGETS; do
|
||||||
|
if [ -d "$target" ]; then
|
||||||
|
cd "$target"
|
||||||
|
echo packing "$target"...
|
||||||
|
tar -czf "../../${APPNAME}-${VERSION}-${target}.tar.gz" -- *
|
||||||
|
cd ..
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
rm -r build
|
||||||
|
|
||||||
|
TARFILES=$(/bin/ls)
|
||||||
|
|
||||||
|
for tarfile in $TARFILES; do
|
||||||
|
echo signing "$tarfile"...
|
||||||
|
gpg --local-user 4E6CF7234FFC4E14531074F98EB1E1BB660E3FB9 --detach-sig "$tarfile"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "done making release $VERSION"
|
||||||
|
echo
|
||||||
|
|
||||||
|
/bin/ls -lah
|
Loading…
Add table
Reference in a new issue