Subject: bug#56086: "guix build --sources=transitive hello" does not emit transitive sources >=2 layers down

From: Maxime Devos <[email-masked]>
Date: Sun, 19 Jun 2022 14:01:47 +0200

Try:

$ guix build --sources=transitive hello

I get:

/gnu/store/3dq55rw99wdc4g4wblz7xikc8a2jy7a3-hello-2.12.1.tar.gz
/gnu/store/qz3pck1i4bply2fvxc7a5f7h3swdwpcr-tar-1.34.tar.xz
/gnu/store/5dh059d365953arhixlx4xqkngwv2jmr-gzip-1.10.tar.xz
/gnu/store/q5sqgng4wdzxr6yrvvp706kbxa3fcfjf-bzip2-1.0.8.tar.gz
/gnu/store/snk01kyfyv0xh527j2id1jbyx9snvr1h-xz-5.2.5.tar.gz
/gnu/store/b7pj6376jv658scl9159n60jq1gsggr5-file-5.39.tar.gz
/gnu/store/87aihcxj48yslw7zrc62lrbfi5llh5rh-diffutils-3.8.tar.xz
/gnu/store/l6fbym731zg72l0rwb7zgrn011ki7dcs-patch-2.7.6.tar.xz
/gnu/store/d9ylc625pszdbdzasxx3q2147dd0knia-findutils-4.8.0.tar.xz
/gnu/store/l6wssbbngsb3nr71rdlk5m834rdzz3rq-gawk-5.1.0.tar.xz
/gnu/store/52sz6j8l5xahiqq8j20vvix4gbwc1m4w-sed-4.8.tar.xz
/gnu/store/g05jqa0d8k45p3nzqggkrksgr4vr0qag-grep-3.6.tar.xz
/gnu/store/sp86vrxg16gvii6h51himf1ivhr1h46r-coreutils-8.32.tar.xz
/gnu/store/wicnb0c4b5726d8rvvhdj8kvyylhldqa-make-4.3.tar.xz
/gnu/store/cn3ian044yv1jnnwb4ai02f2hg6kgkik-bash-5.1.tar.xz
/gnu/store/nv43fwmg2c6x69sf9wh1fxbp3ca0fsdc-binutils-2.37.tar.xz
/gnu/store/d2p5gd5fxzrm6ip3lxw6q5jyxk1lbxqc-gcc-10.3.0.tar.xz
/gnu/store/70jq7j76s5wwx6v7m8fjdkihsa8k0sxb-gmp-6.0.0a.tar.xz
/gnu/store/b3xs724vl7idch20wvxll03rix9zizqb-mpfr-4.1.0.tar.xz
/gnu/store/0bhb5fidh0vz2b5p94bqyrpqw0bpgvjg-mpc-1.2.1.tar.gz
/gnu/store/ss3ciy8z30j8qcqk8zpkpdlggmwlmmv6-glibc-2.33.tar.xz
/gnu/store/a1sqrdsy1xrk6cs84kzgg93rw28zcaa4-linux-libre-5.10.35-gnu.tar.xz

However, the soure of [email-masked] appears to be missing here, even though it
is a transitive dependency (via (gnu packages commencement).

For a simpler example, consider the following package definition:

(package
 (inherit (specification->package "hello"))
 (inputs
   (list (package
           (inherit (specification->package "hello"))
           (inputs (list
                     (specification->package "gnunet-scheme"))))))))

and run "guix build --sources=transitive -f [source file]".  Notice that
the gnunet-scheme package is not included.  After some
experimentation, I found that:

  * if the package is at the top, its source code is listed
  * if it's in the inputs of the package at the top, its source code is listed
  * if it's another layer down, it isn't listed anymore (see above example)

Greetings,
Maxime.