Issue 69943 - cygwin dmake: .DIRCACHE cannot handle d:/bla notation
Summary: cygwin dmake: .DIRCACHE cannot handle d:/bla notation
Status: CLOSED FIXED
Alias: None
Product: Build Tools
Classification: Code
Component: dmake (show other issues)
Version: current
Hardware: All Windows, all
: P3 Trivial (vote)
Target Milestone: ---
Assignee: hjs
QA Contact: issues@tools
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-09-28 14:20 UTC by hjs
Modified: 2013-08-07 15:34 UTC (History)
2 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description hjs 2006-09-28 14:20:56 UTC
looks like there is a conversion to absulute path for each file. that conversion
fails to detect that a file already is given with absolute path and thus
prepends $pwd in cygwin notation.

by default, .DIRCACHE is currently disabled anyway...
btw.: short tests showed that that .DIRCACHE gives speedup in odk/pack/copying
but slowdown in sc/sourc/ui/view !? (cygwin)
Comment 1 hjs 2006-09-28 14:22:19 UTC
too many interrupts...
Comment 2 quetschke 2006-09-28 15:15:00 UTC
First of all:
> .DIRCACHE cannot handle d:/bla notation
Certainly not, the directory cache stores the return value of readdir(),
they are in cygwin/POSIX format. Normalizing of the targets will take care
of this problem (issue 69742). Upper/lower case differences are addressed by
issue 69814.

> btw.: short tests showed that that .DIRCACHE gives speedup in odk/pack/copying
> but slowdown in sc/sourc/ui/view !? (cygwin)

As the 
  while((direntp=readdir(dirp)) != NULL) { ... }
loop from the directory caching stats *every* file in that directory, I can
imagine that there is a tradeoff between statting everything (that's slow) but
subsequent stats are fast and the non-caching alternative: Let stat() search
for the file and then stat it.
Comment 3 quetschke 2006-09-28 16:10:45 UTC
I missed the first part.
> looks like there is a conversion to absulute path for each file. that
> conversion fails to detect that a file already is given with absolute path
> and thus prepends $pwd in cygwin notation.

Yes, BuildPath() is to blame. Currently it doesn't understand DOS paths, I
already have a better implementation.
Comment 4 quetschke 2006-10-07 20:41:19 UTC
I hope this is fixed in issue 69742.

Ause, can you verify this?
Comment 5 quetschke 2006-11-10 03:25:46 UTC
Added a testcase to check directory caching with DOS style path
targets on cygwin dmake to dmake47.

Please verify.
Comment 6 hjs 2007-01-17 17:53:26 UTC
.
Comment 7 hjs 2007-01-23 14:47:08 UTC
seen in MWS