From 440653dbb8815ba28fd20203acae711dbb8b14b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 13 Jul 2025 18:57:26 +0200 Subject: [PATCH] package/ci: update to a newer Emscripten image that isn't 404ing. Consistently with what's done in Corrade. --- package/ci/circleci.yml | 50 +++++++++++++++++++++------------------- package/ci/emscripten.sh | 6 +++++ 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/package/ci/circleci.yml b/package/ci/circleci.yml index 19f53a1ec..79c656df3 100644 --- a/package/ci/circleci.yml +++ b/package/ci/circleci.yml @@ -26,26 +26,24 @@ executors: macos: xcode: 13.4.1 resource_class: macos.m1.medium.gen1 - emscripten1: + emscripten: docker: - # 1.39.0 is the oldest on Docker. Anything before 1.39.2 is useless as emar - # randomly asserts: https://github.com/emscripten-core/emscripten/pull/9742 - # Then, anything before 1.39.6 is useless as well because emar has a - # 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 + # See Corrade's package/ci/circleci.yml + # for more information. + - image: emscripten/emsdk:2.0.16 emscripten2: docker: - # Used by the webgl2 job. 2.0.17 is the first version that exposes - # glGetBufferSubData() so GLES3 tests can read buffer data without having - # to check the Emscripten version. 2.0.17 dies midway compiling however, so - # using some newer version. 2.0.18 to 2.0.24 then fails due to an - # unresolved malloc dependency of glGetString() (!!!), in 2.0.25 it - # mysteriously disappears. See https://github.com/mosra/magnum/issues/507. - # 2.0.27 is then the first that adds timestamps to events, which are needed - # internally by touch events. - - image: emscripten/emsdk:2.0.27 + # 2.0.16 is the oldest on Docker that isn't based on Debian Buster which + # started 404ing as of 2025-07-13. However, as usual, it doesn't work, so + # bumping to 2.0.26 that was known to work previously. See Corrade's + # package/ci/circleci.yml for more information. + - image: emscripten/emsdk:2.0.26 + emscripten3: + docker: + # Used by the webgl2 job. 2.0.27 is the first that adds timestamps to + # 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: machine: image: android:2021.10.1 @@ -717,32 +715,36 @@ jobs: - lcov 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: # STUPID yml interprets unquoted ON as a boolean TARGET_GLES2: "ON" steps: - 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: - count: 8 + count: 4 - build: script: emscripten.sh emscripten-webgl2: - executor: emscripten2 + executor: emscripten3 environment: # STUPID yml interprets unquoted OFF as a boolean TARGET_GLES2: "OFF" - # emsdk forces the PATH to prefer its own nodejs, so explicitly force - # /usr/bin/node to be used by CMake + # Use Node.js 15 to be able to verify WASM SIMD codepaths. emsdk forces + # the PATH to prefer its own nodejs, so explicitly force /usr/bin/node to + # be used by CMake. EXTRA_OPTS: > -DNODEJS_EXECUTABLE=/usr/bin/node steps: - install-base-linux: extra: curl - 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: count: 4 - build: diff --git a/package/ci/emscripten.sh b/package/ci/emscripten.sh index fb39888d0..2f7c36dff 100755 --- a/package/ci/emscripten.sh +++ b/package/ci/emscripten.sh @@ -9,6 +9,9 @@ cd corrade mkdir build-emscripten && cd build-emscripten 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_INSTALL_PREFIX=$HOME/deps \ -DCORRADE_WITH_INTERCONNECT=OFF \ @@ -23,6 +26,9 @@ cd .. mkdir build-emscripten && cd build-emscripten 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_INSTALL_PREFIX=$HOME/deps \ -DCMAKE_FIND_ROOT_PATH=$HOME/deps \