From: Suresh G. <sgo...@ya...> - 2007-09-29 16:29:48
|
Keith Marshall wrote: > On Sat, 2007-09-29 at 08:45 -0400, Earnie Boyd wrote: > >> Fact: I want tools that pay attention to the case of its >> arguments and commands even in a case insensitive file system. >> Argument to this fact is futile. > > IMO, your logic is flawed. The file system *is* case > insensitive; any tool which believes that it can change this > fundamental reality, by *pretending* that it is otherwise, is > broken. This isn't an argument against the fact. That you > *want* the broken behaviour is your choice; you are welcome to > collect as many broken pieces as you wish. One doesn't judge metaphysical facts such as gravity or a mountain -- these are neither right nor wrong, they just are. In contrast, man-made facts such as buildings and opinions can be right or wrong and should be judged. Keith is arguing that Ernie's desire is in a context (of case insensitive filesystem) that does not warrant such a desire. >> Fact: You want tools that do not pay attention to the case of >> its arguments and commands especially in a case insensitive >> file system. Argument to this fact is futile. > > No, this is not what I want, at all. What I want is tools which > DTRT, whether the file system is case sensitive or not. Good -- here Keith argues that his opinion is not arbitrary but is based on some fundamental principle (DTRT). > I recognise that some file systems are case sensitive and some > are not; I adapt my working practices to accommodate both. MSYS > make-3.79.1 has never completely done TRT, simply because it has > refused to understand that it has no choice but to recognise > that it has got to work with a case insensitive file system; > Chuck's build of make-3.81 has corrected that deficiency. > >> Given these two facts we must agree to compromise. > > Sure. Life is all about compromise; I don't have any problem > here. > >> The best compromise I've seen offered in this thread was to >> include a runtime switch or environment setting to control its >> operation. Below, Keith properly recognizes that a runtime switch/setting will not resolve the disagreement -- a runtime switch/setting will just move the disagreement to what should be the default behavior. > The best compromise is simply to provide two separate builds, > one offering each behaviour, and you choose whichever you > prefer. If you can't decide, you can always install both, with > two distinct names for the executables, then use say `csmake' > for your pseudo-case-sensitive version, or `cimake' for the > case-insensitive. Why make it any more complex? If you really > want a `--case-sensitivity=on|off' switch, a simple wrapper > script can provide it -- and it can check for a default set via > the environment. IMO however, that's just overkill. > >> I have strong opinions that tools that allow the user to misuse >> the case insensitive file system fact are broken. > > Yet, you argue the case for providing the broken tool, in > preference to the sane! So: Earnie has "strong opinions that tools that allow the user to misuse the case insensitive file system fact are broken" and yet he wants a make that misuses the case insensitive file system (by pretending that the file system is not case insensitive). >> Therefore the tools so far have considered foo != FOO even >> though the file system thinks so. > > The file system, by definition, *must* be correct! The tools > which pretend otherwise are broken. > >> I can agree to the above compromise however because I can still >> therefore enforce my opinion while at the same time you can >> enforce your opinion. > > It isn't about enforcement; it is about choice. I can happily > agree to this compromise because it allows you to have the > behaviour you prefer, no matter how insane I consider your > choice, while I too can have what I consider correct, even if > you think I am crazy. My understanding of the purpose of MinGW is that it is for porting applications such as vim, cdrtools, rsync, ctags, global, gnuplot, perl etc. to OSes such as windows while using the native libraries of the target OSes -- with the resulting application working just like any other application for that OS. (The purpose of MinGW is _not_ to build MSYS applications -- in fact, MinGW can be used without MSYS; the purpose of MinGW is not to team up with MSYS and become some type of VMWare.) Doesn't the purpose of MinGW clearly dictate that make be case insensitive? Consider the example Keith gave in a recent post: KM> No, I don't expect people to write their makefiles in such KM> an inconsistent manner. However, I *do* expect: KM> KM> $ cat Makefile KM> : KM> %.txt: %.app KM> tcsmake $<,$@,libforth.txt\; KM> : KM> KM> $ make totheat.txt KM> KM> to work, when totheat.app exists on disk, (even though it KM> may have come from an original legacy MS-DOS system, its KM> real name on disk is actually TOTHEAT.APP, and to compound KM> the confusion Win95-Explorer showed it as Totheat.app). > Chuck, I haven't figured out how to cross-compile MSYS > components on a GNU/Linux build machine; could you please > prepare an alternative build with > `--disable-case-insensitive-file-system', for the lunatics who > wish to stay in the asylum? I'm open to suggestions as to what > this should be called; I still believe that > `--enable-case-insensitive-file-system' should remain the > default deliverable, and this alternative optional. There needs to be a decision for the following too: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=1804659&group_id=2435 --Suresh |