[PATCH emacs-team WIP 0/4] Simplify creation of emacs package variants

  • Open
  • quality assurance status badge
Details
4 participants
  • Liam Hupfer
  • Liliana Marie Prikler
  • Suhail Singh
  • Simon Tournier
Owner
unassigned
Submitted by
Liliana Marie Prikler
Severity
normal
L
L
Liliana Marie Prikler wrote on 31 Jul 21:58 +0200
(address . guix-patches@gnu.org)(address . gemmaro.dev@gmail.com)
cover.1722455929.git.liliana.prikler@gmail.com
Hi Guix,

this has been a long TODO for emacs-team, which became even more urgent with
the recent bugs concerning Emacs native compilation and a way for providing
grafts to it. With this series, we can make natively-compiled Emacs packages
substitutable just like their byte-compiled alternatives – to this end,
we also make plain emacs the default for emacs-build-system and provide
procedures to create emacs-next-*, emacs-minimal-*, and emacs-pgtk-* variants
of packages.

What's still left to do in this series is actually defining all of them.
There's quite a number of packages to go over, not all of which build using
emacs-build-system. And of course, building N variants of every Emacs package
will not make the load for CI lighter, so let's keep N small, shall we? :)

Cheers

Liliana Marie Prikler (4):
build-system: emacs: Define package-with-explicit-emacs.
build-system: emacs: Make emacs the default variant.
build-system: emacs: Define common variants.
etc: Provide snippet for defining emacs variants.

etc/snippets/tempel/scheme-mode | 8 ++++
guix/build-system/emacs.scm | 80 +++++++++++++++++++++++++++++++--
2 files changed, 84 insertions(+), 4 deletions(-)


base-commit: fee360f85384fb06f7d0c46891126b1f85c9c740
--
2.45.2
L
L
Liliana Marie Prikler wrote on 31 Jul 21:57 +0200
[PATCH emacs-team WIP 1/4] build-system: emacs: Define package-with-explicit-emacs.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
ebba49b3cb06535605bb676ee27932f8f2d0cec7.1722455929.git.liliana.prikler@gmail.com
* guix/build-system/emacs.scm (package-with-explicit-emacs): New procedure.
---
guix/build-system/emacs.scm | 51 +++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)

