Bug 44327 - Пакет jicofo не собран для архитектуры aarch64
Summary: Пакет jicofo не собран для архитектуры aarch64
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: jicofo (show other bugs)
Version: unstable
Hardware: aarch64 Linux
: P5 normal
Assignee: viy
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-11-16 15:59 MSK by jqt4@altlinux.org
Modified: 2022-11-30 14:53 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description jqt4@altlinux.org 2022-11-16 15:59:18 MSK
Согласно документации https://www.altlinux.org/Jitsi_Meet Jicofo является необходимым компонентом для работы сервера Jitsi Meet.
Однако, пакет jicofo не собирается для архитектуры aarch64, что делает невозможным установку сервера Jitsi Meet.
Прошу организовать сборку jicofo для aarch64.
Comment 1 jqt4@altlinux.org 2022-11-30 14:49:02 MSK
При сборке jicofo-1.1-alt0.4 под aarch64 выдаются ошибки:
Exception in thread "Smack-Single Threaded Executor 0 (3)" java.lang.UnsatisfiedLinkError: /tmp/nativeutils106925306743618/libjnisctp.so: /tmp/nativeutils106925306743618/libjnisctp.so: cannot open shared object file: No such file or directory (Possible cause: can't load AMD 64-bit .so on a AARCH64-bit platform)
Exception in thread "Smack-Single Threaded Executor 0 (11)" java.lang.NoClassDefFoundError: Could not initialize class org.jitsi.videobridge.sctp.SctpManager
SEVERE: mockjvb.test-server - failed to allocate channels, will consider the bridge faulty: Creator thread has failed to allocate channels: Timed out waiting for a response.

Причина в отсутствии libjnisctp.so под aarch64.
В исходниках jicofo-1.1-alt0.4 в тарболе m2-jicofo-1.1.tar
https://git.altlinux.org/gears/j/jicofo.git?p=jicofo.git;a=blob;f=.gear/m2-jicofo-1.1.tar;h=5ae6b433161a5804de6c856492756fa6de2d02f2;hb=262c8205338db5b60511c8e43ee4b000c187db01
.m2/repository/org/jitsi/jniwrapper-native/1.0-SNAPSHOT/jniwrapper-native-1.0-20190319.172748-1.jar
lib/linux/libjnisctp.so
имеется библиотека только под x86-64

Нашел процедуру сборки jniwrapper-native для aarch64:
https://github.com/jitsi/jitsi-meet/issues/6449

Собрал на p10 под aarch64 следующим образом:
git clone https://github.com/sctplab/usrsctp.git
git clone https://github.com/jitsi/jitsi-sctp
mv ./usrsctp ./jitsi-sctp/usrsctp/
cd ./jitsi-sctp
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-0.aarch64
mvn package -DbuildSctp -DbuildNativeWrapper -DdeployNewJnilib -DskipTests
mkdir -p ./jniwrapper/native/src/main/resources/lib/linux/
cp ./jniwrapper/native/target/libjnisctp-linux-aarch64.so  ./jniwrapper/native/src/main/resources/lib/linux/libjnisctp.so
mvn package

Получил искомый файл jitsi-sctp/jniwrapper/native/target/jniwrapper-native-1.0-SNAPSHOT.jar
Вынул из jar META-INF/maven/org.jitsi/jniwrapper-native/pom.xml
Добавил файлы в исходники jicofo как .gear/jniwrapper-native-1.0-SNAPSHOT.jar .gear/pom.xml
и в jicofo.spec как
Source2:        jniwrapper-native-1.0-SNAPSHOT.jar
Source3:        pom.xml
В %prep добавил в локальный репозиторий:
mvn install:install-file -Dfile=%SOURCE2 -DpomFile=%SOURCE3
https://git.altlinux.org/people/jqt4/packages/?p=jicofo.git;a=commitdiff;h=f7da299e23f99fca171ae9c177bab22a602cd068

После внесения этих исправлений тестовый пакет jicofo под aarch64 успешно собрался. (Задача 310566)

При тестировании jitsi-meet на TF307 обнаружил проблему:
Не передаётся изображение и звук. Иногда получается подключить 2 узла с изображением, но когда подключается 3-й соединения падают.
В файл /var/log/jitsi/jvb.log выдаются сообщения:
2022-11-29 15:26:30.424 SEVERE: [19] RecurringRunnableExecutor.run#230: The invocation of the method org.jitsi.videobridge.health.Health.run() threw an exception.
java.lang.NoClassDefFoundError: Could not initialize class org.jitsi.videobridge.sctp.SctpManager

Нашел описание подобной ситуации:
https://community.jitsi.org/t/java-lang-noclassdeffounderror-could-not-initialize-class-org-jitsi-videobridge-sctp-sctpmanager/76443/6
Это та же проблема с отсутствием libjnisctp.so под aarch64, но в jitsi-videobridge.