编译libjingle的问题

时间:2011-03-08 22:09:12

标签: python google-code libjingle

我下载并安装了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,并通过cvs下载获得nrtp。在覆盖了我的Makefile两次后,尝试按照写得很糟糕的自述文件,我想出了几乎可以工作的以下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 个答案:

答案 0 :(得分:24)

我对这个项目并不熟悉,但我认为我已经找到了解决这个问题的方法。您需要在swtoolkit / site_scons / site_init.py中使用Dir强制转换str()个实例。这样他们就可以安全地通过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)

答案 1 :(得分:3)

我做了以下构建libjingle:

为Linux构建LibJingle

  1. 如何构建
  2. Libjingle是使用swtoolkit(http://code.google.com/p/swtoolkit/)构建的 是开源SCons构建工具(http://www.scons.org)的一组扩展。

    • 首先,从http://www.python.org/安装Python 2.4或更高版本。 请注意,由于swtoolkit仅适用于Python 2.x,您将会这样做 无法使用Python 3.x。

    • 其次,从中安装独立的scons-local软件包2.0.0或更高版本 http://www.scons.org/download.php并设置环境变量, SCONS_DIR,指向包含SCons的目录,例如, /src/libjingle/scons-local/scons-local-2.0.0.final.0/

    • 第三步,从http://code.google.com/p/swtoolkit/安装swtoolkit。

    • 最后,Libjingle依赖于两个开源项目,expat和srtp。 从http://sourceforge.net/projects/expat/下载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在Linux或OS X下构建L​​ibjingle

    • 首先,确保正确设置SCONS_DIR环境变量。
    • 其次,运行talk/third_party/expat-2.0.1/configuretalk/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。如果它要求passowrd,只需按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