Date: Sun, 26 Jan 1997 17:18:51 +0200 (IST) From: Eli Zaretskii To: Daisuke Aoyama cc: DJGPP WORKERS , DJ Delorie Subject: RE: Configure scripts In-Reply-To: <199701241702.CAA15303@mail.st.rim.or.jp> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sat, 25 Jan 1997, Daisuke Aoyama wrote: > Eli Zaretskii wrote: > > > * change "test -f" to "test -x" > > * fix any filenames illegal on MSDOS (like config.h.in) > > Where did you modify? > In my case, configure script was not modified. That's because you defined $CC and other environment variables, so the script used their values instead of searching the $PATH. I deliberately didn't set these variables, because I wanted to see if it will work that way. When I change `test -f' to `test -x', it does--almost (see below). > But I found a problem > about detection. configure sctipt searches time_t declaration in > sys/types.h. In DJGPP, it has no declaration. includes which has a macro to declare time_t, but doesn't invoke that macro. DJ, is that an omission? If not, then the configure script that you are trying to run (from bash, right?) is just looking in the wrong place. However, I think I've found a serious shortcoming of the feature which converts d:/path into //d/path. The problem is only visible when you have more than a single disk drive, and some of the directories on your $PATH are on a drive other than the current drive. Suppose I have C: and D:, and my PATH is thus: PATH=C:\BIN;D:\DJGPP\BIN and suppose I'm running configure script from a directory on drive C:, and further suppose that I've set thus: set SYSROOT=c: set PATH_SEPARATOR=: (these are a must if you need to run configure scripts). Now, the $PATH inside bash is converted like so: PATH=/bin://d/djgpp/bin So far, so good. Now configure starts looking for gcc in every directory on the PATH. If my gcc.exe is in d:/djgpp/bin, the script won't find it, because when you call `stat' with a filename like "//d/djgpp/bin/gcc.exe", it fails, since the DJGPP library knows nothing about such pathnames. So, for this nifty feature to really work, bash needs to convert the pathnames back to their usual form before passing it to any built-in commands or programs invoked by bash. Otherwise, some complex scripts would fail unless you work on a single-drive machine (or use JOIN trickery to make a drive look as a subdirectory). I realize that this might be very hard to fix, but I think this is a serious problem that should be corrected even if the cost is high.