Toggle diff (69 lines)
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index ebf97a5344..3a11738496 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2024 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -128,4 +129,54 @@ (define emacs-build-system
(description "The build system for Emacs packages")
(lower lower)))
+(define* (package-with-explicit-emacs emacs old-prefix new-prefix
+ #:key variant-property)
+ "Return a procedure of one argument, P. The procedure creates a package with
+the same fields as P, which is assumed to use EMACS-BUILD-SYSTEM, such that
+it is compiled with EMACS instead. The inputs are changed recursively
+accordingly. If the name of P starts with OLD-PREFIX, this is replaced by
+NEW-PREFIX; otherwise, NEW-PREFIX is prepended to the name.
+
+When VARIANT-PROPERTY is present, it is used as a key to search for
+pre-defined variants of this transformation recorded in the 'properties' field
+of packages. The property value must be the promise of a package. This is a
+convenient way for package writers to force the transformation to use
+pre-defined variants."
+ (define package-variant
+ (if variant-property
+ (lambda (package)
+ (assq-ref (package-properties package)
+ variant-property))
+ (const #f)))
+
+ (define (transform pkg)
+ (cond
+ ;; If VARIANT-PROPERTY is present, use that.
+ ((package-variant pkg)
+ => force)
+
+ ;; Otherwise build the new package object graph.
+ ((eq? (package-build-system pkg) emacs-build-system)
+ (package/inherit pkg
+ (location (package-location pkg))
+ (name (let ((name (package-name pkg)))
+ (string-append new-prefix
+ (if (string-prefix? old-prefix name)
+ (substring name
+ (string-length old-prefix))
+ name))))
+ (arguments
+ (let ((emacs (if (promise? emacs)
+ (force emacs)
+ emacs)))
+ (ensure-keyword-arguments (package-arguments pkg)
+ `(#:emacs ,emacs))))))
+ (else pkg)))
+
+ (define (cut? pkg)
+ (or (not (eq? (package-build-system pkg) emacs-build-system))
+ (package-variant pkg)))
+
+ (package-mapping transform cut?))
+
;;; emacs.scm ends here
--
2.45.2
L
L
Liliana Marie Prikler wrote on 31 Jul 20:42 +0200
[PATCH emacs-team WIP 3/4] build-system: emacs: Define common variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
096695fa7db5074fef4c970b674cc4798c15dd7d.1722455929.git.liliana.prikler@gmail.com
* guix/build-system/emacs.scm (package-with-emacs-minimal)
(package-with-emacs-next, package-with-emacs-pgtk): New variables.
---
guix/build-system/emacs.scm | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)

Toggle diff (39 lines)
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index 88304b9ce1..74bb047e63 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -31,7 +31,11 @@ (define-module (guix build-system emacs)
#:use-module (guix build-system gnu)
#:export (%emacs-build-system-modules
emacs-build
- emacs-build-system)
+ emacs-build-system
+ ;; Common variants.
+ package-with-emacs-minimal
+ package-with-emacs-next
+ package-with-emacs-pgtk)
#:re-export (%default-include ;for convenience
%default-exclude))
@@ -181,4 +185,19 @@ (define* (package-with-explicit-emacs emacs old-prefix new-prefix
(package-mapping transform cut?))
+(define package-with-emacs-minimal
+ (package-with-explicit-emacs (delay (resolve-emacs 'emacs-minimal))
+ "emacs-" "emacs-minimal-"
+ #:variant-property 'emacs-minimal-variant))
+
+(define package-with-emacs-pgtk
+ (package-with-explicit-emacs (delay (resolve-emacs 'emacs-pgtk))
+ "emacs-" "emacs-pgtk-"
+ #:variant-property 'emacs-pgtk-variant))
+
+(define package-with-emacs-next
+ (package-with-explicit-emacs (delay (resolve-emacs 'emacs-next))
+ "emacs-" "emacs-next-"
+ #:variant-property 'emacs-next-variant))
+
;;; emacs.scm ends here
--
2.45.2
L
L
Liliana Marie Prikler wrote on 31 Jul 20:41 +0200
[PATCH emacs-team WIP 2/4] build-system: emacs: Make emacs the default variant.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
0b19153db447c6b774bfb69b99ec5eaa502d0d7d.1722455929.git.liliana.prikler@gmail.com
* guix/build-system/emacs.scm (resolve-emacs): New variable.
(default-emacs): Use it. Change to ‘emacs’ instead of ‘emacs-minimal’.
---
guix/build-system/emacs.scm | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

Toggle diff (23 lines)
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index 3a11738496..88304b9ce1 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -49,11 +49,13 @@ (define %emacs-build-system-modules
(guix build emacs-utils)
,@%gnu-build-system-modules))
-(define (default-emacs)
- "Return the default Emacs package."
+(define* (resolve-emacs name)
+ "Lazily resolve the emacs package by variable NAME."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((emacs-mod (resolve-interface '(gnu packages emacs))))
- (module-ref emacs-mod 'emacs-minimal)))
+ (module-ref emacs-mod name)))
+
+(define (default-emacs) (resolve-emacs 'emacs))
(define* (lower name
#:key source inputs native-inputs outputs system target
--
2.45.2
L
L
Liliana Marie Prikler wrote on 31 Jul 21:54 +0200
[PATCH emacs-team WIP 4/4] etc: Provide snippet for defining emacs variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
8462cdbd0591cc0ed1b8e6bf8f5882edc2115648.1722455929.git.liliana.prikler@gmail.com
* etc/snippets/tempel/scheme-mode (emacs-variants...): New snippet.
---
etc/snippets/tempel/scheme-mode | 8 ++++++++
1 file changed, 8 insertions(+)

Toggle diff (21 lines)
diff --git a/etc/snippets/tempel/scheme-mode b/etc/snippets/tempel/scheme-mode
index 249f4ce8e3..5ad9fd48a7 100644
--- a/etc/snippets/tempel/scheme-mode
+++ b/etc/snippets/tempel/scheme-mode
@@ -14,6 +14,14 @@ scheme-mode
n > "(description \"" p "\")"
n > "(license license:" (p "unknown") ")))" n)
+(emacs-variants...
+ "(define-public emacs-next-" (s name)
+ n> "(package-with-emacs-next emacs-" (s name) "))" n n
+ "(define-public emacs-minimal-" (s name)
+ n> "(package-with-emacs-minimal emacs-" (s name) "))" n n
+ "(define-public emacs-pgtk-" (s name)
+ n> "(package-with-emacs-pgtk emacs-" (s name) "))")
+
(origin...
"(origin"
n> "(method " (p "url-fetch" method) ")"
--
2.45.2
S
S
Suhail Singh wrote on 1 Aug 05:23 +0200
Re: [bug#72406] [PATCH emacs-team WIP 0/4] Simplify creation of emacs package variants
(name . Liliana Marie Prikler)(address . liliana.prikler@gmail.com)
871q39orif.fsf@gmail.com
Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

Toggle quote (4 lines)
> With this series, we can make natively-compiled Emacs packages
> substitutable just like their byte-compiled alternatives – to this
> end, we also make plain emacs the default for emacs-build-system

I don't follow. What's the advantage to making `emacs' the default for
emacs-build-system as opposed to `emacs-minimal' ? If this is to enable
native-compilation, could that not be done via `emacs-no-x' instead?
`emacs' seems to bring in a number of additional inputs, and it's not
clear to me that they make a better default.

I propose that the patch to change the defaults for the
emacs-build-system should perhaps be tackled in a different issue than
the patch series that provides procedures to create variants of
packages.

Toggle quote (3 lines)
> and provide procedures to create emacs-next-*, emacs-minimal-*, and
> emacs-pgtk-* variants of packages.

These seem useful. However, it may help to have an example of one of
these being used.

If you split the patch series such that the current issue doesn't alter
the default for the emacs-build-system, then it might help to only
provide the procedure for creating an emacs-no-x-* variant (since they
are pretty similar), and use it for a package like emacs-org and/or
emacs-magit.

Toggle quote (4 lines)
> What's still left to do in this series is actually defining all of them.
> There's quite a number of packages to go over, not all of which build using
> emacs-build-system.

For the packages that don't use the emacs-build-system today, is the
idea to switch them to using it? If so, it might help to review that
list.

Toggle quote (3 lines)
> And of course, building N variants of every Emacs package will not
> make the load for CI lighter, so let's keep N small, shall we? :)

If I am understanding correctly, it seems N can be 1 most of the time
(corresponding to one of the "current" variants). Sometimes we may need
a "next" variant, but in those cases a "current" variant likely wouldn't
suffice.

It's not clear that there's much utility in having multiple "current"
variants, but perhaps that can be discussed at a later date (when and if
such a change is introduced).

--
Suhail
L
L
Liliana Marie Prikler wrote on 1 Aug 06:32 +0200
(name . Suhail Singh)(address . suhailsingh247@gmail.com)
7db00ce35b9ba6132a042a680c1de0bddf186afc.camel@gmail.com
Am Mittwoch, dem 31.07.2024 um 23:23 -0400 schrieb Suhail Singh:
Toggle quote (16 lines)
> Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
>
> > With this series, we can make natively-compiled Emacs packages
> > substitutable just like their byte-compiled alternatives – to this
> > end, we also make plain emacs the default for emacs-build-system
>
> I don't follow.  What's the advantage to making `emacs' the default
> for emacs-build-system as opposed to `emacs-minimal' ?  If this is to
> enable native-compilation, could that not be done via `emacs-no-x'
> instead? `emacs' seems to bring in a number of additional inputs, and
> it's not clear to me that they make a better default.
>
> I propose that the patch to change the defaults for the
> emacs-build-system should perhaps be tackled in a different issue
> than the patch series that provides procedures to create variants of
> packages.
None of the emacsen are native-comp-compatible to each other.  
By design: they have different feature sets, so they get different
tags.

For package naming, "emacs" should mean "emacs", not "emacs-minimal" or
"emacs-no-x".

Toggle quote (5 lines)
> > and provide procedures to create emacs-next-*, emacs-minimal-*, and
> > emacs-pgtk-* variants of packages.
>
> These seem useful.  However, it may help to have an example of one of
> these being used.
Example: I am personally using emacs-pgtk.

Toggle quote (5 lines)
> If you split the patch series such that the current issue doesn't
> alter the default for the emacs-build-system, then it might help to
> only provide the procedure for creating an emacs-no-x-* variant
> (since they are pretty similar), and use it for a package like emacs-
> org and/or emacs-magit.
Sure, we could provide that procedure – for now I only provided those
that I'd plan to build on CI.

Toggle quote (7 lines)
> > What's still left to do in this series is actually defining all of
> > them. There's quite a number of packages to go over, not all of
> > which build using emacs-build-system.
>
> For the packages that don't use the emacs-build-system today, is the
> idea to switch them to using it?  If so, it might help to review that
> list.
No, they would have to be special-cased. There's a bunch of things
emacs-build-system can't account for, which are solved by a simple
Makefile. If anything, we'd extend the procedure to also capture
those.

Toggle quote (7 lines)
> > And of course, building N variants of every Emacs package will not
> > make the load for CI lighter, so let's keep N small, shall we? :)
>
> If I am understanding correctly, it seems N can be 1 most of the time
> (corresponding to one of the "current" variants).  Sometimes we may
> need a "next" variant, but in those cases a "current" variant likely
> wouldn't suffice.
N should be the number of Emacsen in practical use by the Guix
community, which is currently >= 2.

Cheers
S
S
Suhail Singh wrote on 1 Aug 08:02 +0200
(name . Liliana Marie Prikler)(address . liliana.prikler@gmail.com)
87r0b8eq6c.fsf@gmail.com
Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

Toggle quote (8 lines)
>> I propose that the patch to change the defaults for the
>> emacs-build-system should perhaps be tackled in a different issue
>> than the patch series that provides procedures to create variants of
>> packages.
> None of the emacsen are native-comp-compatible to each other.  
> By design: they have different feature sets, so they get different
> tags.

I didn't realize they were ABI incompatible. Okay.

Toggle quote (10 lines)
> For package naming, "emacs" should mean "emacs", not "emacs-minimal" or
> "emacs-no-x".
>
>> > and provide procedures to create emacs-next-*, emacs-minimal-*, and
>> > emacs-pgtk-* variants of packages.
>>
>> These seem useful.  However, it may help to have an example of one of
>> these being used.
> Example: I am personally using emacs-pgtk.

I meant that it would be helpful to see an example of, say,
package-with-emacs-pgtk in the patch series.

--
Suhail
L
L
Liliana Marie Prikler wrote on 1 Aug 18:54 +0200
(name . Suhail Singh)(address . suhailsingh247@gmail.com)
e99fae6fe809caba74b0b87a8393597674e41194.camel@gmail.com
Am Donnerstag, dem 01.08.2024 um 02:02 -0400 schrieb Suhail Singh:
Toggle quote (2 lines)
> I meant that it would be helpful to see an example of, say,
> package-with-emacs-pgtk in the patch series.
That's why I wrote that this is still left to do for the series.
There's a snippet included – starting at the top of emacs-xyz with
emacs-ac-ispell, it yields

#+begin_src scheme
(define-public emacs-next-ac-ispell
(package-with-emacs-next emacs-ac-ispell))

(define-public emacs-minimal-ac-ispell
(package-with-emacs-minimal emacs-ac-ispell))

(define-public emacs-pgtk-ac-ispell
(package-with-emacs-pgtk emacs-ac-ispell))
#+end_src

without the org-mode code block.

Cheers
S
S
Suhail Singh wrote on 1 Aug 21:40 +0200
(name . Liliana Marie Prikler)(address . liliana.prikler@gmail.com)
87a5hw58wk.fsf@gmail.com
Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

Toggle quote (16 lines)
> There's a snippet included – starting at the top of emacs-xyz with
> emacs-ac-ispell, it yields
>
> #+begin_src scheme
> (define-public emacs-next-ac-ispell
> (package-with-emacs-next emacs-ac-ispell))
>
> (define-public emacs-minimal-ac-ispell
> (package-with-emacs-minimal emacs-ac-ispell))
>
> (define-public emacs-pgtk-ac-ispell
> (package-with-emacs-pgtk emacs-ac-ispell))
> #+end_src
>
> without the org-mode code block.

Thank you for elaborating. I had difficulty understanding the template.
This looks good. It's not too verbose, and yet still greppable.

--
Suhail
L
L
Liliana Marie Prikler wrote on 10 Aug 06:31 +0200
[PATCH emacs-team WIP v3 18/24] [WIP] gnu: emacs-dvc: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
23224410b639441f8868dd0713e8820025c7acee.1723300543.git.liliana.prikler@gmail.com
XXX: Only emacs-minimal-dvc and emacs-next-dvc build currently.

* gnu/packages/emacs-xyz.scm (emacs-dvc)[native-inputs]: Replace
emacs-minimal with emacs.
[properties]: Add ‘minimal-variant’, ‘next-variant’ and ‘pgtk-variant’.
(emacs-minimal-dvc, emacs-next-dvc, emacs-pgtk-dvc): New variables.
---
gnu/packages/emacs-xyz.scm | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)

Toggle diff (45 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 764b535d45..f0fb00a697 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -9349,14 +9349,36 @@ (define-public emacs-dvc
(("@itemx drop") "@item drop")
(("@itemx left file") "@item left file")))))))
(native-inputs
- (list autoconf automake emacs-minimal texinfo))
+ (list autoconf automake emacs texinfo))
(home-page "http://xsteve.at/prg/emacs_dvc/index.html")
(synopsis "Emacs front-end for various distributed version control systems")
(description "DVC is a legacy Emacs front-end for a number of
distributed version control systems. It currently supports GNU Arch, GNU
Bazaar, git, Mercurial, and Monotone. It also provides some integration with
Gnus, e.g., for applying patches received by email.")
- (license license:gpl2+))))
+ (license license:gpl2+)
+ (properties
+ `((minimal-variant . ,(delay emacs-minimal-dvc))
+ (next-variant . ,(delay emacs-next-dvc))
+ (pgtk-variant . ,(delay emacs-pgtk-dvc)))))))
+
+(define-public emacs-minimal-dvc
+ (package/inherit emacs-dvc
+ (name "emacs-minimal-dvc")
+ (native-inputs (modify-inputs (package-native-inputs emacs-dvc)
+ (replace "emacs" emacs-minimal)))))
+
+(define-public emacs-next-dvc
+ (package/inherit emacs-dvc
+ (name "emacs-next-dvc")
+ (native-inputs (modify-inputs (package-native-inputs emacs-dvc)
+ (replace "emacs" emacs-next)))))
+
+(define-public emacs-pgtk-dvc
+ (package/inherit emacs-dvc
+ (name "emacs-pgtk-dvc")
+ (native-inputs (modify-inputs (package-native-inputs emacs-dvc)
+ (replace "emacs" emacs-pgtk)))))
(define-public emacs-sudo-edit
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 10 Aug 07:02 +0200
[PATCH emacs-team WIP v3 19/24] gnu: emacspeak: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
add9b4f1b449008264efd9a839450ab6800b55cf.1723300543.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacspeak)[properties]: Add ‘minimal-variant’,
‘next-variant’ and ‘pgtk-variant’.
(emacspeak-minimal, emacspeak-next, emacspeak-pgtk): New variables.
---
gnu/packages/emacs-xyz.scm | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)

Toggle diff (37 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index f0fb00a697..22c21340bc 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -19296,7 +19296,29 @@ (define-public emacspeak
information. By seamlessly blending all aspects of the Internet such as
Web-surfing and messaging, Emacspeak speech-enables local and remote
information via a consistent and well-integrated user interface.")
- (license license:gpl2+)))
+ (license license:gpl2+)
+ (properties
+ `((minimal-variant . ,(delay emacspeak-minimal))
+ (next-variant . ,(delay emacspeak-next))
+ (pgtk-variant . ,(delay emacspeak-pgtk))))))
+
+(define-public emacspeak-minimal
+ (package (inherit emacspeak)
+ (name "emacspeak-minimal")
+ (inputs (modify-inputs (package-inputs emacspeak)
+ (replace "emacs" emacs-minimal)))))
+
+(define-public emacspeak-next
+ (package (inherit emacspeak)
+ (name "emacspeak-next")
+ (inputs (modify-inputs (package-inputs emacspeak)
+ (replace "emacs" emacs-next)))))
+
+(define-public emacspeak-pgtk
+ (package (inherit emacspeak)
+ (name "emacspeak-pgtk")
+ (inputs (modify-inputs (package-inputs emacspeak)
+ (replace "emacs" emacs-pgtk)))))
(define-public emacs-adaptive-wrap
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 10 Aug 07:52 +0200
[PATCH emacs-team WIP v3 20/24] gnu: emacs-xelb: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
e21d39a701c52420a3b966fe915007bcd57291b4.1723300543.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-xelb)[arguments]: Drop #:emacs.
[properties]: Add ‘minimal-variant’.
(emacs-no-x-toolkit-xelb, emacs-next-xelb, emacs-pgtk-xelb): New variables.
(emacs-xelb-no-x-toolkit): Deprecate in favour of emacs-no-x-toolkit-xelb.
---
gnu/packages/emacs-xyz.scm | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)

Toggle diff (48 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 22c21340bc..b825cd26e0 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -20237,14 +20237,8 @@ (define-public emacs-xelb
(base32
"12ikrnvik1n1fdc6ixx53d0z84v269wi463380k0i5zb6q8ncwpk"))))
(build-system emacs-build-system)
- ;; The following functions and variables needed by emacs-xelb are
- ;; not included in emacs-minimal:
- ;; x-display-screens, x-keysym-table, x-alt-keysym, x-meta-keysym
- ;; x-hyper-keysym, x-super-keysym, libxml-parse-xml-region
- ;; x-display-pixel-width, x-display-pixel-height
(arguments
(list
- #:emacs emacs
#:phases
#~(modify-phases %standard-phases
(add-after 'expand-load-path 'regenerate-el-files
@@ -20265,7 +20259,25 @@ (define-public emacs-xelb
X11 protocol based on the XML description files from the XCB project. It
features an object-oriented API and permits a certain degree of concurrency.
It should enable you to implement low-level X11 applications.")
- (license license:gpl3+)))
+ (license license:gpl3+)
+ ;; The following functions and variables needed by emacs-xelb are
+ ;; not included in emacs-minimal:
+ ;; x-display-screens, x-keysym-table, x-alt-keysym, x-meta-keysym
+ ;; x-hyper-keysym, x-super-keysym, libxml-parse-xml-region
+ ;; x-display-pixel-width, x-display-pixel-height
+ (properties `((minimal-variant . ,(delay emacs-no-x-toolkit-xelb))))))
+
+(define-public emacs-next-xelb
+ (package-with-emacs-next emacs-xelb))
+
+(define-public emacs-pgtk-xelb
+ (package-with-emacs-pgtk emacs-xelb))
+
+(define-public emacs-no-x-toolkit-xelb
+ (package-with-emacs-no-x-toolkit emacs-xelb))
+
+(define-public emacs-xelb-no-x-toolkit
+ (deprecated-package "emacs-xelb-no-x-toolkit" emacs-no-x-toolkit-xelb))
(define-public emacs-exwm
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 10 Aug 07:54 +0200
[PATCH emacs-team WIP v3 21/24] gnu: emacs-exwm: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
1f5ef683255789a648c45509a55e42c057b6a724.1723300543.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-exwm)[arguments]: Drop #:emacs.
[properties]: Add ‘minimal-variant’.
(emacs-no-x-toolkit-exwm, emacs-next-exwm, emacs-pgtk-exwm): New variables.
(emacs-exwm-no-x-toolkit): Deprecate in favour of emacs-no-x-toolkit-exwm.
---
gnu/packages/emacs-xyz.scm | 29 +++++++++++------------------
1 file changed, 11 insertions(+), 18 deletions(-)

Toggle diff (52 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index b825cd26e0..b63bd372a3 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -20302,7 +20302,6 @@ (define-public emacs-exwm
;; x-display-pixel-width, x-display-pixel-height
(arguments
(list
- #:emacs emacs
#:phases
#~(modify-phases %standard-phases
(add-after 'build 'install-xsession
@@ -20343,26 +20342,20 @@ (define-public emacs-exwm
(description
"EXWM is a full-featured tiling X window manager for Emacs built on top
of XELB.")
- (license license:gpl3+)))
+ (license license:gpl3+)
+ (properties `((minimal-variant . ,(delay emacs-no-x-toolkit-exwm))))))
-(define-public emacs-xelb-no-x-toolkit
- (package
- (inherit emacs-xelb)
- (name "emacs-xelb-no-x-toolkit")
- (arguments
- (substitute-keyword-arguments (package-arguments emacs-xelb)
- ((#:emacs emacs) `,emacs-no-x-toolkit)))))
+(define-public emacs-next-exwm
+ (package-with-emacs-next emacs-exwm))
+
+(define-public emacs-pgtk-exwm
+ (package-with-emacs-pgtk emacs-exwm))
+
+(define-public emacs-no-x-toolkit-exwm
+ (package-with-emacs-no-x-toolkit emacs-exwm))
(define-public emacs-exwm-no-x-toolkit
- (package
- (inherit emacs-exwm)
- (name "emacs-exwm-no-x-toolkit")
- (synopsis "Emacs X window manager (without an X toolkit)")
- (propagated-inputs
- (list emacs-xelb-no-x-toolkit))
- (arguments
- (substitute-keyword-arguments (package-arguments emacs-exwm)
- ((#:emacs emacs) `,emacs-no-x-toolkit)))))
+ (deprecated-package "emacs-exwm-no-x-toolkit" emacs-no-x-toolkit-exwm))
(define-public emacs-switch-window
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 10 Aug 11:43 +0200
[PATCH emacs-team WIP v3 22/24] gnu: emacs-exwm-x: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
135108a45f9610a8fba44758aa8d361d9575b31c.1723300543.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-exwm-x)[arguments]: Drop #:emacs.
[properties]: Add ‘minimal-variant’.
(emacs-no-x-toolkit-exwm-x, emacs-next-exwm-x, emacs-pgtk-exwm-x):
New variables.
---
gnu/packages/emacs-xyz.scm | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)

Toggle diff (39 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index b63bd372a3..774f18034c 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -20399,11 +20399,8 @@ (define-public emacs-exwm-x
(list emacs-counsel emacs-exwm emacs-switch-window emacs-use-package))
(inputs
(list xhost dbus))
- ;; Need emacs instead of emacs-minimal,
- ;; for emacs's bin path will be inserted into bin/exwm-x file.
(arguments
- `(#:emacs ,emacs
- #:phases
+ `(#:phases
(modify-phases %standard-phases
(add-after 'build 'install-xsession
(lambda* (#:key inputs outputs #:allow-other-keys)
@@ -20439,7 +20436,18 @@ (define-public emacs-exwm-x
(home-page "https://github.com/tumashu/exwm-x")
(description "EXWM-X is a derivative window manager based on EXWM, with focus
on mouse-control.")
- (license license:gpl3+)))
+ (license license:gpl3+)
+ ;; Note: emacs binary path will be inserted into the executable.
+ (properties `((minimal-variant . ,(delay emacs-no-x-toolkit-exwm-x))))))
+
+(define-public emacs-no-x-toolkit-exwm-x
+ (package-with-emacs-no-x-toolkit emacs-exwm-x))
+
+(define-public emacs-next-exwm-x
+ (package-with-emacs-next emacs-exwm-x))
+
+(define-public emacs-pgtk-exwm-x
+ (package-with-emacs-pgtk emacs-exwm-x))
(define-public emacs-gnugo
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 10 Aug 11:43 +0200
[PATCH emacs-team WIP v3 23/24] gnu: eless: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
d350f4baa3909dc0aa27a6e5b8a4d292bf7fde35.1723300543.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (eless)[properties]: Add ‘minimal-variant’,
‘next-variant’ and ‘pgtk-variant’.
(eless-minimal, eless-next, eless-pgtk): New variables.
---
gnu/packages/emacs-xyz.scm | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)

Toggle diff (37 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 774f18034c..643d1b984b 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -22787,7 +22787,29 @@ (define-public eless
@item Auto-revert log files similar to @code{tail -f}.
@item Quickly change frame and font sizes.
@end itemize\n")
- (license license:expat)))
+ (license license:expat)
+ (properties
+ `((minimal-variant . ,(delay eless-minimal))
+ (next-variant . ,(delay eless-next))
+ (pgtk-variant . ,(delay eless-pgtk))))))
+
+(define-public eless-minimal
+ (package (inherit eless)
+ (name "eless-minimal")
+ (inputs (modify-inputs (package-inputs eless)
+ (replace "emacs" emacs-minimal)))))
+
+(define-public eless-next
+ (package (inherit eless)
+ (name "eless-next")
+ (inputs (modify-inputs (package-inputs eless)
+ (replace "emacs" emacs-next)))))
+
+(define-public eless-pgtk
+ (package (inherit eless)
+ (name "eless-pgtk")
+ (inputs (modify-inputs (package-inputs eless)
+ (replace "emacs" emacs-pgtk)))))
(define-public emacs-evil-matchit
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 10 Aug 16:15 +0200
[PATCH emacs-team WIP v3 24/24] gnu: Build all the other emacs-* variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
7c4e3795db85787faee4c0818378e12869c7c471.1723300543.git.liliana.prikler@gmail.com
TODO: Add ChangeLog.
TODO: Add the packages that use emacs-build-system as a second build system
or extract the emacs portions of them.
---
gnu/packages/admin.scm | 9 +
gnu/packages/android.scm | 9 +
gnu/packages/cmake.scm | 9 +
gnu/packages/databases.scm | 9 +
gnu/packages/emacs-xyz.scm | 12878 ++++++++++++++++++++++++++++++++-
gnu/packages/engineering.scm | 9 +
gnu/packages/erlang.scm | 9 +
gnu/packages/finance.scm | 18 +
gnu/packages/lisp-xyz.scm | 9 +
gnu/packages/llvm.scm | 18 +
gnu/packages/mail.scm | 9 +
gnu/packages/potassco.scm | 9 +
gnu/packages/protobuf.scm | 9 +
gnu/packages/scheme.scm | 9 +
gnu/packages/statistics.scm | 9 +
15 files changed, 12996 insertions(+), 26 deletions(-)

Toggle diff (621 lines)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 113b8e2481..d3c6b4948c 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -3151,6 +3151,15 @@ (define-public emacs-ansible-doc
'yaml-mode-hook #'ansible-doc-mode)}.")
(license license:gpl3+))))
+(define-public emacs-minimal-ansible-doc
+ (package-with-emacs-minimal emacs-ansible-doc))
+
+(define-public emacs-next-ansible-doc
+ (package-with-emacs-next emacs-ansible-doc))
+
+(define-public emacs-pgtk-ansible-doc
+ (package-with-emacs-pgtk emacs-ansible-doc))
+
(define-public cpulimit
(package
(name "cpulimit")
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index b6f37732b4..bc5676e8aa 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -1256,6 +1256,15 @@ (define-public emacs-fdroid
emulator inside the comfort of Emacs.")
(license license:gpl3+)))
+(define-public emacs-minimal-fdroid
+ (package-with-emacs-minimal emacs-fdroid))
+
+(define-public emacs-next-fdroid
+ (package-with-emacs-next emacs-fdroid))
+
+(define-public emacs-pgtk-fdroid
+ (package-with-emacs-pgtk emacs-fdroid))
+
(define-public enjarify
(package
(name "enjarify")
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 0c780fe420..eb46e65da9 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -437,6 +437,15 @@ (define-public emacs-cmake-mode
Cmake files. It supports syntax highlighting, indenting and refilling of
comments.")))
+(define-public emacs-minimal-cmake-mode
+ (package-with-emacs-minimal emacs-cmake-mode))
+
+(define-public emacs-next-cmake-mode
+ (package-with-emacs-next emacs-cmake-mode))
+
+(define-public emacs-pgtk-cmake-mode
+ (package-with-emacs-pgtk emacs-cmake-mode))
+
(define-public qmsetup
(let ((commit "89fa57046241c26dfcfd97ceba174728b24bdd27")
(revision "0"))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 2532586bc5..2d459285e1 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -1783,6 +1783,15 @@ (define-public emacs-rec-mode
including field and record folding.")
(license license:gpl3+)))
+(define-public emacs-minimal-rec-mode
+ (package-with-emacs-minimal emacs-rec-mode))
+
+(define-public emacs-next-rec-mode
+ (package-with-emacs-next emacs-rec-mode))
+
+(define-public emacs-pgtk-rec-mode
+ (package-with-emacs-pgtk emacs-rec-mode))
+
(define-public emacs-recutils
(deprecated-package "emacs-recutils" emacs-rec-mode))
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 643d1b984b..ed18074848 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -338,6 +338,15 @@ (define-public emacs-ac-ispell
"AC Ispell is an Ispell and Aspell completion source for Auto Complete.")
(license license:gpl3+))))
+(define-public emacs-minimal-ac-ispell
+ (package-with-emacs-minimal emacs-ac-ispell))
+
+(define-public emacs-next-ac-ispell
+ (package-with-emacs-next emacs-ac-ispell))
+
+(define-public emacs-pgtk-ac-ispell
+ (package-with-emacs-pgtk emacs-ac-ispell))
+
(define-public emacs-ac-php
(package
(name "emacs-ac-php")
@@ -374,6 +383,15 @@ (define-public emacs-ac-php
"This package provides Auto Complete and Company back-ends for PHP.")
(license license:gpl3+)))
+(define-public emacs-minimal-ac-php
+ (package-with-emacs-minimal emacs-ac-php))
+
+(define-public emacs-next-ac-php
+ (package-with-emacs-next emacs-ac-php))
+
+(define-public emacs-pgtk-ac-php
+ (package-with-emacs-pgtk emacs-ac-php))
+
(define-public emacs-ace-jump-helm-line
(let ((commit "1483055255df3f8ae349f7520f05b1e43ea3ed37")
(revision "0"))
@@ -397,6 +415,15 @@ (define-public emacs-ace-jump-helm-line
"This package allows using Ace jump to a candidate in Helm window.")
(license license:gpl3+))))
+(define-public emacs-minimal-ace-jump-helm-line
+ (package-with-emacs-minimal emacs-ace-jump-helm-line))
+
+(define-public emacs-next-ace-jump-helm-line
+ (package-with-emacs-next emacs-ace-jump-helm-line))
+
+(define-public emacs-pgtk-ace-jump-helm-line
+ (package-with-emacs-pgtk emacs-ace-jump-helm-line))
+
(define-public emacs-activities
(package
(name "emacs-activities")
@@ -426,6 +453,15 @@ (define-public emacs-activities
compatible.")
(license license:gpl3+)))
+(define-public emacs-minimal-activities
+ (package-with-emacs-minimal emacs-activities))
+
+(define-public emacs-next-activities
+ (package-with-emacs-next emacs-activities))
+
+(define-public emacs-pgtk-activities
+ (package-with-emacs-pgtk emacs-activities))
+
(define-public emacs-bookmark-plus
(package
(name "emacs-bookmark-plus")
@@ -450,6 +486,15 @@ (define-public emacs-bookmark-plus
reading the extensive documentation about BookmarkPlus on the Emacs Wiki.")
(license license:gpl3+)))
+(define-public emacs-minimal-bookmark-plus
+ (package-with-emacs-minimal emacs-bookmark-plus))
+
+(define-public emacs-next-bookmark-plus
+ (package-with-emacs-next emacs-bookmark-plus))
+
+(define-public emacs-pgtk-bookmark-plus
+ (package-with-emacs-pgtk emacs-bookmark-plus))
+
(define-public emacs-cfrs
(package
(name "emacs-cfrs")
@@ -473,6 +518,15 @@ (define-public emacs-cfrs
input via a small child-frame spawned at the position of the cursor.")
(license license:gpl3+)))
+(define-public emacs-minimal-cfrs
+ (package-with-emacs-minimal emacs-cfrs))
+
+(define-public emacs-next-cfrs
+ (package-with-emacs-next emacs-cfrs))
+
+(define-public emacs-pgtk-cfrs
+ (package-with-emacs-pgtk emacs-cfrs))
+
(define-public emacs-arei
(package
(name "emacs-arei")
@@ -494,6 +548,15 @@ (define-public emacs-arei
(description "Sleek Guile IDE for Emacs.")
(license license:gpl3+)))
+(define-public emacs-minimal-arei
+ (package-with-emacs-minimal emacs-arei))
+
+(define-public emacs-next-arei
+ (package-with-emacs-next emacs-arei))
+
+(define-public emacs-pgtk-arei
+ (package-with-emacs-pgtk emacs-arei))
+
(define-public emacs-geiser
(package
(name "emacs-geiser")
@@ -589,6 +652,15 @@ (define-public emacs-gptel
API key.")
(license license:gpl3+)))
+(define-public emacs-minimal-gptel
+ (package-with-emacs-minimal emacs-gptel))
+
+(define-public emacs-next-gptel
+ (package-with-emacs-next emacs-gptel))
+
+(define-public emacs-pgtk-gptel
+ (package-with-emacs-pgtk emacs-gptel))
+
(define-public emacs-chatgpt-shell
(package
(name "emacs-chatgpt-shell")
@@ -609,6 +681,15 @@ (define-public emacs-chatgpt-shell
"chatgpt-shell is a comint-based ChatGPT shell for Emacs.")
(license license:gpl3+)))
+(define-public emacs-minimal-chatgpt-shell
+ (package-with-emacs-minimal emacs-chatgpt-shell))
+
+(define-public emacs-next-chatgpt-shell
+ (package-with-emacs-next emacs-chatgpt-shell))
+
+(define-public emacs-pgtk-chatgpt-shell
+ (package-with-emacs-pgtk emacs-chatgpt-shell))
+
(define-public emacs-geiser-guile
(package
(name "emacs-geiser-guile")
@@ -685,6 +766,15 @@ (define-public emacs-ac-geiser
(license license:bsd-3)
(home-page "https://github.com/xiaohanyu/ac-geiser"))))
+(define-public emacs-minimal-ac-geiser
+ (package-with-emacs-minimal emacs-ac-geiser))
+
+(define-public emacs-next-ac-geiser
+ (package-with-emacs-next emacs-ac-geiser))
+
+(define-public emacs-pgtk-ac-geiser
+ (package-with-emacs-pgtk emacs-ac-geiser))
+
(define-public emacs-geiser-gauche
;; The latest 0.14 release has an unbound variable (geiser-scheme-dir).
(let ((commit "96fa06aaeef18cc1b3b519e83dbb7be09eeb0d07")
@@ -732,6 +822,15 @@ (define-public emacs-geiser-gauche
a generic Scheme interaction mode for the GNU Emacs editor.")
(license license:expat))))
+(define-public emacs-minimal-geiser-gauche
+ (package-with-emacs-minimal emacs-geiser-gauche))
+
+(define-public emacs-next-geiser-gauche
+ (package-with-emacs-next emacs-geiser-gauche))
+
+(define-public emacs-pgtk-geiser-gauche
+ (package-with-emacs-pgtk emacs-geiser-gauche))
+
(define-public emacs-geiser-racket
(package
(name "emacs-geiser-racket")
@@ -777,6 +876,15 @@ (define-public emacs-geiser-racket
a generic Scheme interaction mode for the GNU Emacs editor.")
(license license:bsd-3)))
+(define-public emacs-minimal-geiser-racket
+ (package-with-emacs-minimal emacs-geiser-racket))
+
+(define-public emacs-next-geiser-racket
+ (package-with-emacs-next emacs-geiser-racket))
+
+(define-public emacs-pgtk-geiser-racket
+ (package-with-emacs-pgtk emacs-geiser-racket))
+
(define-public emacs-geiser-chez
(package
(name "emacs-geiser-chez")
@@ -817,6 +925,15 @@ (define-public emacs-geiser-chez
"This package adds support for using Chez Scheme in Emacs with Geiser.")
(license license:bsd-3)))
+(define-public emacs-minimal-geiser-chez
+ (package-with-emacs-minimal emacs-geiser-chez))
+
+(define-public emacs-next-geiser-chez
+ (package-with-emacs-next emacs-geiser-chez))
+
+(define-public emacs-pgtk-geiser-chez
+ (package-with-emacs-pgtk emacs-geiser-chez))
+
(define-public emacs-vc-hgcmd
(package
(name "emacs-vc-hgcmd")
@@ -840,6 +957,15 @@ (define-public emacs-vc-hgcmd
server}. The main advantage compared to @code{vc-hg} is speed.")
(license license:gpl3+)))
+(define-public emacs-minimal-vc-hgcmd
+ (package-with-emacs-minimal emacs-vc-hgcmd))
+
+(define-public emacs-next-vc-hgcmd
+ (package-with-emacs-next emacs-vc-hgcmd))
+
+(define-public emacs-pgtk-vc-hgcmd
+ (package-with-emacs-pgtk emacs-vc-hgcmd))
+
(define-public emacs-telephone-line
(package
(name "emacs-telephone-line")
@@ -863,6 +989,15 @@ (define-public emacs-telephone-line
configuration language which makes it trivial to write your own themes.")
(license license:gpl3+)))
+(define-public emacs-minimal-telephone-line
+ (package-with-emacs-minimal emacs-telephone-line))
+
+(define-public emacs-next-telephone-line
+ (package-with-emacs-next emacs-telephone-line))
+
+(define-public emacs-pgtk-telephone-line
+ (package-with-emacs-pgtk emacs-telephone-line))
+
(define-public emacs-inspector
(let ((commit "4e85b25e3e80c9989fcf7f518606837a54d9fab6")) ;version bump
(package
@@ -892,6 +1027,15 @@ (define-public emacs-inspector
Common Lisp or Smalltalk, but for Emacs Lisp.")
(license license:gpl3+))))
+(define-public emacs-minimal-inspector
+ (package-with-emacs-minimal emacs-inspector))
+
+(define-public emacs-next-inspector
+ (package-with-emacs-next emacs-inspector))
+
+(define-public emacs-pgtk-inspector
+ (package-with-emacs-pgtk emacs-inspector))
+
(define-public emacs-treebundel
(package
(name "emacs-treebundel")
@@ -921,6 +1065,15 @@ (define-public emacs-treebundel
git-worktrees.")
(license license:expat)))
+(define-public emacs-minimal-treebundel
+ (package-with-emacs-minimal emacs-treebundel))
+
+(define-public emacs-next-treebundel
+ (package-with-emacs-next emacs-treebundel))
+
+(define-public emacs-pgtk-treebundel
+ (package-with-emacs-pgtk emacs-treebundel))
+
(define-public emacs-tree-inspector
(let ((commit "bbb8d2dfe84fbf857fcc1579de5a1324b09a877e"))
(package
@@ -963,6 +1116,15 @@ (define-public emacs-tree-inspector
object.")
(license license:gpl3+))))
+(define-public emacs-minimal-tree-inspector
+ (package-with-emacs-minimal emacs-tree-inspector))
+
+(define-public emacs-next-tree-inspector
+ (package-with-emacs-next emacs-tree-inspector))
+
+(define-public emacs-pgtk-tree-inspector
+ (package-with-emacs-pgtk emacs-tree-inspector))
+
(define-public emacs-terminal-here
(package
(name "emacs-terminal-here")
@@ -985,6 +1147,15 @@ (define-public emacs-terminal-here
current buffer.")
(license license:gpl3+)))
+(define-public emacs-minimal-terminal-here
+ (package-with-emacs-minimal emacs-terminal-here))
+
+(define-public emacs-next-terminal-here
+ (package-with-emacs-next emacs-terminal-here))
+
+(define-public emacs-pgtk-terminal-here
+ (package-with-emacs-pgtk emacs-terminal-here))
+
(define-public emacs-treeview
(let ((commit "d9c10feddf3b959e7b33ce83103e1f0a61162723")
(revision "0"))
@@ -1007,6 +1178,15 @@ (define-public emacs-treeview
"Abstract Emacs Lisp framework for tree navigation.")
(license license:gpl3+))))
+(define-public emacs-minimal-treeview
+ (package-with-emacs-minimal emacs-treeview))
+
+(define-public emacs-next-treeview
+ (package-with-emacs-next emacs-treeview))
+
+(define-public emacs-pgtk-treeview
+ (package-with-emacs-pgtk emacs-treeview))
+
(define-public emacs-hide-lines
(package
(name "emacs-hide-lines")
@@ -1028,6 +1208,15 @@ (define-public emacs-hide-lines
expression.")
(license license:gpl3+)))
+(define-public emacs-minimal-hide-lines
+ (package-with-emacs-minimal emacs-hide-lines))
+
+(define-public emacs-next-hide-lines
+ (package-with-emacs-next emacs-hide-lines))
+
+(define-public emacs-pgtk-hide-lines
+ (package-with-emacs-pgtk emacs-hide-lines))
+
(define-public emacs-hgignore-mode
;; From 2021-03-14.
;; No releases available.
@@ -1054,6 +1243,15 @@ (define-public emacs-hgignore-mode
system.")
(license license:gpl3+))))
+(define-public emacs-minimal-hgignore-mode
+ (package-with-emacs-minimal emacs-hgignore-mode))
+
+(define-public emacs-next-hgignore-mode
+ (package-with-emacs-next emacs-hgignore-mode))
+
+(define-public emacs-pgtk-hgignore-mode
+ (package-with-emacs-pgtk emacs-hgignore-mode))
+
(define-public emacs-hsluv
(package
(name "emacs-hsluv")
@@ -1082,6 +1280,15 @@ (define-public emacs-hsluv
a neat percentage.")
(license license:expat)))
+(define-public emacs-minimal-hsluv
+ (package-with-emacs-minimal emacs-hsluv))
+
+(define-public emacs-next-hsluv
+ (package-with-emacs-next emacs-hsluv))
+
+(define-public emacs-pgtk-hsluv
+ (package-with-emacs-pgtk emacs-hsluv))
+
(define-public emacs-platformio-mode
(package
(name "emacs-platformio-mode")
@@ -1103,6 +1310,15 @@ (define-public emacs-platformio-mode
uploading PlatformIO projects.")
(license license:gpl3+)))
+(define-public emacs-minimal-platformio-mode
+ (package-with-emacs-minimal emacs-platformio-mode))
+
+(define-public emacs-next-platformio-mode
+ (package-with-emacs-next emacs-platformio-mode))
+
+(define-public emacs-pgtk-platformio-mode
+ (package-with-emacs-pgtk emacs-platformio-mode))
+
(define-public emacs-hyperbole
(package
(name "emacs-hyperbole")
@@ -1165,6 +1381,15 @@ (define-public emacs-hyperbole
buffers, directory trees, or the web.")
(license license:gpl3+)))
+(define-public emacs-minimal-hyperbole
+ (package-with-emacs-minimal emacs-hyperbole))
+
+(define-public emacs-next-hyperbole
+ (package-with-emacs-next emacs-hyperbole))
+
+(define-public emacs-pgtk-hyperbole
+ (package-with-emacs-pgtk emacs-hyperbole))
+
(define-public emacs-vlf
(package
(name "emacs-vlf")
@@ -1184,6 +1409,15 @@ (define-public emacs-vlf
comparing large files in batches.")
(license license:gpl2+)))
+(define-public emacs-minimal-vlf
+ (package-with-emacs-minimal emacs-vlf))
+
+(define-public emacs-next-vlf
+ (package-with-emacs-next emacs-vlf))
+
+(define-public emacs-pgtk-vlf
+ (package-with-emacs-pgtk emacs-vlf))
+
(define-public emacs-hg-histedit
;; From 2021-03-02.
;; No releases available.
@@ -1210,6 +1444,15 @@ (define-public emacs-hg-histedit
@command{hg histedit} for editing the commit history.")
(license license:gpl3+))))
+(define-public emacs-minimal-hg-histedit
+ (package-with-emacs-minimal emacs-hg-histedit))
+
+(define-public emacs-next-hg-histedit
+ (package-with-emacs-next emacs-hg-histedit))
+
+(define-public emacs-pgtk-hg-histedit
+ (package-with-emacs-pgtk emacs-hg-histedit))
+
(define-public emacs-package-build
(package
(name "emacs-package-build")
@@ -1230,6 +1473,15 @@ (define-public emacs-package-build
Emacs package archive}.")
(license license:gpl3+)))
+(define-public emacs-minimal-package-build
+ (package-with-emacs-minimal emacs-package-build))
+
+(define-public emacs-next-package-build
+ (package-with-emacs-next emacs-package-build))
+
+(define-public emacs-pgtk-package-build
+ (package-with-emacs-pgtk emacs-package-build))
+
(define-public emacs-paredit
(package
(name "emacs-paredit")
@@ -1257,6 +1509,15 @@ (define-public emacs-paredit
when typing parentheses directly or commenting out code line by line.")
(license license:gpl3+)))
+(define-public emacs-minimal-paredit
+ (package-with-emacs-minimal emacs-paredit))
+
+(define-public emacs-next-paredit
+ (package-with-emacs-next emacs-paredit))
+
+(define-public emacs-pgtk-paredit
+ (package-with-emacs-pgtk emacs-paredit))
+
(define-public emacs-puni
;; No tagged release upstream
(let ((commit "28836e98d5566172b1a94d7b38290d07b49201b2")
@@ -1283,6 +1544,15 @@ (define-public emacs-puni
out of the box.")
(license license:gpl3+))))
+(define-public emacs-minimal-puni
+ (package-with-emacs-minimal emacs-puni))
+
+(define-public emacs-next-puni
+ (package-with-emacs-next emacs-puni))
+
+(define-public emacs-pgtk-puni
+ (package-with-emacs-pgtk emacs-puni))
+
(define-public emacs-pug-mode
(package
(name "emacs-pug-mode")
@@ -1308,6 +1578,15 @@ (define-public emacs-pug-mode
is based off of Slim mode.")
(license license:gpl3+)))
+(define-public emacs-minimal-pug-mode
+ (package-with-emacs-minimal emacs-pug-mode))
+
+(define-public emacs-next-pug-mode
+ (package-with-emacs-next emacs-pug-mode))
+
+(define-public emacs-pgtk-pug-mode
+ (package-with-emacs-pgtk emacs-pug-mode))
+
(define-public emacs-sed-mode
(package
(name "emacs-sed-mode")
@@ -1327,6 +1606,15 @@ (define-public emacs-sed-mode
functionalities supported are font-locking and auto-indentation.")
(license license:gpl3+)))
+(define-public emacs-minimal-sed-mode
+ (package-with-emacs-minimal emacs-sed-mode))
+
+(define-public emacs-next-sed-mode
+ (package-with-emacs-next emacs-sed-mode))
+
+(define-public emacs-pgtk-sed-mode
+ (package-with-emacs-pgtk emacs-sed-mode))
+
(define-public emacs-spaceline-all-the-icons
(package
(name "emacs-spaceline-all-the-icons")
@@ -1355,6 +1643,15 @@ (define-public emacs-spaceline-all-the-icons
information in the mode line.")
(license license:expat)))
+(define-public emacs-minimal-spaceline-all-the-icons
+ (package-with-emacs-minimal emacs-spaceline-all-the-icons))
+
+(define-public emacs-next-spaceline-all-the-icons
+ (package-with-emacs-next emacs-spaceline-all-the-icons))
+
+(define-public emacs-pgtk-spaceline-all-the-icons
+ (package-with-emacs-pgtk emacs-spaceline-all-the-icons))
+
(define-public emacs-snow
(let ((commit "35ea06f19047ac99eaff9663cb035491c4a13e07")
(revision "0"))
@@ -1378,6 +1675,15 @@ (define-public emacs-snow
blows at times, and snow accumulates on the terrain in the scene.")
(license license:gpl3+))))
+(define-public emacs-minimal-snow
+ (package-with-emacs-minimal emacs-snow))
+
+(define-public emacs-next-snow
+ (package-with-emacs-next emacs-
This message was truncated. Download the full message here.
L
L
Liam Hupfer wrote on 11 Aug 03:53 +0200
87a5hjesfk.fsf@hpfr.net
Hi Liliana,

I’m relatively new to Guix. But I’ve been converting my Emacs configuration to
use Guix with native compilation recently, so I think have a basic understanding
of this patchset.

It seems like getting binary substitutes for more Emacs variants shouldn’t
require quadrupling the number of top-level Emacs packages in Guix. I assume you
used some degree of automation to generate these, but it seems like a bit of a
pain to maintain, no? I guess you could implement some sort of CI checking if
patches for new packages include the correct variants, but it still seems like
it will lead to an increase in review burden. Seems too easy to make typos with
the variant prefix, for example. Plus there are UX issues for end users, like a
quadrupling in noise from ‘guix search emacs <package>’.

It seems like there must be a way to indicate to Cuirass to build a set of
packages with rewritten inputs, /without/ exposing those packages directly. I
believe Nix does something like this by providing an ‘emacsPackagesFor’ function
that provides an ergonomic way for users to target an Emacs variant. See Example
6 in [Adding Packages to Emacs — NixOS Manual]. Right now, Guix users have to use
something like ‘package-input-rewriting’ directly and figure out the list of
Emacs variants to override to their Emacs package, since not all packages use
`emacs-minimal'. For binary substitutes, the community emacs-overlay project
[tells Hydra to build] the set of Emacs packages with each common Emacs variant.

We currently don’t have a well-defined “package set” for Emacs packages to map
rewrites over like Nix, and I don’t know if that is ultimately the right
solution, but I really don’t think we should approach this by adding so many
trivial packages to the top-level package set. Imagine if we took this approach
Guix-wide for supporting another libc, for example.

Hope I didn’t misunderstand anything too much. Thanks,

—Liam



L
L
Liliana Marie Prikler wrote on 11 Aug 08:30 +0200
ecbfcde3c2a30fffd4414279dba16ea9ab48c8bf.camel@gmail.com
Am Samstag, dem 10.08.2024 um 20:53 -0500 schrieb Liam Hupfer:
Toggle quote (3 lines)
> It seems like getting binary substitutes for more Emacs variants
> shouldn’t require quadrupling the number of top-level Emacs packages
> in Guix. 
You are correct in that we would only require leaf packages, but then
in-between packages wouldn't show up for the user that needs those
instead.

Toggle quote (2 lines)
> I assume you used some degree of automation to generate these, but it
> seems like a bit of a pain to maintain, no? 
I'm not sure. We have a similar setup for Common Lisp, where we build
three variants of everything. The emacs-xyz.scm file is already too
large though, and should possibly be split up.

Toggle quote (4 lines)
> I guess you could implement some sort of CI checking if patches for
> new packages include the correct variants, but it still seems like
> it will lead to an increase in review burden. Seems too easy to make
> typos with the variant prefix, for example. 
I don't think that, tbh. I've provided a tempel snippet to generate
those variants, maybe someone can add a yasnippet too.

Toggle quote (2 lines)
> Plus there are UX issues for end users, like a
> quadrupling in noise from ‘guix search emacs <package>’.
Well, fair, but there's no working around this without producing our
own USE flags, and the project to add those sadly has gone off the
rails IIRC.

Toggle quote (11 lines)
> It seems like there must be a way to indicate to Cuirass to build a
> set of packages with rewritten inputs, /without/ exposing those
> packages directly. I believe Nix does something like this by
> providing an ‘emacsPackagesFor’ function that provides an ergonomic
> way for users to target an Emacs variant. See Example
> 6 in [Adding Packages to Emacs — NixOS Manual]. Right now, Guix users
> have to use something like ‘package-input-rewriting’ directly and
> figure out the list of Emacs variants to override to their Emacs
> package, since not all packages use `emacs-minimal'. For binary
> substitutes, the community emacs-overlay project [tells Hydra to
> build] the set of Emacs packages with each common Emacs variant.
I think we can instruct Cuirass to ingest any manifest, but writing and
maintaining that manifest would be pain. Plus, the other benefit is
that as a user, I can type emacs-*-the-package – for some values of *
at least – and have the correctly built package in my manifest. No
more fiddling with package-input-rewriting or transformations.

But you are right in that we don't need to introduce more top-level
packages to at least get some of the benefits. This series does away
with emacs-minimal as the default emacs to build stuff with and
produces a more convenient input rewriting function. The problem is,
that it is only available to Scheme code, so people using the CLI would
miss out on those packages if not declared publicly.

Toggle quote (6 lines)
> We currently don’t have a well-defined “package set” for Emacs
> packages to map rewrites over like Nix, and I don’t know if that is
> ultimately the right solution, but I really don’t think we should
> approach this by adding so many trivial packages to the top-level
> package set. Imagine if we took this approach Guix-wide for
> supporting another libc, for example.
Again, see Common Lisp where we do exactly that. And yes, it would be
nice to have an easier way of enumerating such package variants, but
I'm not going to hold my breath until we do.

Cheers
L
L
Liliana Marie Prikler wrote on 11 Aug 14:59 +0200
[PATCH emacs-team WIP v4 00/24] Build variants for other Emacsen
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
cover.1723381182.git.liliana.prikler@gmail.com
Same as v3, but I reset the commit dates so that hopefully this time all
mail arrives…

Liliana Marie Prikler (24):
build-system: emacs: Define package-with-explicit-emacs.
build-system: emacs: Make emacs the default variant.
build-system: emacs: Define common variants.
build-system: emacs: Handle variants in elpa naming.
etc: Provide snippet for defining emacs variants.
gnu: emacs-libgit: Build variants.
gnu: emacs-eweouz: Build variants.
gnu: emacs-tablist: Define variants.
gnu: emacs-pdf-tools: Build variants.
gnu: emacs-fontaine: Reindent.
gnu: emacs-bui: Define variants.
gnu: emacs-dash: Define variants.
gnu: emacs-edit-indirect: Define variants.
gnu: emacs-geiser: Define variants.
gnu: emacs-geiser-guile: Define variants.
gnu: emacs-magit-popup: Define variants.
gnu: emacs-guix: Build variants.
[WIP] gnu: emacs-dvc: Build variants.
gnu: emacspeak: Build variants.
gnu: emacs-xelb: Build variants.
gnu: emacs-exwm: Build variants.
gnu: emacs-exwm-x: Build variants.
gnu: eless: Build variants.
gnu: Build all the other emacs-* variants.

etc/snippets/tempel/scheme-mode | 8 +
gnu/packages/admin.scm | 9 +
gnu/packages/android.scm | 9 +
gnu/packages/cmake.scm | 9 +
gnu/packages/databases.scm | 9 +
gnu/packages/emacs-xyz.scm | 13249 +++++++++++++++++++++++++++-
gnu/packages/engineering.scm | 9 +
gnu/packages/erlang.scm | 9 +
gnu/packages/finance.scm | 18 +
gnu/packages/lisp-xyz.scm | 9 +
gnu/packages/llvm.scm | 18 +
gnu/packages/mail.scm | 9 +
gnu/packages/potassco.scm | 9 +
gnu/packages/protobuf.scm | 9 +
gnu/packages/scheme.scm | 9 +
gnu/packages/statistics.scm | 9 +
guix/build-system/emacs.scm | 88 +-
guix/build/emacs-build-system.scm | 25 +-
18 files changed, 13416 insertions(+), 98 deletions(-)


base-commit: da9fabaf21c43789e8cf382205714f103d446c1f
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 01/24] build-system: emacs: Define package-with-explicit-emacs.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
19bb476657c13cc5ab2181de6259249a441942cc.1723381182.git.liliana.prikler@gmail.com
* guix/build-system/emacs.scm (package-with-explicit-emacs): New procedure.
---
guix/build-system/emacs.scm | 51 +++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)

Toggle diff (69 lines)
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index ebf97a5344..3a11738496 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2024 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -128,4 +129,54 @@ (define emacs-build-system
(description "The build system for Emacs packages")
(lower lower)))
+(define* (package-with-explicit-emacs emacs old-prefix new-prefix
+ #:key variant-property)
+ "Return a procedure of one argument, P. The procedure creates a package with
+the same fields as P, which is assumed to use EMACS-BUILD-SYSTEM, such that
+it is compiled with EMACS instead. The inputs are changed recursively
+accordingly. If the name of P starts with OLD-PREFIX, this is replaced by
+NEW-PREFIX; otherwise, NEW-PREFIX is prepended to the name.
+
+When VARIANT-PROPERTY is present, it is used as a key to search for
+pre-defined variants of this transformation recorded in the 'properties' field
+of packages. The property value must be the promise of a package. This is a
+convenient way for package writers to force the transformation to use
+pre-defined variants."
+ (define package-variant
+ (if variant-property
+ (lambda (package)
+ (assq-ref (package-properties package)
+ variant-property))
+ (const #f)))
+
+ (define (transform pkg)
+ (cond
+ ;; If VARIANT-PROPERTY is present, use that.
+ ((package-variant pkg)
+ => force)
+
+ ;; Otherwise build the new package object graph.
+ ((eq? (package-build-system pkg) emacs-build-system)
+ (package/inherit pkg
+ (location (package-location pkg))
+ (name (let ((name (package-name pkg)))
+ (string-append new-prefix
+ (if (string-prefix? old-prefix name)
+ (substring name
+ (string-length old-prefix))
+ name))))
+ (arguments
+ (let ((emacs (if (promise? emacs)
+ (force emacs)
+ emacs)))
+ (ensure-keyword-arguments (package-arguments pkg)
+ `(#:emacs ,emacs))))))
+ (else pkg)))
+
+ (define (cut? pkg)
+ (or (not (eq? (package-build-system pkg) emacs-build-system))
+ (package-variant pkg)))
+
+ (package-mapping transform cut?))
+
;;; emacs.scm ends here
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 02/24] build-system: emacs: Make emacs the default variant.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
b4a5b6d796fb588058157e2f45a9743b3c75b410.1723381182.git.liliana.prikler@gmail.com
* guix/build-system/emacs.scm (resolve-emacs): New variable.
(default-emacs): Use it. Change to ‘emacs’ instead of ‘emacs-minimal’.
---
guix/build-system/emacs.scm | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

Toggle diff (23 lines)
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index 3a11738496..88304b9ce1 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -49,11 +49,13 @@ (define %emacs-build-system-modules
(guix build emacs-utils)
,@%gnu-build-system-modules))
-(define (default-emacs)
- "Return the default Emacs package."
+(define* (resolve-emacs name)
+ "Lazily resolve the emacs package by variable NAME."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((emacs-mod (resolve-interface '(gnu packages emacs))))
- (module-ref emacs-mod 'emacs-minimal)))
+ (module-ref emacs-mod name)))
+
+(define (default-emacs) (resolve-emacs 'emacs))
(define* (lower name
#:key source inputs native-inputs outputs system target
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 03/24] build-system: emacs: Define common variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
58426c2331204c75d230d62b226c033957583460.1723381182.git.liliana.prikler@gmail.com
* guix/build-system/emacs.scm (package-with-emacs-minimal)
(package-with-emacs-next, package-with-emacs-pgtk): New variables.
---
guix/build-system/emacs.scm | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)

Toggle diff (47 lines)
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index 88304b9ce1..9ab8b493a7 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -31,7 +31,13 @@ (define-module (guix build-system emacs)
#:use-module (guix build-system gnu)
#:export (%emacs-build-system-modules
emacs-build
- emacs-build-system)
+ emacs-build-system
+ package-with-explicit-emacs
+ ;; Common variants.
+ package-with-emacs-minimal
+ package-with-emacs-next
+ package-with-emacs-no-x-toolkit
+ package-with-emacs-pgtk)
#:re-export (%default-include ;for convenience
%default-exclude))
@@ -181,4 +187,25 @@ (define* (package-with-explicit-emacs emacs old-prefix new-prefix
(package-mapping transform cut?))
+(define package-with-emacs-minimal
+ (package-with-explicit-emacs (delay (resolve-emacs 'emacs-minimal))
+ "emacs-" "emacs-minimal-"
+ #:variant-property 'emacs-minimal-variant))
+
+(define package-with-emacs-next
+ (package-with-explicit-emacs (delay (resolve-emacs 'emacs-next))
+ "emacs-" "emacs-next-"
+ #:variant-property 'emacs-next-variant))
+
+;; We prefer emacs-minimal, but sometimes the "minimal" variant still needs
+;; X support.
+(define package-with-emacs-no-x-toolkit
+ (package-with-explicit-emacs (delay (resolve-emacs 'emacs-no-x-toolkit))
+ "emacs-" "emacs-no-x-toolkit-"))
+
+(define package-with-emacs-pgtk
+ (package-with-explicit-emacs (delay (resolve-emacs 'emacs-pgtk))
+ "emacs-" "emacs-pgtk-"
+ #:variant-property 'emacs-pgtk-variant))
+
;;; emacs.scm ends here
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 04/24] build-system: emacs: Handle variants in elpa naming.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
513c9389023ca1434d3654e034aaaf58e50ddaa8.1723381182.git.liliana.prikler@gmail.com
* guix/build/emacs-build-system.scm (%emacs-prefix): New variable.
(package-name-version->elpa-name-version): Infer the prefix to strip from the
emacs used to compile the package.
---
guix/build/emacs-build-system.scm | 25 +++++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)

Toggle diff (42 lines)
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index aa083c6409..1894ac4c23 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -316,16 +316,29 @@ (define* (validate-compiled-autoloads #:key outputs #:allow-other-keys)
(autoloads (find-files out "-autoloads.elc$")))
(emacs-batch-eval (format #f "(mapc #'load '~s)" autoloads))))
-(define (emacs-package? name)
- "Check if NAME correspond to the name of an Emacs package."
- (string-prefix? "emacs-" name))
+(define %emacs-prefix
+ (make-parameter #f))
(define (package-name-version->elpa-name-version name-ver)
"Convert the Guix package NAME-VER to the corresponding ELPA name-version
format. Essentially drop the prefix used in Guix."
- (if (emacs-package? name-ver) ; checks for "emacs-" prefix
- (string-drop name-ver (string-length "emacs-"))
- name-ver))
+ ;; Get the preferred emacs prefix
+ (or (%emacs-prefix)
+ (%emacs-prefix
+ (let ((emacs (if (string-prefix? "/" (%emacs)) ; absolute file name
+ (%emacs)
+ (which "emacs"))))
+ (string-append
+ (package-name->name+version
+ (strip-store-file-name (dirname (dirname emacs))))
+ "-"))))
+
+ (cond
+ ((string-prefix? (%emacs-prefix) name-ver)
+ (string-drop name-ver (string-length (%emacs-prefix))))
+ ((string-prefix? "emacs-" name-ver)
+ (string-drop name-ver (string-length "emacs-")))
+ (else name-ver)))
(define (store-directory->elpa-name-version store-dir)
"Given a store directory STORE-DIR return the part of the basename after the
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 05/24] etc: Provide snippet for defining emacs variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
44f84c463ed7f860238bd5e3c091bf448d8b0071.1723381182.git.liliana.prikler@gmail.com
* etc/snippets/tempel/scheme-mode (emacs-variants...): New snippet.
---
etc/snippets/tempel/scheme-mode | 8 ++++++++
1 file changed, 8 insertions(+)

Toggle diff (21 lines)
diff --git a/etc/snippets/tempel/scheme-mode b/etc/snippets/tempel/scheme-mode
index 249f4ce8e3..b8237d1ef5 100644
--- a/etc/snippets/tempel/scheme-mode
+++ b/etc/snippets/tempel/scheme-mode
@@ -14,6 +14,14 @@ scheme-mode
n > "(description \"" p "\")"
n > "(license license:" (p "unknown") ")))" n)
+(emacs-variants...
+ "(define-public emacs-minimal-" (s name)
+ n> "(package-with-emacs-minimal emacs-" (s name) "))" n n
+ "(define-public emacs-next-" (s name)
+ n> "(package-with-emacs-next emacs-" (s name) "))" n n
+ "(define-public emacs-pgtk-" (s name)
+ n> "(package-with-emacs-pgtk emacs-" (s name) "))")
+
(origin...
"(origin"
n> "(method " (p "url-fetch" method) ")"
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 06/24] gnu: emacs-libgit: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
0440d2b1479b505d88502afe87d9a1ae1b68915c.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-libgit)[native-inputs]: Replace emacs-no-x
with emacs.
[properties]: Add ‘next-variant’ and ‘pgtk-variant’.
(emacs-next-libgit, emacs-pgtk-libgit): New variables.
---
gnu/packages/emacs-xyz.scm | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)

Toggle diff (47 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 2ff1ed4bf0..ce92c12885 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -56,7 +56,7 @@
;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2019 Stephen Webber <montokapro@gmail.com>
-;;; Copyright © 2019, 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
+;;; Copyright © 2019, 2021, 2024 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2019 David Wilson <david@daviwil.com>
;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net>
@@ -1645,14 +1645,29 @@ (define-public emacs-libgit
(add-after 'emacs-build 'validate-compiled-autoloads
(assoc-ref emacs:%standard-phases 'validate-compiled-autoloads)))))
(native-inputs
- (list emacs-no-x git-minimal pkg-config))
+ (list emacs git-minimal pkg-config))
(inputs
(list libgit2))
(home-page "https://github.com/magit/libegit2")
(synopsis "Emacs bindings for libgit2")
(description "This is an experimental module written in C providing
libgit2 bindings for Emacs, intended to boost the performance of Magit.")
- (license license:gpl2+))))
+ (license license:gpl2+)
+ (properties
+ `((next-variant . ,(delay emacs-next-libgit))
+ (pgtk-variant . ,(delay emacs-pgtk-libgit)))))))
+
+(define-public emacs-next-libgit
+ (package/inherit emacs-libgit
+ (name "emacs-next-libgit")
+ (native-inputs (modify-inputs (package-inputs emacs-libgit)
+ (replace "emacs" emacs-next)))))
+
+(define-public emacs-pgtk-libgit
+ (package/inherit emacs-libgit
+ (name "emacs-pgtk-libgit")
+ (native-inputs (modify-inputs (package-inputs emacs-libgit)
+ (replace "emacs" emacs-pgtk)))))
(define-public emacs-llm
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 08/24] gnu: emacs-tablist: Define variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
8a32547b3e869f1018190333838e8536074faf74.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-minimal-tablist, emacs-next-tablist)
(emacs-pgtk-tablist): New variables.
---
gnu/packages/emacs-xyz.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (22 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 0ec3d4a240..f1fa21e034 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -5788,6 +5788,15 @@ (define-public emacs-tablist
@code{tablist-mode} or @code{tablist-minor-mode} commands.")
(license license:gpl3+)))
+(define-public emacs-minimal-tablist
+ (package-with-emacs-minimal emacs-tablist))
+
+(define-public emacs-next-tablist
+ (package-with-emacs-next emacs-tablist))
+
+(define-public emacs-pgtk-tablist
+ (package-with-emacs-pgtk emacs-tablist))
+
(define-public emacs-djvu
(package
(name "emacs-djvu")
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 07/24] gnu: emacs-eweouz: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
a967f79fb95e67d681ea5a1c78412a687a16508c.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-eweouz)[native-inputs]: Replace
emacs-minimal with emacs.
[properties]: Add ‘minimal-variant’, ‘next-variant’ and ‘pgtk-variant’.
(emacs-minimal-eweouz, emacs-next-eweouz, emacs-pgtk-eweouz): New variables.
---
gnu/packages/emacs-xyz.scm | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)

Toggle diff (46 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index ce92c12885..0ec3d4a240 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -4210,7 +4210,7 @@ (define-public emacs-eweouz
(native-inputs
(list autoconf
automake
- emacs-minimal
+ emacs
pkg-config))
(inputs
(list evolution-data-server))
@@ -4220,7 +4220,29 @@ (define-public emacs-eweouz
"Eweouz is an tool for looking up contacts from Evolution Data Server
from Emacs. It is similar to BBDB, except much, much simpler.")
;; Most things are GPLv2-only although lisp/vcard.el is GPLv2+.
- (license (list license:gpl2 license:gpl2+))))
+ (license (list license:gpl2 license:gpl2+))
+ (properties
+ `((minimal-variant . ,(delay emacs-minimal-eweouz))
+ (next-variant . ,(delay emacs-next-eweouz))
+ (pgtk-variant . ,(delay emacs-pgtk-eweouz))))))
+
+(define-public emacs-minimal-eweouz
+ (package/inherit emacs-eweouz
+ (name "emacs-minimal-eweouz")
+ (native-inputs (modify-inputs (package-native-inputs emacs-eweouz)
+ (replace "emacs" emacs-minimal)))))
+
+(define-public emacs-next-eweouz
+ (package/inherit emacs-eweouz
+ (name "emacs-next-eweouz")
+ (native-inputs (modify-inputs (package-native-inputs emacs-eweouz)
+ (replace "emacs" emacs-next)))))
+
+(define-public emacs-pgtk-eweouz
+ (package/inherit emacs-eweouz
+ (name "emacs-pgtk-eweouz")
+ (native-inputs (modify-inputs (package-native-inputs emacs-eweouz)
+ (replace "emacs" emacs-pgtk)))))
(define-public emacs-beacon
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 09/24] gnu: emacs-pdf-tools: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
259c3f8580f1937ae73bf8b4c60a211b4b96d4fb.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-pdf-tools)[native-inputs]: Replace
emacs-minimal with emacs.
[properties]: Add ‘minimal-variant’, ‘next-variant’ and ‘pgtk-variant’.
(emacs-minimal-pdf-tools, emacs-next-pdf-tools, emacs-pgtk-pdf-tools):
New variables.
---
gnu/packages/emacs-xyz.scm | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)

Toggle diff (49 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index f1fa21e034..68520a2622 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -5963,7 +5963,7 @@ (define-public emacs-pdf-tools
(add-after 'emacs-install 'emacs-build
(assoc-ref emacs:%standard-phases 'build)))))
(native-inputs
- (list autoconf automake emacs-minimal pkg-config))
+ (list autoconf automake emacs pkg-config))
(inputs
(list cairo glib libpng poppler zlib))
(propagated-inputs
@@ -5975,7 +5975,32 @@ (define-public emacs-pdf-tools
files. The key difference is that pages are not pre-rendered by
e.g. ghostscript and stored in the file-system, but rather created on-demand
and stored in memory.")
- (license license:gpl3+)))
+ (license license:gpl3+)
+ (properties
+ `((minimal-variant . ,(delay emacs-minimal-pdf-tools))
+ (next-variant . ,(delay emacs-next-pdf-tools))
+ (pgtk-variant . ,(delay emacs-pgtk-pdf-tools))))))
+
+(define-public emacs-minimal-pdf-tools
+ (package/inherit emacs-pdf-tools
+ (name "emacs-minimal-pdf-tools")
+ (native-inputs (modify-inputs (package-native-inputs emacs-pdf-tools)
+ (replace "emacs" emacs-minimal)))
+ (propagated-inputs (list emacs-minimal-tablist))))
+
+(define-public emacs-next-pdf-tools
+ (package/inherit emacs-pdf-tools
+ (name "emacs-next-pdf-tools")
+ (native-inputs (modify-inputs (package-native-inputs emacs-pdf-tools)
+ (replace "emacs" emacs-next)))
+ (propagated-inputs (list emacs-next-tablist))))
+
+(define-public emacs-pgtk-pdf-tools
+ (package/inherit emacs-pdf-tools
+ (name "emacs-pgtk-pdf-tools")
+ (native-inputs (modify-inputs (package-native-inputs emacs-pdf-tools)
+ (replace "emacs" emacs-pgtk)))
+ (propagated-inputs (list emacs-pgtk-tablist))))
(define-public emacs-saveplace-pdf-view
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 10/24] gnu: emacs-fontaine: Reindent.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
ddc9373b0093abc45564dce6131ba00733681c10.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-fontaine): Reindent.
---
gnu/packages/emacs-xyz.scm | 38 +++++++++++++++++++-------------------
1 file changed, 19 insertions(+), 19 deletions(-)

Toggle diff (52 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 68520a2622..9e4a050378 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -5341,26 +5341,26 @@ (define-public emacs-font-lock-studio
the Font Lock keywords.")
(license license:gpl3+))))
- (define-public emacs-fontaine
- (package
- (name "emacs-fontaine")
- (version "2.0.0")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/protesilaos/fontaine")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1fm6lw1jyy5vv314y2qhzcav9fmpgf333xrlwfdyi86z6z6f2fyy"))))
- (build-system emacs-build-system)
- (home-page "https://github.com/protesilaos/fontaine")
- (synopsis "Set Emacs font configurations using presets")
- (description
- "Fontaine lets the user specify presets of font configurations
+(define-public emacs-fontaine
+ (package
+ (name "emacs-fontaine")
+ (version "2.0.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/protesilaos/fontaine")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1fm6lw1jyy5vv314y2qhzcav9fmpgf333xrlwfdyi86z6z6f2fyy"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/protesilaos/fontaine")
+ (synopsis "Set Emacs font configurations using presets")
+ (description
+ "Fontaine lets the user specify presets of font configurations
and set them on demand on graphical Emacs frames.")
- (license license:gpl3+)))
+ (license license:gpl3+)))
(define-public emacs-form-feed
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 11/24] gnu: emacs-bui: Define variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
c40fc5cff65d2edb4edaf7ecbbce44ba12110503.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-minimal-bui, emacs-next-bui)
(emacs-pgtk-bui): New variables.
---
gnu/packages/emacs-xyz.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (22 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 9e4a050378..9abfd79421 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -6137,6 +6137,15 @@ (define-public emacs-bui
type, for example: packages, buffers, files, etc.")
(license license:gpl3+)))
+(define-public emacs-minimal-bui
+ (package-with-emacs-minimal emacs-bui))
+
+(define-public emacs-next-bui
+ (package-with-emacs-next emacs-bui))
+
+(define-public emacs-pgtk-bui
+ (package-with-emacs-pgtk emacs-bui))
+
(define-public emacs-guix
(let ((commit "455272c5cc72ed4ba5bad13c669f024f51479a58")
(revision "7"))
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 12/24] gnu: emacs-dash: Define variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
343ab11c6e6b68be955ac9befb9e80f5ad5ea1d6.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-minimal-dash, emacs-next-dash)
(emacs-pgtk-dash): New variables.
---
gnu/packages/emacs-xyz.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (22 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 9abfd79421..4e51e6378b 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -6113,6 +6113,15 @@ (define-public emacs-dash
(description "This package provides a modern list API library for Emacs.")
(license license:gpl3+)))
+(define-public emacs-minimal-dash
+ (package-with-emacs-minimal emacs-dash))
+
+(define-public emacs-next-dash
+ (package-with-emacs-next emacs-dash))
+
+(define-public emacs-pgtk-dash
+ (package-with-emacs-pgtk emacs-dash))
+
(define-public emacs-bui
(package
(name "emacs-bui")
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 13/24] gnu: emacs-edit-indirect: Define variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
cb72bc109c97dccd402581c9c2af4f19cd958af3.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-minimal-edit-indirect)
(emacs-next-edit-indirect, emacs-pgtk-edit-indirect): New variables.
---
gnu/packages/emacs-xyz.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (22 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 4e51e6378b..0cfcbec930 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -14905,6 +14905,15 @@ (define-public emacs-edit-indirect
like @code{org-edit-src-code} but for arbitrary regions.")
(license license:bsd-2)))
+(define-public emacs-minimal-edit-indirect
+ (package-with-emacs-minimal emacs-edit-indirect))
+
+(define-public emacs-next-edit-indirect
+ (package-with-emacs-next emacs-edit-indirect))
+
+(define-public emacs-pgtk-edit-indirect
+ (package-with-emacs-pgtk emacs-edit-indirect))
+
(define-public emacs-projectile
(package
(name "emacs-projectile")
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 14/24] gnu: emacs-geiser: Define variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
72cc51ff100def0d4d10c6f9967d55da8e743a5b.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-minimal-geiser, emacs-next-geiser)
(emacs-pgtk-geiser): New variables.
---
gnu/packages/emacs-xyz.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (22 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 0cfcbec930..2004aeabb9 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -541,6 +541,15 @@ (define-public emacs-geiser
e.g. emacs-geiser-guile for Guile.")
(license license:bsd-3)))
+(define-public emacs-minimal-geiser
+ (package-with-emacs-minimal emacs-geiser))
+
+(define-public emacs-next-geiser
+ (package-with-emacs-next emacs-geiser))
+
+(define-public emacs-pgtk-geiser
+ (package-with-emacs-pgtk emacs-geiser))
+
(define-public emacs-gptel
(package
(name "emacs-gptel")
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 15/24] gnu: emacs-geiser-guile: Define variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
108000c497e1185ca077dc5cda5fd9d5f144ec4f.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-minimal-geiser-guile)
(emacs-next-geiser-guile, emacs-pgtk-geiser-guile): New variables.
---
gnu/packages/emacs-xyz.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (22 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 2004aeabb9..e4b78e482b 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -651,6 +651,15 @@ (define-public emacs-geiser-guile
a generic Scheme interaction mode for the GNU Emacs editor.")
(license license:bsd-3)))
+(define-public emacs-minimal-geiser-guile
+ (package-with-emacs-minimal emacs-geiser-guile))
+
+(define-public emacs-next-geiser-guile
+ (package-with-emacs-next emacs-geiser-guile))
+
+(define-public emacs-pgtk-geiser-guile
+ (package-with-emacs-pgtk emacs-geiser-guile))
+
(define-public emacs-ac-geiser
(let ((commit "93818c936ee7e2f1ba1b315578bde363a7d43d05")
(revision "0"))
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 16/24] gnu: emacs-magit-popup: Define variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
aaec18f4732a1f3c68f857c7dd4229f3338f24b1.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-minimal-magit-popup)
(emacs-next-magit-popup, emacs-pgtk-magit-popup): New variables.
---
gnu/packages/emacs-xyz.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (22 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index e4b78e482b..d10b2c0f1b 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -1854,6 +1854,15 @@ (define-public emacs-magit-popup
process, passing on the arguments as command line arguments.")
(license license:gpl3+)))
+(define-public emacs-minimal-magit-popup
+ (package-with-emacs-minimal emacs-magit-popup))
+
+(define-public emacs-next-magit-popup
+ (package-with-emacs-next emacs-magit-popup))
+
+(define-public emacs-pgtk-magit-popup
+ (package-with-emacs-pgtk emacs-magit-popup))
+
(define-public emacs-magit-annex
(package
(name "emacs-magit-annex")
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 17/24] gnu: emacs-guix: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
a483546815b9a9ef4ddbd7dfb5e0718d2a38d931.1723381182.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-guix)[native-inputs]: Replace
emacs-minimal with emacs.
[properties]: Add ‘minimal-variant’, ‘next-variant’ and ‘pgtk-variant’.
(emacs-minimal-guix, emacs-next-guix, emacs-pgtk-guix): New variables.
---
gnu/packages/emacs-xyz.scm | 47 ++++++++++++++++++++++++++++++++++++--
1 file changed, 45 insertions(+), 2 deletions(-)

Toggle diff (67 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index d10b2c0f1b..764b535d45 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -6216,7 +6216,7 @@ (define-public emacs-guix
((assoc-ref emacs:%standard-phases 'expand-load-path)
#:prepend-source? #f))))))
(native-inputs
- (list autoconf automake emacs-minimal pkg-config texinfo))
+ (list autoconf automake emacs pkg-config texinfo))
(inputs
(list (lookup-package-input guix "guile")
guix))
@@ -6235,7 +6235,50 @@ (define-public emacs-guix
Guix package manager. Particularly, it allows you to do various package
management tasks from Emacs. To begin with, run @code{M-x guix-about} or
@code{M-x guix-help} command.")
- (license license:gpl3+))))
+ (license license:gpl3+)
+ (properties
+ `((minimal-variant . ,(delay emacs-minimal-pdf-tools))
+ (next-variant . ,(delay emacs-next-pdf-tools))
+ (pgtk-variant . ,(delay emacs-pgtk-pdf-tools)))))))
+
+(define-public emacs-minimal-guix
+ (package/inherit emacs-guix
+ (name "emacs-minimal-guix")
+ (native-inputs (modify-inputs (package-native-inputs emacs-guix)
+ (replace "emacs" emacs-minimal)))
+ (propagated-inputs (list emacs-minimal-bui
+ emacs-minimal-dash
+ emacs-minimal-edit-indirect
+ emacs-minimal-geiser
+ emacs-minimal-geiser-guile
+ emacs-minimal-magit-popup
+ guile-gcrypt))))
+
+(define-public emacs-next-guix
+ (package/inherit emacs-guix
+ (name "emacs-next-guix")
+ (native-inputs (modify-inputs (package-native-inputs emacs-guix)
+ (replace "emacs" emacs-next)))
+ (propagated-inputs (list emacs-next-bui
+ emacs-next-dash
+ emacs-next-edit-indirect
+ emacs-next-geiser
+ emacs-next-geiser-guile
+ emacs-next-magit-popup
+ guile-gcrypt))))
+
+(define-public emacs-pgtk-guix
+ (package/inherit emacs-guix
+ (name "emacs-pgtk-guix")
+ (native-inputs (modify-inputs (package-native-inputs emacs-guix)
+ (replace "emacs" emacs-pgtk)))
+ (propagated-inputs (list emacs-pgtk-bui
+ emacs-pgtk-dash
+ emacs-pgtk-edit-indirect
+ emacs-pgtk-geiser
+ emacs-pgtk-geiser-guile
+ emacs-pgtk-magit-popup
+ guile-gcrypt))))
(define-public emacs-build-farm
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 18/24] [WIP] gnu: emacs-dvc: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
e26b9884987e35f8e2cd5ef772acc14feece19ed.1723381183.git.liliana.prikler@gmail.com
XXX: Only emacs-minimal-dvc and emacs-next-dvc build currently.

* gnu/packages/emacs-xyz.scm (emacs-dvc)[native-inputs]: Replace
emacs-minimal with emacs.
[properties]: Add ‘minimal-variant’, ‘next-variant’ and ‘pgtk-variant’.
(emacs-minimal-dvc, emacs-next-dvc, emacs-pgtk-dvc): New variables.
---
gnu/packages/emacs-xyz.scm | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)

Toggle diff (45 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 764b535d45..f0fb00a697 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -9349,14 +9349,36 @@ (define-public emacs-dvc
(("@itemx drop") "@item drop")
(("@itemx left file") "@item left file")))))))
(native-inputs
- (list autoconf automake emacs-minimal texinfo))
+ (list autoconf automake emacs texinfo))
(home-page "http://xsteve.at/prg/emacs_dvc/index.html")
(synopsis "Emacs front-end for various distributed version control systems")
(description "DVC is a legacy Emacs front-end for a number of
distributed version control systems. It currently supports GNU Arch, GNU
Bazaar, git, Mercurial, and Monotone. It also provides some integration with
Gnus, e.g., for applying patches received by email.")
- (license license:gpl2+))))
+ (license license:gpl2+)
+ (properties
+ `((minimal-variant . ,(delay emacs-minimal-dvc))
+ (next-variant . ,(delay emacs-next-dvc))
+ (pgtk-variant . ,(delay emacs-pgtk-dvc)))))))
+
+(define-public emacs-minimal-dvc
+ (package/inherit emacs-dvc
+ (name "emacs-minimal-dvc")
+ (native-inputs (modify-inputs (package-native-inputs emacs-dvc)
+ (replace "emacs" emacs-minimal)))))
+
+(define-public emacs-next-dvc
+ (package/inherit emacs-dvc
+ (name "emacs-next-dvc")
+ (native-inputs (modify-inputs (package-native-inputs emacs-dvc)
+ (replace "emacs" emacs-next)))))
+
+(define-public emacs-pgtk-dvc
+ (package/inherit emacs-dvc
+ (name "emacs-pgtk-dvc")
+ (native-inputs (modify-inputs (package-native-inputs emacs-dvc)
+ (replace "emacs" emacs-pgtk)))))
(define-public emacs-sudo-edit
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 19/24] gnu: emacspeak: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
465f4ecda647a8b2951eeccb58f7363624471c8d.1723381183.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacspeak)[properties]: Add ‘minimal-variant’,
‘next-variant’ and ‘pgtk-variant’.
(emacspeak-minimal, emacspeak-next, emacspeak-pgtk): New variables.
---
gnu/packages/emacs-xyz.scm | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)

Toggle diff (37 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index f0fb00a697..22c21340bc 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -19296,7 +19296,29 @@ (define-public emacspeak
information. By seamlessly blending all aspects of the Internet such as
Web-surfing and messaging, Emacspeak speech-enables local and remote
information via a consistent and well-integrated user interface.")
- (license license:gpl2+)))
+ (license license:gpl2+)
+ (properties
+ `((minimal-variant . ,(delay emacspeak-minimal))
+ (next-variant . ,(delay emacspeak-next))
+ (pgtk-variant . ,(delay emacspeak-pgtk))))))
+
+(define-public emacspeak-minimal
+ (package (inherit emacspeak)
+ (name "emacspeak-minimal")
+ (inputs (modify-inputs (package-inputs emacspeak)
+ (replace "emacs" emacs-minimal)))))
+
+(define-public emacspeak-next
+ (package (inherit emacspeak)
+ (name "emacspeak-next")
+ (inputs (modify-inputs (package-inputs emacspeak)
+ (replace "emacs" emacs-next)))))
+
+(define-public emacspeak-pgtk
+ (package (inherit emacspeak)
+ (name "emacspeak-pgtk")
+ (inputs (modify-inputs (package-inputs emacspeak)
+ (replace "emacs" emacs-pgtk)))))
(define-public emacs-adaptive-wrap
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 20/24] gnu: emacs-xelb: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
099834f1c5b2efdf86484010d5c92dbc257ee38b.1723381183.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-xelb)[arguments]: Drop #:emacs.
[properties]: Add ‘minimal-variant’.
(emacs-no-x-toolkit-xelb, emacs-next-xelb, emacs-pgtk-xelb): New variables.
(emacs-xelb-no-x-toolkit): Deprecate in favour of emacs-no-x-toolkit-xelb.
---
gnu/packages/emacs-xyz.scm | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)

Toggle diff (48 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 22c21340bc..b825cd26e0 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -20237,14 +20237,8 @@ (define-public emacs-xelb
(base32
"12ikrnvik1n1fdc6ixx53d0z84v269wi463380k0i5zb6q8ncwpk"))))
(build-system emacs-build-system)
- ;; The following functions and variables needed by emacs-xelb are
- ;; not included in emacs-minimal:
- ;; x-display-screens, x-keysym-table, x-alt-keysym, x-meta-keysym
- ;; x-hyper-keysym, x-super-keysym, libxml-parse-xml-region
- ;; x-display-pixel-width, x-display-pixel-height
(arguments
(list
- #:emacs emacs
#:phases
#~(modify-phases %standard-phases
(add-after 'expand-load-path 'regenerate-el-files
@@ -20265,7 +20259,25 @@ (define-public emacs-xelb
X11 protocol based on the XML description files from the XCB project. It
features an object-oriented API and permits a certain degree of concurrency.
It should enable you to implement low-level X11 applications.")
- (license license:gpl3+)))
+ (license license:gpl3+)
+ ;; The following functions and variables needed by emacs-xelb are
+ ;; not included in emacs-minimal:
+ ;; x-display-screens, x-keysym-table, x-alt-keysym, x-meta-keysym
+ ;; x-hyper-keysym, x-super-keysym, libxml-parse-xml-region
+ ;; x-display-pixel-width, x-display-pixel-height
+ (properties `((minimal-variant . ,(delay emacs-no-x-toolkit-xelb))))))
+
+(define-public emacs-next-xelb
+ (package-with-emacs-next emacs-xelb))
+
+(define-public emacs-pgtk-xelb
+ (package-with-emacs-pgtk emacs-xelb))
+
+(define-public emacs-no-x-toolkit-xelb
+ (package-with-emacs-no-x-toolkit emacs-xelb))
+
+(define-public emacs-xelb-no-x-toolkit
+ (deprecated-package "emacs-xelb-no-x-toolkit" emacs-no-x-toolkit-xelb))
(define-public emacs-exwm
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 21/24] gnu: emacs-exwm: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
50bc1699a6adb4523809ae0cdfb34e3c6345f599.1723381183.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-exwm)[arguments]: Drop #:emacs.
[properties]: Add ‘minimal-variant’.
(emacs-no-x-toolkit-exwm, emacs-next-exwm, emacs-pgtk-exwm): New variables.
(emacs-exwm-no-x-toolkit): Deprecate in favour of emacs-no-x-toolkit-exwm.
---
gnu/packages/emacs-xyz.scm | 29 +++++++++++------------------
1 file changed, 11 insertions(+), 18 deletions(-)

Toggle diff (52 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index b825cd26e0..b63bd372a3 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -20302,7 +20302,6 @@ (define-public emacs-exwm
;; x-display-pixel-width, x-display-pixel-height
(arguments
(list
- #:emacs emacs
#:phases
#~(modify-phases %standard-phases
(add-after 'build 'install-xsession
@@ -20343,26 +20342,20 @@ (define-public emacs-exwm
(description
"EXWM is a full-featured tiling X window manager for Emacs built on top
of XELB.")
- (license license:gpl3+)))
+ (license license:gpl3+)
+ (properties `((minimal-variant . ,(delay emacs-no-x-toolkit-exwm))))))
-(define-public emacs-xelb-no-x-toolkit
- (package
- (inherit emacs-xelb)
- (name "emacs-xelb-no-x-toolkit")
- (arguments
- (substitute-keyword-arguments (package-arguments emacs-xelb)
- ((#:emacs emacs) `,emacs-no-x-toolkit)))))
+(define-public emacs-next-exwm
+ (package-with-emacs-next emacs-exwm))
+
+(define-public emacs-pgtk-exwm
+ (package-with-emacs-pgtk emacs-exwm))
+
+(define-public emacs-no-x-toolkit-exwm
+ (package-with-emacs-no-x-toolkit emacs-exwm))
(define-public emacs-exwm-no-x-toolkit
- (package
- (inherit emacs-exwm)
- (name "emacs-exwm-no-x-toolkit")
- (synopsis "Emacs X window manager (without an X toolkit)")
- (propagated-inputs
- (list emacs-xelb-no-x-toolkit))
- (arguments
- (substitute-keyword-arguments (package-arguments emacs-exwm)
- ((#:emacs emacs) `,emacs-no-x-toolkit)))))
+ (deprecated-package "emacs-exwm-no-x-toolkit" emacs-no-x-toolkit-exwm))
(define-public emacs-switch-window
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 22/24] gnu: emacs-exwm-x: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
1e65007757f973e777fab0734205b50042211475.1723381183.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (emacs-exwm-x)[arguments]: Drop #:emacs.
[properties]: Add ‘minimal-variant’.
(emacs-no-x-toolkit-exwm-x, emacs-next-exwm-x, emacs-pgtk-exwm-x):
New variables.
---
gnu/packages/emacs-xyz.scm | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)

Toggle diff (39 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index b63bd372a3..774f18034c 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -20399,11 +20399,8 @@ (define-public emacs-exwm-x
(list emacs-counsel emacs-exwm emacs-switch-window emacs-use-package))
(inputs
(list xhost dbus))
- ;; Need emacs instead of emacs-minimal,
- ;; for emacs's bin path will be inserted into bin/exwm-x file.
(arguments
- `(#:emacs ,emacs
- #:phases
+ `(#:phases
(modify-phases %standard-phases
(add-after 'build 'install-xsession
(lambda* (#:key inputs outputs #:allow-other-keys)
@@ -20439,7 +20436,18 @@ (define-public emacs-exwm-x
(home-page "https://github.com/tumashu/exwm-x")
(description "EXWM-X is a derivative window manager based on EXWM, with focus
on mouse-control.")
- (license license:gpl3+)))
+ (license license:gpl3+)
+ ;; Note: emacs binary path will be inserted into the executable.
+ (properties `((minimal-variant . ,(delay emacs-no-x-toolkit-exwm-x))))))
+
+(define-public emacs-no-x-toolkit-exwm-x
+ (package-with-emacs-no-x-toolkit emacs-exwm-x))
+
+(define-public emacs-next-exwm-x
+ (package-with-emacs-next emacs-exwm-x))
+
+(define-public emacs-pgtk-exwm-x
+ (package-with-emacs-pgtk emacs-exwm-x))
(define-public emacs-gnugo
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 23/24] gnu: eless: Build variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
e6669a4bb73b4584a6ecb1356d474e95581aad5b.1723381183.git.liliana.prikler@gmail.com
* gnu/packages/emacs-xyz.scm (eless)[properties]: Add ‘minimal-variant’,
‘next-variant’ and ‘pgtk-variant’.
(eless-minimal, eless-next, eless-pgtk): New variables.
---
gnu/packages/emacs-xyz.scm | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)

Toggle diff (37 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 774f18034c..643d1b984b 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -22787,7 +22787,29 @@ (define-public eless
@item Auto-revert log files similar to @code{tail -f}.
@item Quickly change frame and font sizes.
@end itemize\n")
- (license license:expat)))
+ (license license:expat)
+ (properties
+ `((minimal-variant . ,(delay eless-minimal))
+ (next-variant . ,(delay eless-next))
+ (pgtk-variant . ,(delay eless-pgtk))))))
+
+(define-public eless-minimal
+ (package (inherit eless)
+ (name "eless-minimal")
+ (inputs (modify-inputs (package-inputs eless)
+ (replace "emacs" emacs-minimal)))))
+
+(define-public eless-next
+ (package (inherit eless)
+ (name "eless-next")
+ (inputs (modify-inputs (package-inputs eless)
+ (replace "emacs" emacs-next)))))
+
+(define-public eless-pgtk
+ (package (inherit eless)
+ (name "eless-pgtk")
+ (inputs (modify-inputs (package-inputs eless)
+ (replace "emacs" emacs-pgtk)))))
(define-public emacs-evil-matchit
(package
--
2.45.2
L
L
Liliana Marie Prikler wrote on 11 Aug 14:58 +0200
[PATCH emacs-team WIP v4 24/24] gnu: Build all the other emacs-* variants.
(address . 72406@debbugs.gnu.org)(address . gemmaro.dev@gmail.com)
044f005e90dff8e4d3ad89e131eddd4055d6d8cc.1723381183.git.liliana.prikler@gmail.com
TODO: Add ChangeLog.
TODO: Add the packages that use emacs-build-system as a second build system
or extract the emacs portions of them.
---
gnu/packages/admin.scm | 9 +
gnu/packages/android.scm | 9 +
gnu/packages/cmake.scm | 9 +
gnu/packages/databases.scm | 9 +
gnu/packages/emacs-xyz.scm | 12878 ++++++++++++++++++++++++++++++++-
gnu/packages/engineering.scm | 9 +
gnu/packages/erlang.scm | 9 +
gnu/packages/finance.scm | 18 +
gnu/packages/lisp-xyz.scm | 9 +
gnu/packages/llvm.scm | 18 +
gnu/packages/mail.scm | 9 +
gnu/packages/potassco.scm | 9 +
gnu/packages/protobuf.scm | 9 +
gnu/packages/scheme.scm | 9 +
gnu/packages/statistics.scm | 9 +
15 files changed, 12996 insertions(+), 26 deletions(-)

Toggle diff (621 lines)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 113b8e2481..d3c6b4948c 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -3151,6 +3151,15 @@ (define-public emacs-ansible-doc
'yaml-mode-hook #'ansible-doc-mode)}.")
(license license:gpl3+))))
+(define-public emacs-minimal-ansible-doc
+ (package-with-emacs-minimal emacs-ansible-doc))
+
+(define-public emacs-next-ansible-doc
+ (package-with-emacs-next emacs-ansible-doc))
+
+(define-public emacs-pgtk-ansible-doc
+ (package-with-emacs-pgtk emacs-ansible-doc))
+
(define-public cpulimit
(package
(name "cpulimit")
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index b6f37732b4..bc5676e8aa 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -1256,6 +1256,15 @@ (define-public emacs-fdroid
emulator inside the comfort of Emacs.")
(license license:gpl3+)))
+(define-public emacs-minimal-fdroid
+ (package-with-emacs-minimal emacs-fdroid))
+
+(define-public emacs-next-fdroid
+ (package-with-emacs-next emacs-fdroid))
+
+(define-public emacs-pgtk-fdroid
+ (package-with-emacs-pgtk emacs-fdroid))
+
(define-public enjarify
(package
(name "enjarify")
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 0c780fe420..eb46e65da9 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -437,6 +437,15 @@ (define-public emacs-cmake-mode
Cmake files. It supports syntax highlighting, indenting and refilling of
comments.")))
+(define-public emacs-minimal-cmake-mode
+ (package-with-emacs-minimal emacs-cmake-mode))
+
+(define-public emacs-next-cmake-mode
+ (package-with-emacs-next emacs-cmake-mode))
+
+(define-public emacs-pgtk-cmake-mode
+ (package-with-emacs-pgtk emacs-cmake-mode))
+
(define-public qmsetup
(let ((commit "89fa57046241c26dfcfd97ceba174728b24bdd27")
(revision "0"))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 2532586bc5..2d459285e1 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -1783,6 +1783,15 @@ (define-public emacs-rec-mode
including field and record folding.")
(license license:gpl3+)))
+(define-public emacs-minimal-rec-mode
+ (package-with-emacs-minimal emacs-rec-mode))
+
+(define-public emacs-next-rec-mode
+ (package-with-emacs-next emacs-rec-mode))
+
+(define-public emacs-pgtk-rec-mode
+ (package-with-emacs-pgtk emacs-rec-mode))
+
(define-public emacs-recutils
(deprecated-package "emacs-recutils" emacs-rec-mode))
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 643d1b984b..ed18074848 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -338,6 +338,15 @@ (define-public emacs-ac-ispell
"AC Ispell is an Ispell and Aspell completion source for Auto Complete.")
(license license:gpl3+))))
+(define-public emacs-minimal-ac-ispell
+ (package-with-emacs-minimal emacs-ac-ispell))
+
+(define-public emacs-next-ac-ispell
+ (package-with-emacs-next emacs-ac-ispell))
+
+(define-public emacs-pgtk-ac-ispell
+ (package-with-emacs-pgtk emacs-ac-ispell))
+
(define-public emacs-ac-php
(package
(name "emacs-ac-php")
@@ -374,6 +383,15 @@ (define-public emacs-ac-php
"This package provides Auto Complete and Company back-ends for PHP.")
(license license:gpl3+)))
+(define-public emacs-minimal-ac-php
+ (package-with-emacs-minimal emacs-ac-php))
+
+(define-public emacs-next-ac-php
+ (package-with-emacs-next emacs-ac-php))
+
+(define-public emacs-pgtk-ac-php
+ (package-with-emacs-pgtk emacs-ac-php))
+
(define-public emacs-ace-jump-helm-line
(let ((commit "1483055255df3f8ae349f7520f05b1e43ea3ed37")
(revision "0"))
@@ -397,6 +415,15 @@ (define-public emacs-ace-jump-helm-line
"This package allows using Ace jump to a candidate in Helm window.")
(license license:gpl3+))))
+(define-public emacs-minimal-ace-jump-helm-line
+ (package-with-emacs-minimal emacs-ace-jump-helm-line))
+
+(define-public emacs-next-ace-jump-helm-line
+ (package-with-emacs-next emacs-ace-jump-helm-line))
+
+(define-public emacs-pgtk-ace-jump-helm-line
+ (package-with-emacs-pgtk emacs-ace-jump-helm-line))
+
(define-public emacs-activities
(package
(name "emacs-activities")
@@ -426,6 +453,15 @@ (define-public emacs-activities
compatible.")
(license license:gpl3+)))
+(define-public emacs-minimal-activities
+ (package-with-emacs-minimal emacs-activities))
+
+(define-public emacs-next-activities
+ (package-with-emacs-next emacs-activities))
+
+(define-public emacs-pgtk-activities
+ (package-with-emacs-pgtk emacs-activities))
+
(define-public emacs-bookmark-plus
(package
(name "emacs-bookmark-plus")
@@ -450,6 +486,15 @@ (define-public emacs-bookmark-plus
reading the extensive documentation about BookmarkPlus on the Emacs Wiki.")
(license license:gpl3+)))
+(define-public emacs-minimal-bookmark-plus
+ (package-with-emacs-minimal emacs-bookmark-plus))
+
+(define-public emacs-next-bookmark-plus
+ (package-with-emacs-next emacs-bookmark-plus))
+
+(define-public emacs-pgtk-bookmark-plus
+ (package-with-emacs-pgtk emacs-bookmark-plus))
+
(define-public emacs-cfrs
(package
(name "emacs-cfrs")
@@ -473,6 +518,15 @@ (define-public emacs-cfrs
input via a small child-frame spawned at the position of the cursor.")
(license license:gpl3+)))
+(define-public emacs-minimal-cfrs
+ (package-with-emacs-minimal emacs-cfrs))
+
+(define-public emacs-next-cfrs
+ (package-with-emacs-next emacs-cfrs))
+
+(define-public emacs-pgtk-cfrs
+ (package-with-emacs-pgtk emacs-cfrs))
+
(define-public emacs-arei
(package
(name "emacs-arei")
@@ -494,6 +548,15 @@ (define-public emacs-arei
(description "Sleek Guile IDE for Emacs.")
(license license:gpl3+)))
+(define-public emacs-minimal-arei
+ (package-with-emacs-minimal emacs-arei))
+
+(define-public emacs-next-arei
+ (package-with-emacs-next emacs-arei))
+
+(define-public emacs-pgtk-arei
+ (package-with-emacs-pgtk emacs-arei))
+
(define-public emacs-geiser
(package
(name "emacs-geiser")
@@ -589,6 +652,15 @@ (define-public emacs-gptel
API key.")
(license license:gpl3+)))
+(define-public emacs-minimal-gptel
+ (package-with-emacs-minimal emacs-gptel))
+
+(define-public emacs-next-gptel
+ (package-with-emacs-next emacs-gptel))
+
+(define-public emacs-pgtk-gptel
+ (package-with-emacs-pgtk emacs-gptel))
+
(define-public emacs-chatgpt-shell
(package
(name "emacs-chatgpt-shell")
@@ -609,6 +681,15 @@ (define-public emacs-chatgpt-shell
"chatgpt-shell is a comint-based ChatGPT shell for Emacs.")
(license license:gpl3+)))
+(define-public emacs-minimal-chatgpt-shell
+ (package-with-emacs-minimal emacs-chatgpt-shell))
+
+(define-public emacs-next-chatgpt-shell
+ (package-with-emacs-next emacs-chatgpt-shell))
+
+(define-public emacs-pgtk-chatgpt-shell
+ (package-with-emacs-pgtk emacs-chatgpt-shell))
+
(define-public emacs-geiser-guile
(package
(name "emacs-geiser-guile")
@@ -685,6 +766,15 @@ (define-public emacs-ac-geiser
(license license:bsd-3)
(home-page "https://github.com/xiaohanyu/ac-geiser"))))
+(define-public emacs-minimal-ac-geiser
+ (package-with-emacs-minimal emacs-ac-geiser))
+
+(define-public emacs-next-ac-geiser
+ (package-with-emacs-next emacs-ac-geiser))
+
+(define-public emacs-pgtk-ac-geiser
+ (package-with-emacs-pgtk emacs-ac-geiser))
+
(define-public emacs-geiser-gauche
;; The latest 0.14 release has an unbound variable (geiser-scheme-dir).
(let ((commit "96fa06aaeef18cc1b3b519e83dbb7be09eeb0d07")
@@ -732,6 +822,15 @@ (define-public emacs-geiser-gauche
a generic Scheme interaction mode for the GNU Emacs editor.")
(license license:expat))))
+(define-public emacs-minimal-geiser-gauche
+ (package-with-emacs-minimal emacs-geiser-gauche))
+
+(define-public emacs-next-geiser-gauche
+ (package-with-emacs-next emacs-geiser-gauche))
+
+(define-public emacs-pgtk-geiser-gauche
+ (package-with-emacs-pgtk emacs-geiser-gauche))
+
(define-public emacs-geiser-racket
(package
(name "emacs-geiser-racket")
@@ -777,6 +876,15 @@ (define-public emacs-geiser-racket
a generic Scheme interaction mode for the GNU Emacs editor.")
(license license:bsd-3)))
+(define-public emacs-minimal-geiser-racket
+ (package-with-emacs-minimal emacs-geiser-racket))
+
+(define-public emacs-next-geiser-racket
+ (package-with-emacs-next emacs-geiser-racket))
+
+(define-public emacs-pgtk-geiser-racket
+ (package-with-emacs-pgtk emacs-geiser-racket))
+
(define-public emacs-geiser-chez
(package
(name "emacs-geiser-chez")
@@ -817,6 +925,15 @@ (define-public emacs-geiser-chez
"This package adds support for using Chez Scheme in Emacs with Geiser.")
(license license:bsd-3)))
+(define-public emacs-minimal-geiser-chez
+ (package-with-emacs-minimal emacs-geiser-chez))
+
+(define-public emacs-next-geiser-chez
+ (package-with-emacs-next emacs-geiser-chez))
+
+(define-public emacs-pgtk-geiser-chez
+ (package-with-emacs-pgtk emacs-geiser-chez))
+
(define-public emacs-vc-hgcmd
(package
(name "emacs-vc-hgcmd")
@@ -840,6 +957,15 @@ (define-public emacs-vc-hgcmd
server}. The main advantage compared to @code{vc-hg} is speed.")
(license license:gpl3+)))
+(define-public emacs-minimal-vc-hgcmd
+ (package-with-emacs-minimal emacs-vc-hgcmd))
+
+(define-public emacs-next-vc-hgcmd
+ (package-with-emacs-next emacs-vc-hgcmd))
+
+(define-public emacs-pgtk-vc-hgcmd
+ (package-with-emacs-pgtk emacs-vc-hgcmd))
+
(define-public emacs-telephone-line
(package
(name "emacs-telephone-line")
@@ -863,6 +989,15 @@ (define-public emacs-telephone-line
configuration language which makes it trivial to write your own themes.")
(license license:gpl3+)))
+(define-public emacs-minimal-telephone-line
+ (package-with-emacs-minimal emacs-telephone-line))
+
+(define-public emacs-next-telephone-line
+ (package-with-emacs-next emacs-telephone-line))
+
+(define-public emacs-pgtk-telephone-line
+ (package-with-emacs-pgtk emacs-telephone-line))
+
(define-public emacs-inspector
(let ((commit "4e85b25e3e80c9989fcf7f518606837a54d9fab6")) ;version bump
(package
@@ -892,6 +1027,15 @@ (define-public emacs-inspector
Common Lisp or Smalltalk, but for Emacs Lisp.")
(license license:gpl3+))))
+(define-public emacs-minimal-inspector
+ (package-with-emacs-minimal emacs-inspector))
+
+(define-public emacs-next-inspector
+ (package-with-emacs-next emacs-inspector))
+
+(define-public emacs-pgtk-inspector
+ (package-with-emacs-pgtk emacs-inspector))
+
(define-public emacs-treebundel
(package
(name "emacs-treebundel")
@@ -921,6 +1065,15 @@ (define-public emacs-treebundel
git-worktrees.")
(license license:expat)))
+(define-public emacs-minimal-treebundel
+ (package-with-emacs-minimal emacs-treebundel))
+
+(define-public emacs-next-treebundel
+ (package-with-emacs-next emacs-treebundel))
+
+(define-public emacs-pgtk-treebundel
+ (package-with-emacs-pgtk emacs-treebundel))
+
(define-public emacs-tree-inspector
(let ((commit "bbb8d2dfe84fbf857fcc1579de5a1324b09a877e"))
(package
@@ -963,6 +1116,15 @@ (define-public emacs-tree-inspector
object.")
(license license:gpl3+))))
+(define-public emacs-minimal-tree-inspector
+ (package-with-emacs-minimal emacs-tree-inspector))
+
+(define-public emacs-next-tree-inspector
+ (package-with-emacs-next emacs-tree-inspector))
+
+(define-public emacs-pgtk-tree-inspector
+ (package-with-emacs-pgtk emacs-tree-inspector))
+
(define-public emacs-terminal-here
(package
(name "emacs-terminal-here")
@@ -985,6 +1147,15 @@ (define-public emacs-terminal-here
current buffer.")
(license license:gpl3+)))
+(define-public emacs-minimal-terminal-here
+ (package-with-emacs-minimal emacs-terminal-here))
+
+(define-public emacs-next-terminal-here
+ (package-with-emacs-next emacs-terminal-here))
+
+(define-public emacs-pgtk-terminal-here
+ (package-with-emacs-pgtk emacs-terminal-here))
+
(define-public emacs-treeview
(let ((commit "d9c10feddf3b959e7b33ce83103e1f0a61162723")
(revision "0"))
@@ -1007,6 +1178,15 @@ (define-public emacs-treeview
"Abstract Emacs Lisp framework for tree navigation.")
(license license:gpl3+))))
+(define-public emacs-minimal-treeview
+ (package-with-emacs-minimal emacs-treeview))
+
+(define-public emacs-next-treeview
+ (package-with-emacs-next emacs-treeview))
+
+(define-public emacs-pgtk-treeview
+ (package-with-emacs-pgtk emacs-treeview))
+
(define-public emacs-hide-lines
(package
(name "emacs-hide-lines")
@@ -1028,6 +1208,15 @@ (define-public emacs-hide-lines
expression.")
(license license:gpl3+)))
+(define-public emacs-minimal-hide-lines
+ (package-with-emacs-minimal emacs-hide-lines))
+
+(define-public emacs-next-hide-lines
+ (package-with-emacs-next emacs-hide-lines))
+
+(define-public emacs-pgtk-hide-lines
+ (package-with-emacs-pgtk emacs-hide-lines))
+
(define-public emacs-hgignore-mode
;; From 2021-03-14.
;; No releases available.
@@ -1054,6 +1243,15 @@ (define-public emacs-hgignore-mode
system.")
(license license:gpl3+))))
+(define-public emacs-minimal-hgignore-mode
+ (package-with-emacs-minimal emacs-hgignore-mode))
+
+(define-public emacs-next-hgignore-mode
+ (package-with-emacs-next emacs-hgignore-mode))
+
+(define-public emacs-pgtk-hgignore-mode
+ (package-with-emacs-pgtk emacs-hgignore-mode))
+
(define-public emacs-hsluv
(package
(name "emacs-hsluv")
@@ -1082,6 +1280,15 @@ (define-public emacs-hsluv
a neat percentage.")
(license license:expat)))
+(define-public emacs-minimal-hsluv
+ (package-with-emacs-minimal emacs-hsluv))
+
+(define-public emacs-next-hsluv
+ (package-with-emacs-next emacs-hsluv))
+
+(define-public emacs-pgtk-hsluv
+ (package-with-emacs-pgtk emacs-hsluv))
+
(define-public emacs-platformio-mode
(package
(name "emacs-platformio-mode")
@@ -1103,6 +1310,15 @@ (define-public emacs-platformio-mode
uploading PlatformIO projects.")
(license license:gpl3+)))
+(define-public emacs-minimal-platformio-mode
+ (package-with-emacs-minimal emacs-platformio-mode))
+
+(define-public emacs-next-platformio-mode
+ (package-with-emacs-next emacs-platformio-mode))
+
+(define-public emacs-pgtk-platformio-mode
+ (package-with-emacs-pgtk emacs-platformio-mode))
+
(define-public emacs-hyperbole
(package
(name "emacs-hyperbole")
@@ -1165,6 +1381,15 @@ (define-public emacs-hyperbole
buffers, directory trees, or the web.")
(license license:gpl3+)))
+(define-public emacs-minimal-hyperbole
+ (package-with-emacs-minimal emacs-hyperbole))
+
+(define-public emacs-next-hyperbole
+ (package-with-emacs-next emacs-hyperbole))
+
+(define-public emacs-pgtk-hyperbole
+ (package-with-emacs-pgtk emacs-hyperbole))
+
(define-public emacs-vlf
(package
(name "emacs-vlf")
@@ -1184,6 +1409,15 @@ (define-public emacs-vlf
comparing large files in batches.")
(license license:gpl2+)))
+(define-public emacs-minimal-vlf
+ (package-with-emacs-minimal emacs-vlf))
+
+(define-public emacs-next-vlf
+ (package-with-emacs-next emacs-vlf))
+
+(define-public emacs-pgtk-vlf
+ (package-with-emacs-pgtk emacs-vlf))
+
(define-public emacs-hg-histedit
;; From 2021-03-02.
;; No releases available.
@@ -1210,6 +1444,15 @@ (define-public emacs-hg-histedit
@command{hg histedit} for editing the commit history.")
(license license:gpl3+))))
+(define-public emacs-minimal-hg-histedit
+ (package-with-emacs-minimal emacs-hg-histedit))
+
+(define-public emacs-next-hg-histedit
+ (package-with-emacs-next emacs-hg-histedit))
+
+(define-public emacs-pgtk-hg-histedit
+ (package-with-emacs-pgtk emacs-hg-histedit))
+
(define-public emacs-package-build
(package
(name "emacs-package-build")
@@ -1230,6 +1473,15 @@ (define-public emacs-package-build
Emacs package archive}.")
(license license:gpl3+)))
+(define-public emacs-minimal-package-build
+ (package-with-emacs-minimal emacs-package-build))
+
+(define-public emacs-next-package-build
+ (package-with-emacs-next emacs-package-build))
+
+(define-public emacs-pgtk-package-build
+ (package-with-emacs-pgtk emacs-package-build))
+
(define-public emacs-paredit
(package
(name "emacs-paredit")
@@ -1257,6 +1509,15 @@ (define-public emacs-paredit
when typing parentheses directly or commenting out code line by line.")
(license license:gpl3+)))
+(define-public emacs-minimal-paredit
+ (package-with-emacs-minimal emacs-paredit))
+
+(define-public emacs-next-paredit
+ (package-with-emacs-next emacs-paredit))
+
+(define-public emacs-pgtk-paredit
+ (package-with-emacs-pgtk emacs-paredit))
+
(define-public emacs-puni
;; No tagged release upstream
(let ((commit "28836e98d5566172b1a94d7b38290d07b49201b2")
@@ -1283,6 +1544,15 @@ (define-public emacs-puni
out of the box.")
(license license:gpl3+))))
+(define-public emacs-minimal-puni
+ (package-with-emacs-minimal emacs-puni))
+
+(define-public emacs-next-puni
+ (package-with-emacs-next emacs-puni))
+
+(define-public emacs-pgtk-puni
+ (package-with-emacs-pgtk emacs-puni))
+
(define-public emacs-pug-mode
(package
(name "emacs-pug-mode")
@@ -1308,6 +1578,15 @@ (define-public emacs-pug-mode
is based off of Slim mode.")
(license license:gpl3+)))
+(define-public emacs-minimal-pug-mode
+ (package-with-emacs-minimal emacs-pug-mode))
+
+(define-public emacs-next-pug-mode
+ (package-with-emacs-next emacs-pug-mode))
+
+(define-public emacs-pgtk-pug-mode
+ (package-with-emacs-pgtk emacs-pug-mode))
+
(define-public emacs-sed-mode
(package
(name "emacs-sed-mode")
@@ -1327,6 +1606,15 @@ (define-public emacs-sed-mode
functionalities supported are font-locking and auto-indentation.")
(license license:gpl3+)))
+(define-public emacs-minimal-sed-mode
+ (package-with-emacs-minimal emacs-sed-mode))
+
+(define-public emacs-next-sed-mode
+ (package-with-emacs-next emacs-sed-mode))
+
+(define-public emacs-pgtk-sed-mode
+ (package-with-emacs-pgtk emacs-sed-mode))
+
(define-public emacs-spaceline-all-the-icons
(package
(name "emacs-spaceline-all-the-icons")
@@ -1355,6 +1643,15 @@ (define-public emacs-spaceline-all-the-icons
information in the mode line.")
(license license:expat)))
+(define-public emacs-minimal-spaceline-all-the-icons
+ (package-with-emacs-minimal emacs-spaceline-all-the-icons))
+
+(define-public emacs-next-spaceline-all-the-icons
+ (package-with-emacs-next emacs-spaceline-all-the-icons))
+
+(define-public emacs-pgtk-spaceline-all-the-icons
+ (package-with-emacs-pgtk emacs-spaceline-all-the-icons))
+
(define-public emacs-snow
(let ((commit "35ea06f19047ac99eaff9663cb035491c4a13e07")
(revision "0"))
@@ -1378,6 +1675,15 @@ (define-public emacs-snow
blows at times, and snow accumulates on the terrain in the scene.")
(license license:gpl3+))))
+(define-public emacs-minimal-snow
+ (package-with-emacs-minimal emacs-snow))
+
+(define-public emacs-next-snow
+ (package-with-emacs-next emacs-
This message was truncated. Download the full message here.
L
L
Liam Hupfer wrote on 11 Aug 18:20 +0200
Re: [bug#72406] [PATCH emacs-team WIP v3 24/24] gnu: Build all the other emacs-* variants.
871q2vvxnx.fsf@hpfr.net
Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

Toggle quote (6 lines)
> Am Samstag, dem 10.08.2024 um 20:53 -0500 schrieb Liam Hupfer:
>> I assume you used some degree of automation to generate these, but it
>> seems like a bit of a pain to maintain, no? 
> I’m not sure. We have a similar setup for Common Lisp, where we build
> three variants of everything.

That’s unfortunate ?.

Toggle quote (3 lines)
> The emacs-xyz.scm file is already too large though, and should
> possibly be split up.

I definitely agree with that.

Toggle quote (7 lines)
>> I guess you could implement some sort of CI checking if patches for
>> new packages include the correct variants, but it still seems like
>> it will lead to an increase in review burden. Seems too easy to make
>> typos with the variant prefix, for example. 
> I don’t think that, tbh. I’ve provided a tempel snippet to generate
> those variants, maybe someone can add a yasnippet too.

Editor-specific conveniences are nice, but it doesn’t change how manual
the approach is. I doubt one-time contributors tend to set up the
snippets. We have the full power of Scheme at our disposal, so it seems
like we can do better than N×M Emacs packages, where N is the number of
Emacs variants and M is the number of Emacs Lisp package sources.

Toggle quote (17 lines)
>> It seems like there must be a way to indicate to Cuirass to build a
>> set of packages with rewritten inputs, /without/ exposing those
>> packages directly. I believe Nix does something like this by
>> providing an ‘emacsPackagesFor’ function that provides an ergonomic
>> way for users to target an Emacs variant. See Example
>> 6 in [Adding Packages to Emacs — NixOS Manual]. Right now, Guix users
>> have to use something like ‘package-input-rewriting’ directly and
>> figure out the list of Emacs variants to override to their Emacs
>> package, since not all packages use `emacs-minimal’. For binary
>> substitutes, the community emacs-overlay project [tells Hydra to
>> build] the set of Emacs packages with each common Emacs variant.
> I think we can instruct Cuirass to ingest any manifest, but writing and
> maintaining that manifest would be pain. Plus, the other benefit is
> that as a user, I can type emacs-*-the-package – for some values of *
> at least – and have the correctly built package in my manifest. No
> more fiddling with package-input-rewriting or transformations.

Maintaining such a manifest, with a single list of Emacs variants and a
single list of Emacs packages to map over, seems far more manageable to
me than to define top-level packages for multiple Emacs variants, where
the variants provided for each package are hardcoded and only kept
consistent by judicious patch review.

Plus, with your more convenient rewriting functions, I think we can
better document this in the manual. Currently the note in `(guix)
Application Setup' only mentions `--with-input', but we should include a
snippet of how to do this declaratively as well.

Toggle quote (7 lines)
> But you are right in that we don’t need to introduce more top-level
> packages to at least get some of the benefits. This series does away
> with emacs-minimal as the default emacs to build stuff with and
> produces a more convenient input rewriting function. The problem is,
> that it is only available to Scheme code, so people using the CLI would
> miss out on those packages if not declared publicly.

Can’t people using the CLI use `--with-input'? Not very ergonomic, but
regardless, people using the CLI are still limited to whatever
semi-arbitrary set of variants we enumerate, e.g. `emacs-pgtk-xwidgets'
and any non-default `emacs-next' variant are not currently supported.

Toggle quote (10 lines)
>> We currently don’t have a well-defined “package set” for Emacs
>> packages to map rewrites over like Nix, and I don’t know if that is
>> ultimately the right solution, but I really don’t think we should
>> approach this by adding so many trivial packages to the top-level
>> package set. Imagine if we took this approach Guix-wide for
>> supporting another libc, for example.
> Again, see Common Lisp where we do exactly that. And yes, it would be
> nice to have an easier way of enumerating such package variants, but
> I’m not going to hold my breath until we do.

I feel like Common Lisp already doing it is not sufficient justification
to proliferate the approach. I don’t think it scales well for any
package ecosystem. Between finding a way to tell Cuirass to build
substitutes for more Emacs variants and improving documentation on
installing natively compiled packages for a particular variant, I think
we can sufficiently improve the status quo without the package
explosion. But I’m not experienced enough yet to implement what I’m
describing, so I can’t really back up my claims with code, only links to
the Nix approach.

Thanks for responding to my feedback. Good luck with whatever you
decide!

—Liam
S
S
Simon Tournier wrote on 3 Sep 17:18 +0200
Re: [bug#72406] [PATCH emacs-team WIP v4 01/24] build-system: emacs: Define package-with-explicit-emacs.
87y148sr3j.fsf@gmail.com
Hi Liliana,

On Sun, 11 Aug 2024 at 14:58, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote:
Toggle quote (5 lines)
> * guix/build-system/emacs.scm (package-with-explicit-emacs): New procedure.
> ---
> guix/build-system/emacs.scm | 51 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 51 insertions(+)

Cool!

LGTM.

Cheers,
simon
S
S
Simon Tournier wrote on 3 Sep 17:21 +0200
Re: [bug#72406] [PATCH emacs-team WIP v4 03/24] build-system: emacs: Define common variants.
87v7zcsqy7.fsf@gmail.com
Hi Liliana,

On Sun, 11 Aug 2024 at 14:58, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote:

Toggle quote (5 lines)
> +(define package-with-emacs-minimal
> + (package-with-explicit-emacs (delay (resolve-emacs 'emacs-minimal))
> + "emacs-" "emacs-minimal-"
> + #:variant-property 'emacs-minimal-variant))

[...]

Toggle quote (6 lines)
> +;; We prefer emacs-minimal, but sometimes the "minimal" variant still needs
> +;; X support.
> +(define package-with-emacs-no-x-toolkit
> + (package-with-explicit-emacs (delay (resolve-emacs 'emacs-no-x-toolkit))
> + "emacs-" "emacs-no-x-toolkit-"))

I am not convince these are useful. Why do I want to transform Emacs
packages for “compiling” them with the default Emacs “compiler”.

In order to keep the API clear, I would not provide them. Nothing
prevent an user to create them if they really need them.

Cheers,
simon
S
S
Simon Tournier wrote on 3 Sep 17:29 +0200
Re: [bug#72406] [PATCH emacs-team WIP v4 02/24] build-system: emacs: Make emacs the default variant.
87r0a0sqm7.fsf@gmail.com
Hi Liliana,

On Sun, 11 Aug 2024 at 14:58, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote:
Toggle quote (3 lines)
> * guix/build-system/emacs.scm (resolve-emacs): New variable.
> (default-emacs): Use it. Change to ‘emacs’ instead of ‘emacs-minimal’.

LGTM.

Cheers,
simon
S
S
Simon Tournier wrote on 3 Sep 17:32 +0200
Re: [bug#72406] [PATCH emacs-team WIP v4 06/24] gnu: emacs-libgit: Build variants.
87le08sqgm.fsf@gmail.com
Hi Liliana,

On Sun, 11 Aug 2024 at 14:58, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote:

Toggle quote (4 lines)
> + (properties
> + `((next-variant . ,(delay emacs-next-libgit))
> + (pgtk-variant . ,(delay emacs-pgtk-libgit)))))))

Sorry, I have missed why these properties are required. Could you point
where it would be used?

Cheers,
simon
S
S
Simon Tournier wrote on 3 Sep 17:39 +0200
Re: [bug#72406] [PATCH emacs-team WIP v4 03/24] build-system: emacs: Define common variants.
87h6awsq4m.fsf@gmail.com
Re,

On Tue, 03 Sep 2024 at 17:21, Simon Tournier <zimon.toutoune@gmail.com> wrote:
Toggle quote (18 lines)
> On Sun, 11 Aug 2024 at 14:58, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote:
>
>> +(define package-with-emacs-minimal
>> + (package-with-explicit-emacs (delay (resolve-emacs 'emacs-minimal))
>> + "emacs-" "emacs-minimal-"
>> + #:variant-property 'emacs-minimal-variant))
>
> [...]
>
>> +;; We prefer emacs-minimal, but sometimes the "minimal" variant still needs
>> +;; X support.
>> +(define package-with-emacs-no-x-toolkit
>> + (package-with-explicit-emacs (delay (resolve-emacs 'emacs-no-x-toolkit))
>> + "emacs-" "emacs-no-x-toolkit-"))
>
> I am not convince these are useful. Why do I want to transform Emacs
> packages for “compiling” them with the default Emacs “compiler”.

Ah wait. :-) PATCH 02/24 “build-system: emacs: Make emacs the default
variant.” change emacs-minimal to emacs as the default “compiler”.

So I change my mind and they are indeed useful.

Cheers,
simon
S
S
Simon Tournier wrote on 3 Sep 17:47 +0200
Re: [bug#72406] [PATCH emacs-team WIP v4 07/24] gnu: emacs-eweouz: Build variants.
87cylksprx.fsf@gmail.com
Hi Liliana,

On Sun, 11 Aug 2024 at 14:58, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote:

Toggle quote (2 lines)
> (emacs-minimal-eweouz, emacs-next-eweouz, emacs-pgtk-eweouz): New variables.

An open question: do we need them? I mean since
package-with-emacs-minimal is provided, it’s easy to create such
variant. Therefore, the question becomes: is it useful to provide
substitutes?

Building Emacs packages is most of the time quick and requires few
resources, so it’s not painful to do it locally in case an user want
such variant.

And, it avoids some combinatorial maintenance burden. Although Emacs
compiling toolchain is stable, it can be boring to ensure all the
variants still correctly build.

Instead, we could imagine some transformation option, let say
--with-emacs-toolchain=PACKAGE=TOOLCHAIN.

WDYT?

Cheers,
simon
S
S
Simon Tournier wrote on 3 Sep 17:51 +0200
Re: [bug#72406] [PATCH emacs-team WIP v4 00/24] Build variants for other Emacsen
878qw8spk9.fsf@gmail.com
Hi Liliana,

On Sun, 11 Aug 2024 at 14:59, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote:
Toggle quote (10 lines)
> Same as v3, but I reset the commit dates so that hopefully this time all
> mail arrives…
>
> Liliana Marie Prikler (24):
> build-system: emacs: Define package-with-explicit-emacs.
> build-system: emacs: Make emacs the default variant.
> build-system: emacs: Define common variants.
> build-system: emacs: Handle variants in elpa naming.
> etc: Provide snippet for defining emacs variants.

Well, aside minor comments, I agree with these changes but I am not
convinced but the rest.

A naive question: what is the cost to have emacs-minimal being able to
native-compile?


Cheers,
simon
L
L
Liliana Marie Prikler wrote on 3 Sep 18:52 +0200
94b3aa6c98eef7e2be1985e94a5328f058ebbf51.camel@gmail.com
Am Dienstag, dem 03.09.2024 um 17:51 +0200 schrieb Simon Tournier:
Toggle quote (20 lines)
> Hi Liliana,
>
> On Sun, 11 Aug 2024 at 14:59, Liliana Marie Prikler
> <liliana.prikler@gmail.com> wrote:
> > Same as v3, but I reset the commit dates so that hopefully this
> > time all
> > mail arrives…
> >
> > Liliana Marie Prikler (24):
> >   build-system: emacs: Define package-with-explicit-emacs.
> >   build-system: emacs: Make emacs the default variant.
> >   build-system: emacs: Define common variants.
> >   build-system: emacs: Handle variants in elpa naming.
> >   etc: Provide snippet for defining emacs variants.
>
> Well, aside minor comments, I agree with these changes but I am not
> convinced but the rest.
>
> A naive question: what is the cost to have emacs-minimal being able
> to native-compile?
Well, the cost is small (for packages that aren't broken like emacs-
yaml), but the benefit is also nil. emacs-minimal, emacs, emacs-pgtk,
etc. all have different ABI hashes, so packages built by one won't be
natively loaded by the other.

Cheers
L
L
Liliana Marie Prikler wrote on 3 Sep 18:57 +0200
Re: [bug#72406] [PATCH emacs-team WIP v4 06/24] gnu: emacs-libgit: Build variants.
dbc6fe2fa7fd0cb84f91443839fb9e257ab30d2c.camel@gmail.com
Am Dienstag, dem 03.09.2024 um 17:32 +0200 schrieb Simon Tournier:
Toggle quote (11 lines)
> Hi Liliana,
>
> On Sun, 11 Aug 2024 at 14:58, Liliana Marie Prikler
> <liliana.prikler@gmail.com> wrote:
>
> > +      (properties
> > +       `((next-variant . ,(delay emacs-next-libgit))
> > +         (pgtk-variant . ,(delay emacs-pgtk-libgit)))))))
>
> Sorry, I have missed why these properties are required.  Could you
> point where it would be used?
These properties are used in the package-with-emacs-* variants and
replace the packages that would normally be built with the procedures.
They aren't required normally, but for packages that use gnu-build-
system or need some special fix with certain emacs variants, they come
in handy.

Cheers
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 72406@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 72406
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch