On Sun, 15 Jun 2025 at 22:19, kpcyrd <[email protected]> wrote:

> hello,
>
> I've just changed minisign from C to Zig since this is now supported by
> upstream (it was quite the journey though). I noticed we don't have any
> packaging guideline for Zig yet so I would like to propose adding one.
>
> 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.
>
> Never lose the plot,
> kpcyrd
>

Shouldn't we prefer ReleaseSafe or ReleaseSpeed? We generally don't use -Os
CFLAGS, either.

Reply via email to