CR-LF handling behavior of SED changed recently - this breaks a lot of MinGW cross build scripts

Hans-Bernhard Bröker HBBroeker@t-online.de
Fri Jun 9 18:42:00 GMT 2017


Am 09.06.2017 um 18:56 schrieb Soegtrop, Michael:

> Maybe my situation gets clear when I describe what my use case is: I
> maintain the scripts which build the Windows installers for Coq - a
> proof assistant with a GTK based UI. This starts building a MinGW
> OCaml compiler from sources. 

You're doing this via Cygwin, i.e. on a Windows machine, where MinGW is 
a _native_ toolchain.  That begs the question: why are you doing a cross 
build in the first place?

Cross building generally means that _no_ programs built for the target 
host may ever be run by the build scripts, because they simply won't 
work.  Any attempt to do so is either a severe bug in the existing build 
setup, or the consequence of trying to coerce a build script that just 
cannot handle cross-building into doing it anyway.

So you shouldn't even be getting to any place where the output of a 
cross-target (i.e. MinGW) executable is run on the build host, and its 
output piped into a build platform (i.e. Cygwin) tool.

That means what you're trying to argue here is that an evident 
short-coming of some build setups should be fixed by breaking Cygwin 
pipes' mode of operation for everyone.  Sorry, but I don't see that 
happening.

> Cross building on Linux would be much more complicated, because on
> Linux I would no matter what need 3 OCaml variants but also 2 Coq
> variants, because I need to compile the Coq libraries, so I need to
> run Coq on the build host as well. With cygwin I can call the MinGW
> variants.

Indeed.  That is a lucky _exception_ to what you can do in a cross 
build.  But you have to pay a price for this unprecedented luxury.  The 
price is that you have to massage the output of those MinGW programs to 
follow Cygwin rules, or change the way those MinGW programs are built to 
make them follow the rules by themselves.

> I don't see another way than having sed strip away the CRs. It
> doesn't make sense to build programs intended to be run under plain
> Windows such that they do not produce CRs. 

I believe it makes much more sense than you think.  Hardly any Windows 
tool worth using actually _needs_ those CRs in the first place.

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list