RE: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-07 Thread Pavel Fedin
 Hello!

 This is what I'd expect.

 Good then.

  2. PATH_SEPARATOR on Cygwin is ':' and on pure DOS/Windows is ';'.
 
 This is true, but how is this relevant to the issue at hand?
 'abspath' does not deal with PATH-style directory lists, it accepts a
 single file name as its argument.  What am I missing here?

 To the issue - no, this really doesn't relate. But this is still involved
in the change, because path list is one more thing which depends on native
path style of underlying environment.

 It probably would, if you do a clean job, but frankly I'm not sure it's
 worth your while.  It is so easy to glean this information by just
 looking at the appropriate preprocessor macro, like WINDOWS32 etc. that
 a configure-time test sounds like overkill.

 Yes, but there can be one thing, considering MinGW. If you don't know,
MinGW actually consists of two environments: MinGW by itself and MSYS. MinGW
by itself is a pure Windows environment. MSYS is enlightened version of
Cygwin whose purpose is to provide enough compatibility to run UNIX shell
scripts like configure. MinGW land uses DOS-style paths and MSYS land uses
UNIX-style ones. Consequently, they actually build two versions of make. One
version is called 'mingw-make' and is a pure Windows program. Another
version is called 'make' and operates in MSYS land, dealing with UNIX-style
paths and path lists. They do this because majority of build systems use
POSIX semantics. Both versions are built from the same source.
 Consequently, there should be a possibility to override native path
format test, similar to what Cygwin currently does to disable DOS paths.
This can be needed for building MSYS version.

 Ok, good, currently i already have an implementation which works fine on
Cygwin and passes all test suite. Now i want to try to build pure Windows
version and make sure that it at least doesn't become worse. I need some
time to test it and to approve the patch for submission here at Samsung.

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia



___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-07 Thread Eli Zaretskii
 From: Pavel Fedin p.fe...@samsung.com
 Cc: m...@cgf.cx, bug-make@gnu.org
 Date: Wed, 07 Aug 2013 10:22:31 +0400
 
   2. PATH_SEPARATOR on Cygwin is ':' and on pure DOS/Windows is ';'.
  
  This is true, but how is this relevant to the issue at hand?
  'abspath' does not deal with PATH-style directory lists, it accepts a
  single file name as its argument.  What am I missing here?
 
  To the issue - no, this really doesn't relate. But this is still involved
 in the change, because path list is one more thing which depends on native
 path style of underlying environment.

Are you saying that if a Cygwin Make uses DOS style file names with
drive letters, it also expects the PATH-style directory lists to use a
semi-colon as a separator?  I don't think I'd expect that.  I think
PATH-style lists should always use Unix-style file named in the Cygwin
Make.  DOS-style file names should only be supported in targets and
commands.

  It probably would, if you do a clean job, but frankly I'm not sure it's
  worth your while.  It is so easy to glean this information by just
  looking at the appropriate preprocessor macro, like WINDOWS32 etc. that
  a configure-time test sounds like overkill.
 
  Yes, but there can be one thing, considering MinGW. If you don't know,
 MinGW actually consists of two environments: MinGW by itself and MSYS. MinGW
 by itself is a pure Windows environment. MSYS is enlightened version of
 Cygwin whose purpose is to provide enough compatibility to run UNIX shell
 scripts like configure. MinGW land uses DOS-style paths and MSYS land uses
 UNIX-style ones. Consequently, they actually build two versions of make. One
 version is called 'mingw-make' and is a pure Windows program. Another
 version is called 'make' and operates in MSYS land, dealing with UNIX-style
 paths and path lists. They do this because majority of build systems use
 POSIX semantics. Both versions are built from the same source.
  Consequently, there should be a possibility to override native path
 format test, similar to what Cygwin currently does to disable DOS paths.
 This can be needed for building MSYS version.

