Subject: Re: MELPA importer uses the wrong source when called from CLI

From: Xinglu Chen <[email-masked]>
Date: Sun, 13 Jun 2021 20:11:55 +0200

Okay, so new findings:

When the (guix import elpa) module has been compiled, the generated
package definition uses ‘url-fetch’ to fetch the source.

--8<---------------cut here---------------start------------->8---
~/src/guix [env]$ ./pre-inst-env guix import elpa -a melpa magit

Starting download of /tmp/guix-file.US750W
From https://melpa.org/packages/magit-20210609.2000.tar...
 …609.2000.tar  1.7MiB                365KiB/s 00:05 [##################] 100.0%
(package
  (name "emacs-magit")
  (version "20210609.2000")
  (source
    (origin
      (method url-fetch)
      (uri (string-append
             "https://melpa.org/packages/magit-"
             version
             ".tar"))
      (sha256
        (base32
          "0pplizxy20i3i9zqm5kfjz4la93gpz8wwh1ybwdwngv5ks7vhdsr"))))
  (build-system emacs-build-system)
  (propagated-inputs
    `(("emacs-dash" ,emacs-dash)
      ("emacs-git-commit" ,emacs-git-commit)
      ("emacs-magit-section" ,emacs-magit-section)
      ("emacs-transient" ,emacs-transient)
      ("emacs-with-editor" ,emacs-with-editor)))
  (home-page "https://github.com/magit/magit")
  (synopsis "A Git porcelain inside Emacs.")
  (description
    "Magit is a text-based Git user interface that puts an unmatched focus
on streamlining workflows.  Commands are invoked using short mnemonic
key sequences that take the cursor’s position in the highly actionable
interface into account to provide context-sensitive behavior.

With Magit you can do nearly everything that you can do when using Git
on the command-line, but at greater speed and while taking advantage
of advanced features that previously seemed too daunting to use on a
daily basis.  Many users will find that by using Magit they can become
more effective Git user.
")
  (license #f))
--8<---------------cut here---------------end--------------->8---

However, if the (guix import elpa) module hasn’t been compiled, say I
just add a dummy comment to it, then the generated package definition
uses ‘git-fetch’ instead of ‘url-fetch’.  Notice the messages emitted by
Guile.

--8<---------------cut here---------------start------------->8---
~/src/guix [env]$ ./pre-inst-env guix import elpa -a melpa magit
;;; note: source file /home/yoctocell/src/guix/guix/import/elpa.scm
;;;       newer than compiled /home/yoctocell/src/guix/guix/import/elpa.go
;;; note: source file /home/yoctocell/src/guix/guix/import/elpa.scm
;;;       newer than compiled /home/yoctocell/.config/guix/current/lib/guile/3.0/site-ccache/guix/import/elpa.go
;;; note: source file /home/yoctocell/src/guix/guix/import/elpa.scm
;;;       newer than compiled /home/yoctocell/.guix-home/profile/lib/guile/3.0/site-ccache/guix/import/elpa.go
;;; note: source file /home/yoctocell/src/guix/guix/import/elpa.scm
;;;       newer than compiled /home/yoctocell/.config/guix/current/lib/guile/3.0/site-ccache/guix/import/elpa.go
;;; note: source file /home/yoctocell/src/guix/guix/import/elpa.scm
;;;       newer than compiled guix/import/elpa.go
;;; note: source file /home/yoctocell/src/guix/guix/import/elpa.scm
;;;       newer than compiled /home/yoctocell/.cache/guile/ccache/3.0-LE-8-4.5/home/yoctocell/src/guix/guix/import/elpa.scm.go
(package
  (name "emacs-magit")
  (version "20210609.2000")
  (source
    (origin
      (method git-fetch)
      (uri (git-reference
             (url "https://github.com/magit/magit.git")
             (commit
               "71f57c5582448be81b02ba53750dd2ea39ed0eaf")))
      (sha256
        (base32
          "16ip50a46nk6xxj8qkpf6rmp28zjc1bhyjj9bfgibim8ywj87dlq"))))
  (build-system emacs-build-system)
  (propagated-inputs
    `(("emacs-dash" ,emacs-dash)
      ("emacs-git-commit" ,emacs-git-commit)
      ("emacs-magit-section" ,emacs-magit-section)
      ("emacs-transient" ,emacs-transient)
      ("emacs-with-editor" ,emacs-with-editor)))
  (arguments
    '(#:include
      '("^lisp/magit$"
        "^lisp/magit[^/]+.el$"
        "^lisp/git-rebase.el$"
        "^Documentation/magit.texi$"
        "^Documentation/AUTHORS.md$"
        "^LICENSE$")
      #:exclude
      '("^lisp/magit-libgit.el$"
        "^lisp/magit-section.el$")))
  (home-page "https://github.com/magit/magit")
  (synopsis "A Git porcelain inside Emacs.")
  (description
    "Magit is a text-based Git user interface that puts an unmatched focus
on streamlining workflows.  Commands are invoked using short mnemonic
key sequences that take the cursor’s position in the highly actionable
interface into account to provide context-sensitive behavior.

With Magit you can do nearly everything that you can do when using Git
on the command-line, but at greater speed and while taking advantage
of advanced features that previously seemed too daunting to use on a
daily basis.  Many users will find that by using Magit they can become
more effective Git user.
")
  (license #f))
--8<---------------cut here---------------end--------------->8---

Maybe there is some problem with Guile itself?