Re: SCons bug when combining CacheDir and MSVC_BATCH
Mats Wichmann <[email protected]> Wed, 24 May 2023 08:48:56 -0600
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <[email protected]> |
On 5/24/23 06:24, Steve Hill (Wireless) via Scons-users wrote: > All, > > We have recently switched on CacheDir in our CI machine and, while this > has largely been a positive experience, we have seen the odd link > failure that we could not explain. I was eventually able to reproduce > the issue and produce a minimal SConstruct that illustrates the problem. Something's broken here. I've tried to trace this a little bit and it looks like things can get removed after they're retrieved. There are other oddities too, in your rebuild log: > Retrieved `build1\main.obj' from cache > cl /Fobuild1\\ /c src\main.c src\foo.c /nologo > main.c > foo.c > Generating Code... If there are two sources, but one object is up to date, SCons should not calculate a batched build is needed, in other words it should have emitted: cl /Fobuild1\foo.o /c src\foo.c /nologo > Would you like me to raise an issue on GitHub for this? I'd say yes, but not being wise in the ways of MSVC_BATCH maybe there's something I'm missing. Can you try a couple of tweaks to your reproducer (thanks for taking the time to come up with one!) while you're at things? 1) put the MSVC_BATCH initialization in the Environment call. The msvc tool is notoriously sensitive to getting its initialization wrong if it doesn't have all its details in hand when it runs. No idea if that moves the goalposts but worth trying. 2) turn on some debugging - add --cache-debug=- (the dash argument sends the debug to the console) MSVC_BATCH has several issues already in the tracker about interaction with things, didn't look to me like any of them were likely this issue, though.