* bug#18612: [platform-testers] Emacs pretest 24.3.94 [not found] <d57g0ji88z.fsf@fencepost.gnu.org> @ 2014-10-02 19:22 ` Assaf Gordon 2014-10-02 19:47 ` Eli Zaretskii 2014-10-02 22:33 ` bug#18612: non-portable shell substitution in configure.ac Paul Eggert 0 siblings, 2 replies; 8+ messages in thread From: Assaf Gordon @ 2014-10-02 19:22 UTC (permalink / raw) To: 18612 Hello, On 10/01/2014 09:13 PM, Glenn Morris wrote: > The next (and hopefully final) pretest for what will be the 24.4 release > of Emacs (the extensible text editor) is available at > > ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-24.3.94.tar.xz > > Please give it as much testing as you can. I tested it on few systems, builds OK on all the followings (amd64, with only curses support, no X): Debian 7.6 gNewSense 3.1 (based on Debian 6) Ubuntu 14.04.1 Trisquel 6.0.1 (based on Ubuntu 12.04 LTS) OpenSUSE 13.1 CentOS 6.5 CentOS 7 FreeBSD 10 FreeBSD 9.3 OpenBSD 5.5 NetBSD 6.1.4 DilOS 1.3.7 (OpenSolaris/Illumos-based) GNU Hurd/Debian 0.5 (i386) "./configure" fails on MINIX R3.3.0/i386, but MINIX is not officially supported. On thing I noticed, is that "configure.ac" (and thus "./configure") has the following statement (line 38): srcdir="/${srcdir:0:1}${srcdir:2}" I believe these are bash-specific variable expansions, not posix-compatible. This appears in an MINGW-related "if" block, so I guess most of the time it is not encountered. But in one instance, I got: $ ./configure ./configure: 3564: Syntax error: Bad substitution Regards, - Assaf ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18612: [platform-testers] Emacs pretest 24.3.94 2014-10-02 19:22 ` bug#18612: [platform-testers] Emacs pretest 24.3.94 Assaf Gordon @ 2014-10-02 19:47 ` Eli Zaretskii 2014-10-02 20:09 ` Glenn Morris 2014-10-02 22:33 ` bug#18612: non-portable shell substitution in configure.ac Paul Eggert 1 sibling, 1 reply; 8+ messages in thread From: Eli Zaretskii @ 2014-10-02 19:47 UTC (permalink / raw) To: Assaf Gordon; +Cc: 18612 > Date: Thu, 02 Oct 2014 15:22:41 -0400 > From: Assaf Gordon <assafgordon@gmail.com> > > On thing I noticed, is that "configure.ac" (and thus "./configure") > has the following statement (line 38): > srcdir="/${srcdir:0:1}${srcdir:2}" > > I believe these are bash-specific variable expansions, not posix-compatible. > > This appears in an MINGW-related "if" block, so I guess most of the time it is not encountered. MinGW uses only Bash. ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18612: [platform-testers] Emacs pretest 24.3.94 2014-10-02 19:47 ` Eli Zaretskii @ 2014-10-02 20:09 ` Glenn Morris 2014-10-02 21:07 ` Dani Moncayo 0 siblings, 1 reply; 8+ messages in thread From: Glenn Morris @ 2014-10-02 20:09 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 18612, Assaf Gordon Eli Zaretskii wrote: >> srcdir="/${srcdir:0:1}${srcdir:2}" >> >> I believe these are bash-specific variable expansions, not posix-compatible. >> >> This appears in an MINGW-related "if" block, so I guess most of the >> time it is not encountered. > > MinGW uses only Bash. But other platforms may still try to parse (?) those lines, even if they don't execute them. Presumably that explains: >> But in one instance, I got: >> $ ./configure >> ./configure: 3564: Syntax error: Bad substitution So can you replace it with something portable, eg sed? ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18612: [platform-testers] Emacs pretest 24.3.94 2014-10-02 20:09 ` Glenn Morris @ 2014-10-02 21:07 ` Dani Moncayo 2014-10-02 22:06 ` Assaf Gordon 0 siblings, 1 reply; 8+ messages in thread From: Dani Moncayo @ 2014-10-02 21:07 UTC (permalink / raw) To: Glenn Morris; +Cc: 18612, Assaf Gordon On Thu, Oct 2, 2014 at 10:09 PM, Glenn Morris <rgm@gnu.org> wrote: > Eli Zaretskii wrote: > >>> srcdir="/${srcdir:0:1}${srcdir:2}" >>> >>> I believe these are bash-specific variable expansions, not posix-compatible. >>> >>> This appears in an MINGW-related "if" block, so I guess most of the >>> time it is not encountered. >> >> MinGW uses only Bash. > > But other platforms may still try to parse (?) those lines, even if they > don't execute them. Presumably that explains: > >>> But in one instance, I got: >>> $ ./configure >>> ./configure: 3564: Syntax error: Bad substitution To find out if that's the case here, Assaf could run the configure script again, with this patch applied: --- configure 2014-10-02 22:49:51.808131800 +0200 +++ configure1 2014-10-02 23:05:37.288306300 +0200 @@ -3554,6 +3554,10 @@ if test "x$MSYSTEM" = "xMINGW32" -o "x$MSYSTEM" = "xMINGW64" then + + $as_echo "Too bad. This should not be executed in this system!. \$MSYSTEM='$MSYSTEM'" >&2 + exit 1 + . $srcdir/nt/mingw-cfg.site case $srcdir in ...and tell us whether the script aborts at that "exit 1", and if so, the value of $MSYSTEM. -- Dani Moncayo ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18612: [platform-testers] Emacs pretest 24.3.94 2014-10-02 21:07 ` Dani Moncayo @ 2014-10-02 22:06 ` Assaf Gordon 2014-10-02 22:11 ` Assaf Gordon 2014-10-02 22:48 ` Dani Moncayo 0 siblings, 2 replies; 8+ messages in thread From: Assaf Gordon @ 2014-10-02 22:06 UTC (permalink / raw) To: Dani Moncayo, Glenn Morris; +Cc: 18612 On 10/02/2014 05:07 PM, Dani Moncayo wrote: > On Thu, Oct 2, 2014 at 10:09 PM, Glenn Morris <rgm@gnu.org> wrote: >> >> But other platforms may still try to parse (?) those lines, even if they >> don't execute them. Presumably that explains: <...> > To find out if that's the case here, Assaf could run the configure > script again, with this patch applied: The patch itself was not enough, because it still contains the offending lines. However, I think I managed to reduce the case to this: === MINIX R3.3.0 === $ sh -c 'echo ${a:0:1}' sh: Syntax error: Bad substitution $ sh -c 'true && echo ${a:0:1}' sh: Syntax error: Bad substitution $ sh -c 'false && echo ${a:0:1}' sh: Syntax error: Bad substitution === Debian 7.6 === $ dash -c 'echo ${a:0:1}' dash: 1: Bad substitution $ dash -c 'true && echo ${a:0:1}' dash: 1: Bad substitution $ dash -c 'false && echo ${a:0:1}' (no error printed) === NetBSD 6.1.4 ==== $ sh -c 'echo ${a:0:1}' sh: Syntax error: Bad substitution $ sh -c 'true && echo ${a:0:1}' sh: Syntax error: Bad substitution $ sh -c 'false && echo ${a:0:1}' sh: Syntax error: Bad substitution but: $ ksh -c 'echo ${a:0:1}' ksh: : bad substitution $ ksh -c 'true && echo ${a:0:1}' ksh: : bad substitution $ ksh -c 'false && echo ${a:0:1}' (no error printed) ==== The "offending" system is MINIX R3.3.0 (which isn't officially supported). It is supposed to be MINIX kernel + NetBSD user-space, so I'm not quite sure why "./configure" on NetBSD works while on MINIX it doesn't. (something to do with re-exec as "ksh" ? though MINIX does have "/bin/ksh" ). In any case, I think the examples above demonstrate that MINIX's default shell does parse the shell statements regardless of execution or not, unlike 'dash' or 'ksh'. I don't know if this is POSIX-compliant-behaviour or not. Regards, - Assaf ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18612: [platform-testers] Emacs pretest 24.3.94 2014-10-02 22:06 ` Assaf Gordon @ 2014-10-02 22:11 ` Assaf Gordon 2014-10-02 22:48 ` Dani Moncayo 1 sibling, 0 replies; 8+ messages in thread From: Assaf Gordon @ 2014-10-02 22:11 UTC (permalink / raw) To: Dani Moncayo, Glenn Morris; +Cc: 18612 On 10/02/2014 06:06 PM, Assaf Gordon wrote: > The "offending" system is MINIX R3.3.0 (which isn't officially supported). Just to put things in perspective, even after fixing/avoiding this issue, emacs doesn't build on MINIX as-is, so this issue shouldn't delay a release... ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18612: [platform-testers] Emacs pretest 24.3.94 2014-10-02 22:06 ` Assaf Gordon 2014-10-02 22:11 ` Assaf Gordon @ 2014-10-02 22:48 ` Dani Moncayo 1 sibling, 0 replies; 8+ messages in thread From: Dani Moncayo @ 2014-10-02 22:48 UTC (permalink / raw) To: Assaf Gordon; +Cc: 18612 >> To find out if that's the case here, Assaf could run the configure >> script again, with this patch applied: > > > The patch itself was not enough, because it still contains the offending > lines. Of course, because I wanted to determine whether the error was triggered (a) at parsing time (the shell parses more code than strictly necessary) or (b) at execution time (some problem with the test of $MSYSTEM, which provokes the unwanted execution of MinGW-specific code). (It seems now clear that the answer is "a". Thank you) -- Dani Moncayo ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18612: non-portable shell substitution in configure.ac 2014-10-02 19:22 ` bug#18612: [platform-testers] Emacs pretest 24.3.94 Assaf Gordon 2014-10-02 19:47 ` Eli Zaretskii @ 2014-10-02 22:33 ` Paul Eggert 1 sibling, 0 replies; 8+ messages in thread From: Paul Eggert @ 2014-10-02 22:33 UTC (permalink / raw) To: 18612-done Unfortunately POSIX doesn't allow that construction, even in non-executed code, so a strict shell is within its rights to reject it. I installed a simple and localized workaround as emacs-24 bzr 117537. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-10-02 22:48 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <d57g0ji88z.fsf@fencepost.gnu.org> 2014-10-02 19:22 ` bug#18612: [platform-testers] Emacs pretest 24.3.94 Assaf Gordon 2014-10-02 19:47 ` Eli Zaretskii 2014-10-02 20:09 ` Glenn Morris 2014-10-02 21:07 ` Dani Moncayo 2014-10-02 22:06 ` Assaf Gordon 2014-10-02 22:11 ` Assaf Gordon 2014-10-02 22:48 ` Dani Moncayo 2014-10-02 22:33 ` bug#18612: non-portable shell substitution in configure.ac 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).