unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* EMACS=t Joy and Happiness
@ 2018-05-24 20:46 Phillip Lord
  2018-05-24 20:52 ` Stefan Monnier
                   ` (2 more replies)
  0 siblings, 3 replies; 29+ messages in thread
From: Phillip Lord @ 2018-05-24 20:46 UTC (permalink / raw)
  To: Emacs-Devel devel; +Cc: 20202, Paul Eggert, Stefan Monnier, 20484



Well, it hardly seems like Mon, 11 Apr 2016 since last we discussed this
issue.

If you remember, we managed to blitz, EMACS=t everywhere, then Paul
restored it in term.el because it broke bash otherwise. master currently
looks like this:

  ;; This is for backwards compatibility with Bash 4.3 and earlier.
  ;; Remove this hack once Bash 4.4-or-later is common, because
  ;; it breaks './configure' of some packages that expect it to
  ;; say where to find EMACS.
  (format "EMACS=%s (term:%s)" emacs-version term-protocol-version)

I worry that "Bash 4.4 or later is common" is rather indeterminate; my
desktop is now 4.4.19. but another machine I am using has bash
4.2.46. Given that Emacs-26 is now destined to come out with
EMACS=26.1.0, I would like to propose that we now remove this on master,
i.e. make it happen for Emacs-27 which should be in about 2020.

Phil







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

* Re: EMACS=t Joy and Happiness
  2018-05-24 20:46 EMACS=t Joy and Happiness Phillip Lord
@ 2018-05-24 20:52 ` Stefan Monnier
  2018-05-24 22:03 ` Paul Eggert
  2018-05-25 20:36 ` Paul Eggert
  2 siblings, 0 replies; 29+ messages in thread
From: Stefan Monnier @ 2018-05-24 20:52 UTC (permalink / raw)
  To: Phillip Lord; +Cc: 20202, Paul Eggert, 20484, Emacs-Devel devel

> I worry that "Bash 4.4 or later is common" is rather indeterminate; my

At least Debian's stable (stretch) is on bash-4.4 (but still at 4.3 in
oldstable (jessie)).

> desktop is now 4.4.19. but another machine I am using has bash
> 4.2.46. Given that Emacs-26 is now destined to come out with
> EMACS=26.1.0, I would like to propose that we now remove this on master,
> i.e. make it happen for Emacs-27 which should be in about 2020.

Sounds good to me: by the time Emacs-27 comes out, Debian's oldstable
will be stretch (hence at 4.4).


        Stefan



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

* Re: EMACS=t Joy and Happiness
  2018-05-24 20:46 EMACS=t Joy and Happiness Phillip Lord
  2018-05-24 20:52 ` Stefan Monnier
@ 2018-05-24 22:03 ` Paul Eggert
  2018-05-25  2:25   ` bug#20202: " Van L
                     ` (2 more replies)
  2018-05-25 20:36 ` Paul Eggert
  2 siblings, 3 replies; 29+ messages in thread
From: Paul Eggert @ 2018-05-24 22:03 UTC (permalink / raw)
  To: Phillip Lord, Emacs-Devel devel; +Cc: 20202, Stefan Monnier, 20484

Bash 4.4 came out only in September 2016, and it's too soon to assume 
it. For example, my students regularly use Emacs on a server running 
RHEL 7, which ships Bash 4.2.46, and as I understand it, this is the 
most recent RHEL available.

How about this idea: At Emacs build time, we check whether Bash is 4.4 
or later, and if so we use a term.el that assumes bash 4.4 or later. 
Otherwise, we use a term.el that interrogates the shell dynamically for 
whether it is shell and if so what its version number is, the first time 
that Emacs runs a process under a shell.



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

* bug#20202: EMACS=t Joy and Happiness
  2018-05-24 22:03 ` Paul Eggert
@ 2018-05-25  2:25   ` Van L
  2018-05-25  6:11     ` Ricardo Wurmus
  2018-05-25 17:59     ` Paul Eggert
  2018-05-25  6:16   ` Eli Zaretskii
  2018-05-25 22:34   ` bug#20484: " Phillip Lord
  2 siblings, 2 replies; 29+ messages in thread
From: Van L @ 2018-05-25  2:25 UTC (permalink / raw)
  To: Paul Eggert; +Cc: 20202, Phillip Lord, 20484, Stefan Monnier, Emacs-Devel devel


> Paul Eggert writes:
> 
> this is the most recent RHEL available

You could have your sclerotic institution’s IT manager provide Enterprise RHEL for students studying topics as old as the hills and mountains (and they won’t change) and request them to “think" about the latest unstable Fedora or Debian or Ubuntu releases for research oriented experimental AI & CS “work” which are hot career topics and ought not to be held back by bureaucratically convenient RHEL IT hell. Ask them for what Tesla or Uber or Facebook or Google use to keep up with “innovation” before it is "too late" on RHEL.




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

* Re: EMACS=t Joy and Happiness
  2018-05-25  2:25   ` bug#20202: " Van L
@ 2018-05-25  6:11     ` Ricardo Wurmus
  2018-05-25  7:12       ` Van L
  2018-05-25 17:59     ` Paul Eggert
  1 sibling, 1 reply; 29+ messages in thread
