libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Libtool HEAD testsuite


From: Duft Markus
Subject: RE: Libtool HEAD testsuite
Date: Wed, 31 Jan 2007 08:30:41 +0100

Ralf Wildenhues <mailto:address@hidden> wrote:
> * Duft Markus wrote on Tue, Jan 30, 2007 at 09:02:24AM CET:
>> Ralf Wildenhues <mailto:address@hidden> wrote:
>>> * Duft Markus wrote on Fri, Jan 19, 2007 at 05:28:41PM CET:
>>>> 
>>>> Sorry, i must correct myself. $EXEEXT *is* used *sometimes* and as
>>>> far as my situation is concerned, completely in the wrong places...
>>> 
>>> Well, it matches the Cygwin semantics of .exe interpolation:
>>> <http://cygwin.com/cygwin-ug-net/using-specialnames.html#id4729824>.
>>> [...] You don't describe your situation sufficiently well for
>>> somebody else to do anything about it.  Do you use Cygwin, MinGW,
>>> or Interix? Native or cross-compile + simulator?  What semantics
>>> does the system in question have wrt. suffix interpolation?
> 
> With the above question ...
> 
>> The compiler i use is WGCC (still @ sourceforge ;o)) which i wrote
>> myself. The sematics for executable extensions are configurable,
>> which means one can set the default output filename in a
>> configuration file. 
> 
> ... I meant the system (shell, libc), rather than the compiler here.
> Your compiler isn't going to try to execute those files.

Hi,

