Re-enable native builds

This commit is contained in:
Leroy Hopson 2024-02-13 15:22:16 +13:00
parent 4b7408a4d1
commit 420c774a43
No known key found for this signature in database
GPG key ID: D2747312A6DB51AA
4 changed files with 56 additions and 65 deletions

View file

@ -1,32 +0,0 @@
name: Cache dependencies
inputs:
platform:
required: true
target:
required: true
bits:
required: true
outputs:
cache-hit:
value: ${{ steps.cache.outputs.cache-hit }}
runs:
using: "composite"
steps:
- name: Hash submodule revisions
id: hash
working-directory: addons/godot_xterm/native/thirdparty
shell: bash
run: |
cache_version=1 # Increment this number to invalidate the cache.
godot_cpp_rev=$(git ls-tree HEAD godot-cpp --object-only)
libuv_rev=$(git ls-tree HEAD libuv --object-only)
libtsm_rev=$(git ls-tree HEAD libtsm --object-only)
hash_cmd=$([[ $RUNNER_OS == 'Windows' ]] && echo 'sha1sum' || echo 'shasum')
hash_of_hashes=$(echo -n "$godot_cpp_rev$libuv_rev$libtsm_rev$cache_version" | $hash_cmd | head -c 40)
echo "name=hash::$hash_of_hashes" >> $GITHUB_OUTPUT
- name: Cache submodules
uses: actions/cache@v3
id: cache
with:
path: addons/godot_xterm/native/thirdparty
key: thirdparty-${{ inputs.platform }}-${{ inputs.bits }}-${{ inputs.target }}-${{ steps.hash.outputs.hash }}

View file

@ -6,7 +6,7 @@ runs:
using: "composite" using: "composite"
steps: steps:
- name: Setup Godot - name: Setup Godot
uses: lihop/setup-godot@4aad9daa7dd81c11329c4b54fdc26dbd39eea7d6 uses: lihop/setup-godot@v2
with: with:
version: ${{ inputs.godot-version }} version: ${{ inputs.godot-version }}
- name: Import assets - name: Import assets

View file

