'emacs-next' is almost unusable

  • Open
  • quality assurance status badge
Details
4 participants
  • Akib Azmain Turja
  • Andrew Tropin
  • Liliana Marie Prikler
  • Ricardo Wurmus
Owner
unassigned
Submitted by
Akib Azmain Turja
Severity
normal
A
A
Akib Azmain Turja wrote on 26 Sep 2023 15:49
(name . bug-guix)(address . bug-guix@gnu.org)
87lectf3i9.fsf@disroot.org
'emacs-next' doesn't work. Because native-compilation doesn't work and
it breaks everything else. Applying the following patch on Emacs 30
source should fix the problem. (The patch for Emacs 29 won't work.)

Toggle snippet (17 lines)
--- 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

--
Akib Azmain Turja, GPG key: 70018CE5819F17A3BBA666AFE74F0EFA922AE7F5
Fediverse: akib@hostux.social
Codeberg: akib
emailselfdefense.fsf.org | "Nothing can be secure without encryption."
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEyVTKmrtL6kNBe3FRVTX89U2IYWsFAmUS4X4ACgkQVTX89U2I
YWuSzg/+PKEQvOyl2L1z5vkjodT4g4WwRRKgJueIe2O0YbVup1HJaOZ/hijOy/0S
OfYDT21AbJgkVVevZ4GWw6qnvTecoyXlRGhrIlyLkuTTWs60KVvAIBP772BBSvSM
19w3RHYBhOUwwvHguGEavY/YbiLcEyJU9uzRg0KYk/2sT9JEgjpemDvBCPX1Ko0o
YceIBzrEOVqbrWmLksyi+IAjWsgfMVpegA052TceHqTBQhrFRVO0mNFhCW3nD7iv
rKtTuXaPFdiiP7pZIosM8o51M9vKF3+Hj3UWO/hk3AyKZcLF+RmntdPdtThuCbjs
UNs5uudm5iHo6RcHsjqdftbjfylMgYvWhHgfjvjt4u0g0g1L4ak2d0F6abYKkfiN
9l5SCpRa1b1K37c3sU6C4bQCOp+Mxqpatfsoau3MymjtFRsNU+vIoxzDlXPvSQLr
F8TBaw8648SHndfugvuI9BZIl3Wx7XQH2z7icRjPzHtjN5gcQYWy+pMFU0ttTWYG
ZeGggTOgypD4xFer7X002xHDgkzMeSiHEIYjRceJPe5w3suHqsyseYdxCrlbgu0l
4LJetNiCWamh7tN0NvDAchq6hrnZ3WvHwFWHT5wKWP1NKyGCugtX1LzjtbrYUTtZ
NJGE3UELz6Tr3JzUoNcpIwZSYbjVf7+0jNkFzrZ0R5jCPwVCh4U=
=YrS+
-----END PGP SIGNATURE-----

R
R
Ricardo Wurmus wrote on 6 Oct 2023 16:39
(address . 66227@debbugs.gnu.org)
87pm1rolu8.fsf@elephly.net
Toggle quote (3 lines)
> 'emacs-next' doesn't work. Because native-compilation doesn't work and
> it breaks everything else.

What exactly doesn’t work?

It would be better to actually fix whatever problem there might be than
just disabling native compilation.

--
Ricardo
L
L
Liliana Marie Prikler wrote on 6 Oct 2023 17:58
[PATCH v3] gnu: emacs-next-minimal: Apply Guix patches.
(address . 66225@debbugs.gnu.org)
f1b08fdebcfbb9b7dc513118a1994148ac38042e.1696608253.git.liliana.prikler@gmail.com
* 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

Toggle diff (83 lines)
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
--
2.41.0
A
A
Andrew Tropin wrote on 7 Oct 2023 07:56
87r0m7ug9q.fsf@trop.in
On 2023-10-06 17:58, Liliana Marie Prikler wrote:

Toggle quote (111 lines)
> * 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.

--
Best regards,
Andrew Tropin
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmUg8yEACgkQIgjSCVjB
3rA2uRAAh258kOPjQsgHuK0WSxpuqH4scRPJ/dyY83xedblTGtMsxYaDETDfjavF
FduLIyu9HvSw+xMBAkfMcyEB8Q0mO4US2GkoN6I+k8zmESqo6Ur4NAYuoPwQU6oy
Gl8OUkaDczJxMQOUW130bcpNXPlh5YtzKJ+IPqXmXy09E8b8W5ntFO2hoiRwYGlC
oYOc1QgTrqg0rURP/qNTEejYPyukpY3+W9sfupMYuyVwxdT4p+zUUiH9vVZ6i+6s
+26XG7V37jF8EshMq5NE5J5L43Q1vyp2oGpK1JwTxuDKaGFRDphD5Lfpa0IOUqDS
MbcNfMpMWnprVsOmwmHg3QyQ94G4V2LkFU+2rJcxUF7aCHPREk4kITJ5pzYS3FlZ
f+GVwuF7oOe+odj+jgf/ri3RwAgvx8er9O3jnfcrReDLdczT9Ru+2nzy1Po+hWzs
lme+8uwrvrmHf7C+ESxfNPkMy9jmMj3rJ9/pAf1Z+scM+LzF+QWoVrgdBIz7RRxI
wZtAxfA4ncbeKFcybX/ED7vdRl/kOtFZOgLWx1d+GMmh3IoxNgaFDfE6Pie8k5DX
VNEWdwz2FgxZo1932A1902nGTYLrWGWdB4olqx6h8pvi9T8La5jMoZYvjk8SIS82
KiDQIVMMTVgiqtEzQkPgnHQYXUwfm+zSwxXZKWTHsNcPKQDRlKs=
=to+5
-----END PGP SIGNATURE-----

L
L
Liliana Marie Prikler wrote on 8 Oct 2023 08:55
54b44297e1c93fd461463f6893127fc8b75f01c3.camel@gmail.com
Am Samstag, dem 07.10.2023 um 09:56 +0400 schrieb Andrew Tropin:
Toggle quote (15 lines)
> 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
A
A
Andrew Tropin wrote on 8 Oct 2023 12:21
87jzrxv2hu.fsf@trop.in
On 2023-10-08 08:55, Liliana Marie Prikler wrote:

Toggle quote (19 lines)
> 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!

--
Best regards,
Andrew Tropin
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmUigp0ACgkQIgjSCVjB
3rAa6A/5AZYsq2jPSzzvMft2Hn0kqjDe7NtgIDPdThGEKgVQ9S8yIOY6fmLsjerj
RRCOu7wCZR+/SfHGtcZdnuvHgW+w9VTlS0EZIE9WKkGErmAiIK0nW9l4rZnpCHFV
ENfHU03oE2pm0ZqqdnQEPLWbwgXlEwq2t9wOz25nAoq8X/W3/W5CDxQJdUsPTfhB
etaFagCLFsZChaFY18oHEx7rKbLUnjv0KWnN5ZNH0jPXROK79yG48IOTZ7h50vxw
FU46rtCGLLesL/l058UDaX+ybqhzEvwaWMJLCpLoXAsBb3ypi+wk6YZOLG/ODVmz
2L1sDo2Nr+BJELmy1lzartY2oYB47TWKfS2Gqgj4PhOtvhUOgm1QEvr0wgL7sczh
i5/toGtM/pWtBFUPIQNp2lEgcQYyhrAJsGdxGEojEMbMeNGRIqM3Qrnbc67sqagu
e6UX+gK90grgI4rhfPyfTMaZVBKxPQjylsPv9mJ7ivJGll9CBUSUQ7RINu7GqPj+
NbXH9n3RbJge5vDdk94RuudXof1DSwWym3/sV0fekvGgT8mcDoPNxkA2KsZQh1SE
5yic+0PrvF1m3fr/+gcKu9XwKWPbeHt0fLNKbpS97i6ogadLm8n0mbXn9IVM99Ep
8RHIcFGxryEBwN0nRKrx4DTEW4Epv6eD5rI9qqoINQAwkmLVF7Q=
=KnW/
-----END PGP SIGNATURE-----

?