unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems.
@ 2020-02-04  9:43 Diego Nicola Barbato
  2020-02-04  9:49 ` [bug#39412] [PATCH 1/2] gnu: Add emacs-wide-int Diego Nicola Barbato
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Diego Nicola Barbato @ 2020-02-04  9:43 UTC (permalink / raw)
  To: 39412; +Cc: Diego Nicola Barbato

Hi Guix,

Telega requires wide Emacs integers (62-bit), so it checks whether
`most-positive-fixnum' is equal to 2305843009213693951.  Due to a
performance penalty [0] wide Emacs integers have to be explicitly
enabled on 32-bit architectures.  Because of this `emacs-telega'
currently fails to build on armhf-linux and i686-linux.

The following two patches fix this by first adding a variant of
`emacs' with wide ints enabled and then using this `emacs-wide-int'
instead of `emacs' to build `emacs-telega' on 32-bit systems.

I am not completely happy with this solution, because wide ints are
not required to build Telega but to run it: A user installing
`emacs-telega' alongside "vanilla" `emacs' on a 32-bit machine will be
greeted with cryptic parse errors when trying to run Telega.  Would it
be enough to mention that `emacs-telega' has to be installed alongside
`emacs-wide-int' on 32-bit systems in the description?

I have chosen this approach over building the regular Emacs package
with the "--with-wide-ints" flag because I do not think the
performance penalty is justified.  What do others think?

In the long run it should be possible to drop this workaround once
Emacs 27, which introduces bignums, is released.  With those Telega
should work on 32-bit Emacs without wide ints.

Regards,

Diego

[0]: Emacs' configure.ac file talks about a 10% to 30% slowdown of the
Lisp interpreter and a larger memory footprint.

Diego Nicola Barbato (2):
  gnu: Add emacs-wide-int.
  gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems.

 gnu/packages/emacs-xyz.scm |  7 ++++++-
 gnu/packages/emacs.scm     | 11 +++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

-- 
2.25.0

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#39412] [PATCH 1/2] gnu: Add emacs-wide-int.
  2020-02-04  9:43 [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
@ 2020-02-04  9:49 ` Diego Nicola Barbato
  2020-02-04  9:49 ` [bug#39412] [PATCH 2/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
  2020-02-04 11:14 ` [bug#39412] [PATCH 0/2] " Efraim Flashner
  2 siblings, 0 replies; 11+ messages in thread
From: Diego Nicola Barbato @ 2020-02-04  9:49 UTC (permalink / raw)
  To: 39412; +Cc: Diego Nicola Barbato

* gnu/packages/emacs.scm (emacs-wide-int): New variable.
---
 gnu/packages/emacs.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index b26c928e87..53123a6c82 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -380,6 +380,17 @@ editor (without an X toolkit)" )
            ((#:configure-flags cf)
             `(cons "--with-x-toolkit=no" ,cf)))))))
 
