Subject: Re: bug#56455: gnu: Drop emacs-transient, emacs-project input from four packages

From: Maxim Cournoyer <[email-masked]>
Date: Fri, 15 Jul 2022 23:30:09 -0400

Hi Jorge,

"Jorge P. de Morais Neto" <[email-masked]> writes:

> Hi.  I apologize for any mistakes and welcome feedback.  This is my
> first patch to Guix; let's hope that many others will follow!  I see low
> hanging fruits: including the several other Emacs packages still
> unnecessarily pulling emacs-transient, emacs-project and other Elisp
> libraries that are now builtin.

Thanks for this first patch of yours :-).

> I have been using these modified packages.  I have also checked this
> patch with ~guix lint~ and ~guix build --check~.  The four packages
> build well; the only warning messages were:
>
> In git-timemachine-completing-read-fn:
> git-timemachine.el:101:8: Warning: docstring wider than 80 characters
>
> In git-timemachine--find-new-current-line:
> git-timemachine.el:259:8: Warning: docstring wider than 80 characters
>
> In git-timemachine--get-cursor-position:
> git-timemachine.el:294:8: Warning: docstring wider than 80 characters
>
> In git-timemachine--set-cursor-position:
> git-timemachine.el:300:8: Warning: docstring wider than 80 characters
> git-timemachine.el:347:1: Warning: ‘define-transient-command’ is an obsolete
>     alias (as of Transient 0.3.0); use ‘transient-define-prefix’ instead.
>
> In end of data:
> git-timemachine.el:247:19: Warning: the function ‘erm-reset-buffer’ is not
>     known to be defined.
>
> geiser-autodoc.el:69:12: Warning: ‘eldoc-message’ is an obsolete function (as
>     of eldoc-1.1.0); use ‘eldoc-documentation-functions’ instead.
>
> git-commit-pkg.el:1:2: Warning: the function ‘define-package’ is not known to
>     be defined.

I suppose they run fine as well?  The patch seems reasonable to me.
I'll offer a few cosmetic comments below to adjust for some conventions.

>>>From a0a682e6e4b53282e9e45703c870132310764f3c Mon Sep 17 00:00:00 2001
> From: "Jorge P. de Morais Neto" <[email-masked]>
> Date: Fri, 8 Jul 2022 09:23:29 -0300
> Subject: [PATCH] gnu: Drop emacs-transient, emacs-project input from four
>  packages
>
> Drop emacs-transient (and emacs-project) propagated input from:
> - emacs-git-timemachine
> - emacs-ytdl
> - emacs-geiser
> - emacs-magit
>
> I use Guix package manager (manually installed) atop Debian bullseye.  My
> Emacs is from Guix package emacs-next with a package transformation option to
> pull from current Git master.  When trying to use the new emoji commands on
> the "C-x 8e" prefix, I got an error message about transient.  I solved it by
> modifying Guix recipes to not pull emacs-transient as propagated input of some
> Emacs packages I installed via Guix.
>
> Guix packages Emacs 28.1 and emacs-next 29.0.50, and both have Transient
> built-in.  Therefore, pulling transient external package it as propagated
> input of other packages is wasteful redundancy, and, worse, causes errors.
>
>>>From emacs-geiser also drop emacs-project (also builtin on Emacs 28.1).
>
> For emacs-ytdl also add the required emacs-dash dependency.
>
> See email message ID [email-masked] on guix-devel mailing list.
>
> Several other unnecessary dependencies on builtin Emacs libraries (including
> transient and project) probably remain on emacs-xyz.

If you look at other git logs using "git log" on the repository, you'll
see that most changes are authored in the GNU ChangeLog style, which is
summarily described in the GNU standards document, which can be
installed with 'guix install gnu-standards' and consulted with info
"(standards) Change Logs".

