python — установка SIP-клиента «ring.cx» на малиновом пи

Ситуация

Я хотел бы, чтобы на моем Raspberry Pi работали терминальные (безголовые) SIP-звонки, и я уже пробовал это с помощью linphone:

RaspberryPI: исходящие вызовы SIP с использованием linphonec или альтернативного программного телефона SIP

Так как я сейчас застрял там, я хотел попробовать другой вариант, который был SFLPhone. Они указали мне на кольцо программный проект, который предлагает демон dring который позволяет совершать SIP-вызовы с использованием скриптового интерфейса:

Действительно, демон может работать автономно и управляться с помощью API DBus.

Обратите внимание, что проект был переименован в «Ring» (версия увеличена до 2.x). Экспериментальные пакеты доступны на http://ring.cx/en/documentation/linux-installation
Главная особенность Кольца
2.x — это необязательный тип учетной записи «DHT», позволяющий совершать звонки без SIP-сервера.
Есть много других улучшений, таких как поддержка ICE, поддержка UPnP, улучшения стабильности и т. Д.
(обратите внимание, что клиенты переписываются (GTK3, Qt5) и есть новый клиент OS X, они еще не завершены и находятся в тяжелой разработке.)

Новый демон dring URI исходного Git репо: https://gerrit-ring.savoirfairelinux.com/ring .
API DBus в основном такой же, как и раньше. в tools/dringctrl В каталоге вы найдете пример клиента Python, который мы используем для тестирования (использует python3-dbus).

Мы готовы исправить любые ошибки, которые вы можете найти, багтрекер демонов находится здесь: https://projects.savoirfairelinux.com/projects/ring-daemon/issues
Также посмотрите на https://projects.savoirfairelinux.com/projects/ring/wiki для инструкции по сборке и т. д.

С уважением и удачи для вашего встроенного проекта,
А. Б.

Компиляция зависимостей

Я попытался скомпилировать зависимости для проекта, как указано в README:

git clone https://gerrit-ring.savoirfairelinux.com/ring
cd ring

Сначала скомпилируйте зависимости

cd ../contrib/
rm -fr native/ && mkdir native
cd native
../bootstrap
make

Я получил эту ошибку:

libvpx.webm-4640a0c4804b/third_party/googletest/src/include/gtest/gtest.h
mv libvpx-4640a0c4804b49f1870d5a2d17df0c7d0a77af2f libvpx && touch libvpx
cd libvpx && CROSS= ./configure --target=armv7-linux-gcc \
--as=yasm --disable-docs --disable-examples --disable-unit-tests --disable-install-bins --disable-install-docs --enable-realtime-only --enable-error-concealment --disable-runtime-cpu-detect --disable-webm-io --enable-pic --prefix=/home/pi/ring/contrib/arm-linux-gnueabihf
disabling docs
disabling examples
disabling unit_tests
disabling install_bins
disabling install_docs
enabling realtime_only
enabling error_concealment
disabling runtime_cpu_detect
disabling webm_io
enabling pic
Configuring selected codecs
enabling vp8_encoder
enabling vp8_decoder
enabling vp9_encoder
enabling vp9_decoder
Configuring for target 'armv7-linux-gcc'
enabling armv7
enabling neon
enabling neon_asm
enabling media
Unable to invoke compiler: arm-none-linux-gnueabi-gcc  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64

Configuration failed. This could reflect a misconfiguration of your
toolchains, improper options selected, or another problem. If you
don't see any useful error messages above, the next step is to look
at the configure error log file (config.log) to determine what
configure was trying to do when it died.
../../contrib/src/vpx/rules.mak:105: recipe for target '.vpx' failed
make: *** [.vpx] Error 1

Компилирующее кольцо

Несмотря на то, что компиляция зависимостей не удалась, я попытался скомпилировать кольцо:

git clone https://gerrit-ring.savoirfairelinux.com/ring
cd ring
./autogen.sh
./configure
make
make install

Это вызвало следующую ошибку:

checking for PJPROJECT... no
configure: error: Missing pjproject files
pi@phone ~/ring $     make
make: *** No targets specified and no makefile found.  Stop.
pi@phone ~/ring $     make install
make: *** No rule to make target 'install'.  Stop.

Так что в настоящее время я застрял и боюсь, что я не смогу выйти за рамки текущее состояние моего проекта (��):

телефон

