Subject: Incorrect Native *_PATH's when linux source is not a tarball.
From: Mitchell Schmeisser <[email-masked]>
To: [email-masked]
Date: Tue, 21 Feb 2023 15:45:42 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

This is a bit of a convoluted bug but here it goes. The title may not be
entirely correct.

When ~set-paths~ is called it adds all of the inputs to ~C_INCLUDE_PATH~
and friends /except/ the source input.

#+BEGIN_SRC scheme
(define-public linux-zynq
  (customize-linux #:name "linux-zynq"
		   #:linux linux-libre-5.15
		   #:source (package-source linux-xlnx-5.15.0)
		   #:defconfig "xilinx_zynq_defconfig"))
#+END_SRC

However, below is a snippet from the `set-paths` phase targeting arm-linux-gnueabihf
>>>

environment variable `C_INCLUDE_PATH' set to `/gnu/store/1y1ycvzgg363ih16qs5nhmlsmn77kjl7-git-checkout/include:/gnu/store/plr00nij45964cyy7sfcg5rcsi8hks0h-openssl-1.1.1l/include:/gnu/store/jp6027624wl2f4xx5yz1vjzd2b9yvwl9-elfutils-0.183/include:/gnu/store/b4mskl4py1zqmxdy1v260r3h6x5p92fm-flex-2.6.4/include:/gnu/store/fwbiihd2sbhai63y1pvvdh0f2bakfzrf-gmp-6.2.1/include:/gnu/store/pmq05n0q25v4qjyibxfrp53v4391k7vh-mpfr-4.1.0/include:/gnu/store/ba02g5xkqiss6s5z8mbj9cvkal6l7b9g-mpc-1.2.1/include:/gnu/store/pdf9myikb674k906x70g3yzs72f61qm3-gcc-cross-arm-linux-gnueabihf-10.3.0/include:/gnu/store/0na4hgqh61fpc73dj9qgval3wdbsr393-binutils-cross-arm-linux-gnueabihf-2.37/include:/gnu/store/s3hl12jxz9ybs7nsy7kq7ybzz7qnzmsg-bzip2-1.0.8/include:/gnu/store/c8isj4jq6knv0icfgr43di6q3nvdzkx7-xz-5.2.5/include:/gnu/store/4ic6244i3ca4b4rxc2wnrgllsidyishv-file-5.39/include:/gnu/store/690qz3fg334dpwn3pn6k59n4wc943p2b-gawk-5.1.0/include:/gnu/store/55cbpsi18mahg131nmiya6km5b4mscfa-make-4.3/include:/gnu/store/rc781v4k0drhaqn90xfwwpspki5x0bvf-binutils-2.37/include:/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0/include:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/include:/gnu/store/6mjww4iz4xdan74d5bbjfh7il8rngfkk-linux-libre-headers-5.10.35/include'

<<<

This only happens when source is a git repository, and only when
building the kernel.
When a tarball is used this does not happen because it is not a directory in the store.

When other packages with git sources are cross compiled their
C_INCLUDE_PATH does not contain the sources.

During the configure phase some includes in the kconfig program end up
linking there way back to =/gnu/store/...git-checkout/include/linux/=
because it is top priority in `C_INCLUDE_PATH`.

- Mitchell