> ---
>  gnu/packages/emacs-xyz.scm | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
> index 2e259287b8..b68a15bc4a 100644
> --- a/gnu/packages/emacs-xyz.scm
> +++ b/gnu/packages/emacs-xyz.scm
> @@ -278,8 +278,6 @@ (define-public emacs-geiser
>                         "-o" "geiser.info" "geiser.texi")))))))
>      (native-inputs
>       (list texinfo))
> -    (propagated-inputs
> -     (list emacs-project emacs-transient))
>      (home-page "https://www.nongnu.org/geiser/")
>      (synopsis "Collection of Emacs modes for Scheme hacking")
>      (description
> @@ -1005,7 +1003,7 @@ (define-public emacs-magit
>      (inputs
>       (list git perl))
>      (propagated-inputs
> -     (list emacs-dash emacs-transient emacs-with-editor))
> +     (list emacs-dash emacs-with-editor))
>      (home-page "https://magit.vc/")
>      (synopsis "Emacs interface for the Git version control system")
>      (description
> @@ -4646,8 +4644,6 @@ (define-public emacs-git-timemachine
>          (base32
>           "1pz4l1xnq6s67w5yq9107vm8dg7rqf8n9dmbn90jys97c722g70n"))))
>      (build-system emacs-build-system)
> -    (propagated-inputs
> -     (list emacs-transient))
>      (home-page "https://gitlab.com/pidu/git-timemachine")
>      (synopsis "Step through historic versions of Git-controlled files")
>      (description "This package enables you to step through historic versions
> @@ -23308,7 +23304,7 @@ (define-public emacs-ytdl
>      (inputs
>       (list youtube-dl))
>      (propagated-inputs
> -     (list emacs-async emacs-transient))
> +     (list emacs-async emacs-dash))
>      (home-page "https://gitlab.com/tuedachu/ytdl")
>      (synopsis "Emacs interface for youtube-dl")
>      (description

Packaging changes in Guix are usually prepared per package, that is, one
commit per package touched, something like this:

--8<---------------cut here---------------start------------->8---
gnu: emacs-geiser: Use builtin project and transient libraries.

These libraries are now included in Emacs 28.

* gnu/packages/emacs-xyz.scm (emacs-geiser)[propagated-inputs]: Delete field.

1 file changed, 2 deletions(-)
gnu/packages/emacs-xyz.scm | 2 --

modified   gnu/packages/emacs-xyz.scm
@@ -278,8 +278,6 @@ (define-public emacs-geiser
                        "-o" "geiser.info" "geiser.texi")))))))
     (native-inputs
      (list texinfo))
-    (propagated-inputs
-     (list emacs-project emacs-transient))
     (home-page "https://www.nongnu.org/geiser/")
     (synopsis "Collection of Emacs modes for Scheme hacking")
     (description
--8<---------------cut here---------------end--------------->8---

and:

--8<---------------cut here---------------start------------->8---
gnu: emacs-magit: Use builtin transient library.

The transient library is now included in Emacs 28.

* gnu/packages/emacs-xyz.scm (emacs-magit)
[propagated-inputs]: Delete emacs-transient.

Signed-off-by: Maxim Cournoyer <[email-masked]>

1 file changed, 1 insertion(+), 1 deletion(-)
gnu/packages/emacs-xyz.scm | 2 +-

modified   gnu/packages/emacs-xyz.scm
@@ -1008,7 +1008,7 @@ (define-public emacs-magit
     (inputs
      (list git perl))
     (propagated-inputs
-     (list emacs-dash emacs-transient emacs-with-editor))
+     (list emacs-dash emacs-with-editor))
     (home-page "https://magit.vc/")
     (synopsis "Emacs interface for the Git version control system")
     (description
--8<---------------cut here---------------end--------------->8---

etc.

I've made these adjustments for you since it's your first commit, and
pushed the master branch; you can see your change partitioned as 4
commits with:

--8<---------------cut here---------------start------------->8---
$ git log 6ff3fe86b5f72c982b59cd4c8b7fc3295961a9a7^..82fa1a38e7fab036c62ca9cfc396286ca007e456
--8<---------------cut here---------------end--------------->8---

Thank you for this first contribution!  I look forward to see more :-).

Maxim