Re: Building clang with gcc-toolchain@11

2022-03-07 Thread Greg Hogan
On Mon, Mar 7, 2022 at 5:18 AM Ludovic Courtès  wrote:

> The ‘clang’ definition reads:
>
>  ;; Use a sane default include directory.
>  (string-append "-DC_INCLUDE_DIRS="
> (assoc-ref %build-inputs "libc")
> "/include")
>
> What happens if we don’t pass that option, or if we pass
> “-DC_INCLUDE_DIRS=/no-such-directory”?
>
> It might work because C_INCLUDE_PATH already contains libc’s include
> directory; that way, we’d no longer rely on the “libc” label, which is
> what prevents use of ‘--with-c-toolchain’ here.
>

"libc" is also referenced in the set-glibc-file-names phase.

Why, even when using a different version of the same toolchain, is "libc"
not available in %build-inputs?

Shouldn't the following "--with-c-toolchain" leave the build unmodified
(with gcc@10 currently the default compiler)? Yet I still see the same
error as when switching the gcc-toolchain version.

--8<---cut here---start->8---
$ ./pre-inst-env guix build clang --with-c-toolchain=clang=gcc-toolchain@10
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
The following derivation will be built:
   /gnu/store/h7dw73yclv6i5wi9pf7gw44lnkvzwgp3-clang-13.0.1.drv
building /gnu/store/h7dw73yclv6i5wi9pf7gw44lnkvzwgp3-clang-13.0.1.drv...
Backtrace:
  14 (primitive-load "/gnu/store/5sw2i4ljmsdg7nsscihb7i32mm8?")
In ice-9/eval.scm:
   214:21 13 (_ #f)
   217:50 12 (lp (# ?))
   217:50 11 (lp (# ?))
   217:50 10 (lp (# ?))
   217:50  9 (lp (# ?))
   217:50  8 (lp (# ?))
   217:50  7 (lp (# ?))
   217:50  6 (lp (# ?))
   217:50  5 (lp (# ?))
   217:50  4 (lp (# ?))
   217:50  3 (lp (# ?))
   217:33  2 (lp (# ?))
   202:51  1 (_ #f)
In unknown file:
   0 (string-append "-DC_INCLUDE_DIRS=" #f "/include")

ERROR: In procedure string-append:
In procedure string-append: Wrong type (expecting string): #f
builder for `/gnu/store/h7dw73yclv6i5wi9pf7gw44lnkvzwgp3-clang-13.0.1.drv'
failed with exit code 1
build of /gnu/store/h7dw73yclv6i5wi9pf7gw44lnkvzwgp3-clang-13.0.1.drv failed
View build log at
'/var/log/guix/drvs/h7/dw73yclv6i5wi9pf7gw44lnkvzwgp3-clang-13.0.1.drv.bz2'.
guix build: error: build of
`/gnu/store/h7dw73yclv6i5wi9pf7gw44lnkvzwgp3-clang-13.0.1.drv' failed
--8<---cut here---end--->8---


Re: Building clang with gcc-toolchain@11

2022-03-07 Thread Ludovic Courtès
Hi,

Greg Hogan  skribis:

> I'd like to instead use the latest gcc-toolchain (currently gcc-toolchain@11)
> and have clang-toolchain built with that gcc-toolchain. No matter what
> I offer in the "--with-c-toolchain" or "--with-input" options I always see
> the following error regarding '(assoc-ref %build-inputs "libc")' evaluating
> as false, even when specifying "--with-c-toolchain=clang=gcc-toolchain@10"
> that should currently be in use by default. Any ideas for fixing this?

The ‘clang’ definition reads:

 ;; Use a sane default include directory.
 (string-append "-DC_INCLUDE_DIRS="
(assoc-ref %build-inputs "libc")
"/include")

What happens if we don’t pass that option, or if we pass
“-DC_INCLUDE_DIRS=/no-such-directory”?

It might work because C_INCLUDE_PATH already contains libc’s include
directory; that way, we’d no longer rely on the “libc” label, which is
what prevents use of ‘--with-c-toolchain’ here.

HTH,
Ludo’.