problem compiling libjingle

匿名 (未验证) 提交于 2019-12-03 01:29:01

问题:

I downloaded and installed libjingle-0.5.2.zip, and according to the README also downloaded and installed swtoolkit.0.9.1.zip, scons-local-2.1.0.alpha.20101125.tar.gz, and expat-2.0.1.tar.gz, and got nrtp by cvs download. After overwriting my Makefile twice, attempting to follow the rather poorly-written README, I came up with the following Makefile that almost works:

 # 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 

However, make gives me the following errors:

 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 

I'm guessing that something new (a 'Dir' object being where a POSIX path string is expected) in one of the packages is breaking the build process, but which one? There are just too many layers of cruft here for me to follow. For sure I could just keep trying older packages, particularly for swtoolkit and scons, but if anyone here has successfully compiled libjingle and could prod me in the right direction, I'd appreciate it.

回答1:

I'm not familiar with the project, but think I have a fix to get you past that point. You need to cast those Dir instances using str() in swtoolkit/site_scons/site_init.py. That way they can safely be evaluated by path.endswith('/'). Odd that such an issue would exist for very long in the main part of the build infrastructure:

Line 330:

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

Line 450:

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


回答2:

I did following to build libjingle :

Building LibJingle for Linux

  1. How to Build

Libjingle is built with swtoolkit ( http://code.google.com/p/swtoolkit/), which is a set of extensions to the open-source SCons build tool ( http://www.scons.org).

  • First, install Python 2.4 or later from http://www.python.org/. Please note that since swtoolkit only works with Python 2.x, you will not be able to use Python 3.x.

  • Second, install the stand alone scons-local package 2.0.0 or later from http://www.scons.org/download.php and set an environment variable, SCONS_DIR, to point to the directory containing SCons, for example, /src/libjingle/scons-local/scons-local-2.0.0.final.0/.

  • Third, install swtoolkit from http://code.google.com/p/swtoolkit/.

  • Finally, Libjingle depends on two open-source projects, expat and srtp. Download expat from http://sourceforge.net/projects/expat/ to talk/third_party/expat-2.0.1/. Follow the instructions at http://sourceforge.net/projects/srtp/develop to download latest srtp to talk/third_party/srtp. Note that srtp-1.4.4 does not work since it misses the extensions used by Libjingle. If you put expat or srtp in a different directory, you need to edit talk/libjingle.scons correspondingly.

2.1 Build Libjingle under Linux or OS X

  • First, make sure the SCONS_DIR environment variable is set correctly.
  • Second, run talk/third_party/expat-2.0.1/configure and 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.

Other than above given steps, See following as reference

Set SCONS_DIR Path

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

Install libasound2-dev Lib to compile libJingle, otherwise you will encounter errors.

sudo apt-get install libasound2-dev 

Download SRTP using the following command. If it asks for a passowrd, just hit Enter.

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

Possible components in LibJingle Directory

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

Execute following command to build LibJingle

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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!