[Scons-users] Has anyone seen anything like this

Daniel Moody dmoody256 at gmail.com
Wed May 25 04:31:12 EDT 2022


It looks like your configure checks are checking headers which include the
daos_errno.h file. SCons configure checks run a mini build for each
configure check and update node state information. In this case the
configure check is updating the node state information for that header to
always be up to date because the related configure checks are complete,
however it doesn't seem to update any signature information. You can verify
the configure checks are the ones messing with the state of this file by
clearing the node info after the configure checks run, and now your header
file will correctly cause rebuilds:

diff --git a/src/SConscript b/src/SConscript
index b24cb0d22..98543e49c 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -116,6 +116,7 @@ def scons():
             if not config.CheckHeader(os.path.join('gurt', header)):
                 broken_includes = True
         config.Finish()
+        env.File('#src/include/daos_errno.h').clear()

         if broken_includes:
             print("Broken local header files, cannot continue")
diff --git a/src/cart/SConscript b/src/cart/SConscript
index 260901a56..d8a250404 100644
--- a/src/cart/SConscript
+++ b/src/cart/SConscript
@@ -114,6 +114,7 @@ def scons():
             if not config.CheckHeader(os.path.join('cart', header)):
                 broken_includes = True
         config.Finish()
+        env.File('#src/include/daos_errno.h').clear()

         if broken_includes:
             print("Broken local header files, cannot continue")

This is probably a bug in SCons, but you may be skirting the line by
running configure checks on your own build files.

On Tue, May 24, 2022 at 6:48 PM Mats Wichmann <mats at wichmann.us> wrote:

> On 5/24/22 13:03, Olivier, Jeffrey V wrote:
> > I have tried such things in the past but haven't found them very
> > helpful.  This is the only output related to daos_errno.h
> >
> > scons: rebuilding `install/include/daos_errno.h' because:
> >            `src/include/daos_errno.h' is no longer a dependency
> >            `src/include/daos_errno.h' is a new dependency
> > Install file: "src/include/daos_errno.h" as
> "install/include/daos_errno.h"
> >
> > There is nothing related to any other file that depends on this.   As
> > for your other question, no, it's not a generated header file, just a
> > source file.
>
> In addition to what Bill said (check ordering consistency, since the
> build line is hashed and checked in rebuild determintion)... this is a
> known problem of the (entirely separate) explain code - it can falsely
> report this removed/added dep thing when that's not the reason for the
> rebuild at all.    Since we don't have a reliable repro, I'm unsure if
> my stashed rework of the explain code actually fixes the problem - might
> hit you up on that front.  It won't help your issue, explain getting
> confused is not why your build is misbehaving.
>
> For completeness of data, are you using variant directories in your build?
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20220525/2130dfb7/attachment.htm>


More information about the Scons-users mailing list