[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/4] AC_SITE_LOAD: add OS/2-specific initialization
From: |
KO Myung-Hun |
Subject: |
Re: [PATCH 2/4] AC_SITE_LOAD: add OS/2-specific initialization |
Date: |
Tue, 23 Sep 2014 13:31:48 +0900 |
User-agent: |
Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.6esrpre) Gecko/20120715 Firefox/10.0.6esrpre SeaMonkey/2.7.2 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Eric Blake wrote:
> On 09/22/2014 08:39 PM, KO Myung-Hun wrote:
>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>>
>> Hi/2.
>>
>> Eric Blake wrote:
>>> On 09/22/2014 12:59 AM, KO Myung-Hun wrote:
>>>> \ may be recognized as an escape character on some shells
>>>> such as pdksh. And the executables on OS/2 have .exe as an
>>>> extension.
>>>
>>> Umm, \ is an escape character on ALL sh-related shells. And
>>> .exe handling on OS/2 should behave as it does on mingw.
>>>
>>
>> Sorry, my change log was not enough somewhat. I meant 'echo'. At
>> least, echo of pdksh treats \ as an escape char without -E.
>
> Yes, passing \ through echo is non-portable, and you must use
> printf instead of echo if the string to be echoed is likely to
> contain a backslash (in addition to the shell quoting rules that
> backslash has outside of echo).
>
I know, too. Using echo is not me but many projects using autotools.
Frankly, I did not look into autotools itself whether or not it uses
echo. But it seems that many projects using autotools assumes a path
does not include '\'. To avoid this, this patch is reasonable.
>>
>> How does mingw handle .exe ?
>
> Configure probes early on if .exe is produced when compiling an
> executable, and sets $EXEEXT accordingly. But in many cases,
> executing '/bin/sh' is automatically translated into '/bin/sh.exe'
> without the user having to explicitly request .exe as part of the
> executable name. Maybe I'm missing a subtlety of OS/2 and what is
> automated vs. manually required, but giving more details will only
> make your case for this patch stronger.
>
Ah, OK. Unfortunately, however, a compiler itself cannot be located
without ac_executable_extensions. Therefore, $EXEEXT cannot be set as
well. I know, '/bin/sh' to /bin/sh.exe' translation also depends on
ac_executable_extensions or $EXEEXT.
>>
>>
>>>>
>>>> * lib/autoconf/general.m4 (AC_SITE_LOAD): Convert \ in PATH
>>>> to /. Add .exe to ac_executable_extensions.
>>>
>>> This says what you changed, but not why. A good commit
>>> message gives rationale on WHY the change is important, such as
>>> a demonstration of what goes wrong without the patch.
>>>
>>
>> I thought I explained WHY above message.
>
> But you never mentioned that 'echo' was at fault.
>
I admit. ^^
>>
>>>> --- lib/autoconf/general.m4 | 28
>>>> ++++++++++++++++++++++++++++ 1 files changed, 28
>>>> insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/lib/autoconf/general.m4
>>>> b/lib/autoconf/general.m4 index 77f71d2..5a87d5e 100644 ---
>>>> a/lib/autoconf/general.m4 +++ b/lib/autoconf/general.m4 @@
>>>> -1951,6 +1951,34 @@ do || AC_MSG_FAILURE([failed to load site
>>>> script $ac_site_file]) fi done + +if test -n "$OS2_SHELL";
>>>> then + # Backslashes into forward slashes: + # The
>>>> following OS/2 specific code is performed AFTER config.site +
>>>> # has been loaded to allow users to change their environment
>>>> there. + # This strange code is necessary to deal with
>>>> handling of backslashes by + # ksh. + ac_save_IFS="$IFS" +
>>>> IFS="\\" + ac_TEMP_PATH= + for ac_dir in $PATH; do +
>>>> IFS=$ac_save_IFS + if test -z "$ac_TEMP_PATH"; then +
>>>> ac_TEMP_PATH="$ac_dir" + else +
>>>> ac_TEMP_PATH="$ac_TEMP_PATH/$ac_dir" + fi + done +
>>>> export PATH="$ac_TEMP_PATH" + unset ac_TEMP_PATH
>
> Your email client is horribly botching quoting.
>
Ooops... That's too bad in my point of view. Hmm...
>>>
>>> It looks like this is an (overly-complex) way of converting all
>>> \ in $PATH into / before proceeding. But why is it necessary?
>>>
>>
>> As I said above, without this, echoing components of PATH may be
>> corrupted. For examples, x:\usr\bin will be x:\usin on pdksh.
>
> Only if you do something non-portable like 'echo "$PATH"'. If you
> do 'printf %s\\n "$PATH"', the problem goes away.
>
As I said above, it's not me who using echo. ^^
>>
>>>> + + # add .exe to ac_executable_extensions + if test -z
>>>> "$ac_executable_extensions"; then +
>>>> AC_MSG_WARN([ac_executable_extensions not set, assuming
>>>> .exe]) + fi +
>>>> ac_executable_extensions="$ac_executable_extensions .exe" +
>>>> export ac_executable_extensions
>>>
>>> Why is the existing code that sets ac_executable_extensions not
>>> sufficient?
>>
>> What is the existing code ? Anyway without this,
>> ac_executable_extensions is not set at all.
>>
>>> And why do you have to export it into the environment of child
>>> processes?
>>
>> I just preserved the old codes from OS/2 fork if possible. If it
>> is not needed, I'll remove it.
>
> Well, just reposting an old patch calls into play other questions -
> are you the original author of the patch, and if not, are there
> any copyright restrictions that would prevent us from applying the
> patch?
Frankly, I don't know who is the original author. I know, the last
porter is Andreas Buening. So I just guess he would be the author of
this patch. He opened the patches. I think, copyright restriction is
none. But I'm not sure.
> Also, just because a downstream fork wrote a patch does not mean it
> was the ideal patch; discussing the issues in the open can often
> lead to a better understanding of the real issue and a better
> patch.
>
Yes, this is exactly one of the reasons why I submit these patches.
>>
>> This might be better as two separate patches, since it
>>> is doing two unrelated changes.
>>>
>>
>> I thought both these were OS/2 init codes. Anyway, I'll split.
>
> They are both related to OS/2, but tackling different items.
>
Ok.
- --
KO Myung-Hun
Using Mozilla SeaMonkey 2.7.2
Under OS/2 Warp 4 for Korean with FixPak #15
In VirtualBox v4.1.32 on Intel Core i7-3615QM 2.30GHz with 8GB RAM
Korean OS/2 User Community : http://www.ecomstation.co.kr
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (OS/2)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iD8DBQFUIPewE9YstvghgroRAnzvAJ9Gjp8V7CQrbLNV9f11y7apJ4mDMACfR4XO
3hhxJ7Zcjr7BgzVwtsyfUbA=
=gGgs
-----END PGP SIGNATURE-----
- Re: [PATCH 3/4] _AS_LN_S_PREPARE: default to 'cp -pR' on OS/2, (continued)
[PATCH 1/4] AC_CACHE_SAVE: treat x: as an absolute path as well, KO Myung-Hun, 2014/09/22
[PATCH 2/4] AC_SITE_LOAD: add OS/2-specific initialization, KO Myung-Hun, 2014/09/22