diff mbox series

[bug#62105] gnu: zig: make zig build for a baseline cpu

Message ID p6IABBvdY4_SnsvsI-2ozXIgqJMjTtJ3wrf6OqqiC5farcCvbjxUDdiaBYGljH5k4rJ0bWFzrYNUTDkvyNO9KlU2JuVZLzBmehTDpAO3C98=@elenq.tech
State New
Headers show
Series [bug#62105] gnu: zig: make zig build for a baseline cpu | expand

Commit Message

Ekaitz Zarraga March 10, 2023, 10:01 p.m. UTC
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

Comments

pukkamustard March 11, 2023, 10:10 a.m. UTC | #1
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 mbox series

Patch

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.