Hi David, "Thompson, David" <dthomps...@worcester.edu> writes:
> I believe this is incorrect and I will explain why. This exact > circumstance was brought up in the early days of the Guix project when > FSDG compliance was a big topic of discussion because Ludovic and RMS > were making sure that Guix conformed to it. It is true that Guix will > download source archives for packages that *may* contain files with a > nonfree license. However, Guix has a special mechanism developed > specifically to deal with this issue. In Guix, the <origin> data type > is used to store information about a package's source code. In this > data structure there is a field called "snippet" which may contain a > custom procedure written by the person that wrote the package. The > role of the snippet procedure is to *remove* any files in the source > archive that are not freely licensed. The result is a new source > archive that contains only freely licensed files. The most important > part of this process is that the original source archive is *never* > accessible to the Guix user via any Guix tools. The original archive > is discarded and does not end up in the canonical location for Guix > data: /gnu/store. Thus, running `guix build --source > problematic-package` will only ever return the cleaned archive, never > the original with nonfree files. Therefore, Guix has taken sufficient > technical measures to avoid steering its user towards nonfree software > and thus Guix is compliant with the FSDG. Unfortunately I think this isn't true. For example this is what 'guix build -S zpaq' outputs: --8<---------------cut here---------------start------------->8--- substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% The following derivation will be built: /gnu/store/k9g90yqfcz8c0lnz1mcfd9k53llyw8wh-zpaq715.tar.xz.drv 2,7 MB will be downloaded: /gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip substituting /gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip... downloading from https://ci.guix.gnu.org/nar/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip... zpaq715.zip 2.6MiB 2.4MiB/s 00:01 [##################] 100.0% building /gnu/store/k9g90yqfcz8c0lnz1mcfd9k53llyw8wh-zpaq715.tar.xz.drv... /gnu/store/cnqpra8vr2l5fz00rr4yj4bp3hr00cfw-tar-1.32/bin/tar: Option --mtime: Treating date '@0' as 1970-01-01 00:00:00 zpaq715.zip/ zpaq715.zip/COPYING zpaq715.zip/Makefile zpaq715.zip/libzpaq.cpp zpaq715.zip/libzpaq.h zpaq715.zip/readme.txt zpaq715.zip/zpaq.cpp zpaq715.zip/zpaq.pod source is under 'zpaq715.zip' `/gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip/libzpaq.h' -> `zpaq715.zip/libzpaq.h' `/gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip/zpaq.pod' -> `zpaq715.zip/zpaq.pod' `/gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip/Makefile' -> `zpaq715.zip/Makefile' `/gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip/zpaq.exe' -> `zpaq715.zip/zpaq.exe' `/gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip/libzpaq.cpp' -> `zpaq715.zip/libzpaq.cpp' `/gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip/COPYING' -> `zpaq715.zip/COPYING' `/gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip/zpaq.cpp' -> `zpaq715.zip/zpaq.cpp' `/gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip/zpaq64.exe' -> `zpaq715.zip/zpaq64.exe' `/gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip/readme.txt' -> `zpaq715.zip/readme.txt' successfully built /gnu/store/k9g90yqfcz8c0lnz1mcfd9k53llyw8wh-zpaq715.tar.xz.drv /gnu/store/ran43jk8ngc60zzxgzhzdhkrpyb9i0ji-zpaq715.tar.xz --8<---------------cut here---------------end--------------->8--- Both /gnu/store/32xxhz1sf3v9wxkhlvf4b9493dy588gi-zpaq715.zip and /gnu/store/ran43jk8ngc60zzxgzhzdhkrpyb9i0ji-zpaq715.tar.xz are accessible. The former allows me to access zpaq64.exe and zpaq.exe although the snippet is: --8<---------------cut here---------------start------------->8--- (snippet ;; Delete irrelevant pre-compiled binaries. '(begin (for-each delete-file (find-files "." "\\.exe$")) #t)) --8<---------------cut here---------------end--------------->8--- Clément