Subject: [bug#49565] [PATCH] gnu: glibc-headers-mesboot: Use %build-inputs in setenv phase

From: Maxime Devos <[email-masked]>
Date: Thu, 15 Jul 2021 18:00:41 +0200

> [...]
>
> > As "libc" currently doesn't exist in 'inputs', that means "libc"
> > is searched for in 'native-inputs', which is probably not what you want,
> > given that you are cross-compiling?
> 
> Are you saying that ‘%build-inputs’ is the union of ‘inputs’  and ‘native-
> inputs’? For my own education, do you know where that happens?
> 
> The manual and the doc string for ‘build-expression->derivation’ only 
> mention that it comes from ‘inputs’. I can send a patch to correct them.

I thought "build-expression->derivation" doesn't define %build-inputs
anymore, but apparently it does.  However, note that, on core-updates
at least, gnu-build and gnu-cross-build don't use build-expression->derivation,
instead they use gexp->derivation (see (guix build-system gnu)), and gexp->derivation
doesn't define %build-inputs.

gexp->derivation doesn't define %build-inputs, but gnu-build and gnu-cross-build
do:

        ;; also see with-build-variables
        (define %build-host-inputs
          #+(input-tuples->gexp build-inputs))

        (define %build-target-inputs
          (append #$(input-tuples->gexp host-inputs)
                  #+(input-tuples->gexp target-inputs)))

        (define %build-inputs
          (append %build-host-inputs %build-target-inputs))
        ;; ^ the unio native-inputs, inputs and implicit inputs!

        (define %outputs
          #$(outputs->gexp outputs))

I'm not familiar with 'host-inputs', 'build-inputs' and 'target-inputs'.
They are a ‘bag’ thing, not a ‘package’ thing.  You'll have to look at
'lower' to see how native-inputs and inputs are mapped to host-inputs,
build-inputs and target-inuts.

Greetings,
Maxime.