Ludovic Courtès (2014-11-11 22:57 +0300) wrote: > Alex Kost <alez...@gmail.com> skribis: > >> Ludovic Courtès (2014-11-11 02:29 +0300) wrote: [...] >>> There’s still the possibility that (1) the source is there, so no >>> “Download” button, (2) the source is GC’d, and (3) there’s still no >>> “Download” button and trying to access the source fails gracelessly. >>> >>> That’s probably not very common in practice, and easily fixed by hitting >>> ‘g’, so maybe it’s not worth worrying. WDYT? >> >> Do you mean a user deleted the source (with "guix gc") when a “package >> info” buffer was displayed? Sure such cases are not (and I think cannot >> be) handled. It's the same as if: >> >> 1) a user has a list of installed packages, >> >> 2) installs another package somewhere outside (e.g., in a shell with >> "guix package -i"), >> >> 3) and wonders why the list is not up-to-date. >> >> Of course it is not up-to-date! He needs to revert a buffer after that. > > It’s not really comparable, because GC is always something that can > happen concurrently (one may choose to run it from cron, for instance.) > But let’s ignore this possibility for the present case. :-)
OK, thanks >>>> +(define (package-source-names package) >>>> + "Return a list of source names (URLs) of the PACKAGE." >>>> + (let ((source (package-source package))) >>>> + (and (origin? source) >>>> + (filter-map (lambda (uri) >>>> + (cond ((string? uri) >>>> + uri) >>>> + ((git-reference? uri) >>>> + (git-reference-url uri)) >>>> + (else #f))) >>>> + (list-maybe (origin-uri source)))))) >>> >>> The #f case above just leads to degraded display, not breakage, right? >>> (I’m asking because of the other things beyond string? and >>> git-reference?.) >> >> Yes, there _would_ be just "Source: –", but it will not happen because >> there are no other things beyond a string URL and a git-reference URL. > > There’s also ‘svn-reference’ (not currently used), and possibly other > things. > > The point is that this part will have to be updated anytime new origin > methods are added. Yes, sure. What about making “(else "Unknown source type")”? And if some package will use a new origin method, a “Source” field will display “Unknown source type” string, so we'll not forget to update this thing. >> From 733c5276bcb9ded008e9c0a4dbe2e5fb6561b5eb Mon Sep 17 00:00:00 2001 >> From: Alex Kost <alez...@gmail.com> >> Date: Sun, 9 Nov 2014 11:03:39 +0300 >> Subject: [PATCH] emacs: Add "Source" field to 'guix-info' buffers. >> MIME-Version: 1.0 >> Content-Type: text/plain; charset=UTF-8 >> Content-Transfer-Encoding: 8bit >> >> Suggested by Ludovic Courtès. >> >> * emacs/guix-info.el (guix-info-insert-methods, guix-info-displayed-params): >> Add 'source' parameter. >> (guix-package-info-source): New face. >> (guix-package-source): New button type. >> (guix-package-info-auto-find-source, >> guix-package-info-auto-download-source, >> guix-package-info-download-buffer): New variables. >> (guix-package-info-show-source, guix-package-info-insert-source-url, >> guix-package-info-insert-source, guix-package-info-download-source, >> guix-package-info-redisplay-after-download): New procedures. >> * emacs/guix-base.el (guix-param-titles): Add 'source' parameter. >> (guix-operation-prompt): Add 'prompt' argument. >> (guix-after-source-download-hook): New variable. >> (guix-package-source-path, guix-package-source-build-derivation): New >> procedures. >> * emacs/guix-main.scm (%package-param-alist): Add 'source' parameter. >> (package-source-names, package-source-derivation->store-path, >> package-source-path, package-source-build-derivation): New procedures. > > I think we’re all set now, no? :-) I think so. May I commit with the above “Unknown source type” addition? -- Alex