@ -12,7 +12,14 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-22.04] platform: [linux, macos, windows]
include:
- platform: linux
os: ubuntu-22.04
- platform: macos
os: macos-12
- platform: windows
os: windows-2022
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Import assets - name: Import assets
@ -26,13 +33,13 @@ jobs:
path: .godot/ path: .godot/
build_docker: build_docker:
name: "Build Docker" name: Build Docker (linux, ${{ matrix.arch }}, ${{ matrix.target }})
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
target: [release, debug]
arch: [x86_64, x86_32] arch: [x86_64, x86_32]
target: [release, debug]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
@ -42,8 +49,8 @@ jobs:
id: cache-submodules id: cache-submodules
with: with:
platform: linux platform: linux
target: ${{ matrix.target }}
arch: ${{ matrix.arch }} arch: ${{ matrix.arch }}
target: ${{ matrix.target }}
- name: Pull docker images - name: Pull docker images
run: docker-compose pull run: docker-compose pull
working-directory: addons/godot_xterm/native working-directory: addons/godot_xterm/native
@ -67,27 +74,36 @@ jobs:
addons/godot_xterm/native/bin/*.so addons/godot_xterm/native/bin/*.so
build_native: build_native:
if: false # Temporarily disabled. name: Build Native (${{ matrix.platform }}, ${{ matrix.arch }}, ${{ matrix.target}})
name: "Build Native"
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
platform: [javascript, osx, windows] platform: [web, macos, windows]
target: [release, debug] target: [release, debug]
bits: [64, 32] bits: [64, 32]
exclude:
- platform: web
bits: 64
- platform: macos
bits: 32
include: include:
- platform: javascript - platform: web
os: ubuntu-22.04 os: ubuntu-22.04
- platform: osx - platform: macos
os: macos-12 os: macos-12
- platform: windows - platform: windows
os: windows-2022 os: windows-2022
exclude: - platform: web
- platform: javascript arch: wasm32
bits: 64 # Currently only wasm32 is supported. - platform: macos
- platform: osx arch: universal
bits: 32 # Only 64-bit supported on macOS. - platform: windows
bits: 64
arch: x86_64
- platform: windows
bits: 32
arch: x86_32
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
@ -98,9 +114,9 @@ jobs:
with: with:
platform: ${{ matrix.platform }} platform: ${{ matrix.platform }}
target: ${{ matrix.target }} target: ${{ matrix.target }}
bits: ${{ matrix.bits }} arch: ${{ matrix.arch }}
- name: Cache emscripten - name: Cache emscripten
if: ${{ matrix.platform == 'javascript' }} if: ${{ matrix.platform == 'web' }}
uses: actions/cache@v3 uses: actions/cache@v3
env: env:
cache-name: cache-emscripten cache-name: cache-emscripten
@ -109,14 +125,14 @@ jobs:
key: emsdk-cache-${{ matrix.target }}-${{ hashFiles('**/*.c*', '**/*.h*') }} key: emsdk-cache-${{ matrix.target }}-${{ hashFiles('**/*.c*', '**/*.h*') }}
restore-keys: | restore-keys: |
emsdk-cache-${{ matrix.target }}- emsdk-cache-${{ matrix.target }}-
- name: Install javascript build dependencies - name: Install web build dependencies
if: ${{ matrix.platform == 'javascript' }} if: ${{ matrix.platform == 'web' }}
uses: mymindstorm/setup-emsdk@v11 uses: mymindstorm/setup-emsdk@v11
with: with:
version: 3.1.14 version: 3.1.14
actions-cache-folder: emsdk-cache-${{ matrix.target }} actions-cache-folder: emsdk-cache-${{ matrix.target }}
- name: Install additional javascript build dependencies - name: Install additional web build dependencies
if: ${{ matrix.platform == 'javascript' }} if: ${{ matrix.platform == 'web' }}
run: sudo apt-get update && sudo apt-get install -y scons gcc-multilib g++-multilib run: sudo apt-get update && sudo apt-get install -y scons gcc-multilib g++-multilib
- name: Install additional macos build dependencies - name: Install additional macos build dependencies
if: ${{ matrix.os == 'macos-12' }} if: ${{ matrix.os == 'macos-12' }}
@ -129,11 +145,6 @@ jobs:
if: ${{ matrix.os == 'windows-2022' }} if: ${{ matrix.os == 'windows-2022' }}
with: with:
arch: win${{ matrix.bits }} arch: win${{ matrix.bits }}
- name: Build godot-cpp bindings
if: steps.cache-submodules.outputs.cache-hit != 'true'
run: |
cd addons/godot_xterm/native/thirdparty/godot-cpp
scons platform=${{ matrix.platform }} target=${{ matrix.target }} bits=${{ matrix.bits }} generate_bindings=yes -j2
- name: Setup cmake - name: Setup cmake
if: steps.cache-submodules.outputs.cache-hit != 'true' if: steps.cache-submodules.outputs.cache-hit != 'true'
uses: jwlawson/actions-setup-cmake@v2 uses: jwlawson/actions-setup-cmake@v2
@ -166,10 +177,15 @@ jobs:
cd .. cd ..
fi fi
cmake --build build --config $TARGET cmake --build build --config $TARGET
- name: Ensure scons cache exists
run: mkdir -p ${{github.workspace}}/.scons-cache
shell: bash
- name: Build libgodot-xterm - name: Build libgodot-xterm
env:
SCONS_CACHE: ${{github.workspace}}/.scons-cache
run: | run: |
cd addons/godot_xterm/native cd addons/godot_xterm/native
scons platform=${{ matrix.platform }} target=${{ matrix.target }} bits=${{ matrix.bits }} -j2 scons platform=${{ matrix.platform }} target=template_${{ matrix.target }} arch=${{ matrix.arch }} -j2
- name: Upload binaries - name: Upload binaries
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
@ -236,11 +252,18 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-22.04] #, macos-12, windows-2022 ] Temporarily disabled. platform: [linux, macos, windows]
bits: [64, 32] bits: [64, 32]
godot_version: ["v4.2.1-stable"] godot_version: ["v4.2.1-stable"]
include:
- platform: linux
os: ubuntu-22.04
- platform: macos
os: macos-12
- platform: windows
os: windows-2022
exclude: exclude:
- os: macos-12 - platform: macos
bits: 32 bits: 32
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -253,7 +276,7 @@ jobs:
uses: fountainhead/action-wait-for-check@v1.1.0 uses: fountainhead/action-wait-for-check@v1.1.0
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
checkName: Import Assets (${{ matrix.os }}) checkName: Import Assets (${{ matrix.platform }})
ref: ${{ github.event.pull_request.head.sha || github.sha }} ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Download imports - name: Download imports
uses: actions/download-artifact@v3 uses: actions/download-artifact@v3
@ -264,7 +287,7 @@ jobs:
uses: fountainhead/action-wait-for-check@v1.1.0 uses: fountainhead/action-wait-for-check@v1.1.0
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
checkName: Build Docker (debug, x86_${{ matrix.bits }}) checkName: Build Docker (linux, x86_${{ matrix.bits }}, debug)
ref: ${{ github.event.pull_request.head.sha || github.sha }} ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Install debug binary build artifacts - name: Install debug binary build artifacts
uses: actions/download-artifact@v3 uses: actions/download-artifact@v3

View file

@ -382,8 +382,8 @@ void Terminal::update_sizes(bool force)
Vector2 prev_size = Vector2(size); Vector2 prev_size = Vector2(size);
int32_t prev_font_size = font_size; int32_t prev_font_size = font_size;
Vector2 prev_cell_size = Vector2(cell_size); Vector2 prev_cell_size = Vector2(cell_size);
uint prev_cols = cols; unsigned int prev_cols = cols;
uint prev_rows = rows; unsigned int prev_rows = rows;
size = get_size(); size = get_size();