Browse Source

SCons: Bump min version to 3.1.2, test it on CI with one Linux job

The min SCons version had to be bumped as SCons 3.0 before 3.0.3 seems
broken (see #92043), and there's little gain from supporting 3.0.3-3.0.5.

3.1.2 is also the first version to avoid ambiguities between Python 2
and Python 3 usage, so we finally use it as the minimum baseline.

Also test against Python 3.6 which is also our minimum supported version.
This should help prevent regressions whenever we modernize the build scripts.
Rémi Verschelde 1 year ago
parent
commit
a63c37dca1

+ 2 - 2
.github/actions/godot-build/action.yml

@@ -13,10 +13,10 @@ inputs:
   sconsflags:
   sconsflags:
     default: ""
     default: ""
   scons-cache:
   scons-cache:
-    description: The scons cache path.
+    description: The SCons cache path.
     default: "${{ github.workspace }}/.scons-cache/"
     default: "${{ github.workspace }}/.scons-cache/"
   scons-cache-limit:
   scons-cache-limit:
-    description: The scons cache size limit.
+    description: The SCons cache size limit.
     # actions/cache has 10 GiB limit, and GitHub runners have a 14 GiB disk.
     # actions/cache has 10 GiB limit, and GitHub runners have a 14 GiB disk.
     # Limit to 7 GiB to avoid having the extracted cache fill the disk.
     # Limit to 7 GiB to avoid having the extracted cache fill the disk.
     default: 7168
     default: 7168

+ 3 - 3
.github/actions/godot-cache/action.yml

@@ -5,13 +5,13 @@ inputs:
     description: The cache base name (job name by default).
     description: The cache base name (job name by default).
     default: "${{github.job}}"
     default: "${{github.job}}"
   scons-cache:
   scons-cache:
-    description: The scons cache path.
+    description: The SCons cache path.
     default: "${{github.workspace}}/.scons-cache/"
     default: "${{github.workspace}}/.scons-cache/"
 runs:
 runs:
   using: "composite"
   using: "composite"
   steps:
   steps:
-    # Upload cache on completion and check it out now
-    - name: Load .scons_cache directory
+    # Upload cache on completion and check it out now.
+    - name: Load SCons cache directory
       uses: actions/cache@v4
       uses: actions/cache@v4
       with:
       with:
         path: ${{inputs.scons-cache}}
         path: ${{inputs.scons-cache}}

+ 12 - 9
.github/actions/godot-deps/action.yml

@@ -1,27 +1,30 @@
-name: Setup python and scons
-description: Setup python, install the pip version of scons.
+name: Setup Python and SCons
+description: Setup Python, install the pip version of SCons.
 inputs:
 inputs:
   python-version:
   python-version:
-    description: The python version to use.
+    description: The Python version to use.
     default: "3.x"
     default: "3.x"
   python-arch:
   python-arch:
-    description: The python architecture.
+    description: The Python architecture.
     default: "x64"
     default: "x64"
+  scons-version:
+    description: The SCons version to use.
+    default: "4.7.0"
 runs:
 runs:
   using: "composite"
   using: "composite"
   steps:
   steps:
-    # Use python 3.x release (works cross platform)
     - name: Set up Python 3.x
     - name: Set up Python 3.x
       uses: actions/setup-python@v5
       uses: actions/setup-python@v5
       with:
       with:
-        # Semantic version range syntax or exact version of a Python version
+        # Semantic version range syntax or exact version of a Python version.
         python-version: ${{ inputs.python-version }}
         python-version: ${{ inputs.python-version }}
-        # Optional - x64 or x86 architecture, defaults to x64
+        # Optional - x64 or x86 architecture, defaults to x64.
         architecture: ${{ inputs.python-arch }}
         architecture: ${{ inputs.python-arch }}
 
 
-    - name: Setup scons
+    - name: Setup SCons
       shell: bash
       shell: bash
       run: |
       run: |
         python -c "import sys; print(sys.version)"
         python -c "import sys; print(sys.version)"
-        python -m pip install scons==4.7.0
+        python -m pip install wheel
+        python -m pip install scons==${{ inputs.scons-version }}
         scons --version
         scons --version

+ 1 - 1
.github/workflows/android_builds.yml

@@ -32,7 +32,7 @@ jobs:
         uses: ./.github/actions/godot-cache
         uses: ./.github/actions/godot-cache
         continue-on-error: true
         continue-on-error: true
 
 
-      - name: Setup python and scons
+      - name: Setup Python and SCons
         uses: ./.github/actions/godot-deps
         uses: ./.github/actions/godot-deps
 
 
       - name: Compilation (arm32)
       - name: Compilation (arm32)

+ 2 - 2
.github/workflows/godot_cpp_test.yml

@@ -22,7 +22,7 @@ jobs:
         with:
         with:
           submodules: recursive
           submodules: recursive
 
 
-      - name: Setup python and scons
+      - name: Setup Python and SCons
         uses: ./.github/actions/godot-deps
         uses: ./.github/actions/godot-deps
 
 
       # Checkout godot-cpp
       # Checkout godot-cpp
@@ -47,7 +47,7 @@ jobs:
           cp -f godot-api/gdextension_interface.h godot-cpp/gdextension/
           cp -f godot-api/gdextension_interface.h godot-cpp/gdextension/
           cp -f godot-api/extension_api.json godot-cpp/gdextension/
           cp -f godot-api/extension_api.json godot-cpp/gdextension/
 
 
-      # TODO: Add caching to the scons build and store it for CI via the godot-cache
+      # TODO: Add caching to the SCons build and store it for CI via the godot-cache
       # action.
       # action.
 
 
       # Build godot-cpp test extension
       # Build godot-cpp test extension

+ 1 - 1
.github/workflows/ios_builds.yml

@@ -26,7 +26,7 @@ jobs:
         uses: ./.github/actions/godot-cache
         uses: ./.github/actions/godot-cache
         continue-on-error: true
         continue-on-error: true
 
 
-      - name: Setup python and scons
+      - name: Setup Python and SCons
         uses: ./.github/actions/godot-deps
         uses: ./.github/actions/godot-deps
 
 
       - name: Compilation (arm64)
       - name: Compilation (arm64)

+ 12 - 1
.github/workflows/linux_builds.yml

@@ -58,6 +58,8 @@ jobs:
             tests: true
             tests: true
             # Skip 2GiB artifact speeding up action.
             # Skip 2GiB artifact speeding up action.
             artifact: false
             artifact: false
+            # Test our oldest supported SCons/Python versions on one arbitrary editor build.
+            legacy-scons: true
 
 
           - name: Editor with ThreadSanitizer (target=editor, tests=yes, dev_build=yes, use_tsan=yes, use_llvm=yes, linker=lld)
           - name: Editor with ThreadSanitizer (target=editor, tests=yes, dev_build=yes, use_tsan=yes, use_llvm=yes, linker=lld)
             cache-name: linux-editor-thread-sanitizer
             cache-name: linux-editor-thread-sanitizer
@@ -115,9 +117,18 @@ jobs:
           cache-name: ${{ matrix.cache-name }}
           cache-name: ${{ matrix.cache-name }}
         continue-on-error: true
         continue-on-error: true
 
 
-      - name: Setup python and scons
+      - name: Setup Python and SCons
+        if: ${{ ! matrix.legacy-scons }}
         uses: ./.github/actions/godot-deps
         uses: ./.github/actions/godot-deps
 
 
+      - name: Setup Python and SCons (legacy versions)
+        if: ${{ matrix.legacy-scons }}
+        uses: ./.github/actions/godot-deps
+        with:
+          # Sync with Ensure*Version in SConstruct.
+          python-version: 3.6
+          scons-version: 3.1.2
+
       - name: Setup GCC problem matcher
       - name: Setup GCC problem matcher
         uses: ammaraskar/gcc-problem-matcher@master
         uses: ammaraskar/gcc-problem-matcher@master
 
 

+ 1 - 1
.github/workflows/macos_builds.yml

@@ -43,7 +43,7 @@ jobs:
           cache-name: ${{ matrix.cache-name }}
           cache-name: ${{ matrix.cache-name }}
         continue-on-error: true
         continue-on-error: true
 
 
-      - name: Setup python and scons
+      - name: Setup Python and SCons
         uses: ./.github/actions/godot-deps
         uses: ./.github/actions/godot-deps
 
 
       - name: Setup Vulkan SDK
       - name: Setup Vulkan SDK

+ 1 - 1
.github/workflows/web_builds.yml

@@ -58,7 +58,7 @@ jobs:
           cache-name: ${{ matrix.cache-name }}
           cache-name: ${{ matrix.cache-name }}
         continue-on-error: true
         continue-on-error: true
 
 
-      - name: Setup python and scons
+      - name: Setup Python and SCons
         uses: ./.github/actions/godot-deps
         uses: ./.github/actions/godot-deps
 
 
       - name: Compilation
       - name: Compilation

+ 1 - 1
.github/workflows/windows_builds.yml

@@ -48,7 +48,7 @@ jobs:
           cache-name: ${{ matrix.cache-name }}
           cache-name: ${{ matrix.cache-name }}
         continue-on-error: true
         continue-on-error: true
 
 
-      - name: Setup python and scons
+      - name: Setup Python and SCons
         uses: ./.github/actions/godot-deps
         uses: ./.github/actions/godot-deps
 
 
       - name: Download Direct3D 12 SDK components
       - name: Download Direct3D 12 SDK components

+ 1 - 1
SConstruct

@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #!/usr/bin/env python
 
 
-EnsureSConsVersion(3, 0, 0)
+EnsureSConsVersion(3, 1, 2)
 EnsurePythonVersion(3, 6)
 EnsurePythonVersion(3, 6)
 
 
 # System
 # System