fix: clear the CI build annotations - #294
Merged
Merged
Conversation
GitHub forces Node.js 20 actions onto Node.js 24 and flags each run with a deprecation annotation. Bump cache to v6, upload-artifact to v7, download-artifact to v8, setup-python to v7, configure-pages to v6, deploy-pages to v5 and upload-pages-artifact to v5 (which wraps upload-artifact v7). None of their breaking changes affect how these workflows call them: artifacts are downloaded by name/pattern, not ID, and pip-install is not used.
…l export webrtc.java exports dev.onvoid.webrtc.internal only to webrtc.java.media. That module depends on webrtc.java, so it is never observable while webrtc.java compiles, and javac reports [module] module not found on every build, which CI surfaces as an annotation. The export is intentional and still takes effect at run time, so suppress the lint on the module declaration rather than disabling it for the whole build.
…t exception handler An exception thrown by an RTCDataChannelSendObserver was reported with ExceptionDescribe. HotSpot prints its "Exception in thread" prefix straight to native stderr, without a newline, and the stack trace to System.err, so the report was split across two streams and the prefix was left on an unterminated line. In CI the next native write, LoggingTests' debug log line, landed on that line, and setup-java's java problem matcher turned it into a "logToDebug at ERROR" error annotation. Hand the exception to the calling thread's uncaught exception handler instead, as the JVM does for an exception escaping a Java thread. The whole report now goes through System.err, and applications can install their own handler. The tests that throw from an observer on purpose now capture the exception in a default handler and assert it arrived.
prepare-linux installed a Clang 20 development snapshot (llvmorg-20-init) for the Linux toolchain files. The JNI code compiles against the libc++ headers installed by the WebRTC build, and those of branch-heads/7977 only support Clang 21 and later, so every Linux build printed "Libc++ only supports Clang 21 and later" for each translation unit (294 times on linux_arm alone). Install the package pinned by tools/clang/scripts/update.py on that branch (llvmorg-23-init-19482-g53d18800-1), the compiler WebRTC itself is built with, and note that the pin has to follow webrtc.branch.
A duplicated "/*" before the getSignalingState declaration nested a comment opener inside a block comment, so every native build warned "'/*' within block comment [-Wcomment]" (once per platform in CI).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the annotations CI attaches to every build (e.g. run 36268227980) and the libc++ warning flooding the Linux build logs. One commit per issue.
Node.js 20 deprecation (
ci:)GitHub forces actions that target Node.js 20 onto Node.js 24 and flags every job ("The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/upload-artifact@v4"). Every action still on Node.js 20 moves to its current Node.js 24 major:
actions/cacheactions/upload-artifactactions/download-artifactactions/setup-pythonactions/configure-pagesactions/deploy-pagesactions/upload-pages-artifactNone of their breaking changes affect how the workflows use them: artifacts are downloaded by name/pattern (download-artifact v5 only changed download-by-ID paths), download-artifact v8 fails on hash mismatches instead of warning, and
pip-install(removed in setup-python v7) is not used.checkout,setup-java,setup-nodeandgit-cliff-actionalready run on Node.js 24.[module] module not found: webrtc.java.media(build:)webrtc.javaexportsdev.onvoid.webrtc.internalonly towebrtc.java.media. That module depends onwebrtc.java, so it is never observable whilewebrtc.javacompiles, and javac warns on every build. The export is intentional and still takes effect at run time, so the lint is suppressed on the module declaration (@SuppressWarnings("module")) instead of for the whole build.logToDebug at ERROR(fix:)This came from an earlier test, not from
LoggingTests.RTCDataChannelSendObserverreported an exception thrown by the observer withExceptionDescribe, which printsException in thread "Thread-N"straight to native stderr without a newline and the stack trace toSystem.err.RTCDataChannelSendCompletionTeststhrows from an observer on purpose, so that prefix sat on an unterminated line untilLoggingTests' native debug line landed on it, and setup-java'sjavaproblem matcher (^Exception in thread "(.*)" (.*): (.*)$) reported the result as an error.The observer now hands the exception to the calling thread's uncaught exception handler, as the JVM does for an exception escaping a Java thread, so the report goes through
System.errin one piece and applications can install their own handler. The two tests that throw on purpose capture the exception in a default handler and assert it arrived; against the previous native library they time out."Libc++ only supports Clang 21 and later" (
ci:)prepare-linuxinstalled a Clang 20 development snapshot (llvmorg-20-init-9764) into/opt/clang, which the Linux toolchain files compile the natives with. The JNI code compiles against the libc++ headers installed by the WebRTC build, and those ofbranch-heads/7977only support Clang 21 and later, so every Linux build printed the warning once per translation unit (294 times onlinux_armalone).prepare-linuxnow installs the package thattools/clang/scripts/update.pypins on that branch (llvmorg-23-init-19482-g53d18800-1), the compiler WebRTC itself is built with. OneLinux_x64package serves all three Linux jobs, since the arm jobs cross-compile on x64 runners. A comment in the action notes that the pin has to followwebrtc.branch. No build uses-Werror, so any new warnings from the newer Clang would show up in the log rather than fail the build. This change can only be verified by CI; there is no Linux build here.Testing
Tested locally on Windows x86_64:
mvn -pl webrtc testpasses (175 tests) with no output line matching any of setup-java's problem matchers, andRTCDataChannelSendCompletionTestspasses under-Pjni-checkwith noFATAL ERROR in native method.