move cross target testing into zig build test
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 2m58s
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 2m58s
This commit is contained in:
parent
4c987d0959
commit
dd4935b5e5
|
@ -19,15 +19,16 @@ jobs:
|
|||
#
|
||||
# However, arm64/linux isn't quite fully tier 1 yet, so this is more of a
|
||||
# TODO: https://github.com/ziglang/zig/issues/2443
|
||||
- run: wget -q https://ziglang.org/download/${ZIG_VERSION}/zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz
|
||||
- run: tar x -C /usr/local -f zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz
|
||||
- run: ln -s /usr/local/zig-linux-${ARCH}-${ZIG_VERSION}/zig /usr/local/bin/zig
|
||||
- run: curl https://wasmtime.dev/install.sh -sSf | bash
|
||||
- run: zig build test
|
||||
- run: zig build test -Dtarget=arm-linux # we want to know we can build for 32 bit
|
||||
# - run: PATH=${HOME}/.wasmtime/bin:${PATH} zig build test -Dtarget=wasm32-wasi -fwasmtime # downstream needs this for CF workers
|
||||
- run: zig build test -Dtarget=wasm32-wasi # downstream needs this for CF workers
|
||||
# - run: zig build test -Dx86_64-windows # windows needs changes for env vars
|
||||
- name: Install Zig
|
||||
run: |
|
||||
wget -q https://ziglang.org/download/${ZIG_VERSION}/zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz
|
||||
tar x -C /usr/local -f zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz
|
||||
ln -s /usr/local/zig-linux-${ARCH}-${ZIG_VERSION}/zig /usr/local/bin/zig
|
||||
- name: Install wasmtime
|
||||
run: curl https://wasmtime.dev/install.sh -sSf | bash
|
||||
- name: Run tests
|
||||
run: zig build test
|
||||
# - run: PATH=${HOME}/.wasmtime/bin:${PATH} zig build test -fwasmtime # downstream needs this for CF workers
|
||||
- name: Notify
|
||||
uses: https://git.lerch.org/lobo/action-notify-ntfy@v2
|
||||
if: always()
|
||||
|
|
102
build.zig
102
build.zig
|
@ -1,5 +1,38 @@
|
|||
const std = @import("std");
|
||||
|
||||
const test_targets = [_]std.zig.CrossTarget{
|
||||
.{}, // native
|
||||
.{
|
||||
.cpu_arch = .x86_64,
|
||||
.os_tag = .linux,
|
||||
},
|
||||
.{
|
||||
.cpu_arch = .aarch64,
|
||||
.os_tag = .linux,
|
||||
},
|
||||
.{
|
||||
.cpu_arch = .arm,
|
||||
.os_tag = .linux,
|
||||
},
|
||||
// Windows needs to avoid std.os.getenv - we'll wait until this is needed
|
||||
// .{
|
||||
// .cpu_arch = .x86_64,
|
||||
// .os_tag = .windows,
|
||||
// },
|
||||
// I don't have a good way to test these
|
||||
// .{
|
||||
// .cpu_arch = .aarch64,
|
||||
// .os_tag = .macos,
|
||||
// },
|
||||
// .{
|
||||
// .cpu_arch = .x86_64,
|
||||
// .os_tag = .macos,
|
||||
// },
|
||||
.{
|
||||
.cpu_arch = .wasm32,
|
||||
.os_tag = .wasi,
|
||||
},
|
||||
};
|
||||
// Although this function looks imperative, note that its job is to
|
||||
// declaratively construct a build graph that will be executed by an external
|
||||
// runner.
|
||||
|
@ -32,40 +65,43 @@ pub fn build(b: *std.Build) !void {
|
|||
// running `zig build`).
|
||||
b.installArtifact(lib);
|
||||
|
||||
// Creates steps for unit testing. This only builds the test executable
|
||||
// but does not run it.
|
||||
const exe_tests = b.addTest(.{
|
||||
.root_source_file = .{ .path = "src/test.zig" },
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
_ = try universal_lambda.addModules(b, exe_tests);
|
||||
|
||||
var run_exe_tests = b.addRunArtifact(exe_tests);
|
||||
run_exe_tests.skip_foreign_checks = true;
|
||||
|
||||
// Universal lambda can end up as an exe or a lib. When it is a library,
|
||||
// we end up changing the root source file away from downstream so we can
|
||||
// control exports and such. This is just flexilib for now, but we could
|
||||
// end up in a situation where we need to create an array of libraries
|
||||
// with various roots that all meet the rest of the build DAG at test_step
|
||||
// in the future. Scaleway, for instance, is another system that works
|
||||
// via shared library
|
||||
const lib_tests = b.addTest(.{
|
||||
.root_source_file = .{ .path = "src/flexilib.zig" },
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
_ = try universal_lambda.addModules(b, lib_tests);
|
||||
|
||||
var run_lib_tests = b.addRunArtifact(lib_tests);
|
||||
run_lib_tests.skip_foreign_checks = true;
|
||||
// This creates a build step. It will be visible in the `zig build --help` menu,
|
||||
// and can be selected like this: `zig build test`
|
||||
// This will evaluate the `test` step rather than the default, which is "install".
|
||||
const test_step = b.step("test", "Run library tests");
|
||||
test_step.dependOn(&run_exe_tests.step);
|
||||
test_step.dependOn(&run_lib_tests.step);
|
||||
|
||||
for (test_targets) |t| {
|
||||
// Creates steps for unit testing. This only builds the test executable
|
||||
// but does not run it.
|
||||
const exe_tests = b.addTest(.{
|
||||
.root_source_file = .{ .path = "src/test.zig" },
|
||||
.target = t,
|
||||
.optimize = optimize,
|
||||
});
|
||||
_ = try universal_lambda.addModules(b, exe_tests);
|
||||
|
||||
var run_exe_tests = b.addRunArtifact(exe_tests);
|
||||
run_exe_tests.skip_foreign_checks = true;
|
||||
test_step.dependOn(&run_exe_tests.step);
|
||||
|
||||
// Universal lambda can end up as an exe or a lib. When it is a library,
|
||||
// we end up changing the root source file away from downstream so we can
|
||||
// control exports and such. This is just flexilib for now, but we could
|
||||
// end up in a situation where we need to create an array of libraries
|
||||
// with various roots that all meet the rest of the build DAG at test_step
|
||||
// in the future. Scaleway, for instance, is another system that works
|
||||
// via shared library
|
||||
// const lib_tests = b.addTest(.{
|
||||
// .root_source_file = .{ .path = "src/flexilib.zig" },
|
||||
// .target = t,
|
||||
// .optimize = optimize,
|
||||
// });
|
||||
// _ = try universal_lambda.addModules(b, lib_tests);
|
||||
//
|
||||
// var run_lib_tests = b.addRunArtifact(lib_tests);
|
||||
// run_lib_tests.skip_foreign_checks = true;
|
||||
// // This creates a build step. It will be visible in the `zig build --help` menu,
|
||||
// // and can be selected like this: `zig build test`
|
||||
// // This will evaluate the `test` step rather than the default, which is "install".
|
||||
// test_step.dependOn(&run_lib_tests.step);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn configureBuild(b: *std.Build, cs: *std.Build.Step.Compile) !void {
|
||||
|
|
Loading…
Reference in New Issue
Block a user