From: Ricardo Wurmus @ 2018-05-25  6:11 UTC (permalink / raw)
  To: Van L
  Cc: Paul Eggert, Emacs-Devel devel, 20202, 20484, Stefan Monnier,
	Phillip Lord


Van L <van@scratch.space> writes:

>> Paul Eggert writes:
>>
>> this is the most recent RHEL available
>
> You could have your sclerotic institution’s IT manager provide
> Enterprise RHEL for students studying topics as old as the hills and
> mountains (and they won’t change) and request them to “think" about
> the latest unstable Fedora or Debian or Ubuntu releases for research
> oriented experimental AI & CS “work” which are hot career topics and
> ought not to be held back by bureaucratically convenient RHEL IT
> hell. Ask them for what Tesla or Uber or Facebook or Google use to
> keep up with “innovation” before it is "too late" on RHEL.

This is not constructive.

There are even RHEL 6 deployments out there, because it’s still
supported until 2020.  There are people who pay for the privilege of not
having to upgrade.

--
Ricardo





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

* Re: EMACS=t Joy and Happiness
  2018-05-24 22:03 ` Paul Eggert
  2018-05-25  2:25   ` bug#20202: " Van L
@ 2018-05-25  6:16   ` Eli Zaretskii
  2018-05-25  7:28     ` Van L
  2018-05-25 17:50     ` Paul Eggert
  2018-05-25 22:34   ` bug#20484: " Phillip Lord
  2 siblings, 2 replies; 29+ messages in thread
From: Eli Zaretskii @ 2018-05-25  6:16 UTC (permalink / raw)
  To: Paul Eggert; +Cc: 20484, emacs-devel, 20202, monnier, phillip.lord

> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Thu, 24 May 2018 15:03:56 -0700
> Cc: 20202@debbugs.gnu.org, Stefan Monnier <monnier@iro.umontreal.ca>,
> 	20484@debbugs.gnu.org
> 
> Bash 4.4 came out only in September 2016, and it's too soon to assume 
> it.

I agree, 1.5 years is too soon.  I think we need 5 years at least.

> How about this idea: At Emacs build time, we check whether Bash is 4.4 
> or later, and if so we use a term.el that assumes bash 4.4 or later. 
> Otherwise, we use a term.el that interrogates the shell dynamically for 
> whether it is shell and if so what its version number is, the first time 
> that Emacs runs a process under a shell.

The first part will only work if Emacs is used on the same system
where it is built, right?  Is that a good assumption, given all the
binary distributions?



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

* Re: EMACS=t Joy and Happiness
  2018-05-25  6:11     ` Ricardo Wurmus
@ 2018-05-25  7:12       ` Van L
  0 siblings, 0 replies; 29+ messages in thread
From: Van L @ 2018-05-25  7:12 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: Emacs-Devel devel


> Ricardo Wurmus writes:
> 
> There are people who pay for the privilege of not
> having to upgrade.

I can understand the excuse for long-term-support system contracts but not for the poster’s student environment.

You refer to lazy privileged people (in out of touch out of date financial institutions?) who will now have to report their system is breached within 72-hours or pay 4% of revenue.


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

* Re: EMACS=t Joy and Happiness
  2018-05-25  6:16   ` Eli Zaretskii
@ 2018-05-25  7:28     ` Van L
  2018-05-25  8:02       ` Eli Zaretskii
  2018-05-25 17:50     ` Paul Eggert
  1 sibling, 1 reply; 29+ messages in thread
From: Van L @ 2018-05-25  7:28 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Paul Eggert, emacs-devel, 20202, 20484, monnier, phillip.lord


> Eli Zaretskii writes:
> 
>> Bash 4.4 came out only in September 2016, and it's too soon to assume 
>> it.
> 
> I agree, 1.5 years is too soon.  I think we need 5 years at least.

How about applying the 5-multiplier to 9-month cycles?



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

* Re: EMACS=t Joy and Happiness
  2018-05-25  7:28     ` Van L
@ 2018-05-25  8:02       ` Eli Zaretskii
  2018-05-26  0:01         ` Van L
  0 siblings, 1 reply; 29+ messages in thread
From: Eli Zaretskii @ 2018-05-25  8:02 UTC (permalink / raw)
  To: Van L; +Cc: eggert, emacs-devel, 20202, 20484, monnier, phillip.lord

> From: Van L <van@scratch.space>
> Date: Fri, 25 May 2018 17:28:31 +1000
> Cc: Paul Eggert <eggert@cs.ucla.edu>, emacs-devel@gnu.org,
> 	20202@debbugs.gnu.org, 20484@debbugs.gnu.org,
> 	monnier@iro.umontreal.ca, phillip.lord@russet.org.uk
> 
> > I agree, 1.5 years is too soon.  I think we need 5 years at least.
> 
> How about applying the 5-multiplier to 9-month cycles?

I think you are confusing this with an entirely different domain.



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

* Re: EMACS=t Joy and Happiness
  2018-05-25  6:16   ` Eli Zaretskii
  2018-05-25  7:28     ` Van L
@ 2018-05-25 17:50     ` Paul Eggert
  1 sibling, 0 replies; 29+ messages in thread
From: Paul Eggert @ 2018-05-25 17:50 UTC (permalink / raw)
  To: emacs-devel

