From patchwork Fri Jun 9 11:28:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liliana Marie Prikler X-Patchwork-Id: 50802 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 4438F27BBE9; Fri, 9 Jun 2023 20:24:36 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI, SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 990DE27BBE2 for ; Fri, 9 Jun 2023 20:24:32 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q7hiP-0007G4-Tn; Fri, 09 Jun 2023 15:24:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q7hiN-0007Fh-TO for guix-patches@gnu.org; Fri, 09 Jun 2023 15:24:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1q7hiN-00035V-Kn for guix-patches@gnu.org; Fri, 09 Jun 2023 15:24:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1q7hiM-0005jQ-MZ; Fri, 09 Jun 2023 15:24:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#63984] [PATCH emacs-team 2/2] gnu: Construct Emacs packages from bottom up. Resent-From: Liliana Marie Prikler Original-Sender: "Debbugs-submit" Resent-CC: andrew@trop.in, liliana.prikler@gmail.com, guix-patches@gnu.org Resent-Date: Fri, 09 Jun 2023 19:24:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63984 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 63984@debbugs.gnu.org Cc: andrew@trop.in, liliana.prikler@gmail.com X-Debbugs-Original-Xcc: andrew@trop.in, liliana.prikler@gmail.com Received: via spool by 63984-submit@debbugs.gnu.org id=B63984.168633863422010 (code B ref 63984); Fri, 09 Jun 2023 19:24:02 +0000 Received: (at 63984) by debbugs.gnu.org; 9 Jun 2023 19:23:54 +0000 Received: from localhost ([127.0.0.1]:60370 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q7hiC-0005iv-PK for submit@debbugs.gnu.org; Fri, 09 Jun 2023 15:23:53 -0400 Received: from mail-ed1-f66.google.com ([209.85.208.66]:56397) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q7hi7-0005iO-SS for 63984@debbugs.gnu.org; Fri, 09 Jun 2023 15:23:49 -0400 Received: by mail-ed1-f66.google.com with SMTP id 4fb4d7f45d1cf-5147a478c38so3261073a12.0 for <63984@debbugs.gnu.org>; Fri, 09 Jun 2023 12:23:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686338622; x=1688930622; h=mime-version:to:subject:date:from:references:in-reply-to:message-id :from:to:cc:subject:date:message-id:reply-to; bh=NzExMtlFj3fO4xqtKv2ZPdwvgmLA62MTkR/PoiyBJ/w=; b=IPAZ0rDadTnRkaaVAuNOTWbFlRJjvO2n4Jlk103lUrPACtF4P96DfoGrQJ4T2m8Dwm xVwhtvtiP4kdvH4juThlNnZPkQMjP6xLSEwF+VRQSXJNaQH6kZb3e2ayibuWX3VOpdm4 koFAtW6YHZI2izUKCC1EnYWrmmiqzwjgWX8AuzPswIXyMiD5T5aEQNjJPV9LWjlyc0tl qbs6cqPw/a8wgIBi01bvhnumzVz/xEXi6/SbEmbWR+6sfPeZxFtytydwh15xCU24b9tD Q5Mugwl4zHf46W53/PcoocBjPcNQPt13fUh4nWJTY9ee8difCtMD889cOfzVEZIDXtF7 CKoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686338622; x=1688930622; h=mime-version:to:subject:date:from:references:in-reply-to:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=NzExMtlFj3fO4xqtKv2ZPdwvgmLA62MTkR/PoiyBJ/w=; b=L0tHHkg6f5Wdb9l84qr8ll2oAfLoF4Zili9pecLXyMUR0ypvQJWouF+btfq7VeTQ3w SsOtCo4poZQMBZXQUDy8HVU4z+rQ8/PsUBcuLgBUyXW3+LD5hl1jo1+PG6rUAahSw5et OmnUkbWLUMLMA3AuI4U+Y2jQRuqNGlt7T99s7vpj7tegiP1e/EVk19FCD4fYcXGQqjlv +f8p8WtNF6/OcXJROTJqRffYaIgWxEqYc8u/wja84UpZPowzOr1tmFQOvjT1mnymyGiG ptHAc0e1AnJxUnlMNVxrRLLyHUE983j+0vWsafJMdeK6AQd/JAwVnkS9aLxX4ViBN70y Zklw== X-Gm-Message-State: AC+VfDw58rwI/DBnYzcg2YFYW1dAf8PbbqDbjEOkTXCePK9wmG2mZ02W MhnLsPCuop7puLQx3hNUGtm1L/ewyTYJH5LO X-Google-Smtp-Source: ACHHUZ5qkEaSu0TP0uIFccZ3jJd6XOFM+Fcmk/2Rk4AP1TuqbLpUcFakCjyw0HK9b6U2VWeDnLSxyg== X-Received: by 2002:a17:906:ee86:b0:978:9223:6630 with SMTP id wt6-20020a170906ee8600b0097892236630mr2615220ejb.37.1686338621999; Fri, 09 Jun 2023 12:23:41 -0700 (PDT) Received: from lumine.fritz.box (85-127-52-93.dsl.dynamic.surfer.at. [85.127.52.93]) by smtp.gmail.com with ESMTPSA id lw4-20020a170906bcc400b009787209732esm1644930ejb.143.2023.06.09.12.23.41 for <63984@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jun 2023 12:23:41 -0700 (PDT) Message-Id: In-Reply-To: References: From: Liliana Marie Prikler Date: Fri, 9 Jun 2023 13:28:44 +0200 MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches This makes relationships within the Emacs variants slightly easier to reason about. In particular, it makes it so that inputs get added on top of the previous stack rather than removed (which brings the risk of not adjusting changes downwards). * gnu/packages/emacs.scm (emacs-minimal): Expand package definition. [inputs]: Reorder and add bash-minimal. (emacs-no-x): Inherit from emacs-minimal. (emacs): Inherit from emacs-no-x. (emacs-motif, emacs-no-x-toolkit): Inherit from emacs-no-x. Only inherit inputs from emacs. --- gnu/packages/emacs.scm | 395 +++++++++++++++++++---------------------- 1 file changed, 178 insertions(+), 217 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index a6b883aaa2..046b11588d 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -54,6 +54,7 @@ (define-module (gnu packages emacs) #:use-module (gnu packages acl) #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages compression) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) @@ -94,9 +95,9 @@ (define (%emacs-modules build-system) (srfi srfi-1) (ice-9 ftw)))) -(define-public emacs +(define-public emacs-minimal (package - (name "emacs") + (name "emacs-minimal") (version "29.0.91") (source (origin ;; TODO: Restore url-fetch when serving 29.1 @@ -144,36 +145,14 @@ (define-public emacs "\"~/.guix-profile/include\"" "\"/var/guix/profiles/system/profile/include\"") " "))))))) - (build-system glib-or-gtk-build-system) + (build-system gnu-build-system) (arguments (list - #:tests? #f ; no check target + #:tests? #f ; no check target #:modules (%emacs-modules build-system) - #:configure-flags #~(list "--with-modules" - "--with-cairo" - "--with-native-compilation=aot" - "--disable-build-details") + #:configure-flags #~(list "--with-gnutls=no" "--disable-build-details") #:phases #~(modify-phases %standard-phases - (add-after 'set-paths 'set-libgccjit-path - (lambda* (#:key inputs #:allow-other-keys) - (define (first-subdirectory/absolute directory) - (let ((files (scandir - directory - (lambda (file) - (and (not (member file '("." ".."))) - (file-is-directory? (string-append - directory "/" - file))))))) - (and (not (null? files)) - (string-append directory "/" (car files))))) - (let* ((libgccjit-libdir - (first-subdirectory/absolute ;; version - (first-subdirectory/absolute ;; host type - (search-input-directory inputs "lib/gcc"))))) - (setenv "LIBRARY_PATH" - (string-append (getenv "LIBRARY_PATH") - ":" libgccjit-libdir))))) (add-after 'unpack 'enable-elogind (lambda _ (substitute* "configure.ac" @@ -204,20 +183,6 @@ (define-public emacs (("\\(tramp-compat-process-running-p \"(.*)\"\\)" all process) (format #f "(or ~a (tramp-compat-process-running-p ~s))" all (string-append "." process "-real")))))) - (add-after 'unpack 'patch-compilation-driver - (lambda _ - (substitute* "lisp/emacs-lisp/comp.el" - (("\\(defcustom native-comp-driver-options nil") - (format - #f "(defcustom native-comp-driver-options '(~@{~s~^ ~})" - (string-append - "-B" #$(this-package-input "binutils") "/bin/") - (string-append - "-B" #$(this-package-input "glibc") "/lib/") - (string-append - "-B" #$(this-package-input "libgccjit") "/lib/") - (string-append - "-B" #$(this-package-input "libgccjit") "/lib/gcc/")))))) (add-before 'configure 'fix-/bin/pwd (lambda _ ;; Use `pwd', not `/bin/pwd'. @@ -259,29 +224,7 @@ (define-public emacs (delete-file (string-append lisp-dir "/subdirs.el")) ;; Byte compile the site-start files. (emacs-byte-compile-directory lisp-dir)))) - (add-after 'glib-or-gtk-wrap 'restore-emacs-pdmp - ;; restore the dump file that Emacs installs somewhere in - ;; libexec/ to its original state - (lambda* (#:key outputs target #:allow-other-keys) - (let* ((libexec (string-append (assoc-ref outputs "out") - "/libexec")) - ;; each of these ought to only match a single file, - ;; but even if not (find-files) sorts by string<, - ;; so the Nth element in one maps to the Nth element of - ;; the other - (pdmp (find-files libexec "\\.pdmp$")) - (pdmp-real (find-files libexec "\\.pdmp-real$"))) - (for-each rename-file pdmp-real pdmp)))) - (add-after 'glib-or-gtk-wrap 'strip-double-wrap - (lambda* (#:key outputs #:allow-other-keys) - ;; Directly copy emacs-X.Y to emacs, so that it is not wrapped - ;; twice. This also fixes a minor issue, where WMs would not be - ;; able to track emacs back to emacs.desktop. - (with-directory-excursion (assoc-ref outputs "out") - (copy-file - (car (find-files "bin" "^emacs-([0-9]+\\.)+[0-9]+$")) - "bin/emacs")))) - (add-after 'strip-double-wrap 'wrap-emacs-paths + (add-after 'install 'wrap-emacs-paths (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (lisp-dirs (find-files (string-append out "/share/emacs") @@ -290,9 +233,9 @@ (define-public emacs (for-each (lambda (prog) (wrap-program prog - ;; emacs-next and variants rely on uname being in PATH for - ;; Tramp. Tramp paths can't be hardcoded, because they - ;; need to be portable. + ;; Some variants rely on uname being in PATH for Tramp. + ;; Tramp paths can't be hardcoded, because they need to + ;; be portable. `("PATH" suffix ,(map dirname (list (search-input-file inputs "/bin/gzip") @@ -305,66 +248,30 @@ (define-public emacs ;; environment variables from emacs. ;; Likewise, we don't need to patch helper binaries ;; like etags, ctags or ebrowse. - "^emacs(-[0-9]+(\\.[0-9]+)*)?$")))))))) - (inputs - (list gnutls - ncurses - - ;; To "unshadow" ld-wrapper in native builds - (make-ld-wrapper "ld-wrapper" #:binutils binutils) - - ;; For native compilation - binutils - glibc - libgccjit - - ;; Required for "core" functionality, such as dired and compression. - coreutils - gzip - - ;; Avoid Emacs's limited movemail substitute that retrieves POP3 - ;; email only via insecure channels. - ;; This is not needed for (modern) IMAP. - mailutils - - gpm - libx11 - gtk+ - cairo - pango - harfbuzz - libxft - libtiff - giflib - lcms - libjpeg-turbo - libselinux - acl - jansson - gmp - ghostscript - poppler - elogind - sqlite - tree-sitter - - ;; When looking for libpng `configure' links with `-lpng -lz', so we - ;; must also provide zlib as an input. - libpng - zlib - (librsvg-for-system) - libxpm - libxml2 - libice - libsm - alsa-lib - dbus - - ;; multilingualization support - libotf - m17n-lib)) - (native-inputs - (list autoconf pkg-config texinfo)) + "^emacs(-[0-9]+(\\.[0-9]+)*)?$"))))) + (add-after 'wrap-emacs-paths 'undo-double-wrap + (lambda* (#:key outputs #:allow-other-keys) + ;; Directly copy emacs-X.Y to emacs, so that it is not wrapped + ;; twice. This also fixes a minor issue, where WMs would not be + ;; able to track emacs back to emacs.desktop. + (with-directory-excursion (assoc-ref outputs "out") + (copy-file + (car (find-files "bin" "^emacs-([0-9]+\\.)+[0-9]+$")) + "bin/emacs"))))))) + (inputs (list bash-minimal coreutils gzip ncurses)) + (native-inputs (list autoconf pkg-config texinfo)) + (home-page "https://www.gnu.org/software/emacs/") + (synopsis "The extensible text editor (minimal build for byte-compilation)") + (description + "GNU Emacs is an extensible and highly customizable text editor. It is +based on an Emacs Lisp interpreter with extensions for text editing. Emacs +has been extended in essentially all areas of computing, giving rise to a +vast array of packages supporting, e.g., email, IRC and XMPP messaging, +spreadsheets, remote server editing, and much more. Emacs includes extensive +documentation on all aspects of the system, from basic editing to writing +large Lisp programs. It has full Unicode support for nearly all human +languages.") + (license license:gpl3+) (native-search-paths (list (search-path-specification (variable "EMACSLOADPATH") @@ -375,26 +282,135 @@ (define-public emacs (search-path-specification (variable "INFOPATH") (files '("share/info"))) + ;; Most variants support tree-sitter, so let's include it here. (search-path-specification (variable "TREE_SITTER_GRAMMAR_PATH") - (files '("lib/tree-sitter"))))) + (files '("lib/tree-sitter"))))))) - (home-page "https://www.gnu.org/software/emacs/") +(define-public emacs-no-x + (package/inherit emacs-minimal + (name "emacs-no-x") + (synopsis "The extensible, customizable, self-documenting text +editor (console only)") + (arguments + (substitute-keyword-arguments (package-arguments emacs-minimal) + ((#:configure-flags flags #~'()) + #~(cons* "--with-modules" "--with-native-compilation=aot" + (delete "--with-gnutls=no" #$flags))) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'set-paths 'set-libgccjit-path + (lambda* (#:key inputs #:allow-other-keys) + (define (first-subdirectory/absolute directory) + (let ((files (scandir + directory + (lambda (file) + (and (not (member file '("." ".."))) + (file-is-directory? (string-append + directory "/" + file))))))) + (and (not (null? files)) + (string-append directory "/" (car files))))) + (let* ((libgccjit-libdir + (first-subdirectory/absolute ;; version + (first-subdirectory/absolute ;; host type + (search-input-directory inputs "lib/gcc"))))) + (setenv "LIBRARY_PATH" + (string-append (getenv "LIBRARY_PATH") + ":" libgccjit-libdir))))) + (add-after 'unpack 'patch-compilation-driver + (lambda _ + (substitute* "lisp/emacs-lisp/comp.el" + (("\\(defcustom native-comp-driver-options nil") + (format + #f "(defcustom native-comp-driver-options '(~@{~s~^ ~})" + (string-append + "-B" #$(this-package-input "binutils") "/bin/") + (string-append + "-B" #$(this-package-input "glibc") "/lib/") + (string-append + "-B" #$(this-package-input "libgccjit") "/lib/") + (string-append + "-B" #$(this-package-input "libgccjit") "/lib/gcc/")))))))))) + (inputs + (modify-inputs (package-inputs emacs-minimal) + (prepend gnutls + ;; To "unshadow" ld-wrapper in native builds + (make-ld-wrapper "ld-wrapper" #:binutils binutils) + ;; For native compilation + binutils + glibc + libgccjit + + ;; Avoid Emacs's limited movemail substitute that retrieves POP3 + ;; email only via insecure channels. + ;; This is not needed for (modern) IMAP. + mailutils + + acl + alsa-lib + elogind + ghostscript + gpm + jansson + lcms + libice + libselinux + libsm + libxml2 + m17n-lib + sqlite + tree-sitter + zlib))))) + +(define-public emacs + (package/inherit emacs-no-x + (name "emacs") (synopsis "The extensible, customizable, self-documenting text editor") - (description - "GNU Emacs is an extensible and highly customizable text editor. It is -based on an Emacs Lisp interpreter with extensions for text editing. Emacs -has been extended in essentially all areas of computing, giving rise to a -vast array of packages supporting, e.g., email, IRC and XMPP messaging, -spreadsheets, remote server editing, and much more. Emacs includes extensive -documentation on all aspects of the system, from basic editing to writing -large Lisp programs. It has full Unicode support for nearly all human -languages.") - (license license:gpl3+))) + (build-system glib-or-gtk-build-system) + (arguments + (substitute-keyword-arguments (package-arguments emacs-no-x) + ((#:modules _) (%emacs-modules build-system)) + ((#:configure-flags flags #~'()) + #~(cons* "--with-cairo" #$flags)) + ((#:phases phases) + #~(modify-phases #$phases + ;; Note: due to the changed #:modules, %standard-phases in #$phases + ;; refers to glib-or-gtk:%standard-phases, so we don't need to add + ;; them ourselves. + (add-after 'glib-or-gtk-wrap 'restore-emacs-pdmp + ;; Restore the dump file that Emacs installs somewhere in + ;; libexec/ to its original state. + (lambda* (#:key outputs target #:allow-other-keys) + (let* ((libexec (string-append (assoc-ref outputs "out") + "/libexec")) + ;; each of these ought to only match a single file, + ;; but even if not (find-files) sorts by string<, + ;; so the Nth element in one maps to the Nth element of + ;; the other + (pdmp (find-files libexec "\\.pdmp$")) + (pdmp-real (find-files libexec "\\.pdmp-real$"))) + (for-each rename-file pdmp-real pdmp)))))))) + (inputs (modify-inputs (package-inputs emacs-no-x) + (prepend + cairo + dbus + gtk+ + giflib + harfbuzz + libjpeg-turbo + libotf + libpng + (librsvg-for-system) + libtiff + libx11 + libxft + libxpm + pango + poppler))))) (define-public emacs-pgtk - (package - (inherit emacs) + (package/inherit emacs (name "emacs-pgtk") (arguments (substitute-keyword-arguments (package-arguments emacs) @@ -404,40 +420,6 @@ (define-public emacs-pgtk (description "This Emacs build implements graphical UI purely in terms of GTK."))) -(define-public emacs-pgtk-xwidgets - (package - (inherit emacs-pgtk) - (name "emacs-pgtk-xwidgets") - (synopsis "Emacs text editor with @code{xwidgets} and @code{pgtk} support") - (arguments - (substitute-keyword-arguments (package-arguments emacs-pgtk) - ((#:configure-flags flags #~'()) - #~(cons "--with-xwidgets" #$flags)))) - (inputs - (modify-inputs (package-inputs emacs-pgtk) - (prepend gsettings-desktop-schemas webkitgtk-with-libsoup2))))) - -(define-public emacs-minimal - ;; This is the version that you should use as an input to packages that just - ;; need to byte-compile .el files. - (package/inherit emacs - (name "emacs-minimal") - (synopsis "The extensible text editor (used only for byte-compilation)") - (build-system gnu-build-system) - (arguments - (substitute-keyword-arguments (package-arguments emacs) - ((#:configure-flags flags #~'()) - #~(list "--with-gnutls=no" "--disable-build-details")) - ((#:modules _) (%emacs-modules build-system)) - ((#:phases phases) - #~(modify-phases #$phases - (delete 'set-libgccjit-path) - (delete 'patch-compilation-driver) - (delete 'restore-emacs-pdmp) - (delete 'strip-double-wrap))))) - (inputs (list ncurses coreutils gzip)) - (native-inputs (list autoconf pkg-config texinfo)))) - (define-public emacs-xwidgets (package/inherit emacs (name "emacs-xwidgets") @@ -451,70 +433,49 @@ (define-public emacs-xwidgets (modify-inputs (package-inputs emacs) (prepend webkitgtk-with-libsoup2 libxcomposite))))) +(define-public emacs-pgtk-xwidgets + (package + (inherit emacs-pgtk) + (name "emacs-pgtk-xwidgets") + (synopsis "Emacs text editor with @code{xwidgets} and @code{pgtk} support") + (arguments + (substitute-keyword-arguments (package-arguments emacs-pgtk) + ((#:configure-flags flags #~'()) + #~(cons "--with-xwidgets" #$flags)))) + (inputs + (modify-inputs (package-inputs emacs-pgtk) + (prepend gsettings-desktop-schemas webkitgtk-with-libsoup2))))) + (define-public emacs-motif - (package/inherit emacs + (package/inherit emacs-no-x (name "emacs-motif") (synopsis "The extensible, customizable, self-documenting text editor (with Motif toolkit)") - (build-system gnu-build-system) + ;; Using emacs' inputs as base, since it has all the graphical stuff (inputs (modify-inputs (package-inputs emacs) (delete "gtk+") (prepend inotify-tools motif))) (arguments (substitute-keyword-arguments - (package-arguments - emacs) + (package-arguments emacs-no-x) ((#:configure-flags flags #~'()) #~(cons "--with-x-toolkit=motif" - #$flags)) - ((#:modules _) - (%emacs-modules build-system)) - ((#:phases phases) - #~(modify-phases #$phases - (delete 'restore-emacs-pdmp) - (delete 'strip-double-wrap))))))) - -(define-public emacs-no-x - (package/inherit emacs - (name "emacs-no-x") - (synopsis "The extensible, customizable, self-documenting text -editor (console only)") - (build-system gnu-build-system) - (inputs (modify-inputs (package-inputs emacs) - (delete "libx11" "gtk+" "libxft" "libtiff" "giflib" "libjpeg" - "imagemagick" "libpng" "librsvg" "libxpm" "libice" - "libsm" "cairo" "pango" "harfbuzz" - ;; These depend on libx11, so remove them as well. - "libotf" "m17n-lib" "dbus"))) - (arguments - (substitute-keyword-arguments (package-arguments emacs) - ((#:configure-flags flags #~'()) - #~(delete "--with-cairo" #$flags)) - ((#:modules _) (%emacs-modules build-system)) - ((#:phases phases) - #~(modify-phases #$phases - (delete 'restore-emacs-pdmp) - (delete 'strip-double-wrap))))))) + #$flags)))))) (define-public emacs-no-x-toolkit - (package/inherit emacs + (package/inherit emacs-no-x (name "emacs-no-x-toolkit") (synopsis "The extensible, customizable, self-documenting text editor (without an X toolkit)" ) - (build-system gnu-build-system) + ;; Using emacs' inputs as base, since it has all the graphical stuff (inputs (modify-inputs (package-inputs emacs) (delete "gtk+") (prepend inotify-tools))) (arguments - (substitute-keyword-arguments (package-arguments emacs) + (substitute-keyword-arguments (package-arguments emacs-no-x) ((#:configure-flags flags #~'()) - #~(cons "--with-x-toolkit=no" #$flags)) - ((#:modules _) (%emacs-modules build-system)) - ((#:phases phases) - #~(modify-phases #$phases - (delete 'restore-emacs-pdmp) - (delete 'strip-double-wrap))))))) + #~(cons "--with-x-toolkit=no" #$flags)))))) (define-public emacs-wide-int (package/inherit emacs