Subject: bug#36544: 'set-paths' should exclude 'source' from consideration

From: Ludovic Courtès <[email-masked]>
Date: Thu, 11 Jul 2019 23:24:55 +0200

Hello,

Mark H Weaver <[email-masked]> skribis:

> The 'set-paths' phase in (guix build gnu-build-system) currently
> includes 'source' in the set of candidates for inclusion in the
> search-path variables.

Oh, that was certainly not intended.

> First of all, I think it's undesirable to include subdirectories of the
> source directory in these search paths.  However, if you think it's
> desirable, there's another problem: it's fragile.  It depends on:
>
>  (1) whether the source is a tarball or an unpacked checkout, and
>  (2) whether the subdirectories specified in the search-paths
>      (e.g. 'include') are within the top source directory.
>
> Currently, if you change the 'source' field of a package from a tarball
> to an (unpacked) VCS checkout, there *might* be additional components
> added to the environment variables, depending on the source tree layout.
>
> For example, this causes our 'linux-libre' package to fail to build if
> you substitute its 'source' field for a git checkout, as Chris Webber
> discovered here:
>
>   https://lists.gnu.org/archive/html/help-guix/2019-07/msg00058.html
>   https://lists.gnu.org/archive/html/help-guix/2019-07/msg00062.html
>
> Also, if any package depends on the current behavior, it will break if
> its 'source' is changed from a VCS checkout to a release tarball.

Indeed, that’s terrible.  I suppose we were just lucky not to hit such
issues before!

> To avoid this unexpected sensitivity on the source origin method, I
> suggest that we explicitly exclude 'source' from consideration within
> the 'set-paths' phase.  What do you think?

I agree.  We should do that in the next ‘core-updates’.

Ludo’.