From 8d34bb549736c341e84123760901bc981c46b184 Mon Sep 17 00:00:00 2001 From: Erik Kundiman Date: Sat, 19 Jul 2025 07:11:20 +0800 Subject: Exclude Debian arm64 from WebRTC When WebRTC was compiled with the viewer, we got this: Fatal error in: ../webrtc/src/media/engine/adm_helpers.cc, line 39 last system error: 88 Check failed: 0 == adm->Init() (0 vs. -1) Failed to initialize the ADM. This commit hasn't included the additional preprocessor macro for the platform in indra/newview/llvoiceclient.cpp yet, because there's no such macro yet to distinguish such distro from any other GNU/Linux distro. --- indra/CMakeLists.txt | 2 +- indra/cmake/WebRTC.cmake | 2 +- indra/newview/CMakeLists.txt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt index 9224b04549..e0e864ed70 100644 --- a/indra/CMakeLists.txt +++ b/indra/CMakeLists.txt @@ -59,7 +59,7 @@ add_subdirectory(${LIBS_OPEN_PREFIX}llmessage) add_subdirectory(${LIBS_OPEN_PREFIX}llprimitive) add_subdirectory(${LIBS_OPEN_PREFIX}llrender) add_subdirectory(${LIBS_OPEN_PREFIX}llfilesystem) -if (NOT (CMAKE_SYSTEM_NAME MATCHES FreeBSD OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64))) +if (NOT (CMAKE_SYSTEM_NAME MATCHES FreeBSD OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64) OR (${LINUX_DISTRO} MATCHES debian AND CMAKE_SYSTEM_PROCESSOR MATCHES aarch64))) add_subdirectory(${LIBS_OPEN_PREFIX}llwebrtc) endif () add_subdirectory(${LIBS_OPEN_PREFIX}llwindow) diff --git a/indra/cmake/WebRTC.cmake b/indra/cmake/WebRTC.cmake index a7f43be13e..718afae0f0 100644 --- a/indra/cmake/WebRTC.cmake +++ b/indra/cmake/WebRTC.cmake @@ -8,7 +8,7 @@ add_library( ll::webrtc INTERFACE IMPORTED ) target_include_directories( ll::webrtc SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/webrtc" "${LIBS_PREBUILT_DIR}/include/webrtc/third_party/abseil-cpp") if (${LINUX_DISTRO} MATCHES debian AND CMAKE_SYSTEM_PROCESSOR MATCHES x86-64 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64 OR WINDOWS) use_prebuilt_binary(webrtc) -elseif (NOT (CMAKE_SYSTEM_NAME MATCHES FreeBSD OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64))) +elseif (NOT (CMAKE_SYSTEM_NAME MATCHES FreeBSD OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64) OR (${LINUX_DISTRO} MATCHES debian AND CMAKE_SYSTEM_PROCESSOR MATCHES aarch64))) target_compile_definitions(ll::webrtc INTERFACE CM_WEBRTC=1) if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0) if (DARWIN) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 7f509d38de..47d88457cb 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -751,7 +751,7 @@ set(viewer_SOURCE_FILES rlvhandler.cpp ) -if (CMAKE_SYSTEM_NAME MATCHES FreeBSD OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64)) +if (CMAKE_SYSTEM_NAME MATCHES FreeBSD OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64) OR (${LINUX_DISTRO} MATCHES debian AND CMAKE_SYSTEM_PROCESSOR MATCHES aarch64)) list(REMOVE_ITEM viewer_SOURCE_FILES llvoicewebrtc.cpp) endif () @@ -2133,7 +2133,7 @@ target_link_libraries(${VIEWER_BINARY_NAME} ll::openxr ) -if (NOT (CMAKE_SYSTEM_NAME MATCHES FreeBSD OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64))) +if (NOT (CMAKE_SYSTEM_NAME MATCHES FreeBSD OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64) OR (${LINUX_DISTRO} MATCHES debian AND CMAKE_SYSTEM_PROCESSOR MATCHES aarch64))) target_link_libraries(${VIEWER_BINARY_NAME} llwebrtc ) endif () -- cgit v1.2.3 From cdfd5dc4cc68a9882f4ef54f1a0bdaa277e8d2da Mon Sep 17 00:00:00 2001 From: Erik Kundiman Date: Mon, 21 Jul 2025 21:11:46 +0800 Subject: Fix crash upon login on Linux aarch64 Tested on Debian Asahi so far, will try on Fedora Asahi next. I had to trace this down, setting Logging Level to Debug, and comparing SecondLife.log with a successful login on Linux x86-64. At first setWeight() in LLViewerVisualParam::setInfo seemed to be avoiding a crash too when commented out, but turns out it's still okay when re-enabled. --- indra/newview/llvoavatar.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 7ea70a781b..53832422d8 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -8938,6 +8938,7 @@ void LLVOAvatar::updateMeshTextures() bool is_ltda = layerset && layerset->getViewerComposite()->isInitialized() && layerset->isLocalTextureDataAvailable(); +#ifndef __aarch64__ mBakedTextureDebugText += llformat("%4d %4s %4d %4d %4d %4d %4s\n", i, (layerset?"*":"0"), @@ -8946,6 +8947,7 @@ void LLVOAvatar::updateMeshTextures() is_layer_baked[i], use_lkg_baked_layer[i], last_id_string.c_str()); +#endif } for (U32 i=0; i < mBakedTextureDatas.size(); i++) -- cgit v1.2.3 From e5044bc934c09ff24019a66caf0bbfd3bfc294ae Mon Sep 17 00:00:00 2001 From: Erik Kundiman Date: Mon, 21 Jul 2025 21:19:13 +0800 Subject: Dependency on libnss3 & libnspr4 on Debian/Ubuntu for libcef.so. On a minimal system, those two wouldn't be pulled automatically by some other package(s). --- indra/newview/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 47d88457cb..40e90a4141 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -2300,14 +2300,14 @@ if (LINUX) CACHE STRING "Debian package section.") if (${LINUX_DISTRO} MATCHES debian) if (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1t64, libboost-fiber1.83.0, libboost-filesystem1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libboost-url1.83.0, libexpat1, libfltk1.3t64, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1t64, libnghttp2-14, libopenjp2-7, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1t64, libboost-fiber1.83.0, libboost-filesystem1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libboost-url1.83.0, libexpat1, libfltk1.3t64, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1t64, libnghttp2-14, libnspr4, libnss3, libopenjp2-7, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" CACHE STRING "Debian package dependencies.") else () - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1, libboost-fiber1.81.0, libboost-filesystem1.81.0, libboost-program-options1.81.0, libboost-regex1.81.0, libboost-thread1.81.0, libboost-url1.81.0, libexpat1, libfltk1.3, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1, libnghttp2-14, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1, libboost-fiber1.81.0, libboost-filesystem1.81.0, libboost-program-options1.81.0, libboost-regex1.81.0, libboost-thread1.81.0, libboost-url1.81.0, libexpat1, libfltk1.3, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1, libnghttp2-14, libnspr4, libnss3, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" CACHE STRING "Debian package dependencies.") endif () else () - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libaprutil1t64, libboost-fiber1.83.0, libboost-filesystem1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libboost-url1.83.0, libexpat1, libfltk1.3t64, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1, libnghttp2-14, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libaprutil1t64, libboost-fiber1.83.0, libboost-filesystem1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libboost-url1.83.0, libexpat1, libfltk1.3t64, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1, libnghttp2-14, libnspr4, libnss3, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" CACHE STRING "Debian package dependencies.") endif () elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) -- cgit v1.2.3