This is the mail archive of the cygwin-developers mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: MSYS mode (continue)


On 7/29/2013 8:49 AM, Corinna Vinschen wrote:
The question is, are they really necessary?  I seriously doubt that you
have to patch inetutils beyond what's required for Cygwin, unless you
want the kitchen sink to work with DOS paths.

They *were* necessary for msys-1, given the following:

1) msys itself was very old, and had only cygwin-1.3.4 era capabilities
2) the msys targetting compiler is to this day ALSO very old: it's based on gcc-3.4.4 if you can believe it.

Now, it is certainly true that in the new "era" with msys-on-cygwin, point #1 above is no longer applicable. And, because there really won't be an msys target compiler, just the plain old cygwin one (with -DMSYS [1] and, depending on how the msys hook dll gets loaded, perhaps -lmsys), then msys apps no longer have to work around old-gcc breakage.

But there are still some patches that will be necessary, and I'm afraid only experience will tell us which ones. My set of 151 patches to 56 packages [2] is probably the "outer limit"; some packages might be workable with no special msys changes, others might only need a small subset of what was previously necessary.

Let's go back to our favorite example, msys-make:

make/01-make-3.81-2-cygwin.patch
--------------------------------
	from cygwin's 3.81-2 package, so this is not interesting
	when we're discussing *differences* between the cygwin and
	"msys" versions

make/02-make-3.81-dos-path.patch
--------------------------------
* configure.in (PATH_SEPARATOR_CHAR): Define to the value of
  $PATH_SEPARATOR.
* make.h (PATH_SEPARATOR_CHAR): Define only if still undefined.
  Normally, it is defined in config.h.
* config/dospaths.m4 <ac_cv_dos_paths>: Define to yes on Cygwin
  as well.
* job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]:
  Define sh_chars_sh for Windows platforms that emulate Unix.

This *might* be in make-3.82.90, I'm not sure. But for msys we need to ensure that ac_cv_dos_paths is "yes", regardless of whether it is yes or no on cygwin.

make/03-make-3.81-case_preserve.patch
--------------------------------
case-insensitive but case-preserving rule matching. Pretty sure "real" cygwin doesn't want, and doesn't have, this one. Over in mingw/msys land we went round and round with "csmake" (case sensitive), "cpmake" (this one), and "regular" make, and finally decided that cpmake had the fewest drawbacks when working with "native" gcc...

make/04-make-3.81-msys.patch
--------------------------------
build system changes. In configure.in, the original AC_SUBSTs didn't do the right thing and needed to use a more modern idiom. In Makefile.am, the test driver section relied on symlinks, which are obviously broken in "old" msys.


I think we're all pretty much on the same page, that "msys" needs a special version of make. Does bash need to be different? probably. Perl...maybe??? inetutils (clients only) -- I think some of these changes^Wcripplings are necessary, regardless of the "environment" improvements that modernizing msys and its associated gcc bring. But it'll just have to be on a case-by-case basis. I've uploaded my entire msys patch collection [2] in case anyone is really crazy^Winterested...


[1] This will still be needed because of the msys-*behavioral* patches that are still going to be necessary, in some cases...

[2] http://mingw.cwilson.fastmail.fm/msys-patches.tar.xz

--
Chuck

Attachment: 02-make-3.81-dos-path.patch
Description: Text document

Attachment: 03-make-3.81-case_preserve.patch
Description: Text document

Attachment: 04-make-3.81-msys.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]