Subject: 'set-paths' should exclude 'source' from consideration
From: Mark H Weaver <[email-masked]>
To: [email-masked]
Date: Sun, 07 Jul 2019 19:26:12 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

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.

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.

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?

Also, does anyone know of other procedures that do something similiar?

     Thanks,
       Mark