On 16/6/25 06:18, kpcyrd wrote:
The example based on my notes is quite straight-forward:
``` depends=( glibc ) makedepends=( zig )
build() { cd "${pkgname}-${pkgver}" zig build --verbose -Dcpu=baseline -Doptimize=ReleaseSmall }
package() { cd "${pkgname}-${pkgver}" install -Dm755 -t "${pkgdir}/usr/bin" zig-out/bin/example } ```
Common gotchas were:
- The `zig build` command is essentially fully silent if no interactive terminal is attached, `--verbose` helped but it's still very little info - Without `-Dcpu=baseline` the compiler is going to probe the build server cpu, which both causes problems with Reproducible Builds, but more importantly can also make the binary crash with `Illegal instruction` errors, since the default binaries aren't really distributable
Looking at the ncdu PKGBUILD shows there's some room for improvement:
``` build() { cd "${pkgname}-${pkgver}"
DESTDIR="build" zig build \ --summary all \ --global-cache-dir ../zig-global-cache \ --prefix /usr \ --search-prefix /usr \ --release=safe \ -Dtarget=native-linux.6.1-gnu.2.38 \ -Dcpu=baseline \ -Dpie=true }
check() { cd "${pkgname}-${pkgver}"
zig build test \ --summary all \ --global-cache-dir ../zig-global-cache \ --prefix /usr \ --search-prefix /usr \ --release=safe \ -Dtarget=native-linux.6.1-gnu.2.38 \ -Dcpu=baseline \ -Dpie=true } ```
More input very welcome, but I'm also fine with adding a very basic one by myself and whoever has something to add can just edit the wiki.
I've been the defacto zig package maintainer for a bit now. Good packages to look at are ncdu, river, waylock. Guidelines off the top of my head: - Indeed make sure you don't forget `-Dcpu=baseline` - zig targets include a kernel version and glibc version; make sure you include them! - Leave the target architecture as `native` so that archlinuxarm can pick up the package automatically - Add build.zig.zon dependencies to the `sources` array so they get archived correctly; they also need to be added to `noextract` We should probably write a script to automate this. - Use prepare() to build a build-environment-local global package cache - Use `--system ../zig-global-cache/p` to then use that package cache - Consider `--summary all` to get some build output - `package()` should usually be `cp -a build/* "$pkgdir` rather than trying to `install` files individually