This is the mail archive of the cygwin 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] |
Cyg ver: 1.3.10 (although I have reproduced the same problem with 1.5.7) OS : Windows 2000 File system: MVFS (running gnumake inside a Rational Clearcase dynamic view) cygcheck: (See attached file: cygcheck.out) When running the cygwin 1.3.10 make utility inside a Clearcase dynamic view (MVFS file system), we are seeing random and intermittent failures on directory stats, which result in "file not found" errors during gnumake dependency checking, even though the files do exist, and a valid vpath directive points to the existing file. In our build environment, we have a very large dependency list for a large number of dlls in a single makefile, which looks something like this: vpath %.a . $(TOPR) $(SRCTOP_GNU) - which would expand to: vpath . ../.. /cygdrive/m/top lib1.dll : component1/subdir1/archive1.a component1/subdir2/archive1.a (etc.) In the above example, $(TOPR) and $(SRCTOP_GNU) both point to the same directory, which is the parent of component1. /cygdrive/m/top/component1/subdir1/archive1.a is a valid path. Also, the target dlls are all generated into component1/lib. In total, we have about 150 dlls that each contain anywhere from 1 to a max of about 100 object archive files. In some Clearcase views, we get "file not found" errors during dependency checking for files that really do exist. The file stat failure always occurs on the same file when building in the same working directory in the same view. The failures are not consistent across different views, however, and they are also not consistent from different working directories in the same view. For instance, we may run gnumake from a working directory of component1/lib and get erroneous "file not found" errors for component1/subdir1/archive1.a. If we then run make from component1/subdir1 (directory containing the file that failed to be found), then the build may succeed, or it may result in "file not found" errors for archives from a different directory. As well, if the dll with the failing file stat contains a small number of archives, gnumake all may fail, but gnumake small.dll will work. Then, even after the dll exists, bld all will fail during the dependency check again. After extensively scanning the MVFS logs for file access attempts, we have determined that, in a failing case, the cygwin make fails to recognize subdir# as a directory, even though this is a valid directory element of clearcase. The failing case shows the vpah search in . failing, then the vpath search from $(TOPR) failing to search past the subdir# directory. The MVFS logs show the make tool issuing a GENERIC_READ operation on that directory instead of a READ_DATA/LIST_DIRECTORY operation. I have tried a few vpath modifications, and we were able to identify one that worked, even though it is using a path that is not supported by cygwin. As shown above, using vpath . ../.. /cygdrive/m/top fails, even though it should work. Using vpath . /cygdrive/m/top fails with the same errors as above. However, vpath . M:/top succeeds in the dependency check, even though M:/top should apparently be written as /cygdrive/m/top to comply to cygwin standards. From the MVFS logs, it appears as though the cygwin vpath implementation ends up dropping the M: drive letter, and the path matched by make is /top/component1/subdir1/archive1.a. Unfortunately, since this starts with a forward slash, this then requires further processing to pass this to a linker, because the linker will interpret it as a linker option if it starts with a forward slash. It appears as though there is a problem using the /cygdrive/m type paths inside MVFS when there are extremely large dependency trees. Jeremy Broughton
Attachment:
cygcheck.out
Description: Binary data
-- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |