[SERVER-47431] Ninja re-generates the `build.ninja` module at first invocation after scons.py Created: 09/Apr/20  Updated: 04/May/20  Resolved: 24/Apr/20

Status: Closed
Project: Core Server
Component/s: Build
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Kaloian Manassiev Assignee: Andrew Morrow (Inactive)
Resolution: Cannot Reproduce Votes: 3
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Operating System: ALL
Sprint: Dev Platform 2020-05-04
Participants:

 Description   

If I run the following command it will take some time in order to generate the build.ninja module (which is understandable):

[kaloianm@Kal-MacBook-Pro:~/workspace/mongo]$ buildscripts/scons.py --ssl --variables-files=etc/scons/xcode_macosx.vars --libc++ --detect-odr-violations --dbg=on --opt=off VARIANT_DIR=ninja --ninja build.ninja
scons: Reading SConscript files ...
scons: running with args /usr/local/opt/python/bin/python3.7 buildscripts/scons.py --ssl --variables-files=etc/scons/xcode_macosx.vars --libc++ --detect-odr-violations --dbg=on --opt=off VARIANT_DIR=ninja --ninja build.ninja
Using variable customization file etc/scons/xcode_macosx.vars
scons version: 3.1.2
python version: 3 7 7 'final' 0
...
scons: done reading SConscript files.
scons: Building targets ...
Generating: build.ninja
scons: done building targets.

However, if I run ninja core for example immediately after that, it again takes some time doing the same thing that the SCons invocation above did (and it seems to do it twice):

[kaloianm@Kal-MacBook-Pro:~/workspace/mongo]$ ninja core
[0/3856] Regenerating /Users/kaloianm/workspace/mongo/build.ninja
scons: Reading SConscript files ...
scons: running with args /usr/local/opt/python/bin/python3.7 buildscripts/scons.py --ssl --variables-files=etc/scons/xcode_macosx.vars --libc++ --detect-odr-violations --dbg=on --opt=off VARIANT_DIR=ninja --ninja build.ninja
Using variable customization file etc/scons/xcode_macosx.vars
scons version: 3.1.2
python version: 3 7 7 'final' 0
... (all the scons checks here)
Checking for KRB5 Features...no
scons: done reading SConscript files.
scons: Building targets ...
Generating: build.ninja
scons: done building targets.
[1/3856] Rendering build/ninja/third_party/wiredtiger/wiredtiger.h build/ninja/mongo/util/version_constants.h build/ninja/mongo/config.h
scons: Reading SConscript files ...
scons: running with args /usr/local/opt/python/bin/python3.7 buildscripts/scons.py --ssl --variables-files=etc/scons/xcode_macosx.vars --libc++ --detect-odr-violations --dbg=on --opt=off VARIANT_DIR=ninja --ninja __NINJA_NO=1 build/ninja/third_party/wiredtiger/wiredtiger.h build/ninja/mongo/util/version_constants.h build/ninja/mongo/config.h
Using variable customization file etc/scons/xcode_macosx.vars
scons version: 3.1.2
python version: 3 7 7 'final' 0
... (again all the scons checks here)
Checking for KRB5 Features...no
scons: done reading SConscript files.
scons: Building targets ...
Creating 'build/ninja/third_party/wiredtiger/wiredtiger.h'
Creating 'build/ninja/mongo/util/version_constants.h'
scons: `build/ninja/mongo/config.h' is up to date.
scons: done building targets.
[302/3856] Compiling build/ninja/mongo/util/net/ssl_options_server.o^C
ninja: build stopped: interrupted by user.

This seems unnecessary and it would be great if we can avoid it (also, I confirmed that it doesn't happen with the old ninja builder).



 Comments   
Comment by Kaloian Manassiev [ 24/Apr/20 ]

Confirming that this does not reproduce anymore:

[kaloianm@Kal-MacBook-Pro:~/workspace/mongo]$ buildscripts/scons.py --ssl --variables-files=etc/scons/xcode_macosx.vars --libc++ --detect-odr-violations --dbg=on --opt=off --ninja VARIANT_DIR=ninja build.ninja
scons: Reading SConscript files ...
...
scons: Building targets ...
Generating: build.ninja
scons: done building targets.
[kaloianm@Kal-MacBook-Pro:~/workspace/mongo]$ ninja core
[218/3856] Rendering build/ninja/third_party/wiredtiger/wiredtiger.h build/ninja/mongo/util/version_constants.h build/ninja/mongo/config.h
scons: Reading SConscript files ...
...
scons: Building targets ...
Creating 'build/ninja/third_party/wiredtiger/wiredtiger.h'
Creating 'build/ninja/mongo/util/version_constants.h'
Creating 'build/ninja/mongo/config.h'
scons: done building targets.
[438/3856] Archiving build/ninja/third_party/libshim_allocator.a

Comment by Andrew Morrow (Inactive) [ 23/Apr/20 ]

kaloian.manassiev - I am unable to reproduce this on master as of today, using either --ninja or --ninja=next on macOS or linux, with or without the enterprise module. Could you please retest to see if this is still happening in your environment? Please note that one invocation of SCons from within the Ninja run is expected, so it can generate files like config.h which only SCons knows how to produce, but the other SCons invocation to regenerate build.ninja is not expected. Please let me know if you still see that happening.

Generated at Thu Feb 08 05:14:10 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.