On 05/24/2018 11:16 PM, Eli Zaretskii wrote:
>> How about this idea: At Emacs build time, we check whether Bash is 4.4
>> or later, and if so we use a term.el that assumes bash 4.4 or later.
>> Otherwise, we use a term.el that interrogates the shell dynamically for
>> whether it is shell and if so what its version number is, the first time
>> that Emacs runs a process under a shell.
> The first part will only work if Emacs is used on the same system
> where it is built, right

No, it merely assumes that the build Bash version is not greater than 
the production Bash version. Although this is the typical situation, 
you're correct that it might not be true in general; if that's a problem 
(which I doubt), we can easily provide a configure-time option to 
override the default assumption.



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

* Re: EMACS=t Joy and Happiness
  2018-05-25  2:25   ` bug#20202: " Van L
  2018-05-25  6:11     ` Ricardo Wurmus
@ 2018-05-25 17:59     ` Paul Eggert
  2018-05-26  0:17       ` Van L
  2018-05-26  0:43       ` Van L
  1 sibling, 2 replies; 29+ messages in thread
From: Paul Eggert @ 2018-05-25 17:59 UTC (permalink / raw)
  To: Van L; +Cc: 20484, Emacs-Devel devel, 20202, Stefan Monnier, Phillip Lord

On 05/24/2018 07:25 PM, Van L wrote:
> Ask them for what Tesla or Uber or Facebook or Google use


I just checked the first company mentioned on your list (Tesla) and it 
is posting want-ads that ask for Red Hat expertise. Unfortunately I 
can't disclose what I privately know about Tesla, but suffice it to say 
that like most other successful companies they use a wide variety of 
systems in their work, and not all of these systems are the very latest 
version of everything.


> I can understand the excuse for long-term-support system contracts but not for the poster’s student environment.
>
> You refer to lazy privileged people


I'm afraid there's a misunderstanding here. At UCLA we have a wide 
variety of systems running many different OSes. Servers at UCLA run many 
operating systems; it's quite a gamut, as we have a lot of departments 
and research groups, most of which focus on areas other than computer 
science and who have a lot of software of varying quality that they 
don't necessarily have time or budget to upgrade or maintain 
extensively. The courses I teach are assigned to a batch of RHEL 7 
servers that support many different courses, not just mine. I do not 
specify or maintain the server OSes; that's a responsibility of the 
operations staff of the School of Engineering, and they're busy people 
who do not report to me.

To help keep my course material up-to-date I install copies of the 
latest released versions of Emacs (currently 25.3), Bash (currently 
4.4.19), and many other free software programs. (I don't overwrite 
/usr/bin of course; I install into a separate directory that students 
put into their PATH settings.) So it'll be little trouble to me or my 
students if Emacs requires Bash 4.4 or later. When I mentioned RHEL 7, I 
wasn't simply talking about my personal situation; I was observing that 
requiring Bash 4.4 would be a hassle for people installing newer Emacs 
versions onto Red Hat servers, as it would require these people to also 
install newer Bash versions. If it's important for Emacs to require Bash 
4.4 of course Emacs can do so; still, I expect that the overall hassle 
to Emacs users of requiring Bash 4.4 still outweighs the relatively 
minor technical benefit in question. Sorry, but that's how things often 
work in production software.

With all this in mind you might want to rethink your comments that among 
other things seem to imply that the staff at UCLA consists of "lazy 
privileged people".




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

* Re: EMACS=t Joy and Happiness
  2018-05-24 20:46 EMACS=t Joy and Happiness Phillip Lord
  2018-05-24 20:52 ` Stefan Monnier
  2018-05-24 22:03 ` Paul Eggert
@ 2018-05-25 20:36 ` Paul Eggert
  2018-05-25 22:49   ` bug#20202: " Phillip Lord
  2018-05-26  7:20   ` bug#20484: " Eli Zaretskii
  2 siblings, 2 replies; 29+ messages in thread
From: Paul Eggert @ 2018-05-25 20:36 UTC (permalink / raw)
  To: Phillip Lord, Emacs-Devel devel; +Cc: 20202, Stefan Monnier, 20484

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

On 05/24/2018 01:46 PM, Phillip Lord wrote:
> I would like to propose that we now remove this on master,
>

Given the compatibility concerns expressed, how about the attached patch 
instead? The idea is to remove the need to setenv EMACS with newer 
Bashes, while still setting EMACS for older Bashes, for backward 
compatibility.


[-- Attachment #2: 0001-Don-t-set-EMACS-t-if-Bash-is-4.4-or-newer.txt --]
[-- Type: text/plain, Size: 3015 bytes --]

From f7efdc4d21c22a81398b06cdc58144ec2f9c7697 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Fri, 25 May 2018 13:25:51 -0700
Subject: [PROPOSED] =?UTF-8?q?Don=E2=80=99t=20set=20EMACS=3Dt=20if=20Bash?=
 =?UTF-8?q?=20is=204.4=20or=20newer?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* lisp/term.el (term--bash-needs-EMACS-status): New var.
(term--bash-needs-EMACSp): New function.
(term-exec-1): Use it instead of always setting EMACS.
---
 lisp/term.el | 31 +++++++++++++++++++++++++------
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/lisp/term.el b/lisp/term.el
index 017b0221ec..fa43774ae8 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -1489,6 +1489,26 @@ term-termcap-format
   ;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
   "Termcap capabilities supported.")
 
