diff mbox series

[bug#66225,v3] gnu: emacs-next-minimal: Apply Guix patches.

Message ID f1b08fdebcfbb9b7dc513118a1994148ac38042e.1696608253.git.liliana.prikler@gmail.com
State New
Headers show
Series [bug#66225,v3] gnu: emacs-next-minimal: Apply Guix patches. | expand

Commit Message

Liliana Marie Prikler Oct. 6, 2023, 3:58 p.m. UTC
* gnu/packages/patches/emacs-next-native-comp-driver-options.patch: Add file.
* gnu/packages/patches/emacs-next-exec-path.patch: Add file.
* gnu/local.mk (dist_patch_DATA): Register them here.
* gnu/packages/emacs.scm (emacs-next-minimal)[origin](patches): Include the
same patches as emacs-minimal, save for the variants specific to emacs-next
introduced above.

Co-Authored-By: Nicolas Graves <ngraves@ngraves.fr>
Fixes: ‘emacs-next’ is almost unusable <https://bugs.gnu.org/66227>
---
Hi Guix,

this bug was independently discovered in two locations, so I wanted to
inform both.  A fix has already been proposed, but is not yet complete.
Here's to finally cover everything we need to have an Emacs as expected
by Guix.

Feel free to bikeshed.

Happy hacking

 gnu/local.mk                                   |  2 ++
 gnu/packages/emacs.scm                         |  7 ++++++-
 .../patches/emacs-next-exec-path.patch         | 18 ++++++++++++++++++
 ...emacs-next-native-comp-driver-options.patch | 18 ++++++++++++++++++
 4 files changed, 44 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/emacs-next-exec-path.patch
 create mode 100644 gnu/packages/patches/emacs-next-native-comp-driver-options.patch


base-commit: e863274e67e2242b970845783172c9f4e49405ca

Comments

Andrew Tropin Oct. 7, 2023, 5:56 a.m. UTC | #1
On 2023-10-06 17:58, Liliana Marie Prikler wrote:

> * gnu/packages/patches/emacs-next-native-comp-driver-options.patch: Add file.
> * gnu/packages/patches/emacs-next-exec-path.patch: Add file.
> * gnu/local.mk (dist_patch_DATA): Register them here.
> * gnu/packages/emacs.scm (emacs-next-minimal)[origin](patches): Include the
> same patches as emacs-minimal, save for the variants specific to emacs-next
> introduced above.
>
> Co-Authored-By: Nicolas Graves <ngraves@ngraves.fr>
> Fixes: ‘emacs-next’ is almost unusable <https://bugs.gnu.org/66227>
> ---
> Hi Guix,
>
> this bug was independently discovered in two locations, so I wanted to
> inform both.  A fix has already been proposed, but is not yet complete.
> Here's to finally cover everything we need to have an Emacs as expected
> by Guix.
>
> Feel free to bikeshed.
>
> Happy hacking
>
>  gnu/local.mk                                   |  2 ++
>  gnu/packages/emacs.scm                         |  7 ++++++-
>  .../patches/emacs-next-exec-path.patch         | 18 ++++++++++++++++++
>  ...emacs-next-native-comp-driver-options.patch | 18 ++++++++++++++++++
>  4 files changed, 44 insertions(+), 1 deletion(-)
>  create mode 100644 gnu/packages/patches/emacs-next-exec-path.patch
>  create mode 100644 gnu/packages/patches/emacs-next-native-comp-driver-options.patch
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 65d50abc71..43a528e937 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -1110,6 +1110,8 @@ dist_patch_DATA =						\
>    %D%/packages/patches/emacs-highlight-stages-add-gexp.patch	\
>    %D%/packages/patches/emacs-lispy-fix-thread-last-test.patch   \
>    %D%/packages/patches/emacs-native-comp-driver-options.patch   \
> +  %D%/packages/patches/emacs-next-exec-path.patch   \
> +  %D%/packages/patches/emacs-next-native-comp-driver-options.patch   \
>    %D%/packages/patches/emacs-pasp-mode-quote-file-names.patch  \
>    %D%/packages/patches/emacs-polymode-fix-lexical-variable-error.patch  \
>    %D%/packages/patches/emacs-telega-path-placeholder.patch	\
> diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
> index 72b2c7795e..b9d9e2b891 100644
> --- a/gnu/packages/emacs.scm
> +++ b/gnu/packages/emacs.scm
> @@ -498,7 +498,12 @@ (define-public emacs-next-minimal
>               (commit commit)))
>         (file-name (git-file-name name version))
>         (sha256
> -        (base32 "00mwpq1msr3jij281w5piqmbwq968xr8dn9hqbf4r947ck754kn9")))))))
> +        (base32 "00mwpq1msr3jij281w5piqmbwq968xr8dn9hqbf4r947ck754kn9"))
> +       (patches
> +        (search-patches "emacs-next-exec-path.patch"
> +                        "emacs-fix-scheme-indent-function.patch"
> +                        "emacs-next-native-comp-driver-options.patch"
> +                        "emacs-pgtk-super-key-fix.patch")))))))
>  
>  (define* (emacs->emacs-next emacs #:optional name
>                              #:key (version (package-version emacs-next-minimal))
> diff --git a/gnu/packages/patches/emacs-next-exec-path.patch b/gnu/packages/patches/emacs-next-exec-path.patch
> new file mode 100644
> index 0000000000..6e33e25258
> --- /dev/null
> +++ b/gnu/packages/patches/emacs-next-exec-path.patch
> @@ -0,0 +1,18 @@
> +Do not capture the build-time value of $PATH in the 'emacs' executable
> +since this can noticeably increase the size of the closure of Emacs
> +with things like GCC being referenced.
> +
> +Index: emacs-next/lisp/loadup.el
> +===================================================================
> +--- emacs-next.orig/lisp/loadup.el
> ++++ emacs-next/lisp/loadup.el
> +@@ -599,7 +599,8 @@ lost after dumping")))
> +                           ((equal dump-mode "dump") "emacs")
> +                           ((equal dump-mode "bootstrap") "emacs")
> +                           ((equal dump-mode "pbootstrap") "bootstrap-emacs.pdmp")
> +-                          (t (error "Unrecognized dump mode %s" dump-mode)))))
> ++                          (t (error "Unrecognized dump mode %s" dump-mode))))
> ++            (exec-path nil))
> +         (when (and (featurep 'native-compile)
> +                    (equal dump-mode "pdump"))
> +           ;; Don't enable this before bootstrap is completed, as the
> diff --git a/gnu/packages/patches/emacs-next-native-comp-driver-options.patch b/gnu/packages/patches/emacs-next-native-comp-driver-options.patch
> new file mode 100644
> index 0000000000..e4ed5a48f1
> --- /dev/null
> +++ b/gnu/packages/patches/emacs-next-native-comp-driver-options.patch
> @@ -0,0 +1,18 @@
> +We substitute this anyway, so let's make it easier to substitute.
> +
> +--- a/lisp/emacs-lisp/comp.el
> ++++ b/lisp/emacs-lisp/comp.el
> +@@ -203,9 +203,7 @@ and above."
> +   :type '(repeat string)
> +   :version "28.1")
> + 
> +-(defcustom native-comp-driver-options
> +-  (cond ((eq system-type 'darwin) '("-Wl,-w"))
> +-        ((eq system-type 'cygwin) '("-Wl,-dynamicbase")))
> ++(defcustom native-comp-driver-options nil
> +   "Options passed verbatim to the native compiler's back-end driver.
> + Note that not all options are meaningful; typically only the options
> + affecting the assembler and linker are likely to be useful.
> +-- 
> +2.38.0
> +
>
> base-commit: e863274e67e2242b970845783172c9f4e49405ca

Hi Liliana and Nicolas, the fixes looks good to me.
Liliana Marie Prikler Oct. 8, 2023, 6:55 a.m. UTC | #2
Am Samstag, dem 07.10.2023 um 09:56 +0400 schrieb Andrew Tropin:
> On 2023-10-06 17:58, Liliana Marie Prikler wrote:
> 
> > * gnu/packages/patches/emacs-next-native-comp-driver-options.patch:
> > Add file.
> > * gnu/packages/patches/emacs-next-exec-path.patch: Add file.
> > * gnu/local.mk (dist_patch_DATA): Register them here.
> > * gnu/packages/emacs.scm (emacs-next-minimal)[origin](patches):
> > Include the same patches as emacs-minimal, save for the variants
> > specific to emacs-next introduced above.
> > 
> > Co-Authored-By: Nicolas Graves <ngraves@ngraves.fr>
> > Fixes: ‘emacs-next’ is almost unusable <https://bugs.gnu.org/66227>
> > […]
> 
> Hi Liliana and Nicolas, the fixes looks good to me.
Thanks for checking.  I pushed it now (perhaps a bit too hasty, but
it's been a problem for some while).

Cheers
Andrew Tropin Oct. 8, 2023, 10:21 a.m. UTC | #3
On 2023-10-08 08:55, Liliana Marie Prikler wrote:

> Am Samstag, dem 07.10.2023 um 09:56 +0400 schrieb Andrew Tropin:
>> On 2023-10-06 17:58, Liliana Marie Prikler wrote:
>> 
>> > * gnu/packages/patches/emacs-next-native-comp-driver-options.patch:
>> > Add file.
>> > * gnu/packages/patches/emacs-next-exec-path.patch: Add file.
>> > * gnu/local.mk (dist_patch_DATA): Register them here.
>> > * gnu/packages/emacs.scm (emacs-next-minimal)[origin](patches):
>> > Include the same patches as emacs-minimal, save for the variants
>> > specific to emacs-next introduced above.
>> > 
>> > Co-Authored-By: Nicolas Graves <ngraves@ngraves.fr>
>> > Fixes: ‘emacs-next’ is almost unusable <https://bugs.gnu.org/66227>
>> > […]
>> 
>> Hi Liliana and Nicolas, the fixes looks good to me.
> Thanks for checking.  I pushed it now (perhaps a bit too hasty, but
> it's been a problem for some while).

Cool!  Thank you very much, appreciate your work!
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 65d50abc71..43a528e937 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1110,6 +1110,8 @@  dist_patch_DATA =						\
   %D%/packages/patches/emacs-highlight-stages-add-gexp.patch	\
   %D%/packages/patches/emacs-lispy-fix-thread-last-test.patch   \
   %D%/packages/patches/emacs-native-comp-driver-options.patch   \
+  %D%/packages/patches/emacs-next-exec-path.patch   \
+  %D%/packages/patches/emacs-next-native-comp-driver-options.patch   \
   %D%/packages/patches/emacs-pasp-mode-quote-file-names.patch  \
   %D%/packages/patches/emacs-polymode-fix-lexical-variable-error.patch  \
   %D%/packages/patches/emacs-telega-path-placeholder.patch	\
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 72b2c7795e..b9d9e2b891 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -498,7 +498,12 @@  (define-public emacs-next-minimal
              (commit commit)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "00mwpq1msr3jij281w5piqmbwq968xr8dn9hqbf4r947ck754kn9")))))))
+        (base32 "00mwpq1msr3jij281w5piqmbwq968xr8dn9hqbf4r947ck754kn9"))
+       (patches
+        (search-patches "emacs-next-exec-path.patch"
+                        "emacs-fix-scheme-indent-function.patch"
+                        "emacs-next-native-comp-driver-options.patch"
+                        "emacs-pgtk-super-key-fix.patch")))))))
 
 (define* (emacs->emacs-next emacs #:optional name
                             #:key (version (package-version emacs-next-minimal))
diff --git a/gnu/packages/patches/emacs-next-exec-path.patch b/gnu/packages/patches/emacs-next-exec-path.patch
new file mode 100644
index 0000000000..6e33e25258
--- /dev/null
+++ b/gnu/packages/patches/emacs-next-exec-path.patch
@@ -0,0 +1,18 @@ 
+Do not capture the build-time value of $PATH in the 'emacs' executable
+since this can noticeably increase the size of the closure of Emacs
+with things like GCC being referenced.
+
+Index: emacs-next/lisp/loadup.el
+===================================================================
+--- emacs-next.orig/lisp/loadup.el
++++ emacs-next/lisp/loadup.el
+@@ -599,7 +599,8 @@ lost after dumping")))
+                           ((equal dump-mode "dump") "emacs")
+                           ((equal dump-mode "bootstrap") "emacs")
+                           ((equal dump-mode "pbootstrap") "bootstrap-emacs.pdmp")
+-                          (t (error "Unrecognized dump mode %s" dump-mode)))))
++                          (t (error "Unrecognized dump mode %s" dump-mode))))
++            (exec-path nil))
+         (when (and (featurep 'native-compile)
+                    (equal dump-mode "pdump"))
+           ;; Don't enable this before bootstrap is completed, as the
diff --git a/gnu/packages/patches/emacs-next-native-comp-driver-options.patch b/gnu/packages/patches/emacs-next-native-comp-driver-options.patch
new file mode 100644
index 0000000000..e4ed5a48f1
--- /dev/null
+++ b/gnu/packages/patches/emacs-next-native-comp-driver-options.patch
@@ -0,0 +1,18 @@ 
+We substitute this anyway, so let's make it easier to substitute.
+
+--- a/lisp/emacs-lisp/comp.el
++++ b/lisp/emacs-lisp/comp.el
+@@ -203,9 +203,7 @@ and above."
+   :type '(repeat string)
+   :version "28.1")
+ 
+-(defcustom native-comp-driver-options
+-  (cond ((eq system-type 'darwin) '("-Wl,-w"))
+-        ((eq system-type 'cygwin) '("-Wl,-dynamicbase")))
++(defcustom native-comp-driver-options nil
+   "Options passed verbatim to the native compiler's back-end driver.
+ Note that not all options are meaningful; typically only the options
+ affecting the assembler and linker are likely to be useful.
+-- 
+2.38.0
+