I know about MSYS, but building an MSYS version of Make is already a
special procedure.  So I don't see why you should worry about that.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-07 Thread Christopher Faylor
On Wed, Aug 07, 2013 at 04:38:22PM +0300, Eli Zaretskii wrote:
 From: Pavel Fedin p.fe...@samsung.com
 Cc: m...@cgf.cx, bug-make@gnu.org
 Date: Wed, 07 Aug 2013 10:22:31 +0400
 
   2. PATH_SEPARATOR on Cygwin is ':' and on pure DOS/Windows is ';'.
  
  This is true, but how is this relevant to the issue at hand?
  'abspath' does not deal with PATH-style directory lists, it accepts a
  single file name as its argument.  What am I missing here?
 
  To the issue - no, this really doesn't relate. But this is still involved
 in the change, because path list is one more thing which depends on native
 path style of underlying environment.

Are you saying that if a Cygwin Make uses DOS style file names with
drive letters, it also expects the PATH-style directory lists to use a
semi-colon as a separator?  I don't think I'd expect that.  I think
PATH-style lists should always use Unix-style file named in the Cygwin
Make.  DOS-style file names should only be supported in targets and
commands.

I think it used to, confusingly, allow both uses.  I don't know what it
does now.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


RE: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-07 Thread Pavel Fedin
 Hello!

 Are you saying that if a Cygwin Make uses DOS style file names with
 drive letters, it also expects the PATH-style directory lists to use a
 semi-colon as a separator?  I don't think I'd expect that.

 There is a default in make.h:
--- cut ---
/* Handle other OSs.  */
#ifndef PATH_SEPARATOR_CHAR
# if defined(HAVE_DOS_PATHS)
#  define PATH_SEPARATOR_CHAR ';'
# elif defined(VMS)
#  define PATH_SEPARATOR_CHAR ','
# else
#  define PATH_SEPARATOR_CHAR ':'
# endif
#endif
--- cut ---
 But, i have just checked, it gets overridden by configure script. So if you
configure on Cygwin, it will be correct. But, well, i was talking about this
default actually.

 2 Cristopher: but it never allows both, this is simply impossible by
design.

 I think
 PATH-style lists should always use Unix-style file named in the Cygwin
 Make.  DOS-style file names should only be supported in targets and
 commands.

 Yes, of course. Cygwin runs unmodified UNIX scripts and makefiles, and they
would screw up badly if ';' is used.

 I know about MSYS, but building an MSYS version of Make is already a
 special procedure.  So I don't see why you should worry about that.

 I do not worry much, but i think a little about how this is done, because i
suggest that my modification should not make this special procedure even
more complicated. Don't you think so ?

 P.S. During testing Windows version of make i have found a little flaw in
make test suite. In test_driver.pl there is a 'toplevel' function, which
sets up environment for running make. And it has a list of env variables
which are propagated. Can you add Windows-specific TEMP and TMP to it ?
Without this Windows version fails back to '/' as temp directory, which
fails miserably on post-XP because accessing C:\ requires elevated
privilege.
 Sorry for not providing a .diff, but this is one-line fix, and approving it
is IMHO too much overhead.

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia



___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


RE: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-06 Thread Pavel Fedin
 Hello!

 In that case, we need to fix 'abspath', not disable this feature.

 Ok. If you don't mind, i can try new approach on this. Will it be OK ?

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia



___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


RE: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-06 Thread Pavel Fedin
 Hello!

 In that case, we need to fix 'abspath', not disable this feature.

 I have came up with another implementation, currently testing it.
 My new implementation should allow DOS and UNIX paths to coexist. However
there's still two differences:

1. abspath on Cygwin returns UNIX-style paths and on pure DOS/Windows -
DOS-style. If DOS-style absolute path is already supplied, it will leave it
as is.
2. PATH_SEPARATOR on Cygwin is ':' and on pure DOS/Windows is ';'.

 In order to distinguish between these two i have added one more test to
configure. It attempts to compile and run a small program which checks
whether result of getcwd() is DOS-style. In case of cross-compiling it just
knows that for DOS and MinGW native path style is DOS. Of course
config.cache value is taken into account.
 Technically it is possible to work around (2) using some clever heuristics,
