This is the mail archive of the cygwin-apps 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]

[BUG] SCons 2.3.0 sometimes cannot find files


 Hello! I have found a Cygwin-specific bug in current sconstruct. The
problem is that under certain conditions it fails to find sconscript files
nested deeply in the source tree.
 I have spent several hours tracing this problem. It ended up in
entry_exists_on_disk() method in Node/FS.py. Unfortunately i almost don't
understand sconstruct, so i cannot write sconscript tree to reproduce this.
And this is proprietary project so i cannot post parts of it. However, i
have made a reduced test case (attached). This is the broken method
extracted from original file plus some quickly hacked up code needed to make
it working. If you run it on Cygwin it will report FAIL.
 The problem lies in Cygwin-specific filename case normalization. Please
take a look at _my_normcase() implementation, the comment above describes
its purpose pretty well. So, the function reads list of files in current
directory and remembers their NORMALIZED versions in a hash. But in the end
the function just attempts to fetch 'name in d', where 'name' is NOT
normalized. This perfectly works on case-sensitive UNIX but on Cygwin it
fails.
 The solution is to move 'name = _my_normcase(name)' conversion to the place
before checking sys.platform, so that both branches use normalized version.
Because Cygwin is not 'win32'.

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia




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