* 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-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 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-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-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-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
* 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: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 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 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
* 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
* 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#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
* 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 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).