pjproject icon indicating copy to clipboard operation
pjproject copied to clipboard

Swig errors on python build

Open qvs5010 opened this issue 9 months ago • 0 comments

Describe the bug

Shows errors when running make for pjsua2

Steps to reproduce

pjsua2

cd pjsip-apps/src/swig/python make make install

PJSIP version

2.14.1

Context

when I follow the instructions on page https://docs.pjsip.org/en/latest/pjsua2/building.html#building-python-swig-module

I get swig errors when building, its on a newly installed ubuntu 24.04 both python 3.10 and 3.12 gives the same error.

Log, call stack, etc

root@:/usr/src/pjsip/pjproject-2.14.1/pjsip-apps/src/swig/python# make
swig -I../../../../pjlib/include -I../../../../pjlib-util/include -I../../../../pjmedia/include -I../../../../pjsip/include -I../../../../pjnath/include -c++  -w312 -threads -DSWIG_NO_EXPORT_ITERATOR_METHODS -python -o pjsua2_wrap.cpp ../pjsua2.i
python3 setup.py build
pjsua2_wrap.cpp:6272:56: error: expected template-name before ‘<’ token
 6272 |     struct SwigPyMapIterator_T : SwigPyIteratorClosed_T<OutIterator, ValueType, FromOper>
      |                                                        ^
pjsua2_wrap.cpp:6272:56: error: expected ‘{’ before ‘<’ token
pjsua2_wrap.cpp: In instantiation of ‘struct swig::SwigPyMapKeyIterator_T<std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, swig::from_key_oper<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >’:
pjsua2_wrap.cpp:6295:14:   required from ‘swig::SwigPyIterator* swig::make_output_key_iterator(const OutIter&, const OutIter&, const OutIter&, PyObject*) [with OutIter = std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >; PyObject = _object]’
pjsua2_wrap.cpp:6471:44:   required from here
pjsua2_wrap.cpp:6283:12: error: invalid use of incomplete type ‘struct swig::SwigPyMapIterator_T<std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, swig::from_key_oper<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >’
 6283 |     struct SwigPyMapKeyIterator_T : SwigPyMapIterator_T<OutIterator, FromOper>
      |            ^~~~~~~~~~~~~~~~~~~~~~
pjsua2_wrap.cpp:6272:12: note: declaration of ‘struct swig::SwigPyMapIterator_T<std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, swig::from_key_oper<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >’
 6272 |     struct SwigPyMapIterator_T : SwigPyIteratorClosed_T<OutIterator, ValueType, FromOper>
      |            ^~~~~~~~~~~~~~~~~~~
pjsua2_wrap.cpp: In instantiation of ‘swig::SwigPyIterator* swig::make_output_key_iterator(const OutIter&, const OutIter&, const OutIter&, PyObject*) [with OutIter = std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >; PyObject = _object]’:
pjsua2_wrap.cpp:6471:44:   required from here
pjsua2_wrap.cpp:6295:74: error: cannot convert ‘swig::SwigPyMapKeyIterator_T<std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, swig::from_key_oper<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >*’ to ‘swig::SwigPyIterator*’ in return
 6295 |       return new SwigPyMapKeyIterator_T<OutIter>(current, begin, end, seq);
      |                                                                          ^
pjsua2_wrap.cpp: In instantiation of ‘struct swig::SwigPyMapValueIterator_T<std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, swig::from_value_oper<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >’:
pjsua2_wrap.cpp:6313:14:   required from ‘swig::SwigPyIterator* swig::make_output_value_iterator(const OutIter&, const OutIter&, const OutIter&, PyObject*) [with OutIter = std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >; PyObject = _object]’
pjsua2_wrap.cpp:6474:46:   required from here
pjsua2_wrap.cpp:6300:12: error: invalid use of incomplete type ‘struct swig::SwigPyMapIterator_T<std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, swig::from_value_oper<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >’
 6300 |     struct SwigPyMapValueIterator_T : SwigPyMapIterator_T<OutIterator, FromOper>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~
pjsua2_wrap.cpp:6272:12: note: declaration of ‘struct swig::SwigPyMapIterator_T<std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, swig::from_value_oper<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >’
 6272 |     struct SwigPyMapIterator_T : SwigPyIteratorClosed_T<OutIterator, ValueType, FromOper>
      |            ^~~~~~~~~~~~~~~~~~~
pjsua2_wrap.cpp: In instantiation of ‘swig::SwigPyIterator* swig::make_output_value_iterator(const OutIter&, const OutIter&, const OutIter&, PyObject*) [with OutIter = std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >; PyObject = _object]’:
pjsua2_wrap.cpp:6474:46:   required from here
pjsua2_wrap.cpp:6313:76: error: cannot convert ‘swig::SwigPyMapValueIterator_T<std::_Rb_tree_iterator<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > >, swig::from_value_oper<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > >*’ to ‘swig::SwigPyIterator*’ in return
 6313 |       return new SwigPyMapValueIterator_T<OutIter>(current, begin, end, seq);
      |                                                                            ^
error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
make: *** [Makefile:40: _pjsua2.so] Error 1
root@ai:/usr/src/pjsip/pjproject-2.14.1/pjsip-apps/src/swig/python# make clean
rm -rf _pjsua2.so pjsua2_wrap.cpp pjsua2_wrap.h pjsua2.py build *.pyc
rm -f gcc.exe g++.exe
root@ai:/usr/src/pjsip/pjproject-2.14.1/pjsip-apps/src/swig/python# ls
cc_mingw.c  get-pip.py  helper.mak  Makefile  setup.py  test.py
root@ai:/usr/src/pjsip/pjproject-2.14.1/pjsip-apps/src/swig/python# sudo apt-get install swig
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
swig is already the newest version (4.2.0-2ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.
root@:/usr/src/pjsip/pjproject-2.14.1/pjsip-apps/src/swig/python#

qvs5010 avatar May 18 '24 11:05 qvs5010