diff --git a/.gitea/workflows/build-engine.yaml b/.gitea/workflows/build-engine.yaml index d01a2594b38..c5c43384dab 100644 --- a/.gitea/workflows/build-engine.yaml +++ b/.gitea/workflows/build-engine.yaml @@ -1,16 +1,16 @@ name: Build Godot Engine on: push: - branches: [ "customized-moa" ] + branches: ["customized-moa"] create: tags: - - 'v*' + - "v*" jobs: build-windows: name: Build Windows ${{ matrix.name }} runs-on: ubuntu-latest - + # Run the entire job inside your new builder container container: image: gitea.212.63.210.91.nip.io/${{ gitea.repository_owner }}/godot-builder:1b1355e7829467917b66c582268b26159d8ae21c @@ -19,24 +19,34 @@ jobs: username: ${{ gitea.actor }} password: ${{ secrets.USER_PACKAGE_PASSWORD }} # Note: If this fails to pull due to SSL, we may need to use a 'docker run' step approach instead. - + strategy: fail-fast: false matrix: include: - # 1. The Editor (The IDE) + # Linux Editor Build (Easy Mode) + - name: Linux Editor + target: editor + # platform=linuxbsd is the key + platform: linuxbsd + production: yes + artifact_name: godot-linux-editor + # Linux builds don't use the .exe extension + ext: "" + + # Windows Editor - name: Editor target: editor production: yes artifact_name: godot-windows-editor - - # 2. Debug Template (For testing game logic) + + # Windows Debug Template (For testing game logic) - name: Debug Template target: template_debug production: no artifact_name: godot-windows-debug - - # 3. Release Template (For final export) + + # Windows Release Template (For final export) - name: Release Template target: template_release production: yes @@ -48,12 +58,22 @@ jobs: with: submodules: recursive + # NEW STEP: Patch the build file to force linking HID + - name: Patch SCons for Fedora + run: | + # Find the line defining LIBS and inject 'hid' and 'setupapi' + # This ensures they come AFTER the object files + sed -i "s/env.Append(LIBS=\['mingw32'/env.Append(LIBS=\['mingw32', 'hid', 'setupapi'/" platform/windows/detect.py + + # Optional: Verify the change + grep "env.Append(LIBS=" platform/windows/detect.py + - name: Compile with SCons run: | # --- SMART CORE DETECTION --- # Default to hardware limit if no quota is found REAL_CORES=$(nproc) - + # Check Cgroup V2 (Fedora / Modern K8s) if [ -f /sys/fs/cgroup/cpu.max ]; then # Read quota and period (e.g., "700000 100000") @@ -62,7 +82,7 @@ jobs: # Calculate limit: Quota / Period (e.g., 700000 / 100000 = 7) REAL_CORES=$(( QUOTA / PERIOD )) fi - + # Check Cgroup V1 (Older K8s / Docker) elif [ -f /sys/fs/cgroup/cpu/cpu.cfs_quota_us ]; then QUOTA=$(cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us) @@ -71,15 +91,15 @@ jobs: REAL_CORES=$(( QUOTA / PERIOD )) fi fi - + # Safety: Ensure we use at least 1 core if [ "$REAL_CORES" -lt 1 ]; then REAL_CORES=1; fi - + echo "Hardware has $(nproc) cores. Container limit is ${REAL_CORES} cores." # ----------------------------- echo "Compiling ${{ matrix.name }}..." - + # Godot 4 SCons Command nice -n 10 scons platform=windows \ target=${{ matrix.target }} \ @@ -98,4 +118,4 @@ jobs: with: name: ${{ matrix.artifact_name }} # Corrected from *.dll to *.exe (Godot templates are executables) - path: bin/*.exe \ No newline at end of file + path: bin/*.exe