+(define-public emacs-wide-int
+  (package
+    (inherit emacs)
+    (name "emacs-wide-int")
+    (synopsis "The extensible, customizable, self-documenting text
+editor (with wide ints)" )
+    (arguments
+     (substitute-keyword-arguments (package-arguments emacs)
+       ((#:configure-flags flags)
+        `(cons "--with-wide-int" ,flags))))))
+
 (define-public guile-emacs
   (let ((commit "41120e0f595b16387eebfbf731fff70481de1b4b")
         (revision "0"))
-- 
2.25.0

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#39412] [PATCH 2/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems.
  2020-02-04  9:43 [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
  2020-02-04  9:49 ` [bug#39412] [PATCH 1/2] gnu: Add emacs-wide-int Diego Nicola Barbato
@ 2020-02-04  9:49 ` Diego Nicola Barbato
  2020-02-04 11:14 ` [bug#39412] [PATCH 0/2] " Efraim Flashner
  2 siblings, 0 replies; 11+ messages in thread
From: Diego Nicola Barbato @ 2020-02-04  9:49 UTC (permalink / raw)
  To: 39412; +Cc: Diego Nicola Barbato

Fixes <https://bugs.gnu.org/39406>.
Reported by <lmedeiros@riseup.net>.

* gnu/packages/emacs-xyz.scm (emacs-telega)[native-inputs]: Replace emacs with
emacs-wide-int on 32-bit systems.  This is needed because Telega requires
62-bit wide ints.
---
 gnu/packages/emacs-xyz.scm | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 9936127a18..f4c58e94b2 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -20613,7 +20613,12 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
       (native-inputs
        `(("tdlib" ,tdlib)
          ("libtgvoip" ,libtgvoip) ; VoIP support.
-         ("emacs" ,emacs)
+         ;; Use Emacs with wide ints on 32-bit architectures.
+         ("emacs" ,(match (%current-system)
+                     ((or "i686-linux" "armhf-linux")
+                      emacs-wide-int)
+                     (_
+                      emacs)))
          ("python" ,python)))
       (synopsis "GNU Emacs client for the Telegram messenger")
       (description
-- 
2.25.0

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems.
  2020-02-04  9:43 [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
  2020-02-04  9:49 ` [bug#39412] [PATCH 1/2] gnu: Add emacs-wide-int Diego Nicola Barbato
  2020-02-04  9:49 ` [bug#39412] [PATCH 2/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
@ 2020-02-04 11:14 ` Efraim Flashner
  2020-03-26 13:15   ` Diego Nicola Barbato
  2 siblings, 1 reply; 11+ messages in thread
From: Efraim Flashner @ 2020-02-04 11:14 UTC (permalink / raw)
  To: Diego Nicola Barbato; +Cc: 39412

[-- Attachment #1: Type: text/plain, Size: 2578 bytes --]

I'll start by saying I'm not a user of emacs or of emacs-telega.

On Tue, Feb 04, 2020 at 10:43:51AM +0100, Diego Nicola Barbato wrote:
> Hi Guix,
> 
> Telega requires wide Emacs integers (62-bit), so it checks whether
> `most-positive-fixnum' is equal to 2305843009213693951.  Due to a
> performance penalty [0] wide Emacs integers have to be explicitly
> enabled on 32-bit architectures.  Because of this `emacs-telega'
> currently fails to build on armhf-linux and i686-linux.

I assume it actually needs '--with-wide-ints' and that patching out the
check wouldn't actually fix the problem.

> The following two patches fix this by first adding a variant of
> `emacs' with wide ints enabled and then using this `emacs-wide-int'
> instead of `emacs' to build `emacs-telega' on 32-bit systems.
> 
> I am not completely happy with this solution, because wide ints are
> not required to build Telega but to run it: A user installing
> `emacs-telega' alongside "vanilla" `emacs' on a 32-bit machine will be
> greeted with cryptic parse errors when trying to run Telega.  Would it
> be enough to mention that `emacs-telega' has to be installed alongside
> `emacs-wide-int' on 32-bit systems in the description?

I don't like this plan so much. It means relying on the users to read
the description which is something I normally only do when I don't know
what package I'm looking for.

> I have chosen this approach over building the regular Emacs package
> with the "--with-wide-ints" flag because I do not think the
> performance penalty is justified.  What do others think?

10-30% performance penalty across the board in emacs is pretty severe for
one package. Otherwise that would've been my suggestion.

> In the long run it should be possible to drop this workaround once
> Emacs 27, which introduces bignums, is released.  With those Telega
> should work on 32-bit Emacs without wide ints.

Do we know how long it may be before Emacs 27 is out? If it's not that
long I wonder if it'd be better for it to be unbuildable on 32-bit
systems than to make it installable but unusable without changing other
installed packages.

> 
> Regards,
> 
> Diego
> 
> [0]: Emacs' configure.ac file talks about a 10% to 30% slowdown of the
> Lisp interpreter and a larger memory footprint.

Thank you for looking into this!

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems.
  2020-02-04 11:14 ` [bug#39412] [PATCH 0/2] " Efraim Flashner
@ 2020-03-26 13:15   ` Diego Nicola Barbato
  2020-03-26 13:17     ` [bug#39412] [PATCH v2 1/3] gnu: Add emacs-wide-int Diego Nicola Barbato
                       ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Diego Nicola Barbato @ 2020-03-26 13:15 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: 39412

Hi Efraim,

Sorry for the long delay.

Efraim Flashner <efraim@flashner.co.il> writes:

> I'll start by saying I'm not a user of emacs or of emacs-telega.
>
> On Tue, Feb 04, 2020 at 10:43:51AM +0100, Diego Nicola Barbato wrote:
>> Hi Guix,
>> 
>> Telega requires wide Emacs integers (62-bit), so it checks whether
>> `most-positive-fixnum' is equal to 2305843009213693951.  Due to a
>> performance penalty [0] wide Emacs integers have to be explicitly
>> enabled on 32-bit architectures.  Because of this `emacs-telega'
>> currently fails to build on armhf-linux and i686-linux.
>
> I assume it actually needs '--with-wide-ints' and that patching out the
> check wouldn't actually fix the problem.

Yes, that would lead to the same cryptic errors (i.e. assertion
failures) I mentioned below when running it (although it would build
successfully) on 32-bit systems.

>> The following two patches fix this by first adding a variant of
>> `emacs' with wide ints enabled and then using this `emacs-wide-int'
>> instead of `emacs' to build `emacs-telega' on 32-bit systems.
>> 
>> I am not completely happy with this solution, because wide ints are
>> not required to build Telega but to run it: A user installing
>> `emacs-telega' alongside "vanilla" `emacs' on a 32-bit machine will be
>> greeted with cryptic parse errors when trying to run Telega.  Would it
>> be enough to mention that `emacs-telega' has to be installed alongside
>> `emacs-wide-int' on 32-bit systems in the description?
>
> I don't like this plan so much. It means relying on the users to read
> the description which is something I normally only do when I don't know
> what package I'm looking for.
>
>> I have chosen this approach over building the regular Emacs package
>> with the "--with-wide-ints" flag because I do not think the
>> performance penalty is justified.  What do others think?
>
> 10-30% performance penalty across the board in emacs is pretty severe for
> one package. Otherwise that would've been my suggestion.
>
>> In the long run it should be possible to drop this workaround once
>> Emacs 27, which introduces bignums, is released.  With those Telega
>> should work on 32-bit Emacs without wide ints.
>
> Do we know how long it may be before Emacs 27 is out? If it's not that

The release cycle for Emacs 27 was started in late December [1] and a
pretest has been released [2], but I don't know how long it's going to
be until 27.1.

> long I wonder if it'd be better for it to be unbuildable on 32-bit
> systems than to make it installable but unusable without changing other
> installed packages.

IMO it's ok for it to require changing other installed packages during a
transitional period (e.g. guix repl currently doesn't work with
`guile-readline' and requires that the guile3.0 variant be installed
instead due to the transition in progress from Guile 2 to Guile 3).  I
do believe that the failure mode of Telega running with `emacs' instead
of `emacs-wide-int' on a 32-bit system is problematic because it doesn't
make it clear what's wrong and how to fix it.  I have tried to address
this in v2 of my patch series by patching Telega to run
`telega-test-env' (the failing test) on startup (i.e. `M-x telega').
That way it fails immediately with the following error message:

  Emacs with wide ints (--with-wide-int) is required

This should hopefully lead users on the right track.

If v2 is still considered inadequate I'm fine with dropping the patches
and waiting for Emacs 27 instead (the failing test would still have to
be tweaked to make it aware of bignums).

> Thank you for looking into this!

Thanks for your feedback!

Diego

>> [0]: Emacs' configure.ac file talks about a 10% to 30% slowdown of the
>> Lisp interpreter and a larger memory footprint.
[1]: https://lists.gnu.org/archive/html/emacs-devel/2019-12/msg00635.html
[2]: https://lists.gnu.org/archive/html/emacs-devel/2020-03/msg00045.html

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#39412] [PATCH v2 1/3] gnu: Add emacs-wide-int.
  2020-03-26 13:15   ` Diego Nicola Barbato
@ 2020-03-26 13:17     ` Diego Nicola Barbato
  2020-03-26 13:17     ` [bug#39412] [PATCH v2 2/3] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 11+ messages in thread
From: Diego Nicola Barbato @ 2020-03-26 13:17 UTC (permalink / raw)
  To: 39412; +Cc: Diego Nicola Barbato

* gnu/packages/emacs.scm (emacs-wide-int): New variable.
---
 gnu/packages/emacs.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index de19998a41..b52849c578 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -398,6 +398,17 @@ editor (without an X toolkit)" )
            ((#:configure-flags cf)
             `(cons "--with-x-toolkit=no" ,cf)))))))
 
+(define-public emacs-wide-int
+  (package
+    (inherit emacs)
+    (name "emacs-wide-int")
+    (synopsis "The extensible, customizable, self-documenting text
+editor (with wide ints)" )
+    (arguments
+     (substitute-keyword-arguments (package-arguments emacs)
+       ((#:configure-flags flags)
+        `(cons "--with-wide-int" ,flags))))))
+
 (define-public guile-emacs
   (let ((commit "41120e0f595b16387eebfbf731fff70481de1b4b")
         (revision "0"))
-- 
2.26.0

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#39412] [PATCH v2 2/3] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems.
  2020-03-26 13:15   ` Diego Nicola Barbato
  2020-03-26 13:17     ` [bug#39412] [PATCH v2 1/3] gnu: Add emacs-wide-int Diego Nicola Barbato
@ 2020-03-26 13:17     ` Diego Nicola Barbato
  2020-03-26 13:18     ` [bug#39412] [PATCH v2 3/3] gnu: emacs-telega: Test Emacs environment on startup Diego Nicola Barbato
  2020-04-28 14:04     ` [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
  3 siblings, 0 replies; 11+ messages in thread
From: Diego Nicola Barbato @ 2020-03-26 13:17 UTC (permalink / raw)
  To: 39412; +Cc: Diego Nicola Barbato

Fixes <https://bugs.gnu.org/39406>.
Reported by <lmedeiros@riseup.net>.

* gnu/packages/emacs-xyz.scm (emacs-telega)[native-inputs]: Replace emacs with
emacs-wide-int on 32-bit systems.  This is needed because Telega requires
62-bit wide ints.
---
 gnu/packages/emacs-xyz.scm | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 7b67cc37ae..401dbdec2c 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -20671,7 +20671,12 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
       (native-inputs
        `(("tdlib" ,tdlib)
          ("libtgvoip" ,libtgvoip) ; VoIP support.
-         ("emacs" ,emacs)
+         ;; Use Emacs with wide ints on 32-bit architectures.
+         ("emacs" ,(match (%current-system)
+                     ((or "i686-linux" "armhf-linux")
+                      emacs-wide-int)
+                     (_
+                      emacs)))
          ("python" ,python)))
       (synopsis "GNU Emacs client for the Telegram messenger")
       (description
-- 
2.26.0

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#39412] [PATCH v2 3/3] gnu: emacs-telega: Test Emacs environment on startup.
  2020-03-26 13:15   ` Diego Nicola Barbato
  2020-03-26 13:17     ` [bug#39412] [PATCH v2 1/3] gnu: Add emacs-wide-int Diego Nicola Barbato
  2020-03-26 13:17     ` [bug#39412] [PATCH v2 2/3] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
@ 2020-03-26 13:18     ` Diego Nicola Barbato
  2020-04-28 14:04     ` [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
  3 siblings, 0 replies; 11+ messages in thread
From: Diego Nicola Barbato @ 2020-03-26 13:18 UTC (permalink / raw)
  To: 39412; +Cc: Diego Nicola Barbato

Print a more helpful error message when someone attempts to run Telega on an
incompatible Emacs (e.g a 32-bit Emacs without wide ints).

* gnu/packages/patches/telega-test-env.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/emacs-xyz.scm (emacs-telega): Use it.
---
 gnu/local.mk                               |  1 +
 gnu/packages/emacs-xyz.scm                 |  2 ++
 gnu/packages/patches/telega-test-env.patch | 14 ++++++++++++++
 3 files changed, 17 insertions(+)
 create mode 100644 gnu/packages/patches/telega-test-env.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 7cce60b7c0..eb6998cb65 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1448,6 +1448,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tcsh-fix-autotest.patch			\
   %D%/packages/patches/tcsh-fix-out-of-bounds-read.patch	\
   %D%/packages/patches/teensy-loader-cli-help.patch		\
+  %D%/packages/patches/telega-test-env.patch			\
   %D%/packages/patches/texinfo-5-perl-compat.patch		\
   %D%/packages/patches/texlive-bin-CVE-2018-17407.patch		\
   %D%/packages/patches/texlive-bin-luatex-poppler-compat.patch	\
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 401dbdec2c..23a988625d 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -20580,6 +20580,8 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
          (sha256
           (base32
            "0mv6i80958d9crzspzik5xh5g8326115bvg2frgv0dp9p6rm86m3"))
+         (patches
+          (search-patches "telega-test-env.patch"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/patches/telega-test-env.patch b/gnu/packages/patches/telega-test-env.patch
new file mode 100644
index 0000000000..7b2600d13b
--- /dev/null
+++ b/gnu/packages/patches/telega-test-env.patch
@@ -0,0 +1,14 @@
+Test Emacs environment on startup.
+
+Patch by Diego N. Barbato
+
+--- a/telega.el	2020-02-07 17:07:18.549970090 +0100
++++ b/telega.el	2020-02-07 17:10:08.383499765 +0100
+@@ -82,6 +82,7 @@
+   "Start telegramming.
+ If prefix ARG is given, then will not pop to telega root buffer."
+   (interactive "P")
++  (telega-test-env)
+   (telega--create-hier)
+ 
+   (unless (telega-server-live-p)
-- 
2.26.0

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems.
  2020-03-26 13:15   ` Diego Nicola Barbato
                       ` (2 preceding siblings ...)
  2020-03-26 13:18     ` [bug#39412] [PATCH v2 3/3] gnu: emacs-telega: Test Emacs environment on startup Diego Nicola Barbato
@ 2020-04-28 14:04     ` Diego Nicola Barbato
  2020-04-28 17:46       ` bug#39412: " Efraim Flashner
  3 siblings, 1 reply; 11+ messages in thread
From: Diego Nicola Barbato @ 2020-04-28 14:04 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: 39412

[-- Attachment #1: Type: text/plain, Size: 1209 bytes --]

Hi,

Diego Nicola Barbato <dnbarbato@posteo.de> writes:

[...]

>> long I wonder if it'd be better for it to be unbuildable on 32-bit
>> systems than to make it installable but unusable without changing other
>> installed packages.
>
> IMO it's ok for it to require changing other installed packages during a
> transitional period (e.g. guix repl currently doesn't work with
> `guile-readline' and requires that the guile3.0 variant be installed
> instead due to the transition in progress from Guile 2 to Guile 3).  I
> do believe that the failure mode of Telega running with `emacs' instead
> of `emacs-wide-int' on a 32-bit system is problematic because it doesn't
> make it clear what's wrong and how to fix it.  I have tried to address
> this in v2 of my patch series by patching Telega to run
> `telega-test-env' (the failing test) on startup (i.e. `M-x telega').
> That way it fails immediately with the following error message:
>
>   Emacs with wide ints (--with-wide-int) is required
>
> This should hopefully lead users on the right track.

I've rebased the patches on master and modified the last one such that
`telega-test-env' doesn't display a message when it succeeds.

[...]

Regards,

Diego


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v3-0001-gnu-Add-emacs-wide-int.patch --]
[-- Type: text/x-patch, Size: 1122 bytes --]

From 0197316358bc496f1d6868f3e41be7121ed8fa5f Mon Sep 17 00:00:00 2001
From: Diego Nicola Barbato <dnbarbato@posteo.de>
Date: Sun, 29 Dec 2019 00:41:48 +0100
Subject: [PATCH v3 1/3] gnu: Add emacs-wide-int.

* gnu/packages/emacs.scm (emacs-wide-int): New variable.
---
 gnu/packages/emacs.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 3d0368be4e..ab7cc20d10 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -401,6 +401,17 @@ editor (without an X toolkit)" )
            ((#:configure-flags cf)
             `(cons "--with-x-toolkit=no" ,cf)))))))
 
+(define-public emacs-wide-int
+  (package
+    (inherit emacs)
+    (name "emacs-wide-int")
+    (synopsis "The extensible, customizable, self-documenting text
+editor (with wide ints)" )
+    (arguments
+     (substitute-keyword-arguments (package-arguments emacs)
+       ((#:configure-flags flags)
+        `(cons "--with-wide-int" ,flags))))))
+
 (define-public guile-emacs
   (let ((commit "41120e0f595b16387eebfbf731fff70481de1b4b")
         (revision "0"))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: v3-0002-gnu-emacs-telega-Build-with-emacs-wide-int-on-32-.patch --]
[-- Type: text/x-patch, Size: 1359 bytes --]

From 1b86cf0846233b19b4905537d566f9ea40f76dbd Mon Sep 17 00:00:00 2001
From: Diego Nicola Barbato <dnbarbato@posteo.de>
Date: Sun, 29 Dec 2019 01:03:38 +0100
Subject: [PATCH v3 2/3] gnu: emacs-telega: Build with emacs-wide-int on 32-bit
 systems.

Fixes <https://bugs.gnu.org/39406>.
Reported by <lmedeiros@riseup.net>.

* gnu/packages/emacs-xyz.scm (emacs-telega)[native-inputs]: Replace emacs with
emacs-wide-int on 32-bit systems.  This is needed because Telega requires
62-bit wide ints.
---
 gnu/packages/emacs-xyz.scm | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 0ae3f72fb7..e5bd414d75 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -21419,7 +21419,12 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
       (native-inputs
        `(("tdlib" ,tdlib)
          ("libtgvoip" ,libtgvoip) ; VoIP support.
-         ("emacs" ,emacs)
+         ;; Use Emacs with wide ints on 32-bit architectures.
+         ("emacs" ,(match (%current-system)
+                     ((or "i686-linux" "armhf-linux")
+                      emacs-wide-int)
+                     (_
+                      emacs)))
          ("python" ,python)))
       (synopsis "GNU Emacs client for the Telegram messenger")
       (description
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: v3-0003-gnu-emacs-telega-Test-Emacs-environment-on-startu.patch --]
[-- Type: text/x-patch, Size: 2541 bytes --]

From 6f6a35fd07559aa484a59c4b6267e01db41921a3 Mon Sep 17 00:00:00 2001
From: Diego Nicola Barbato <dnbarbato@posteo.de>
Date: Fri, 7 Feb 2020 17:59:31 +0100
Subject: [PATCH v3 3/3] gnu: emacs-telega: Test Emacs environment on startup.

Print a more helpful error message when someone attempts to run Telega on an
incompatible Emacs (e.g a 32-bit Emacs without wide ints).

* gnu/packages/patches/telega-test-env.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/emacs-xyz.scm (emacs-telega): Use it.
---
 gnu/local.mk                               |  1 +
 gnu/packages/emacs-xyz.scm                 |  2 ++
 gnu/packages/patches/telega-test-env.patch | 14 ++++++++++++++
 3 files changed, 17 insertions(+)
 create mode 100644 gnu/packages/patches/telega-test-env.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 9f212434a9..5787c675dd 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1470,6 +1470,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tcsh-fix-autotest.patch			\
   %D%/packages/patches/tcsh-fix-out-of-bounds-read.patch	\
   %D%/packages/patches/teensy-loader-cli-help.patch		\
+  %D%/packages/patches/telega-test-env.patch			\
   %D%/packages/patches/texinfo-5-perl-compat.patch		\
   %D%/packages/patches/texlive-bin-CVE-2018-17407.patch		\
   %D%/packages/patches/texlive-bin-luatex-poppler-compat.patch	\
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index e5bd414d75..01758bbbc5 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -21328,6 +21328,8 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
          (sha256
           (base32
            "0mv6i80958d9crzspzik5xh5g8326115bvg2frgv0dp9p6rm86m3"))
+         (patches
+          (search-patches "telega-test-env.patch"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/patches/telega-test-env.patch b/gnu/packages/patches/telega-test-env.patch
new file mode 100644
index 0000000000..75fe2e12fc
--- /dev/null
+++ b/gnu/packages/patches/telega-test-env.patch
@@ -0,0 +1,14 @@
+Test Emacs environment on startup.
+
+Patch by Diego N. Barbato
+
+--- a/telega.el	2020-02-07 17:07:18.549970090 +0100
++++ b/telega.el	2020-02-07 17:10:08.383499765 +0100
+@@ -82,6 +82,7 @@
+   "Start telegramming.
+ If prefix ARG is given, then will not pop to telega root buffer."
+   (interactive "P")
++  (telega-test-env t)
+   (telega--create-hier)
+ 
+   (unless (telega-server-live-p)
-- 
2.26.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#39412: [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems.
  2020-04-28 14:04     ` [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
@ 2020-04-28 17:46       ` Efraim Flashner
  2020-04-28 20:27         ` [bug#39412] " Diego Nicola Barbato
  0 siblings, 1 reply; 11+ messages in thread
From: Efraim Flashner @ 2020-04-28 17:46 UTC (permalink / raw)
  To: Diego Nicola Barbato; +Cc: 39412-done

[-- Attachment #1: Type: text/plain, Size: 242 bytes --]

Looks good. patch pushed!


-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems.
  2020-04-28 17:46       ` bug#39412: " Efraim Flashner
@ 2020-04-28 20:27         ` Diego Nicola Barbato
  0 siblings, 0 replies; 11+ messages in thread
From: Diego Nicola Barbato @ 2020-04-28 20:27 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: 39412

Efraim Flashner <efraim@flashner.co.il> writes:

> Looks good. patch pushed!

Thanks!

I went ahead and closed https://debbugs.gnu.org/39406.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-04-28 20:28 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-02-04  9:43 [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
2020-02-04  9:49 ` [bug#39412] [PATCH 1/2] gnu: Add emacs-wide-int Diego Nicola Barbato
2020-02-04  9:49 ` [bug#39412] [PATCH 2/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
2020-02-04 11:14 ` [bug#39412] [PATCH 0/2] " Efraim Flashner
2020-03-26 13:15   ` Diego Nicola Barbato
2020-03-26 13:17     ` [bug#39412] [PATCH v2 1/3] gnu: Add emacs-wide-int Diego Nicola Barbato
2020-03-26 13:17     ` [bug#39412] [PATCH v2 2/3] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
2020-03-26 13:18     ` [bug#39412] [PATCH v2 3/3] gnu: emacs-telega: Test Emacs environment on startup Diego Nicola Barbato
2020-04-28 14:04     ` [bug#39412] [PATCH 0/2] gnu: emacs-telega: Build with emacs-wide-int on 32-bit systems Diego Nicola Barbato
2020-04-28 17:46       ` bug#39412: " Efraim Flashner
2020-04-28 20:27         ` [bug#39412] " Diego Nicola Barbato

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).