but i don't see how it would be possible to determine whether e.g. /foo/bar
is an absolute path of DOS-style relative one.
 Will this solution be OK ?

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia



___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-06 Thread Eli Zaretskii
 From: Pavel Fedin p.fe...@samsung.com
 Cc: m...@cgf.cx, bug-make@gnu.org
 Date: Tue, 06 Aug 2013 17:46:14 +0400
 
 1. abspath on Cygwin returns UNIX-style paths and on pure DOS/Windows -
 DOS-style.

This is what I'd expect.

 If DOS-style absolute path is already supplied, it will leave it as
 is.

Again, this is what I'd expect.

 2. PATH_SEPARATOR on Cygwin is ':' and on pure DOS/Windows is ';'.

This is true, but how is this relevant to the issue at hand?
'abspath' does not deal with PATH-style directory lists, it accepts a
single file name as its argument.  What am I missing here?

  In order to distinguish between these two i have added one more test to
 configure. It attempts to compile and run a small program which checks
 whether result of getcwd() is DOS-style. In case of cross-compiling it just
 knows that for DOS and MinGW native path style is DOS. Of course
 config.cache value is taken into account.
  Technically it is possible to work around (2) using some clever heuristics,
 but i don't see how it would be possible to determine whether e.g. /foo/bar
 is an absolute path of DOS-style relative one.
  Will this solution be OK ?

It probably would, if you do a clean job, but frankly I'm not sure
it's worth your while.  It is so easy to glean this information by
just looking at the appropriate preprocessor macro, like WINDOWS32
etc. that a configure-time test sounds like overkill.  But I won't
object to such a test, FWIW.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-05 Thread Eli Zaretskii
 From: Pavel Fedin p.fe...@samsung.com
 Date: Mon, 05 Aug 2013 09:19:18 +0400
 
  IMHO it's a little bit inconvenient that you have to use config.cache trick
 in order to build a fully working Make for Cygwin, and this is not
 documented anywhere. First time, when i didn't know about this, i've got a
 problem.

I don't yet understand why you have a problem in the first place.  It
sounds like the single issue is with the 'abspath' function, is that
correct?

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-05 Thread Christopher Faylor
[Reply-to set to bug-make]
On Mon, Aug 05, 2013 at 09:19:18AM +0400, Pavel Fedin wrote:
 Hello!

 Right.  Because I knew I could just turn if off for the Cygwin release.
 There is no reason to nuke the feature for people who want to roll
 their own version of make with DOS paths turned on.

 Then maybe really add something like --enable-dos-paths which defaults to
no on Cygwin and Yes on MinGW ?

ac_cv_dos_paths=no configure

works just fine and does not require a command-line switch.

IMHO it's a little bit inconvenient that you have to use config.cache
trick in order to build a fully working Make for Cygwin, and this is
not documented anywhere.  First time, when i didn't know about this,
i've got a problem.

I assume that the first time you wouldn't know about a command-line
switch either.  Sometimes you have to do research.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-05 Thread Paul Smith
On Mon, 2013-08-05 at 10:56 -0400, Christopher Faylor wrote:
  Then maybe really add something like --enable-dos-paths which
 defaults to
 no on Cygwin and Yes on MinGW ?
 
 ac_cv_dos_paths=no configure
 
 works just fine and does not require a command-line switch.

If this is a common/necessary thing maybe we should consider adding it
to the appropriate README file.  However, we don't seem to have a README
for cygwin in the standard GNU make install.  Is that something anyone
is interested in generating?  In general for Cygwin issues with GNU make
we've traditionally pointed people to the cygwin list.  Is there any
interest on the cygwin side for a closer support relationship?  Or is
what we have now working OK?


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-05 Thread Pavel Fedin
Hello, Eli.