+;; This is for backwards compatibility with Bash 4.3 and earlier.
+;; Remove this hack once Bash 4.4-or-later is reasonably universal, because
+;; it slows down execution slightly, just before the first subshell.
+(defvar term--bash-needs-EMACS-status nil
+  "43 if Bash is so old that it needs EMACS set.
+Some other integer if Bash is new or not in use.
+Nil if unknown.")
+(defun term--bash-needs-EMACSp ()
+  "t if Bash is old, nil if it is new or not in use."
+  (unless term--bash-needs-EMACS-status
+    (let ((process-environment (copy-sequence process-environment)))
+      (setenv "BASH_ENV")
+      (setq term--bash-needs-EMACS-status
+            (condition-case nil
+                (call-process
+                 "bash" nil nil nil "-c"
+                 "case $BASH_VERSION in [0123].*|4.[0123].*) exit 43;; esac")
+              (error 0)))))
+  (eq 43 term--bash-needs-EMACS-status))
+
 ;; This auxiliary function cranks up the process for term-exec in
 ;; the appropriate environment.
 
@@ -1506,12 +1526,6 @@ term-exec-1
 	   (format term-termcap-format "TERMCAP="
 		   term-term-name term-height term-width)
 
-	   ;; This is for backwards compatibility with Bash 4.3 and earlier.
-	   ;; Remove this hack once Bash 4.4-or-later is common, because
-	   ;; it breaks './configure' of some packages that expect it to
-	   ;; say where to find EMACS.
-	   (format "EMACS=%s (term:%s)" emacs-version term-protocol-version)
-
 	   (format "INSIDE_EMACS=%s,term:%s" emacs-version term-protocol-version)
 	   (format "LINES=%d" term-height)
 	   (format "COLUMNS=%d" term-width))
