Message ID | p6IABBvdY4_SnsvsI-2ozXIgqJMjTtJ3wrf6OqqiC5farcCvbjxUDdiaBYGljH5k4rJ0bWFzrYNUTDkvyNO9KlU2JuVZLzBmehTDpAO3C98=@elenq.tech |
---|---|
State | New |
Headers | show |
Series | [bug#62105] gnu: zig: make zig build for a baseline cpu | expand |
I managed to build Zig with your patch applied. From what I understand this is a good fix to the issue. lgtm and thanks! -pukkamustard Ekaitz Zarraga <ekaitz@elenq.tech> writes: > This patch fixes a `Illegal instruction` issue when running Zig. > It happens because Zig compiles with optimizations for the current > machine, which may add instructions that are not compatible with > some target machines. This flag makes it build for a baseline cpu. > > Tested with: > > qemu-x86_64 -cpu Broadwell-v2 /gnu/store/zzi23y4mab8zl58hdd740xz3814vy24w-zig-0.10.1/bin/zig build > > And: > qemu-x86_64 -cpu Broadwell-v4 /gnu/store/zzi23y4mab8zl58hdd740xz3814vy24w-zig-0.10.1/bin/zig build > > It worked. > It follows what Arch does: > https://github.com/archlinux/svntogit-community/blob/31055e6750a5672ebbd85114fe7a93163f8af575/trunk/PKGBUILD#L30 > And NixOS: > https://github.com/NixOS/nixpkgs/pull/215994/commits/26b9a2f4a1a53e6763aa83590aad0fce5013a458 > > Hope this helps. > Best, > Ekaitz > > > --- > > From 8dbb801ba7df6cc64c003e8f1739117c8dda6a75 Mon Sep 17 00:00:00 2001 > From: Ekaitz Zarraga <ekaitz@elenq.tech> > Date: Fri, 10 Mar 2023 22:52:19 +0100 > Subject: [PATCH] gnu: zig: make zig build for a baseline cpu > > * gnu/packages/zig.scm(zig-0.10): Add -DZIG_TARGET_MCPU=baseline > configure flag. > --- > gnu/packages/zig.scm | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm > index 5414b5ba6e..2c89343cb1 100644 > --- a/gnu/packages/zig.scm > +++ b/gnu/packages/zig.scm > @@ -56,6 +56,7 @@ (define-public zig-0.10 > '(string-append "-DZIG_TARGET_TRIPLE=" > (%current-target-system)) > '()) > + (string-append "-DZIG_TARGET_MCPU=baseline") > (string-append "-DZIG_LIB_DIR=" (assoc-ref %outputs "out") > "/lib/zig")) > #:validate-runpath? #f ; TODO: zig binary can't find ld-linux.
diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm index 5414b5ba6e..2c89343cb1 100644 --- a/gnu/packages/zig.scm +++ b/gnu/packages/zig.scm @@ -56,6 +56,7 @@ (define-public zig-0.10 '(string-append "-DZIG_TARGET_TRIPLE=" (%current-target-system)) '()) + (string-append "-DZIG_TARGET_MCPU=baseline") (string-append "-DZIG_LIB_DIR=" (assoc-ref %outputs "out") "/lib/zig")) #:validate-runpath? #f ; TODO: zig binary can't find ld-linux.
This patch fixes a `Illegal instruction` issue when running Zig. It happens because Zig compiles with optimizations for the current machine, which may add instructions that are not compatible with some target machines. This flag makes it build for a baseline cpu. Tested with: qemu-x86_64 -cpu Broadwell-v2 /gnu/store/zzi23y4mab8zl58hdd740xz3814vy24w-zig-0.10.1/bin/zig build And: qemu-x86_64 -cpu Broadwell-v4 /gnu/store/zzi23y4mab8zl58hdd740xz3814vy24w-zig-0.10.1/bin/zig build It worked. It follows what Arch does: https://github.com/archlinux/svntogit-community/blob/31055e6750a5672ebbd85114fe7a93163f8af575/trunk/PKGBUILD#L30 And NixOS: https://github.com/NixOS/nixpkgs/pull/215994/commits/26b9a2f4a1a53e6763aa83590aad0fce5013a458 Hope this helps. Best, Ekaitz --- From 8dbb801ba7df6cc64c003e8f1739117c8dda6a75 Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga <ekaitz@elenq.tech> Date: Fri, 10 Mar 2023 22:52:19 +0100 Subject: [PATCH] gnu: zig: make zig build for a baseline cpu * gnu/packages/zig.scm(zig-0.10): Add -DZIG_TARGET_MCPU=baseline configure flag. --- gnu/packages/zig.scm | 1 + 1 file changed, 1 insertion(+) -- 2.39.1