Monday, August 5, 2013, 18:44:17 you wrote:

 I don't yet understand why you have a problem in the first place.  It
 sounds like the single issue is with the 'abspath' function, is that
 correct?

 Yes, correct.

 2 Christopher Faylor:

 ac_cv_dos_paths=no configure

 works just fine and does not require a command-line switch.

 [skip]

 I assume that the first time you wouldn't know about a command-line
 switch either.  Sometimes you have to do research.

 Yes,  but  if this switch defaults to no on Cygwin, then i would
not have to bother. Only those who want customized make with DOS paths
would bother.
 At the other hand, according to your own logic, if we just change Cygwin's 
result for this test, then

ac_cv_dos_paths=yes configure

would also work for building customized version.

 But,   okay,   okay...   I  see,  you  are  extremely  conservative.
 Okay, i   just   wanted   to   make  the  little  thing  cleaner.
AFAIK  configure's  purpose  is  to set up the source for building for
particular  system,  and  it  should  do  all  adjustments  which  are
necessary  to  build  the  100%  working  program. Customization (like
enabling DOS paths for UNIXish environment) IMHO should not be done by
default.
 But you are Masters, and if you completely disagree with me, let it be. I'm 
just a single
person,   and  you are (at least) two. And you are maintainers and not
me. And i am completely out of more arguments, so i retreat. I won't bother you 
with this particular issue
any   more,   unless  you  become  interested and explicitly ask me or
suggest something.

--
 Kind regards,
 Pavel  mailto:pavel_fe...@mail.ru


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-05 Thread Eli Zaretskii
 Date: Mon, 5 Aug 2013 22:04:44 +0400
 From: Pavel Fedin pavel_fe...@mail.ru
 CC: m...@cgf.cx, bug-make@gnu.org
 
  I don't yet understand why you have a problem in the first place.  It
  sounds like the single issue is with the 'abspath' function, is that
  correct?
 
  Yes, correct.

In that case, we need to fix 'abspath', not disable this feature.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


RE: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-04 Thread Pavel Fedin
 Hello!

 Right.  Because I knew I could just turn if off for the Cygwin release.
 There is no reason to nuke the feature for people who want to roll
 their own version of make with DOS paths turned on.

 Then maybe really add something like --enable-dos-paths which defaults to
no on Cygwin and Yes on MinGW ?
 IMHO it's a little bit inconvenient that you have to use config.cache trick
in order to build a fully working Make for Cygwin, and this is not
documented anywhere. First time, when i didn't know about this, i've got a
problem.

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia



___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-08-02 Thread Christopher Faylor
On Wed, Jul 31, 2013 at 10:11:40AM -0400, Paul Smith wrote:
On Wed, 2013-07-31 at 10:37 +0400, Pavel Fedin wrote:
Looks like, if you want DOS paths, and running under Cygwin, an
explicit conversion has to be performed on getcwd() result using
cygwin_conv_path().  However i did not test this further because i
follow official Cygwin way of doing things, and Cygwin deprecates usage
of DOS style paths, obviously because they create lots of problems in
UNIX utilities which are not modified to handle them.  Cygwin even
warns you when some API functions get DOS paths.

Perhaps we need to split the HAVE_DOS_PATHS flag into two flags:
something like ACCEPT_DOS_PATHS which enables various pathname parsing
functions to understand DOS-style paths, and something like
RETURN_DOS_PATHS, which is used in functions that generate absolute
pathnames like abspath etc.  to decide whether the generated pathname
should be DOS-like or UNIX-like.

I'm not sure what cygwin_conv_path() does or whether it is needed or
useful in this situation.

Cygwin understands MS-DOS style paths just fine so I don't think there's
any reason for make to do conversions.

cgf

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-07-31 Thread Paul Smith
On Wed, 2013-07-31 at 10:37 +0400, Pavel Fedin wrote:
 Looks like, if you want DOS paths, and running under Cygwin, an
 explicit conversion has to be performed on getcwd() result using
 cygwin_conv_path().  However i did not test this further because i
 follow official Cygwin way of doing things, and Cygwin deprecates
 usage of DOS style paths, obviously because they create lots of
 problems in UNIX utilities which are not modified to handle them.
 Cygwin even warns you when some API functions get DOS paths.