It's Interix's libc (kind of a pure POSIX implementation, which does not
know any windows paths or extensions). The shells in use are:
/bin/sh -> /bin/ksh which seems to be one or another version of PDKSH,
and a self built BASH (built with gcc 3.3 from interix. Both don't pay
attention to any extension so no matter where, the name(s) given must be
exact on interix.

The thing is, that there is a trick to make KSH recognize extensions
somehow, but it never worked for me. Additionally it would require some
special setup of the PATH variable, which i think is not very portable,
not even between different interix machines ;o//.

> 
> So, the question still stands: which system fails to execute
>   ./foo
> 
> if there is an executable foo.exe in the current directory?  Since
> apparently I don't know it, and apparently it's not Cygwin nor MinGW,
> I'd like to see documentation for it, so I can fix the ChangeLog entry
> below.

I digged into this again a little... The problem is that there could be
any shell in use that compiles on interix, not just ksh...
For example a CSH comes along with interix (ok, ok, it's not used for
script execution, that's still ksh... ;o))

FROM MAN KSH ON INTERIX
=====================================================

  PATH_WINDOWS

    The Interix profile file sets the PATH_WINDOWS environment variable
in
    which you can specify a suffix matching order. This is used to look
for
    Windows commands with standard extensions, namely .com, .exe, .ksh,
.bat,
    and .cmd. In the Interix Korn shell, if you type the echo
$PATH_WINDOWS
    command, you will see the default value of PATH_WINDOWS set to the
    following (or something similar):

 
/dev/fs/C/WINDOWS/system32/.com,.exe,.ksh,.bat,.cmd,:/dev/fs/C/SFU/commo
n/
    .com,.exe,.ksh,.bat,.cmd,

    The path name is in POSIX format, not Win32.

    You can also specify your own suffix matching order. The value of
    PATH_WINDOWS is a colon-separated list of directory names with the
    following format:

    pathname[/suffix-list][:pathname[/suffix-list]]

    The suffix-list is a comma-separated list of suffixes. Each suffix
starts
    with a period (.) and contains up to a total of three additional
    characters, as illustrated in this example:

 
PATH_WINDOWS=/dev/fs/D/SFU/common/.exe,.ksh:/dev/fs/C/WINNT/system32/
    .exe,.bat

    In this example, .exe and .ksh files will be suffix matched in the
/dev/
    fs/D/SFU/common directory, and .exe and .bat files in the
/dev/fs/C/WINNT/
    system32 directory. A file with the .exe extension will be matched
in the
    /dev/fs/C/WINNT/system32 directory only if it is not found in the
/dev/fs/
    D/SFU/common directory.

    If you specify only the directory, such as
PATH_WINDOWS=/dev/fs/C/WINNT/
    system32 all the suffixes are matched in the following order:

    *     .com
    *     .exe
    *     .ksh
    *     .bat
    *     .cmd
    *     ""

    The last example in the list is empty. This indicates the lack of a
    suffix. For example, you can enter the following at an Interix shell
    prompt:

    PATH_WINDOWS=/dev/fs/C/WINNT/system32:/dev/fs/D/sfu/common/.exe
    echo $PATH_WINDOWS

    The echo $PATH_WINDOWS command displays:

 
/dev/fs/C/WINNT/system32/.com,.exe,.ksh,.bat,.cmd,:/dev/fs/D/SFU/common/
    .exe

    Note that the empty field between .cmd and : indicates that there is
a "no
    suffix" entry in the search path.

FROM MAN KSH ON INTERIX
=====================================================

Again, this is for KSH, and nothing prevents peaople from using bash
(which anyway is a good idea ;o)) or any other shell that compiles on
interix.

Cheers, Markus

> 
> The func_exec change shouldn't be needed, something like the patch
> below should be sufficient.  EXEEXT should be set when you run the
> test suite. 
> 
> Cheers,
> Ralf
> 
> 2007-01-30  Ralf Wildenhues  <address@hidden>
> 
>       * tests/defs.m4sh (func_require, func_exec_check): When testing
>       for existence of required files, also try the $EXEEXT extension.
>       This is apparently needed on Interix.
>       * THANKS: Update.
>       Report by Markus Duft.
> 
> Index: THANKS
> ===================================================================
> RCS file: /cvsroot/libtool/libtool/THANKS,v
> retrieving revision 1.57
> diff -u -r1.57 THANKS
> --- THANKS    21 Jan 2007 16:15:36 -0000      1.57
> +++ THANKS    30 Jan 2007 20:12:07 -0000
> @@ -101,6 +101,7 @@
>    Marc Espie                 address@hidden
>    Marc J. Fraioli            address@hidden
>    Mark Kettenis                      address@hidden
> +  Markus Duft                        address@hidden
>    Olly Betts                 address@hidden
>    Patrick Welche             address@hidden
>    Paul Eggert                        address@hidden
> Index: tests/defs.m4sh
> ===================================================================
> RCS file: /cvsroot/libtool/libtool/tests/defs.m4sh,v
> retrieving revision 1.16
> diff -u -r1.16 defs.m4sh
> --- tests/defs.m4sh   12 Nov 2005 09:16:56 -0000      1.16
> +++ tests/defs.m4sh   30 Jan 2007 20:35:05 -0000
> @@ -5,7 +5,7 @@
>  # Gord Matzigkeit <address@hidden>, 1996
>  # Gary V. Vaughan <address@hidden>, 2003
> 
> -# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
> +# Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
>  # This is free software; see the source for copying conditions. 
>  There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR
> A PARTICULAR PURPOSE. 
> 
> @@ -167,7 +167,7 @@
>      my_files=${1+"$@"}
> 
>      for my_file in $my_files; do
> -      test -f "$my_file" \
> +      { test -f "$my_file" || test -f "$my_file$EXEEXT"; } \
>          || func_skip "You must run ${my_prereq}.test before running
>      $0" done
>  }
> @@ -291,7 +291,7 @@
>      $opt_debug
>      my_program="$1"
> 
> -    if test -f "$my_program"; then :
> +    if test -f "$my_program" || test -f "$my_program$EXEEXT"; then :
>      else
>        shift
>        func_error "$0: $my_program did not build address@hidden"





reply via email to

[Prev in Thread] Current Thread [Next in Thread]