Merge pull request #788 from akien-mga/scons-num_jobs-default-max

pull/687/head
Rémi Verschelde 2022-07-17 15:43:50 +02:00 committed by GitHub
commit 3ceb321b8e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 3 deletions

View File

@ -83,17 +83,17 @@ jobs:
- name: Build godot-cpp (debug) - name: Build godot-cpp (debug)
run: | run: |
scons platform=${{ matrix.platform }} target=debug generate_bindings=yes ${{ matrix.flags }} -j2 scons platform=${{ matrix.platform }} target=debug generate_bindings=yes ${{ matrix.flags }}
- name: Build test without rebuilding godot-cpp (debug) - name: Build test without rebuilding godot-cpp (debug)
run: | run: |
cd test cd test
scons platform=${{ matrix.platform }} target=debug ${{ matrix.flags }} build_library=no -j2 scons platform=${{ matrix.platform }} target=debug ${{ matrix.flags }} build_library=no
- name: Build test and godot-cpp (release) - name: Build test and godot-cpp (release)
run: | run: |
cd test cd test
scons platform=${{ matrix.platform }} target=release ${{ matrix.flags }} -j2 scons platform=${{ matrix.platform }} target=release ${{ matrix.flags }}
- name: Upload artifact - name: Upload artifact
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3

View File

@ -30,6 +30,24 @@ else:
env = Environment(tools=["default"]) env = Environment(tools=["default"])
# Default num_jobs to local cpu count if not user specified.
# SCons has a peculiarity where user-specified options won't be overridden
# by SetOption, so we can rely on this to know if we should use our default.
initial_num_jobs = env.GetOption("num_jobs")
altered_num_jobs = initial_num_jobs + 1
env.SetOption("num_jobs", altered_num_jobs)
if env.GetOption("num_jobs") == altered_num_jobs:
cpu_count = os.cpu_count()
if cpu_count is None:
print("Couldn't auto-detect CPU count to configure build parallelism. Specify it with the -j argument.")
else:
safer_cpu_count = cpu_count if cpu_count <= 4 else cpu_count - 1
print(
"Auto-detected %d CPU cores available for build parallelism. Using %d cores by default. You can override it with the -j argument."
% (cpu_count, safer_cpu_count)
)
env.SetOption("num_jobs", safer_cpu_count)
platforms = ("linux", "osx", "windows", "android", "ios", "javascript") platforms = ("linux", "osx", "windows", "android", "ios", "javascript")
opts = Variables([], ARGUMENTS) opts = Variables([], ARGUMENTS)
opts.Add( opts.Add(