Perhaps we need to split the HAVE_DOS_PATHS flag into two flags:
something like ACCEPT_DOS_PATHS which enables various pathname parsing
functions to understand DOS-style paths, and something like
RETURN_DOS_PATHS, which is used in functions that generate absolute
pathnames like abspath etc. to decide whether the generated pathname
should be DOS-like or UNIX-like.

I'm not sure what cygwin_conv_path() does or whether it is needed or
useful in this situation.


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-07-30 Thread Eli Zaretskii
 From: Pavel Fedin p.fe...@samsung.com
 Date: Tue, 30 Jul 2013 14:44:58 +0400
 
  Currently make's configure suggests that it should use DOS-style paths on
 Cygwin. This is not true, and this assumption makes path-related mechanisms
 to work incorrectly. Currently Cygwin package supplies manual hint in
 config.cache in order to work around this.

Sorry, I don't understand the problem you are trying to solve.  Could
you please explain it in more detail?

This feature was added in response to an explicit request of some
Cygwin users.  I don't want to remove it without a very good reason.
After all, if you don't need DOS-style file names, you can simply
refrain from using them in your Makefiles, and then you will not see
any effect of this support.

  I think we should also ask MinGW team about __MSYS__ definition. MSys is
 close to Cygwin, so perhaps this should also be removed.

MSYS supports DOS-style file names, so removing that would seem wrong.
However, I don't speak for MSYS developers, so I'll defer to their
judgment.

Thanks.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-07-30 Thread Roland Schwingel
Hi...

bug-make-bounces+roland.schwingel=onevision@gnu.org wrote on 
30.07.2013 17:43:10:

   Currently make's configure suggests that it should use DOS-style 
paths on
  Cygwin. This is not true, and this assumption makes path-related 
mechanisms
  to work incorrectly. Currently Cygwin package supplies manual hint in
  config.cache in order to work around this.
 
 Sorry, I don't understand the problem you are trying to solve.  Could
 you please explain it in more detail?
 
 This feature was added in response to an explicit request of some
 Cygwin users.  I don't want to remove it without a very good reason.
 After all, if you don't need DOS-style file names, you can simply
 refrain from using them in your Makefiles, and then you will not see
 any effect of this support.
 
   I think we should also ask MinGW team about __MSYS__ definition. MSys 
is
  close to Cygwin, so perhaps this should also be removed.
 
 MSYS supports DOS-style file names, so removing that would seem wrong.
 However, I don't speak for MSYS developers, so I'll defer to their
 judgment.
I want to throw in my $0.02 here, too.

But this time in the other direction. Sorry Pavel.

I clearly think the DOS paths mode should remain in even for cygwin. I 
know that there are objections in cygwins top level management against 
this. Cygwin wants to have DOS path mode out as - as far as I understand 
it. Therefore I am maintaining my private version of gnumake for many 
years now with enabled DOS path mode (and some little other things). Also 
I could not see any problems building packages on cygwin for cywin with my 
version of gnumake, but I have to confess that is not my regular use case.

I believe I am using a DOS paths enabled gnumake on cygwin now for over 10 
years. Having enabled DOS pathes in gnumake makes life with non cygwin 
tools (eg. javac and other things) in makefiles a lot easier. Again this 
is my personal opinion. 

For MSYS I believe it could not be ripped out. It is IMHO vital there and 
would break it.

Roland
___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [PATCH 2/2] Do not use DOS paths on Cygwin

2013-07-30 Thread Eli Zaretskii
 Cc: bug-make@gnu.org, Pavel Fedin p.fe...@samsung.com
 From: Roland Schwingel roland.schwin...@onevision.com
 Date: Tue, 30 Jul 2013 18:29:07 +0200
 
 I clearly think the DOS paths mode should remain in even for cygwin. I 
 know that there are objections in cygwins top level management against 
 this.

When this feature was introduced for Cygwin Make, the Cygwin
maintainer didn't oppose that.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make