From: Liliana Marie Prikler <liliana.prikler@gmail.com>
To: 72406@debbugs.gnu.org
Cc: gemmaro.dev@gmail.com, andrew@trop.in,
cox.katherine.e+guix@gmail.com, liliana.prikler@gmail.com
Subject: [bug#72406] [PATCH emacs-team WIP v4 01/24] build-system: emacs: Define package-with-explicit-emacs.
Date: Sun, 11 Aug 2024 14:58:42 +0200 [thread overview]
Message-ID: <19bb476657c13cc5ab2181de6259249a441942cc.1723381182.git.liliana.prikler@gmail.com> (raw)
In-Reply-To: <cover.1723381182.git.liliana.prikler@gmail.com>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 2967 bytes --]
* guix/build-system/emacs.scm (package-with-explicit-emacs): New procedure.
---
guix/build-system/emacs.scm | 51 +++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
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
next prev parent reply other threads:[~2024-08-11 13:02 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-31 19:58 [bug#72406] [PATCH emacs-team WIP 0/4] Simplify creation of emacs package variants Liliana Marie Prikler
2024-07-31 18:41 ` [bug#72406] [PATCH emacs-team WIP 2/4] build-system: emacs: Make emacs the default variant Liliana Marie Prikler
2024-07-31 18:42 ` [bug#72406] [PATCH emacs-team WIP 3/4] build-system: emacs: Define common variants Liliana Marie Prikler
2024-07-31 19:54 ` [bug#72406] [PATCH emacs-team WIP 4/4] etc: Provide snippet for defining emacs variants Liliana Marie Prikler
2024-07-31 19:57 ` [bug#72406] [PATCH emacs-team WIP 1/4] build-system: emacs: Define package-with-explicit-emacs Liliana Marie Prikler
2024-08-01 3:23 ` [bug#72406] [PATCH emacs-team WIP 0/4] Simplify creation of emacs package variants Suhail Singh
2024-08-01 4:32 ` Liliana Marie Prikler
2024-08-01 6:02 ` Suhail Singh
2024-08-01 16:54 ` Liliana Marie Prikler
2024-08-01 19:40 ` Suhail Singh
2024-08-11 12:59 ` [bug#72406] [PATCH emacs-team WIP v4 00/24] Build variants for other Emacsen Liliana Marie Prikler
2024-08-11 12:58 ` Liliana Marie Prikler [this message]
2024-09-03 15:18 ` [bug#72406] [PATCH emacs-team WIP v4 01/24] build-system: emacs: Define package-with-explicit-emacs Simon Tournier
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 03/24] build-system: emacs: Define common variants Liliana Marie Prikler
2024-09-03 15:21 ` Simon Tournier
2024-09-03 15:39 ` Simon Tournier
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 02/24] build-system: emacs: Make emacs the default variant Liliana Marie Prikler
2024-09-03 15:29 ` Simon Tournier
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 04/24] build-system: emacs: Handle variants in elpa naming Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 05/24] etc: Provide snippet for defining emacs variants Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 06/24] gnu: emacs-libgit: Build variants Liliana Marie Prikler
2024-09-03 15:32 ` Simon Tournier
2024-09-03 16:57 ` Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 07/24] gnu: emacs-eweouz: " Liliana Marie Prikler
2024-09-03 15:47 ` Simon Tournier
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 08/24] gnu: emacs-tablist: Define variants Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 10/24] gnu: emacs-fontaine: Reindent Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 09/24] gnu: emacs-pdf-tools: Build variants Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 12/24] gnu: emacs-dash: Define variants Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 11/24] gnu: emacs-bui: " Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 13/24] gnu: emacs-edit-indirect: " Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 14/24] gnu: emacs-geiser: " Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 15/24] gnu: emacs-geiser-guile: " Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 17/24] gnu: emacs-guix: Build variants Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 20/24] gnu: emacs-xelb: " Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 19/24] gnu: emacspeak: " Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 16/24] gnu: emacs-magit-popup: Define variants Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 18/24] [WIP] gnu: emacs-dvc: Build variants Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 21/24] gnu: emacs-exwm: " Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 23/24] gnu: eless: " Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 22/24] gnu: emacs-exwm-x: " Liliana Marie Prikler
2024-08-11 12:58 ` [bug#72406] [PATCH emacs-team WIP v4 24/24] gnu: Build all the other emacs-* variants Liliana Marie Prikler
2024-09-03 15:51 ` [bug#72406] [PATCH emacs-team WIP v4 00/24] Build variants for other Emacsen Simon Tournier
2024-09-03 16:52 ` Liliana Marie Prikler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=19bb476657c13cc5ab2181de6259249a441942cc.1723381182.git.liliana.prikler@gmail.com \
--to=liliana.prikler@gmail.com \
--cc=72406@debbugs.gnu.org \
--cc=andrew@trop.in \
--cc=cox.katherine.e+guix@gmail.com \
--cc=gemmaro.dev@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.