@@ -1523,6 +1537,11 @@ term-exec-1
 	;; escape codes, so we need to see the raw output.  We will have to
 	;; do the decoding by hand on the parts that are made of chars.
 	(coding-system-for-read 'binary))
+    (when (term--bash-needs-EMACSp)
+      (setq process-environment
+            (cons
+             (format "EMACS=%s (term:%s)" emacs-version term-protocol-version)
+             process-environment)))
     (apply 'start-process name buffer
 	   "/bin/sh" "-c"
 	   (format "stty -nl echo rows %d columns %d sane 2>/dev/null;\
-- 
2.17.0


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

* bug#20484: EMACS=t Joy and Happiness
  2018-05-24 22:03 ` Paul Eggert
  2018-05-25  2:25   ` bug#20202: " Van L
  2018-05-25  6:16   ` Eli Zaretskii
@ 2018-05-25 22:34   ` Phillip Lord
  2 siblings, 0 replies; 29+ messages in thread
From: Phillip Lord @ 2018-05-25 22:34 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Emacs-Devel devel, 20484, Stefan Monnier, 20202


Paul Eggert <eggert@cs.ucla.edu> writes:

> Bash 4.4 came out only in September 2016, and it's too soon to assume
> it. For example, my students regularly use Emacs on a server running
> RHEL 7, which ships Bash 4.2.46, and as I understand it, this is the
> most recent RHEL available.


Well, Emacs-27 will come out in 2020, so that's 4 years lead time. And
the most recent of RHEL also ships with Emacs-24. So, by the time RHEL
ships Emacs-27, good chance it will ship Bash 4.4.


> How about this idea: At Emacs build time, we check whether Bash is 4.4
> or later, and if so we use a term.el that assumes bash 4.4 or
> later. Otherwise, we use a term.el that interrogates the shell
> dynamically for whether it is shell and if so what its version number
> is, the first time that Emacs runs a process under a shell.


Well, the latter half we could do (I don't think the build idea makes
sense). But I was hoping to make life simpler, not more complex.

Phil





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

* bug#20202: EMACS=t Joy and Happiness
  2018-05-25 20:36 ` Paul Eggert
@ 2018-05-25 22:49   ` Phillip Lord
  2018-05-26  7:20   ` bug#20484: " Eli Zaretskii
  1 sibling, 0 replies; 29+ messages in thread
From: Phillip Lord @ 2018-05-25 22:49 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Emacs-Devel devel, 20484, Stefan Monnier, 20202

Paul Eggert <eggert@cs.ucla.edu> writes:

> On 05/24/2018 01:46 PM, Phillip Lord wrote:
>> I would like to propose that we now remove this on master,
>>
>
> Given the compatibility concerns expressed, how about the attached
> patch instead? The idea is to remove the need to setenv EMACS with
> newer Bashes, while still setting EMACS for older Bashes, for backward
> compatibility.
>
> From f7efdc4d21c22a81398b06cdc58144ec2f9c7697 Mon Sep 17 00:00:00 2001
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Fri, 25 May 2018 13:25:51 -0700
> Subject: [PROPOSED] =?UTF-8?q?Don=E2=80=99t=20set=20EMACS=3Dt=20if=20Bash?=
>  =?UTF-8?q?=20is=204.4=20or=20newer?=
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> * lisp/term.el (term--bash-needs-EMACS-status): New var.
> (term--bash-needs-EMACSp): New function.
> (term-exec-1): Use it instead of always setting EMACS.
> ---
>  lisp/term.el | 31 +++++++++++++++++++++++++------
>  1 file changed, 25 insertions(+), 6 deletions(-)
>
> diff --git a/lisp/term.el b/lisp/term.el
> index 017b0221ec..fa43774ae8 100644
> --- a/lisp/term.el
> +++ b/lisp/term.el
> @@ -1489,6 +1489,26 @@ term-termcap-format
>    ;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
>    "Termcap capabilities supported.")
>  
> +;; This is for backwards compatibility with Bash 4.3 and earlier.
> +;; Remove this hack once Bash 4.4-or-later is reasonably universal, because
> +;; it slows down execution slightly, just before the first subshell.
> +(defvar term--bash-needs-EMACS-status nil
> +  "43 if Bash is so old that it needs EMACS set.
> +Some other integer if Bash is new or not in use.
> +Nil if unknown.")
> +(defun term--bash-needs-EMACSp ()
> +  "t if Bash is old, nil if it is new or not in use."
> +  (unless term--bash-needs-EMACS-status
> +    (let ((process-environment (copy-sequence process-environment)))
> +      (setenv "BASH_ENV")
> +      (setq term--bash-needs-EMACS-status
> +            (condition-case nil
> +                (call-process
> +                 "bash" nil nil nil "-c"
> +                 "case $BASH_VERSION in [0123].*|4.[0123].*) exit 43;; esac")
> +              (error 0)))))
> +  (eq 43 term--bash-needs-EMACS-status))
> +
>  ;; This auxiliary function cranks up the process for term-exec in
>  ;; the appropriate environment.
>  
> @@ -1506,12 +1526,6 @@ term-exec-1
>  	   (format term-termcap-format "TERMCAP="
>  		   term-term-name term-height term-width)
>  
> -	   ;; This is for backwards compatibility with Bash 4.3 and earlier.
> -	   ;; Remove this hack once Bash 4.4-or-later is common, because
> -	   ;; it breaks './configure' of some packages that expect it to
> -	   ;; say where to find EMACS.
> -	   (format "EMACS=%s (term:%s)" emacs-version term-protocol-version)
> -
>  	   (format "INSIDE_EMACS=%s,term:%s" emacs-version term-protocol-version)
>  	   (format "LINES=%d" term-height)
>  	   (format "COLUMNS=%d" term-width))
> @@ -1523,6 +1537,11 @@ term-exec-1
>  	;; escape codes, so we need to see the raw output.  We will have to
>  	;; do the decoding by hand on the parts that are made of chars.
>  	(coding-system-for-read 'binary))
> +    (when (term--bash-needs-EMACSp)
> +      (setq process-environment
> +            (cons
> +             (format "EMACS=%s (term:%s)" emacs-version term-protocol-version)
> +             process-environment)))
>      (apply 'start-process name buffer
>  	   "/bin/sh" "-c"
>  	   (format "stty -nl echo rows %d columns %d sane 2>/dev/null;\



It's a solution, afaict. However, one which is more complex than we
already have. The problem with RHEL probably only effects weird people
like you (and me!) who use a stock bash on an old RHEL, then compile the
latest Emacs. And us weird people could probably circumvent the problem
with term anyway.

You, Stefan and Eli have far more experience here clearly. Happy with
what ever you decide.

Phil





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

* Re: EMACS=t Joy and Happiness
  2018-05-25  8:02       ` Eli Zaretskii
@ 2018-05-26  0:01         ` Van L
  0 siblings, 0 replies; 29+ messages in thread
From: Van L @ 2018-05-26  0:01 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Emacs-Devel devel


> Eli Zaretskii writes:
> 
> I think you are confusing this with an entirely different domain.

There is one project whose cycle is 6-months.
The intro documentation there isn’t as intangible as emacs lisp intro.


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

* Re: EMACS=t Joy and Happiness
  2018-05-25 17:59     ` Paul Eggert
@ 2018-05-26  0:17       ` Van L
  2018-05-26  7:41         ` Eli Zaretskii
  2018-05-26  0:43       ` Van L
  1 sibling, 1 reply; 29+ messages in thread
From: Van L @ 2018-05-26  0:17 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Emacs-Devel devel


>  the operations staff of the School of Engineering, and they're busy people who do not report to me.

There are new tricks at Digital Ocean, Google and what RHEL learns from their CoreOS catch.

My point is Enterprise RHEL will have to upgrade constantly, report a breach within 72-hours or pay 4% of revenue.

> With all this in mind you might want to rethink your comments that among other things seem to imply that the staff at UCLA consists of "lazy privileged people”.

You misunderstand.

I was upset by the idea of paying more to not upgrade.




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

* Re: EMACS=t Joy and Happiness
  2018-05-25 17:59     ` Paul Eggert
  2018-05-26  0:17       ` Van L
@ 2018-05-26  0:43       ` Van L
  1 sibling, 0 replies; 29+ messages in thread
From: Van L @ 2018-05-26  0:43 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Emacs-Devel devel


> Paul Eggert writes:
> 
> we have a lot of departments and research groups, most of which focus on areas other than computer science and who have a lot of software of varying quality that they don't necessarily have time or budget to upgrade or maintain extensively. The courses I teach are assigned to a batch of RHEL 7 servers that support many different courses, not just mine. I do not specify or maintain the server OSes; that's a responsibility of the operations staff

How can the industrial processes at Amazon, Digital Ocean, Google help them? unless deep in their own bowels they are no different.


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

* bug#20484: EMACS=t Joy and Happiness
  2018-05-25 20:36 ` Paul Eggert
  2018-05-25 22:49   ` bug#20202: " Phillip Lord
@ 2018-05-26  7:20   ` Eli Zaretskii
  2018-05-26 20:54     ` Paul Eggert
  1 sibling, 1 reply; 29+ messages in thread
From: Eli Zaretskii @ 2018-05-26  7:20 UTC (permalink / raw)
  To: Paul Eggert; +Cc: 20202, phillip.lord, 20484, monnier, emacs-devel

> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Fri, 25 May 2018 13:36:03 -0700
> Cc: 20202@debbugs.gnu.org, Stefan Monnier <monnier@iro.umontreal.ca>,
> 	20484@debbugs.gnu.org
> 
> Given the compatibility concerns expressed, how about the attached patch 
> instead?

I like it because it is future proof, and makes our burden of
remembering this issue easier.

Thanks.





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

* Re: EMACS=t Joy and Happiness
  2018-05-26  0:17       ` Van L
@ 2018-05-26  7:41         ` Eli Zaretskii
  2018-05-26 10:07           ` Van L
  0 siblings, 1 reply; 29+ messages in thread
From: Eli Zaretskii @ 2018-05-26  7:41 UTC (permalink / raw)
  To: Van L; +Cc: eggert, emacs-devel

> From: Van L <van@scratch.space>
> Date: Sat, 26 May 2018 10:17:02 +1000
> Cc: Emacs-Devel devel <emacs-devel@gnu.org>
> 
> I was upset by the idea of paying more to not upgrade.

I guess you never had the experience of upgrading a system in a
production-type environments, with a large number of users, each of
whom has their specific requirements and packages that need to
continue running smoothly.



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

* Re: EMACS=t Joy and Happiness
  2018-05-26  7:41         ` Eli Zaretskii
@ 2018-05-26 10:07           ` Van L
  2018-05-26 10:57             ` Eli Zaretskii
  0 siblings, 1 reply; 29+ messages in thread
From: Van L @ 2018-05-26 10:07 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Emacs-Devel devel


> On 26 May 2018, at 17:41, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> From: Van L <van@scratch.space>
>> Date: Sat, 26 May 2018 10:17:02 +1000
>> Cc: Emacs-Devel devel <emacs-devel@gnu.org>
>> 
>> I was upset by the idea of paying more to not upgrade.
> 
> I guess you never had the experience of upgrading a system in a
> production-type environments, with a large number of users, each of
> whom has their specific requirements and packages that need to
> continue running smoothly.

Let’s not get personal.

This is about the system and upgrades.

Anyway, it is now the law to report a breach within 72-hours or pay 4% of revenue.

Your are skating over a concept large installations use orchestration toolchains for devopsproding.




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

* Re: EMACS=t Joy and Happiness
  2018-05-26 10:07           ` Van L
@ 2018-05-26 10:57             ` Eli Zaretskii
  0 siblings, 0 replies; 29+ messages in thread
From: Eli Zaretskii @ 2018-05-26 10:57 UTC (permalink / raw)
  To: Van L; +Cc: emacs-devel

> From: Van L <van@scratch.space>
> Date: Sat, 26 May 2018 20:07:42 +1000
> Cc: Emacs-Devel devel <emacs-devel@gnu.org>
> 
> > I guess you never had the experience of upgrading a system in a
> > production-type environments, with a large number of users, each of
> > whom has their specific requirements and packages that need to
> > continue running smoothly.
> 
> Let’s not get personal.

I wasn't.

> This is about the system and upgrades.

Yes, it is.  And the experience one has with systems and their
upgrades affects one's views on the existence and importance of
Enterprise distributions.  Which is why I mentioned that experience.



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

* Re: EMACS=t Joy and Happiness
  2018-05-26  7:20   ` bug#20484: " Eli Zaretskii
@ 2018-05-26 20:54     ` Paul Eggert
  2018-05-31 21:07       ` bug#20202: " Phillip Lord
  0 siblings, 1 reply; 29+ messages in thread
From: Paul Eggert @ 2018-05-26 20:54 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Eli Barzilay, emacs-devel, monnier, 20202-done, 20484,
	phillip.lord

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

Eli Zaretskii wrote:

> I like it because it is future proof, and makes our burden of
> remembering this issue easier.
> 
> Thanks.

You're welcome. Stefan privately emailed me some helpful comments that improved 
the patch (thanks!), and I installed the attached into master. In the hope that 
this has laid Bug#20202 to rest (at least on modern GNU systems running Bash 4.4 
or later), I'm boldly closing the bug report.

[-- Attachment #2: 0001-Don-t-set-EMACS-t-if-Bash-is-4.4-or-newer.txt --]
[-- Type: text/plain, Size: 3257 bytes --]

From 6fcab83600317e94ea7b915da7730a8c7e50226d Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Sat, 26 May 2018 13:29:06 -0700
Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20set=20EMACS=3Dt=20if=20Bash=20i?=
 =?UTF-8?q?s=204.4=20or=20newer?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

(Thanks to Stefan Monnier for improvements to this patch.)
* lisp/term.el (term--bash-needs-EMACS-status): New var.
(term--bash-needs-EMACSp): New function.
(term-exec-1): Use it instead of always setting EMACS.
---
 lisp/term.el | 34 ++++++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/lisp/term.el b/lisp/term.el
index 017b022..19e68dd 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -1489,6 +1489,31 @@ term-termcap-format
   ;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
   "Termcap capabilities supported.")
 
+;; This private hack is for backwards compatibility with Bash 4.3 and earlier.
+;; It can be useful even when running a program other than Bash, as the
+;; program might invoke Bash as an interactive subshell.  See this thread:
+;; https://lists.gnu.org/r/emacs-devel/2018-05/msg00670.html
+;; Remove this hack and its uses once Bash 4.4-or-later is reasonably
+;; universal, because it slows down execution slightly when
+;; term--bash-needs-EMACSp is first called.
+(defvar term--bash-needs-EMACS-status nil
+  "43 if Bash is so old that it needs EMACS set.
+Some other integer if Bash is new or not in use.
+Nil if unknown.")
+(defun term--bash-needs-EMACSp ()
+  "t if Bash is old, nil if it is new or not in use."
+  (eq 43
+      (or term--bash-needs-EMACS-status
+          (setf
+           term--bash-needs-EMACS-status
+           (let ((process-environment
+                  (cons "BASH_ENV" process-environment)))
+             (condition-case nil
+                 (call-process
+                  "bash" nil nil nil "-c"
+                  "case $BASH_VERSION in [0123].*|4.[0123].*) exit 43;; esac")
+               (error 0)))))))
+
 ;; This auxiliary function cranks up the process for term-exec in
 ;; the appropriate environment.
 
@@ -1506,12 +1531,6 @@ term-exec-1
 	   (format term-termcap-format "TERMCAP="
 		   term-term-name term-height term-width)
 
-	   ;; This is for backwards compatibility with Bash 4.3 and earlier.
-	   ;; Remove this hack once Bash 4.4-or-later is common, because
-	   ;; it breaks './configure' of some packages that expect it to
-	   ;; say where to find EMACS.
-	   (format "EMACS=%s (term:%s)" emacs-version term-protocol-version)
-
 	   (format "INSIDE_EMACS=%s,term:%s" emacs-version term-protocol-version)
 	   (format "LINES=%d" term-height)
 	   (format "COLUMNS=%d" term-width))
@@ -1523,6 +1542,9 @@ term-exec-1
 	;; escape codes, so we need to see the raw output.  We will have to
 	;; do the decoding by hand on the parts that are made of chars.
 	(coding-system-for-read 'binary))
+    (when (term--bash-needs-EMACSp)
+      (push (format "EMACS=%s (term:%s)" emacs-version term-protocol-version)
+            process-environment))
     (apply 'start-process name buffer
 	   "/bin/sh" "-c"
 	   (format "stty -nl echo rows %d columns %d sane 2>/dev/null;\
-- 
2.7.4


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

* bug#20202: EMACS=t Joy and Happiness
  2018-05-26 20:54     ` Paul Eggert
@ 2018-05-31 21:07       ` Phillip Lord
  2018-05-31 23:45         ` Paul Eggert
  0 siblings, 1 reply; 29+ messages in thread
From: Phillip Lord @ 2018-05-31 21:07 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Eli Barzilay, emacs-devel, monnier, 20484, 20202-done

Paul Eggert <eggert@cs.ucla.edu> writes:

> Eli Zaretskii wrote:
>
>> I like it because it is future proof, and makes our burden of
>> remembering this issue easier.
>>
>> Thanks.
>
> You're welcome. Stefan privately emailed me some helpful comments that
> improved the patch (thanks!), and I installed the attached into
> master. In the hope that this has laid Bug#20202 to rest (at least on
> modern GNU systems running Bash 4.4 or later), I'm boldly closing the
> bug report.


Not wishing to reopen the bug report that you have so boldly closed,
given that this would appear to be a conservative change rather than the
breaking one I was suggesting, any reason why this can't be installed
on emacs-26?

Phil





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

* Re: EMACS=t Joy and Happiness
  2018-05-31 21:07       ` bug#20202: " Phillip Lord
@ 2018-05-31 23:45         ` Paul Eggert
  2018-06-01  1:56           ` Stefan Monnier
  2018-06-01  7:04           ` Eli Zaretskii
  0 siblings, 2 replies; 29+ messages in thread
From: Paul Eggert @ 2018-05-31 23:45 UTC (permalink / raw)
  To: Phillip Lord
  Cc: Eli Barzilay, emacs-devel, monnier, Eli Zaretskii, 20484,
	20202-done

On 05/31/2018 02:07 PM, Phillip Lord wrote:
> any reason why this can't be installed
> on emacs-26?

None that I know of. Will there be a 26.2, though?




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

* Re: EMACS=t Joy and Happiness
  2018-05-31 23:45         ` Paul Eggert
@ 2018-06-01  1:56           ` Stefan Monnier
  2018-06-01  7:04           ` Eli Zaretskii
  1 sibling, 0 replies; 29+ messages in thread
From: Stefan Monnier @ 2018-06-01  1:56 UTC (permalink / raw)
  To: Paul Eggert
  Cc: Eli Barzilay, emacs-devel, Eli Zaretskii, Phillip Lord, 20484,
	20202-done

> None that I know of. Will there be a 26.2, though?

I'd be surprised if we don't need to make a 26.2 before 27.1.


        Stefan



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

* Re: EMACS=t Joy and Happiness
  2018-05-31 23:45         ` Paul Eggert
  2018-06-01  1:56           ` Stefan Monnier
@ 2018-06-01  7:04           ` Eli Zaretskii
  2018-06-01 14:08             ` Paul Eggert
  1 sibling, 1 reply; 29+ messages in thread
From: Eli Zaretskii @ 2018-06-01  7:04 UTC (permalink / raw)
  To: Paul Eggert; +Cc: eli, emacs-devel, 20202, phillip.lord, 20484, monnier

> Cc: Eli Zaretskii <eliz@gnu.org>, 20484@debbugs.gnu.org, emacs-devel@gnu.org,
>  20202-done@debbugs.gnu.org, monnier@iro.umontreal.ca,
>  Eli Barzilay <eli@barzilay.org>
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Thu, 31 May 2018 16:45:59 -0700
> 
> On 05/31/2018 02:07 PM, Phillip Lord wrote:
> > any reason why this can't be installed
> > on emacs-26?
> 
> None that I know of. Will there be a 26.2, though?

Yes, I'm quite sure it will be.  So if we want this change backported
to Emacs 26.2, we can do that now.



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

* Re: EMACS=t Joy and Happiness
  2018-06-01  7:04           ` Eli Zaretskii
@ 2018-06-01 14:08             ` Paul Eggert
  2018-06-01 14:14               ` bug#20484: " Eli Zaretskii
  0 siblings, 1 reply; 29+ messages in thread
From: Paul Eggert @ 2018-06-01 14:08 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: eli, emacs-devel, 20202, 20484, monnier, phillip.lord

Eli Zaretskii wrote:
> if we want this change backported to Emacs 26.2, we can do that now.

Phillip prefers that, and I do too. Any objections?



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

* bug#20484: EMACS=t Joy and Happiness
  2018-06-01 14:08             ` Paul Eggert
@ 2018-06-01 14:14               ` Eli Zaretskii
  2018-06-14 20:54                 ` Paul Eggert
  0 siblings, 1 reply; 29+ messages in thread
From: Eli Zaretskii @ 2018-06-01 14:14 UTC (permalink / raw)
  To: Paul Eggert; +Cc: eli, emacs-devel, 20202, 20484, monnier, phillip.lord

> Cc: eli@barzilay.org, emacs-devel@gnu.org, 20202@debbugs.gnu.org,
>  phillip.lord@russet.org.uk, 20484@debbugs.gnu.org, monnier@iro.umontreal.ca
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Fri, 1 Jun 2018 07:08:56 -0700
> 
> Eli Zaretskii wrote:
> > if we want this change backported to Emacs 26.2, we can do that now.
> 
> Phillip prefers that, and I do too. Any objections?

Not from me.

Thanks.





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

* Re: EMACS=t Joy and Happiness
  2018-06-01 14:14               ` bug#20484: " Eli Zaretskii
@ 2018-06-14 20:54                 ` Paul Eggert
  0 siblings, 0 replies; 29+ messages in thread
From: Paul Eggert @ 2018-06-14 20:54 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: eli, emacs-devel, 20202, 20484, monnier, phillip.lord

On 06/01/2018 07:14 AM, Eli Zaretskii wrote:
>> Eli Zaretskii wrote:
>>> if we want this change backported to Emacs 26.2, we can do that now.
>> Phillip prefers that, and I do too. Any objections?
> Not from me.
>
> Thanks.

You're welcome. I installed that patch into the emacs-26 branch.




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

end of thread, other threads:[~2018-06-14 20:54 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-24 20:46 EMACS=t Joy and Happiness Phillip Lord
2018-05-24 20:52 ` Stefan Monnier
2018-05-24 22:03 ` Paul Eggert
2018-05-25  2:25   ` bug#20202: " Van L
2018-05-25  6:11     ` Ricardo Wurmus
2018-05-25  7:12       ` Van L
2018-05-25 17:59     ` Paul Eggert
2018-05-26  0:17       ` Van L
2018-05-26  7:41         ` Eli Zaretskii
2018-05-26 10:07           ` Van L
2018-05-26 10:57             ` Eli Zaretskii
2018-05-26  0:43       ` Van L
2018-05-25  6:16   ` Eli Zaretskii
2018-05-25  7:28     ` Van L
2018-05-25  8:02       ` Eli Zaretskii
2018-05-26  0:01         ` Van L
2018-05-25 17:50     ` Paul Eggert
2018-05-25 22:34   ` bug#20484: " Phillip Lord
2018-05-25 20:36 ` Paul Eggert
2018-05-25 22:49   ` bug#20202: " Phillip Lord
2018-05-26  7:20   ` bug#20484: " Eli Zaretskii
2018-05-26 20:54     ` Paul Eggert
2018-05-31 21:07       ` bug#20202: " Phillip Lord
2018-05-31 23:45         ` Paul Eggert
2018-06-01  1:56           ` Stefan Monnier
2018-06-01  7:04           ` Eli Zaretskii
2018-06-01 14:08             ` Paul Eggert
2018-06-01 14:14               ` bug#20484: " Eli Zaretskii
2018-06-14 20:54                 ` Paul Eggert

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

	https://git.savannah.gnu.org/cgit/emacs.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).