[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Build Mesa with a different toolchain version

From: Tobias Geerinckx-Rice
Subject: Re: Build Mesa with a different toolchain version
Date: Wed, 02 Jun 2021 11:42:41 +0200


Thiago Jung Bauermann 写道:
$ guix build --system=i686-linux \
        --with-input=gcc-toolchain=gcc-toolchain@10.3.0 mesa
successfully built /gnu/store/bg01dw0178yb7v9xr4zmq5f05200f2ql-mesa-20.2.4.drv

--with-input=gcc-toolchain=… is a no-op: no package has a ‘gcc-toolchain’ input.

It exists only because people kept installing the ‘unwrapped’ (now hidden) GCC package with ‘guix install gcc’ and expecting a working compiler. gcc-toolchain wraps the entire toolchain so ‘$ gcc my.c’ produces working binaries. It is not used internally by Guix.

So aparently it worked.

It worked in the sense that the package was built successfully with gcc@7.5. If your undescribed issue was a build issue, it's not deterministic. If it's a run-time bug, whatever it is will still happen.

And surprisingly, when changing the requested gcc-toolchain version,
guix doesn't attempt to build anything and just returns the same
store items from the “10.3.0” build:

It's not surprising, it's proof that your transformation's a no-op. Guix is very good at hashing changes; it doesn't ‘miss’ or cache stale things.

Two things that work (but read both):

 ~$ guix build --with-input=gcc=gcc@10 mesa
 guix build: package 'gcc' has been superseded by 'gcc-toolchain'

Is this why you tried =gcc-toolchain= above? :-) The hint isn't relevant in this edge case, you can ignore it for once.

I've included this option because it's the working variant of your first command. However, it rebuilds the *entire* dependency chain of Mesa with GCC 10: glibc, bash, ed, python-minimal, guile…

It's cool that Guix makes this task so easy, but you probably want just

 ~$ guix build --with-c-toolchain=mesa=gcc-toolchain@10 mesa

This special-case option will do the right things to rebuild (only) mesa with the toolchain of your choice. Note the =mesa= difference in syntax: the package you want to rebuild, not the one you want to replace:

C compiler for the host machine: gcc (gcc 10.3.0 "gcc (GCC) 10.3.0")
 C linker for the host machine: gcc ld.bfd 2.34
C++ compiler for the host machine: c++ (gcc 10.3.0 "c++ (GCC) 10.3.0")
 C++ linker for the host machine: c++ ld.bfd 2.34

Not a user of PACKAGE-INPUT-REWRITING so I'll leave that to someone else.

Kind regards,


Attachment: signature.asc
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]