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