проблема компиляции libjingle - PullRequest
8 голосов
/ 09 марта 2011

Я скачал и установил libjingle-0.5.2.zip, и в соответствии с README также скачал и установил swtoolkit.0.9.1.zip, scons-local-2.1.0.alpha.20101125.tar.gz и expat-2.0.1.tar.gz, и получил nrtp от загрузки cvs.После перезаписи моего Makefile дважды, пытаясь следовать довольно плохо написанному README, я пришел к следующему Makefile, который почти работает:


# First, make sure the SCONS_DIR environment variable is set correctly.
SCONS_DIR ?= /usr/src/scons-local/scons-local-2.1.0.alpha.20101125/
#SCONS_DIR ?= /usr/src/scons-local/
export
default: build
# Second, run talk/third_party/expat-2.0.1/configure...
talk/third_party/expat-2.0.1/Makefile:
    cd talk/third_party/expat-2.0.1 && ./configure
# ...and talk/third_party/srtp/configure.
talk/third_party/srtp/Makefile:
    cd talk/third_party/srtp && ./configure
# Third, go to the talk/ directory and run $path_to_swtoolkit/hammer.sh. Run
# $path_to_swtoolkit/hammer.sh --help for information on how to build for
# different modes.
build: talk/third_party/expat-2.0.1/Makefile talk/third_party/srtp/Makefile
    cd talk && ../../swtoolkit/hammer.sh
help:
    ../swtoolkit/hammer.sh --help

Однако, make выдает мне следующие ошибки:

jcomeau@intrepid:/usr/src/libjingle-0.5.2$ make
cd talk && ../../swtoolkit/hammer.sh
*** Error loading site_init file './../../swtoolkit/site_scons/site_init.py':
AttributeError: 'Dir' object has no attribute 'endswith':
  File "/usr/src/scons-local/scons-local-2.1.0.alpha.20101125/SCons/Script/Main.py", line 1338:
    _exec_main(parser, values)
  File "/usr/src/scons-local/scons-local-2.1.0.alpha.20101125/SCons/Script/Main.py", line 1302:
    _main(parser)
  File "/usr/src/scons-local/scons-local-2.1.0.alpha.20101125/SCons/Script/Main.py", line 929:
    _load_site_scons_dir(d.path, options.site_dir)
  File "/usr/src/scons-local/scons-local-2.1.0.alpha.20101125/SCons/Script/Main.py", line 719:
    exec fp in site_m
  File "./../../swtoolkit/site_scons/site_init.py", line 455:
    SiteInitMain()
  File "./../../swtoolkit/site_scons/site_init.py", line 451:
    SCons.Node.FS.get_default_fs().SConstruct_dir, None)
  File "/usr/src/scons-local/scons-local-2.1.0.alpha.20101125/SCons/Script/Main.py", line 677:
    site_dir = os.path.join(topdir, site_dir_name)
  File "/usr/lib/python2.6/posixpath.py", line 67:
    elif path == '' or path.endswith('/'):
make: *** [build] Error 2

Я предполагаю, что что-то новое (объект 'Dir', в котором ожидается строка пути POSIX) в одном из пакетов нарушает процесс сборки, но какой именно?Здесь слишком много слоев, чтобы я мог следовать за ними.Конечно, я мог бы просто продолжать пробовать старые пакеты, особенно для swtoolkit и scons, но если кто-то здесь успешно скомпилирует libjingle и сможет подтолкнуть меня в правильном направлении, я был бы признателен.

Ответы [ 2 ]

24 голосов
/ 09 марта 2011

Я не знаком с проектом, но думаю, у меня есть решение, которое поможет вам преодолеть этот пункт. Вам нужно привести эти Dir экземпляры, используя str() в swtoolkit / site_scons / site_init.py. Таким образом, их можно безопасно оценить по path.endswith('/'). Странно, что такая проблема будет существовать очень долго в основной части инфраструктуры сборки:

Строка 330:

SCons.Script.Main._load_site_scons_dir(
    str(SCons.Node.FS.get_default_fs().SConstruct_dir), site_dir)

Строка 450:

SCons.Script.Main._load_site_scons_dir(
    str(SCons.Node.FS.get_default_fs().SConstruct_dir), None)
3 голосов
/ 16 июля 2012

Я сделал следующее для сборки libjingle:

Сборка LibJingle для Linux

  1. Как построить

Libjingle построен с swtoolkit (http://code.google.com/p/swtoolkit/),, который набор расширений для инструмента сборки SCons с открытым исходным кодом (http://www.scons.org).

  • Сначала установите Python 2.4 или более позднюю версию с http://www.python.org/. Обратите внимание, что поскольку swtoolkit работает только с Python 2.x, вы не сможет использовать Python 3.x.

  • Во-вторых, установите автономный локальный пакет scons 2.0.0 или более поздней версии. http://www.scons.org/download.php и установите переменную окружения, SCONS_DIR, чтобы указать каталог, содержащий SCons, например, /src/libjingle/scons-local/scons-local-2.0.0.final.0/.

  • В-третьих, установите swtoolkit из http://code.google.com/p/swtoolkit/.

  • Наконец, Libjingle зависит от двух проектов с открытым исходным кодом, expat и srtp. Скачать экспата с http://sourceforge.net/projects/expat/ на говорить / THIRD_PARTY / эмигрант-2.0.1 /. Следуйте инструкциям на http://sourceforge.net/projects/srtp/develop для загрузки последней версии SRTP в говорить / THIRD_PARTY / SRTP. Обратите внимание, что srtp-1.4.4 не работает, так как отсутствует расширения, используемые Libjingle. Если вы поместите expat или srtp в другой каталог, вам нужно отредактировать talk/libjingle.scons соответственно.

2.1 Сборка Libjingle под Linux или OS X

  • Сначала убедитесь, что переменная окружения SCONS_DIR установлена ​​правильно.
  • Во-вторых, запустить talk/third_party/expat-2.0.1/configure и talk/third_party/srtp/configure.
  • В-третьих, перейдите в каталог talk / и запустите $path_to_swtoolkit/hammer.sh. Бежать $path_to_swtoolkit/hammer.sh --help для получения информации о том, как построить для разные режимы.

Кроме указанных выше шагов, см. Далее как ссылку

Установить путь SCONS_DIR

export SCONS_DIR=/home/esumit/libjingle/libjingle-0.5.2/talk/third_party/scons-local/scons-local-2.0.1

Установите libasound2-dev Lib для компиляции libJingle, в противном случае вы увидите ошибки.

sudo apt-get install libasound2-dev

Загрузите SRTP с помощью следующей команды. Если он запрашивает пароль, просто нажмите Enter.

cvs -z3 -d:pserver:anonymous@srtp.cvs.sourceforge.net:/cvsroot/srtp co -P srtp

Возможные компоненты в каталоге LibJingle

libjingle-0.5.2/talk/third_party$ ls
expat-2.0.1  libudev  scons-local  srtp  swtoolkit

Выполните следующую команду для сборки LibJingle

libjingle-0.5.2/talk$ ./third_party/swtoolkit/hammer.sh
...