Hi, I think 'guix build --sources=transitive' might not be including all transitive sources. Consider this example:
--8<---------------cut here---------------start------------->8--- $ guix build --sources=transitive hello /gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz /gnu/store/cz1b1hn763zppafmlxsrlj7fnxa8zcna-tar-1.29.tar.xz /gnu/store/f63c6mjqqai6xwypx5qslvqc2d302yn5-gzip-1.8.tar.xz /gnu/store/bjpalrv9f49d2k40p7ga0y6dwdys9w5j-bzip2-1.0.6.tar.gz /gnu/store/1pcksb758j9v7srain0k3fqp57h9gwmj-xz-5.2.2.tar.gz /gnu/store/r56rrdk6h0zwb1d2y28q3bk71n73z84m-file-5.28.tar.gz /gnu/store/rbaa5s5jpy91npas89q3p8yasrc6mr1h-diffutils-3.5.tar.xz /gnu/store/iaigwb3k7fg0v8zrwlb4yhrdsgin6ir7-patch-2.7.5.tar.xz /gnu/store/g0mffc9c0nxbwf0a6j0akh0dvkd2sn6w-sed-4.2.2.tar.xz /gnu/store/76q5cqkqrx7paxhq27m3izag07n1vjs4-findutils-4.6.0.tar.xz /gnu/store/vgs8flhpxbkgx0hx54hnihpai7lma72j-gawk-4.1.4.tar.xz /gnu/store/5q4yicgzxrv13gq4rai6h07s7xp75ws6-grep-2.25.tar.xz /gnu/store/8dqf59312llnmln89ccas1saq0z4qwi7-coreutils-8.25.tar.xz /gnu/store/2g7nf5h6hnsz1sharnqxfjz9m6k7224z-make-4.2.1.tar.xz /gnu/store/xwanyg9972rpznx89ja38v01c8483392-bash-4.4.tar.gz /gnu/store/iv2nz8r001lpric4kr2xq3459zwl8051-binutils-2.27.tar.xz /gnu/store/z2s847iq14psryslylm1x4k71b0vx4ng-gcc-4.9.4.tar.xz /gnu/store/m9jym12mhczjrslpycwi6ipw57v849pa-gmp-6.0.0a.tar.xz /gnu/store/xg7ir7g2yvxj9ixmgy2kfds690h3f6gg-mpfr-3.1.4.tar.xz /gnu/store/y9akh452n3p4w2v631nj0injx7y0d68x-mpc-1.0.3.tar.gz /gnu/store/z8mm3izh1hgllm6mlqzycsrx5nfkvhxi-glibc-2.24.tar.xz /gnu/store/51f2f2ck80migsfr2hwy4ds30966lifi-linux-libre-4.4.18-gnu.tar.xz --8<---------------cut here---------------end--------------->8--- Note that the perl source is missing, even though perl is in the transitive closure of references of hello's derivation (i.e., perl is a build-time dependency of hello): --8<---------------cut here---------------start------------->8--- $ guix gc --requisites $(guix build -d hello) | grep perl | grep tar /gnu/store/s3ihdpsqpp1dyp0ksh3bqlz974s3lgmq-perl-5.24.0.tar.gz.drv /gnu/store/7mn5srpvna3a2vlj5yrn7gl2cymxxxrz-perl-5.24.0.tar.xz-builder /gnu/store/hf6a23lcbmcakm3hrmi9v1wqv9jj0hqz-perl-5.24.0.tar.xz.drv --8<---------------cut here---------------end--------------->8--- The derivation that builds hello transitively references the derivation that builds perl's source: --8<---------------cut here---------------start------------->8--- $ guix gc --references $(guix build -d hello) | grep coreutil /gnu/store/wyczskk2sn1hjcsivlj7h0vi3yqpynzf-coreutils-8.25.drv $ guix gc --references /gnu/store/wyczskk2sn1hjcsivlj7h0vi3yqpynzf-coreutils-8.25.drv | grep perl /gnu/store/h9ykhdm8zbxsfxcif0rsakf0dklzz17k-perl-5.24.0.drv $ guix gc --references /gnu/store/h9ykhdm8zbxsfxcif0rsakf0dklzz17k-perl-5.24.0.drv | grep tar /gnu/store/hf6a23lcbmcakm3hrmi9v1wqv9jj0hqz-perl-5.24.0.tar.xz.drv --8<---------------cut here---------------end--------------->8--- This means that perl's source is required in order to build hello from scratch. In spite of that, perl's source is missing from the list of transitive sources of hello. Is this intended? I expected 'guix build --sources=transitive hello' to pre-fetch ALL the sources required to build hello, so I was surprised that the perl source was not included. -- Chris
signature.asc
Description: PGP signature