Subject: Re: [bug#39878] gnu: add emacs-bookmarks+

From: Oleg Pykhalov <[email-masked]>
Date: Sat, 25 Jul 2020 22:49:37 +0300

Hi,

So much time was passed, but maybe we could get this to work if the
package still helpful for Emacs users.

[email-masked] (Amar M. Singh) writes:

[…]

> diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
> index be0e6a84c2..1ac5f77bb7 100644
> --- a/gnu/packages/emacs-xyz.scm
> +++ b/gnu/packages/emacs-xyz.scm
> @@ -21536,3 +21536,39 @@ Values are stored in a directory in @code{user-emacs-directory}, using
>  one file per value.  This makes it easy to delete or remove unused
>  variables.")
>      (license license:gpl3+)))
> +
> +(define-public emacs-bookmark+
> +  (package
> +    (name "emacs-bookmark+")
> +    (version "2020.01.22")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (map (lambda (x)
> +                          (string-append
> +                           "https://www.emacswiki.org/emacs/download/" x))
> +                        `("bookmark+.el"
> +                          "bookmark+-mac.el"
> +                          "bookmark+-bmu.el"
> +                          "bookmark+-key.el"
> +                          "bookmark+-lit.el"
> +                          "bookmark+-1.el")))

‘bookmarks+-mac.el’ and other files are missing because this ‘(origin
...)’ returns only a single file:
--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build --no-grafts --no-offload 'emacs-bookmark+' -S
/gnu/store/p0lvca4zr1rh4bs9fd281hjh15ck28x8-bookmark+.el
--8<---------------cut here---------------end--------------->8---

You could use ‘(origin ...)’ inside ‘(inputs ...)’ to fetch all the
files, but in that case we could have an issue with more hashes as
described bellow.

To fix issue with hashes I think we could use url-fetch on
https://github.com/emacsmirror/emacswiki.org/blob/f2f216389097ada0172ebbfaaf594e397930682e/bookmark%2B.el
and other files.

> +              (sha256
> +               (base32
> +                "1dkpszmflik3yhv05w8rvi6vz1mzgapncb5y231r6mwy40rphyhi"))))

The hash was changed, even the version is the same.

> +    (build-system emacs-build-system)
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (add-before 'build 'build-mac
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let ((out (assoc-ref outputs "out")))
> +               (invoke "emacs" "-Q" "--batch"
> +                       "--eval='(byte-compile-file \"bookmark+-mac.el\"'")))))))

‘emacs-build-system’ provides a byte compilation AFAIK, so don't need
this ‘(arguments ...)’.

> +    (home-page "https://www.emacswiki.org/emacs/bookmark%2b.el")
> +    (synopsis "Bookmark+: extensions to standard library `bookmark.el'")

Rather “@code{bookmark}”.

Oleg.