RE: [PATCH 2/2] Do not use DOS paths on Cygwin
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
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
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
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
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
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
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
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
[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
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
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
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
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
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
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
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
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
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