Subject: Re: bug#47382: runtest doesn't work with Solaris 10 /bin/sh

From: Rainer Orth <[email-masked]>
Date: Wed, 14 Apr 2021 15:40:56 +0200

Hi Jacob,

> Rainer Orth wrote:
>> * There's also
>>
>> Native configuration is
>> /vol/src/gnu/dejagnu/dejagnu-1.6.3-rc2/config.guess: syn
>> tax error at line 35: `me=$' unexpected
>>
>>   another POSIX shell construct, and less easily avoided because this
>>   comes from upstream.
>>   
>
> As of commit 2ca7d52dfa1726aadd1363e399d9b41429332017, which will be in
> release candidate 3, configure now contains experimental logic to 
> address this issue by patching the interpreter line in config.guess and
> config.sub when SHELL is not /bin/sh.

I'll restrict my reply to this issue for the moment because that logic
caused quite a number of issues:

* On Solaris 10 with CONFIG_SHELL=/bin/ksh, configure substituted
  /bin/ksh into the #! line of both config.guess and config.sub.
  Unfortunately, this has many issues:

* The modified files weren't made executable, leading to lots of
  failures from the likes of

Native configuration is couldn't execute "/vol/src/gnu/dejagnu/dejagnu-1.6.3-rc3/config.guess": permission denied

* Even if I manually make the scripts executable, this isn't a proper
  solution: runtest.exp looks for config.guess in quite a number of
  places, and many projects rely on being able to drop newer
  config.{guess,sub} versions into their source trees to support targets
  that may not even have existed at the time the version of DejaGnu used
  was released.  So using the CONFIG_SHELL should be in the exec line in
  runtest.exp.

* Besides, modifying files in the source tree is wrong for several
  reasons:

** Read-only source trees need to be supported.

** If you share the same source tree between several targets, which is
   quite common, you might end up with a shell in #! on a second target
   that may not even exist there.

  While this could be avoided by making the substitutions to a copy in
  the build tree, the issue vanishes if runtest.exp uses the proper
  shell in the exec.