[Scons-users] Has anyone seen anything like this
Olivier, Jeffrey V
jeffrey.v.olivier at intel.com
Tue May 24 13:19:55 EDT 2022
I am building the DAOS project from github.com/daos-stack/daos and hitting the following issue
And I've noticed that when I change a header file (src/include/daos_errno.h), dependent targets do not get rebuilt (e.g. src/gurt/errno.c). The only thing that does get built is the Install builder for the file. But the other targets which add src/include to the CPPPATH do not get built. I've been trying to track down why it doesn't get rebuilt so I narrowed it down a bit by adding some of my own debug prints down in the SCons code. I found that the csig for the Include case for the same file differs from the csig for the various cases of implicit dependencies returned by the scanner.
To illustrate this, I've added these prints in SCons/Node/FS.py
3327 def changed_content(self, target, prev_ni, repo_node=None):
3328 cur_csig = self.get_csig()
3329 check = str(self) == 'src/include/daos_errno.h'
3330 if check:
3331 print("\nChecking %s" % str(self))
3332 try:
3333 if check:
3334 print(" new_sig=%s old_sig=%s changed=%s" % (cur_csig, prev_ni.csig, str(cur_csig != prev_ni.csig)))
3335 return cur_csig != prev_ni.csig
3336 except AttributeError:
3337 return 1
When I do this, I see this in the output for all of the checks for implicit dependencies:
Checking src/include/daos_errno.h
new_sig=0ffda7577e533f682945b5d4c508cdd6 old_sig=0ffda7577e533f682945b5d4c508cdd6 changed=False
But the sequence surrounding the Install builder looks like this:
Checking src/include/daos_errno.h
new_sig=b2b4b801f3f4ee78151223fa2b2d3e98 old_sig=4baa3b48b7e1cc339227b11676299434 changed=True
Checking src/include/daos_errno.h
new_sig=b2b4b801f3f4ee78151223fa2b2d3e98 old_sig=4baa3b48b7e1cc339227b11676299434 changed=Tru
Install file: "src/include/daos_errno.h" as "install/include/daos_errno.h"
As you can see, the signature for the same file differs between these two cases. Does anyone here know what might be happening here?
A few other details:
* The DAOS build uses VariantDir with duplicate=0
* CPPPATH includes src/include
I'm at a loss as to why this would happen and any help would be appreciated. I've not been able to reproduce with a simpler build. Admittedly, the DAOS build is fairly complicated as we have some optional options to prebuild a bunch of external dependencies that may not be installed.
-Jeff
______________________
Jeff Olivier, DAOS engineer
ASE/SCP/AXG/Intel
+1 720-487-7145
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20220524/ffb6fa26/attachment.htm>
More information about the Scons-users
mailing list