Browse Source

package/ci: update to a newer Emscripten image that isn't 404ing.

Consistently with what's done in Corrade.
pull/680/head
Vladimír Vondruš 10 months ago
parent
commit
440653dbb8
  1. 50
      package/ci/circleci.yml
  2. 6
      package/ci/emscripten.sh

50
package/ci/circleci.yml

@ -26,26 +26,24 @@ executors:
macos: macos:
xcode: 13.4.1 xcode: 13.4.1
resource_class: macos.m1.medium.gen1 resource_class: macos.m1.medium.gen1
emscripten1: emscripten:
docker: docker:
# 1.39.0 is the oldest on Docker. Anything before 1.39.2 is useless as emar # See Corrade's package/ci/circleci.yml
# randomly asserts: https://github.com/emscripten-core/emscripten/pull/9742 # for more information.
# Then, anything before 1.39.6 is useless as well because emar has a - image: emscripten/emsdk:2.0.16
# filesystem race and randomly complains that a file doesn't exist:
# https://github.com/mosra/magnum/issues/413,
# https://github.com/emscripten-core/emscripten/pull/10161
- image: emscripten/emsdk:1.39.6-upstream
emscripten2: emscripten2:
docker: docker:
# Used by the webgl2 job. 2.0.17 is the first version that exposes # 2.0.16 is the oldest on Docker that isn't based on Debian Buster which
# glGetBufferSubData() so GLES3 tests can read buffer data without having # started 404ing as of 2025-07-13. However, as usual, it doesn't work, so
# to check the Emscripten version. 2.0.17 dies midway compiling however, so # bumping to 2.0.26 that was known to work previously. See Corrade's
# using some newer version. 2.0.18 to 2.0.24 then fails due to an # package/ci/circleci.yml for more information.
# unresolved malloc dependency of glGetString() (!!!), in 2.0.25 it - image: emscripten/emsdk:2.0.26
# mysteriously disappears. See https://github.com/mosra/magnum/issues/507. emscripten3:
# 2.0.27 is then the first that adds timestamps to events, which are needed docker:
# internally by touch events. # Used by the webgl2 job. 2.0.27 is the first that adds timestamps to
- image: emscripten/emsdk:2.0.27 # events, which are needed internally by touch events, but making sure the
# version 3 is tested also.
- image: emscripten/emsdk:3.0.0
android-29: android-29:
machine: machine:
image: android:2021.10.1 image: android:2021.10.1
@ -717,32 +715,36 @@ jobs:
- lcov - lcov
emscripten-webgl1: emscripten-webgl1:
executor: emscripten1 executor: emscripten2
# Deliberately *not* setting NODEJS_EXECUTABLE here to verify that the
# build correctly skips WASM SIMD tests for Node.js 14. WASM SIMD is then
# tested in the job below.
environment: environment:
# STUPID yml interprets unquoted ON as a boolean # STUPID yml interprets unquoted ON as a boolean
TARGET_GLES2: "ON" TARGET_GLES2: "ON"
steps: steps:
- install-base-linux - install-base-linux
# With a Debug build, 16+ is causing OOMs. Release was fine with 24. # With a Debug build, 8+ is causing OOMs. Release was fine with 24.
- cap-ninja-jobs: - cap-ninja-jobs:
count: 8 count: 4
- build: - build:
script: emscripten.sh script: emscripten.sh
emscripten-webgl2: emscripten-webgl2:
executor: emscripten2 executor: emscripten3
environment: environment:
# STUPID yml interprets unquoted OFF as a boolean # STUPID yml interprets unquoted OFF as a boolean
TARGET_GLES2: "OFF" TARGET_GLES2: "OFF"
# emsdk forces the PATH to prefer its own nodejs, so explicitly force # Use Node.js 15 to be able to verify WASM SIMD codepaths. emsdk forces
# /usr/bin/node to be used by CMake # the PATH to prefer its own nodejs, so explicitly force /usr/bin/node to
# be used by CMake.
EXTRA_OPTS: > EXTRA_OPTS: >
-DNODEJS_EXECUTABLE=/usr/bin/node -DNODEJS_EXECUTABLE=/usr/bin/node
steps: steps:
- install-base-linux: - install-base-linux:
extra: curl extra: curl
- install-nodejs - install-nodejs
# With a Debug build, 8+ is causing OOMs. Release was fine with 24. # With a Debug build, 8+ is causing OOMs. Release was fine with 24.
- cap-ninja-jobs: - cap-ninja-jobs:
count: 4 count: 4
- build: - build:

6
package/ci/emscripten.sh

@ -9,6 +9,9 @@ cd corrade
mkdir build-emscripten && cd build-emscripten mkdir build-emscripten && cd build-emscripten
cmake .. \ cmake .. \
-DCMAKE_TOOLCHAIN_FILE="../../toolchains/generic/Emscripten-wasm.cmake" \ -DCMAKE_TOOLCHAIN_FILE="../../toolchains/generic/Emscripten-wasm.cmake" \
`# Building as Debug always, as Release optimizations take a long time` \
`# and make no sense on the CI. Thus, benchmark output will not be` \
`# really meaningful, but we still want to run them to catch issues.` \
-DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX=$HOME/deps \ -DCMAKE_INSTALL_PREFIX=$HOME/deps \
-DCORRADE_WITH_INTERCONNECT=OFF \ -DCORRADE_WITH_INTERCONNECT=OFF \
@ -23,6 +26,9 @@ cd ..
mkdir build-emscripten && cd build-emscripten mkdir build-emscripten && cd build-emscripten
cmake .. \ cmake .. \
-DCMAKE_TOOLCHAIN_FILE="../toolchains/generic/Emscripten-wasm.cmake" \ -DCMAKE_TOOLCHAIN_FILE="../toolchains/generic/Emscripten-wasm.cmake" \
`# Building as Debug always, as Release optimizations take a long time` \
`# and make no sense on the CI. Thus, benchmark output will not be` \
`# really meaningful, but we still want to run them to catch issues.` \
-DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX=$HOME/deps \ -DCMAKE_INSTALL_PREFIX=$HOME/deps \
-DCMAKE_FIND_ROOT_PATH=$HOME/deps \ -DCMAKE_FIND_ROOT_PATH=$HOME/deps \

Loading…
Cancel
Save