редактировать: Теперь без видеокодеков (как предложил aberaud) я сталкиваюсь со следующей ошибкой:

/bin/bash ../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I..  -I../include/opendht -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -fPIC -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include  -g -fPIC -O3 -std=c++0x -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include  -g -fPIC -O3 -std=c++0x -c -o libopendht_la-dht.lo `test -f 'dht.cpp' || echo './'`dht.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -I../include/opendht -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -fPIC -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -g -fPIC -O3 -std=c++0x -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -g -fPIC -O3 -std=c++0x -c dht.cpp  -fPIC -DPIC -o libopendht_la-dht.o
In file included from ../include/opendht/dht.h:29:0,
from dht.cpp:27:
../include/opendht/infohash.h:58:22: error: expected initializer before ‘:’ token
dht.cpp:3105:1: error: expected ‘}’ at end of input
Makefile:386: recipe for target 'libopendht_la-dht.lo' failed
make[2]: *** [libopendht_la-dht.lo] Error 1
make[2]: Leaving directory '/home/pi/sip-desaster/ring/contrib/native/opendht/src'
Makefile:395: recipe for target 'install-recursive' failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory '/home/pi/sip-desaster/ring/contrib/native/opendht'
../../contrib/src/opendht/rules.mak:28: recipe for target '.opendht' failed
make: *** [.opendht] Error 2

4

Решение

Contrib

Часть «contrib» в сборке Ring посвящена созданию зависимостей, которые недоступны в целевой системе, в основном используются для создания полнофункциональных пакетов при кросс-компиляции или для систем без надлежащего управления зависимостями (в основном все ОС, кроме дистрибутивов Linux).

Когда в contrib/native каталог, вы можете запустить make list чтобы увидеть список пакетов для сборки. Поскольку вы выполняете кросс-компиляцию, вам нужно собрать почти все.

Если вы как-то испортили сборку contrib, вы можете безопасно удалить contrib/native а также contrib/{target_tuple} (если есть) каталоги и начать заново.

libvpx

Библиотека libvpx используется libav для предоставления видеокодеков vp8 и vp9. Это не жесткая зависимость, и, поскольку ваш проект не использует видео, вы можете безопасно отключить его. Мы также столкнулись с проблемами при кросс-компиляции vpx.

В contrib/src/libav/rules.mak строка 70, DEPS_libav определяет список зависимостей для libav. Вы можете удалить vpx, x264 а также $(DEPS_vpx) из списка, так как вы не используете видео. Вы также можете добавить в список аудиокодеки speex и opus (они должны быть в списке, но их нет, см. этот патч
В качестве примера).

После очистки вклад, как описано выше, и повторной форсировки при запуске make list, vpx а также x264 не должен отображаться в списке «Пакеты для сборки». Затем попробуйте собрать contrib, запустив make,

Если после этой попытки вы столкнетесь с той же проблемой для других пакетов, у вас может возникнуть какая-то проблема с путями сборки кросс-компиляции (тогда мне потребуется больше журналов / подробностей).

В качестве крайней меры компиляция самого Pi (с Raspbian) идет ужасно медленно, но имеет преимущество перед использовать локальные зависимости, предоставляемые дистрибутивом и удалить неприятности кросс-компиляции.

Удачи

2

Другие решения

Я даю собственный ответ, который должен документировать мои шаги, которые, я надеюсь, приведут меня к желаемому конечному результату:

Скачать исходники

git clone https://gerrit-ring.savoirfairelinux.com/ring
cd ring

Построить contrib раздел

В соответствии с @aberaud«s замечания Я могу обновить contrib/src/libav/rules.mak и удалите все связанные с видео зависимости (помните, что я без головы):

Таким образом, я изменил форму строки 70

DEPS_libav = zlib x264 vpx $(DEPS_vpx)

в

DEPS_libav = zlib opus speex

Теперь построить contrib раздел.

cd ../contrib/
rm -fr native/ && mkdir native
cd native
../bootstrap
make
1

Я нажимал на ту же ошибку, пытаясь скомпилировать вклад.

Версия Raspbian, которую я использовал, шла с более старой версией компилятора gcc версии 4.6. После того, как я обновился до 4.8, он скомпилирован мгновенно. Ну, так же быстро, как что-либо компилируется на Пи во всяком случае.

0
По вопросам рекламы [email protected]