Hi, Julien Lepiller writes: > I don't think this is the right fix. Now you define packages with the > incorrect url-fetch, so the test passes, but package->code would still > not work as intended on actual packages that are properly defined. > > It seems that the issue is package->code uses the internal name > url-fetch* whereas it should be the exported name url-fetch. I think > this is a legitimate bug in package->code and your patch incorrectly > hides it. I think Julien is correct. The url-fetch* procedure from guix/download.scm is here: (define* (url-fetch* url hash-algo hash #:optional name #:key (system (%current-system)) (guile (default-guile)) executable?) "Return a fixed-output derivation that fetches data from URL (a string, or a list of strings denoting alternate URLs), which is expected to have hash HASH of type HASH-ALGO (a symbol). By default, the file name is the base name of URL; optionally, NAME can specify a different file name. When EXECUTABLE? is true, make the downloaded file executable. ... And the url-fetch procedure from guix/build/download.scm is here: (define* (url-fetch url file #:key (timeout 10) (verify-certificate? #t) (mirrors '()) (content-addressed-mirrors '()) (hashes '()) print-build-trace?) "Fetch FILE from URL; URL may be either a single string, or a list of string denoting alternate URLs for FILE. Return #f on failure, and FILE on success. ... They do different things, even though they share the same name. The problem, apparently introduced with commit f7008ca71351e5368a7c1c5bc3fe88fb80b01298, is that before the change, package->code produced code that uses url-fetch, and after the change, it produced code that uses url-fetch*. Reverting the change fixes it. I reverted it and tested it, and it does fix the test. I wonder if we can just revert it for now? What do you think, Ludo? In guix/import/print.scm, package->code generates the code by invoking (origin-method source) to get the origin's "method", and then invoking (procedure-name method) on the method thus obtained. It seems that procedure-name returns the name "url-fetch*" (the name used privately in the (guix download) module), but it should be returning the name "url-fetch" (the public name exported by the (guix download) module). I wonder if there is any way to get the public name of the procedure programmatically, instead of the private one? -- Chris