home
tpb

repository View

build: updated pipelines to use cargo-zigbuild container to work with apple and be faster

change ID
xsotuslxzkkrmsyxntuowmpxlkxnvzxl
git commit
1be3e0468dfbb6cb2b786864b02051ee59188ed9
author
Grace Yoder <grace_yoder@outlook.com> - 2026-06-30T14:11:34-06:00
committer
Grace Yoder <grace_yoder@outlook.com> - 2026-07-01T18:05:31-06:00
parents
sttmnvllxltv
refs
signature
Present (not validated)
build: updated pipelines to use cargo-zigbuild container to work with apple and be faster

tree

type name size
file .crow/build.yml 1532 bytes
file .crow/release.yml 566 bytes
file .gitignore 354 bytes
file LICENSE 1073 bytes
file README.md 632 bytes
file build.zig 2345 bytes
file build.zig.zon 247 bytes
file src/Clip/NSPBBridge.m 382 bytes
file src/Clip/NSPasteboard.zig 1456 bytes
file src/Clip/OSC52.zig 4564 bytes
file src/Clip.zig 1510 bytes
file src/main.zig 2166 bytes

diff

.crow/build.yml

modified (file → file)

--- a/.crow/build.yml
+++ b/.crow/build.yml
@@ -7,42 +7,33 @@
     settings:
       tags: true
 
+variables:
+  - &zig_image 'ghcr.io/rust-cross/cargo-zigbuild:0.23'
+
 steps:
   - name: build-linux-x86_64
-    image: alpine:3.20
+    image: *zig_image
     commands:
-      - apk add --no-cache curl xz
-      - curl -sSL https://ziglang.org/download/0.16.0/zig-x86_64-linux-0.16.0.tar.xz | tar -xJ -C /usr/local
-      - ln -s /usr/local/zig-x86_64-linux-0.16.0/zig /usr/local/bin/zig
-      - zig build -Dtarget=x86_64-linux-musl -Doptimize=ReleaseSafe
-      - cp zig-out/bin/tpb tpb-linux-x86_64
+      - zig build -Dtarget=x86_64-linux-musl -Doptimize=ReleaseSafe --prefix zig-out-linux-x86_64
+      - cp zig-out-linux-x86_64/bin/tpb tpb-linux-x86_64
 
   - name: build-linux-aarch64
-    image: alpine:3.20
+    image: *zig_image
     commands:
-      - apk add --no-cache curl xz
-      - curl -sSL https://ziglang.org/download/0.16.0/zig-x86_64-linux-0.16.0.tar.xz | tar -xJ -C /usr/local
-      - ln -s /usr/local/zig-x86_64-linux-0.16.0/zig /usr/local/bin/zig
-      - zig build -Dtarget=aarch64-linux-musl -Doptimize=ReleaseSafe
-      - cp zig-out/bin/tpb tpb-linux-aarch64
+      - zig build -Dtarget=aarch64-linux-musl -Doptimize=ReleaseSafe --prefix zig-out-linux-aarch64
+      - cp zig-out-linux-aarch64/bin/tpb tpb-linux-aarch64
 
   - name: build-macos-x86_64
-    image: alpine:3.20
+    image: *zig_image
     commands:
-      - apk add --no-cache curl xz
-      - curl -sSL https://ziglang.org/download/0.16.0/zig-x86_64-linux-0.16.0.tar.xz | tar -xJ -C /usr/local
-      - ln -s /usr/local/zig-x86_64-linux-0.16.0/zig /usr/local/bin/zig
-      - zig build -Dtarget=x86_64-macos -Doptimize=ReleaseSafe
-      - cp zig-out/bin/tpb tpb-macos-x86_64
+      - zig build -Dtarget=x86_64-macos -Doptimize=ReleaseSafe --prefix zig-out-macos-x86_64 --sysroot /opt/MacOSX11.3.sdk
+      - cp zig-out-macos-x86_64/bin/tpb tpb-macos-x86_64
 
   - name: build-macos-aarch64
-    image: alpine:3.20
+    image: *zig_image
     commands:
-      - apk add --no-cache curl xz
-      - curl -sSL https://ziglang.org/download/0.16.0/zig-x86_64-linux-0.16.0.tar.xz | tar -xJ -C /usr/local
-      - ln -s /usr/local/zig-x86_64-linux-0.16.0/zig /usr/local/bin/zig
-      - zig build -Dtarget=aarch64-macos -Doptimize=ReleaseSafe
-      - cp zig-out/bin/tpb tpb-macos-aarch64
+      - zig build -Dtarget=aarch64-macos -Doptimize=ReleaseSafe --prefix zig-out-macos-aarch64 --sysroot /opt/MacOSX11.3.sdk
+      - cp zig-out-macos-aarch64/bin/tpb tpb-macos-aarch64
 
 
   - name: release

build.zig

modified (file → file)

--- a/build.zig
+++ b/build.zig
@@ -29,12 +29,20 @@
             .language = .objective_c,
             .flags = &.{"-fobjc-arc"},
         });
-        exe.root_module.linkFramework("Cocoa", .{});
         tests.root_module.addCSourceFiles(.{
             .files = &.{"src/Clip/NSPBBridge.m"},
             .language = .objective_c,
             .flags = &.{"-fobjc-arc"},
         });
+        if (b.sysroot) |sysroot| {
+            const framework_path = b.pathJoin(&.{ sysroot, "System/Library/Frameworks" });
+            const include_path = b.pathJoin(&.{ sysroot, "usr/include" });
+            exe.root_module.addSystemFrameworkPath(.{ .cwd_relative = framework_path });
+            exe.root_module.addSystemIncludePath(.{ .cwd_relative = include_path });
+            tests.root_module.addSystemFrameworkPath(.{ .cwd_relative = framework_path });
+            tests.root_module.addSystemIncludePath(.{ .cwd_relative = include_path });
+        }
+        exe.root_module.linkFramework("Cocoa", .{});
         tests.root_module.linkFramework("Cocoa", .{});
     }