# ldd -r /usr/lib/libsvn_swig_py-1.so.0 2>&1 | grep undefined | wc -l 53 # rpm -qf /usr/lib/libsvn_swig_py-1.so.0 subversion-python-1.1.3-alt2 swig-1.3.24-alt2 swig-runtime-python-1.3.24-alt2 Может, добавить в subversion-python зависимость на версию swig ?
А какая версия сейчас актуальная? И зависит ли это от версии swig? Интересно, что undefined symbols есть только в свиговых либах...
[...] > swig-1.3.24-alt2 > swig-runtime-python-1.3.24-alt2 > > Может, добавить в subversion-python зависимость на версию swig ? не надо, надо избавляться от хотения swig-runtime-python
(In reply to comment #1) > А какая версия сейчас актуальная? > И зависит ли это от версии swig? > > Интересно, что undefined symbols есть только в свиговых либах... не только. undefined symbols от того, что ни libsvn_swig_py-1, ни libswigpy не слинкованы с libpython2.*
(In reply to comment #2) > > Может, добавить в subversion-python зависимость на версию swig ? > не надо, надо избавляться от хотения swig-runtime-python А как это сделать? И почему это надо?
(In reply to comment #3) > (In reply to comment #1) > > А какая версия сейчас актуальная? > > И зависит ли это от версии swig? > > > > Интересно, что undefined symbols есть только в свиговых либах... > не только. Я имел ввиду libsvn_swig-*, однако оказывается, что и libswig{py,pl} тоже имеют undefined... > undefined symbols от того, что ни libsvn_swig_py-1, ни libswigpy не слинкованы с > libpython2.* щас посмотрю как там определяются флаги для линковки...
(In reply to comment #4) > (In reply to comment #2) > > > Может, добавить в subversion-python зависимость на версию swig ? > > не надо, надо избавляться от хотения swig-runtime-python > > А как это сделать? > И почему это надо? 2. начиная со swig*1.3.2счемто -- не помню точно, вроде с 1.3.22 -- была выкинута апстримом поддержка swig-runtime-*, зачем -- они расписывали, как без неё обходиться, тоже где-то у них пробегало. 1. Если в subversion добавили поддержку swig*1.3.24, то ничего уже делать не придёться -- только пересобрать subversion без наличия swig-runtime-python.
(In reply to comment #2) > [...] > > swig-1.3.24-alt2 > > swig-runtime-python-1.3.24-alt2 > > > > Может, добавить в subversion-python зависимость на версию swig ? > не надо, надо избавляться от хотения swig-runtime-python Кстати, вот что есть subversion:/build/ac-macros/swig.m4: ... dnl Newer versions of SWIG have deprecated the -c "do not dnl include SWIG runtime functions (used for creating multi-module dnl packages)" in favor of the -noruntime flag. if test "$SWIG_VERSION" -ge "103024"; then SWIG_NORUNTIME_FLAG='' LSWIGPL='' LSWIGPY='' else if test "$SWIG_VERSION" -ge "103020"; then SWIG_NORUNTIME_FLAG='-noruntime' else SWIG_NORUNTIME_FLAG='-c' fi LSWIGPL='-lswigpl' LSWIGPY='-lswigpy' fi ... Из-за этого не идет линковка с libswig{py,pl} Еще: $ swig -noruntime SWIG:1: Warning(120): -c, -runtime, -noruntime command line options are deprecated. ... То есть вроде бы как и правильно, что флаг не указывается, но мне непонятно почему для 1.3.24 не делается линковка с libswig{py,pl}? И как в таком случае определить с какими либами надо линковаться?
(In reply to comment #6) > ... > 1. Если в subversion добавили поддержку swig*1.3.24, то ничего уже делать не > придёться -- только пересобрать subversion без наличия swig-runtime-python. Вот-вот, он и не линкуется сейчас с libswig{py,pl} Но остается открытым вопрос как найти либы с которыми надо линковаться? Может есть где-ниь пример?
(In reply to comment #8) > (In reply to comment #6) > > ... > > 1. Если в subversion добавили поддержку swig*1.3.24, то ничего уже делать не > > придёться -- только пересобрать subversion без наличия swig-runtime-python. > > Вот-вот, он и не линкуется сейчас с libswig{py,pl} а их и не будет, на надо с ними линковаться. > Но остается открытым вопрос как найти либы с которыми надо линковаться? Может надо линковаться с svn`овскими либами и с libpython2.4 > есть где-ниь пример? Наверное можно посмотреть на примеры в swig-doc
(In reply to comment #9) > (In reply to comment #8) > > (In reply to comment #6) > > Вот-вот, он и не линкуется сейчас с libswig{py,pl} > а их и не будет, на надо с ними линковаться. ^^^^^^^ _не_ надо
Со сборкой subversion-python-1.1.4-alt1 unresolved стало 41. По крайней мере, trac-admin заработал.
(In reply to comment #11) > Со сборкой subversion-python-1.1.4-alt1 unresolved стало 41. > По крайней мере, trac-admin заработал. а какие unresolved? попробуйте слинковаться с libpython
Каким образом попробовать слинковать с libpython ? undefined symbol: _Py_TrueStruct (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: _Py_NoneStruct (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyString_Type (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyLong_Type (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyFile_Type (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyExc_TypeError (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyInt_Type (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyType_Type (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyInt_FromLong (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyCObject_Import (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyObject_Free (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PySequence_GetItem (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyObject_CallFunction (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyBuffer_FromMemory (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyObject_Init (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyDict_SetItemString (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: Py_BuildValue (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyErr_SetString (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyErr_Occurred (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyEval_RestoreThread (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyOS_snprintf (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyDict_New (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyErr_Clear (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyString_FromString (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyList_Append (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PySequence_Size (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyList_New (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyObject_CallMethod (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyEval_SaveThread (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyObject_CallObject (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyType_IsSubtype (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyLong_FromUnsignedLong (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyFile_AsFile (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyObject_SetAttrString (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyInt_AsLong (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyObject_Malloc (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyString_FromFormat (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyLong_AsLong (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyErr_SetObject (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PySequence_Check (/usr/lib/libsvn_swig_py-1.so.0) undefined symbol: PyErr_NewException (/usr/lib/libsvn_swig_py-1.so.0)
(In reply to comment #9) > > > Вот-вот, он и не линкуется сейчас с libswig{py,pl} > а их и не будет, на надо с ними линковаться. > > > Но остается открытым вопрос как найти либы с которыми надо линковаться? Может > надо линковаться с svn`овскими либами и с libpython2.4 Угу, это понятно... осталось придумать правильный способ чтоб линковаться с libpython* или libperl*... > > есть где-ниь пример? > Наверное можно посмотреть на примеры в swig-doc На первый взгляд - там этого нет (да по идее и не будет) В примере сборки либы там просто явно задано в Makefile с чем линковаться... По идее, здесь хотелось бы иметь что-либо a-la pkgconfig... чтоб, например, можно было сказать swig -pyhon -libs и получить список, который можно передать линкеру...
(In reply to comment #13) > Каким образом попробовать слинковать с libpython ? > Попробуйте во это: --- subversion-1.1.4/build/ac-macros/swig.m4~ 2005-04-07 18:23:33 +0300 +++ subversion-1.1.4/build/ac-macros/swig.m4 2005-04-07 18:24:19 +0300 @@ -118,8 +118,8 @@ AC_DEFUN(SVN_FIND_SWIG, dnl packages)" in favor of the -noruntime flag. if test "$SWIG_VERSION" -ge "103024"; then SWIG_NORUNTIME_FLAG='' - LSWIGPL='' - LSWIGPY='' + LSWIGPL='-lperl' + LSWIGPY='-lpython2.4' else if test "$SWIG_VERSION" -ge "103020"; then SWIG_NORUNTIME_FLAG='-noruntime'
(In reply to comment #15) > (In reply to comment #13) > > Каким образом попробовать слинковать с libpython ? > > > > Попробуйте во это: > ... Это неправильно... на самом деле build/get-py-info.py, который должен возвращать либы на запрос --libs... но не делает этого... Кто-нить знает как запустить питон с трассировкой, типа как sh -x?
(In reply to comment #16) > (In reply to comment #15) > > (In reply to comment #13) > > > Каким образом попробовать слинковать с libpython ? > > > > > > > Попробуйте во это: > > ... > > Это неправильно... на самом деле build/get-py-info.py, который должен возвращать > либы на запрос --libs... но не делает этого... > Кто-нить знает как запустить питон с трассировкой, типа как sh -x? Однако указанный патч исправил проблему... Теперь остались еще mod_dav_svn и mod_authz_svn..
Попробуйте с таким патчем, pls. --- get-py-info.py.orig 2004-08-10 20:35:02 +0400 +++ get-py-info.py 2005-04-08 12:53:34 +0400 @@ -43,7 +43,10 @@ sys.exit(0) def ldshared_process(just_libs = None): - ldshared = sysconfig.get_config_var('LDSHARED') + if just_libs: + ldshared = sysconfig.get_config_var('BLDLIBRARY') + else: + ldshared = sysconfig.get_config_var('LDSHARED') ldshared_elems = string.split(ldshared, " ") libs_elems = [] for i in range(len(ldshared_elems)):
(In reply to comment #18) > Попробуйте с таким патчем, pls. С ним тоже undefined нет. Кстати, Юрий Седунов сообщает, что в swig.m4 (или где-то рядом) ошибка логики - при ненахождении подходящей версии swig сборка swig-py должна отменяться, иначе: $ grep SWIG_PY_COMPILE config.log Makefile config.log:SWIG_PY_COMPILE='' Makefile:SWIG_PY_COMPILE = Makefile:COMPILE_PY_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_PY_COMPILE) $(CPPFLAGS) $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -prefer-pic -c -o $@
(In reply to comment #19) > (In reply to comment #18) > > Попробуйте с таким патчем, pls. > С ним тоже undefined нет. > И все же непонятно как реагировать на undefined symbols... В upstream не считают это проблемой: <maxb> It should work fine despite that <maxb> Because, the things which use libsvn_swig_py will only ever be loaded into a binary which *already* has those symbols loaded <maxb> so, they do not need to be linked Вроде бы звучит логично... В devel (http://lists.altlinux.ru/pipermail/devel/2005-April/019797.html) пока тоже молчат... Кто-нить может сделать какой-нить пример, использующий subversion-python или subversion-perl чтоб проверить работоспособность? PS mailer.py вроде не ругается при запуске, хотя реально в работе я его не проверял
У меня undefined вылезли при запуске этого скрипта: http://projects.edgewall.com/trac/file/trunk/scripts/trac-admin После линковки subversion с -lpython2.4 скрипт отработал нормально. Точный вывод ошибок при запуске trac-admin без линковки -lpython2.4 сейчас привести не могу, если это важно - чуть позже сделаю vserver с окружением на момент ошибок. В subversion/build/get-py-info.py налицо ошибка: запуск с параметром --libs выдаёт пустую строку.
Более простой пример того, что происходит без линковки с -lpython2.4: http://svn.collab.net/repos/svn/trunk/tools/examples/svnshell.py $ python svnshell.py Traceback (most recent call last): File "svnshell.py", line 25, in ? from svn import fs, core, repos File "/usr/lib/python2.4/site-packages/svn/fs.py", line 28, in ? import libsvn.fs File "/usr/lib/python2.4/site-packages/libsvn/fs.py", line 5, in ? import _fs ImportError: /usr/lib/libsvn_swig_py-1.so.0: undefined symbol: SWIG_Python_TypeQuery
Короче говоря, линкуйте. Да я выношу swig-runtime* в /dev/null, бо никто его кроме subversion-python не хотел, и врядли захочет :)
(In reply to comment #22) > Более простой пример того, что происходит без линковки с -lpython2.4: > http://svn.collab.net/repos/svn/trunk/tools/examples/svnshell.py > > $ python svnshell.py > Traceback (most recent call last): > File "svnshell.py", line 25, in ? > from svn import fs, core, repos > File "/usr/lib/python2.4/site-packages/svn/fs.py", line 28, in ? > import libsvn.fs > File "/usr/lib/python2.4/site-packages/libsvn/fs.py", line 5, in ? > import _fs > ImportError: /usr/lib/libsvn_swig_py-1.so.0: undefined symbol: SWIG_Python_TypeQuery Это с какой сборкой? На 1.1.4-alt2 такого не проявляется: $ ./svnshell.py /var/lib/subversion/scpm <rev: 21 />$ ls REV AUTHOR NODE-REV-ID SIZE DATE NAME ---------------------------------------------------------------------------- 1 svd < 1.0.r1/61> Nov 27 13:40 branches/ 1 svd <2.0.r1/190> Nov 27 13:40 tags/ 21 svd <5.4.r21/644> Apr 6 20:41 trunk/ 15 svd <4.0.r15/298> Mar 3 22:51 vendor/ использовался /usr/share/doc/subversion-tools-1.1.4/examples/svnshell.py с правкой на предмет s/python2/python/ в первой строчке. Тот, который по указанному урлу, уже имеет некоторые изменения и поэтому не запускается. Но это не касается линковки с питоном: $ ./svnshell.py /var/lib/subversion/scpm Traceback (most recent call last): File "./svnshell.py", line 367, in ? main() File "./svnshell.py", line 364, in main core.run_app(SVNShell, sys.argv[1]) File "/usr/lib/python2.4/site-packages/svn/core.py", line 33, in run_app return apply(func, (pool,) + args, kw) File "./svnshell.py", line 36, in __init__ self.fs_ptr = repos.fs(repos.open(path, pool)) AttributeError: 'module' object has no attribute 'open'
(In reply to comment #24) > ... > Это с какой сборкой? На 1.1.4-alt2 такого не проявляется: Ooops, а тут я лажанулся... оказывается, alt2 я еще не заливал, ожидая, что придется делать доп изменения... поскольку на нем вроде работает - залил в инкаминг... ...а тем временем пытался собрать 1.2.0-rc1, но пока неуспешно....
> > ImportError: /usr/lib/libsvn_swig_py-1.so.0: undefined symbol: > SWIG_Python_TypeQuery > > Это с какой сборкой? На 1.1.4-alt2 такого не проявляется: Это с последней из 1.1.3. Кстати, я бы советовал alt2 собирать с патчем из комментария 18, он правильнее, чем явное указание версии питона в swig.m4. > $ ./svnshell.py /var/lib/subversion/scpm > <rev: 21 />$ ls > REV AUTHOR NODE-REV-ID SIZE DATE NAME > ---------------------------------------------------------------------------- > 1 svd < 1.0.r1/61> Nov 27 13:40 branches/ > 1 svd <2.0.r1/190> Nov 27 13:40 tags/ > 21 svd <5.4.r21/644> Apr 6 20:41 trunk/ > 15 svd <4.0.r15/298> Mar 3 22:51 vendor/ > > использовался /usr/share/doc/subversion-tools-1.1.4/examples/svnshell.py с > правкой на предмет s/python2/python/ в первой строчке. Кстати, не делать ли эту замену при сборке? > Тот, который по указанному урлу, уже имеет некоторые изменения и поэтому не > запускается. Но это не касается линковки с питоном: Да, я на это наткнулся, и некий darix: на #svn уже посоветовал более правильные примеры для svn python api - проект rsvn. Кстати, очень обломно было бы видеть RC версии svn в sisyphus - уж лучше в daedalus. Система контроля версий - не та вещь, с которой можно сильно экспериментировать :) <skipped/>