Hi,
On 2021/02/17 0:04, Lev Serebryakov wrote:
>
> Update to 1.14.1 break out-of-tree build of python bindings (with python 3.7).
> 1.14.0 works with same options, makefiles, etc. 1.14.1 fails to build bindings when libraries are installed and swig is not installed (bindings are built as separate ntity, not together with subversion libraries themselves):
>
Even subversion libraries are installed, 'make check-swig-py' needs
subversion libraries in build tree. Those will be built before
building bindings if they were not built yet.
> --- check-swig-py ---
> if [ "LD_LIBRARY_PATH" = "DYLD_LIBRARY_PATH" ]; then for d in /wrkdirs/usr/ports/devel/py-subversion/work-py37/subversion-1.14.1/subversion/bindings/swig/python/libsvn_swig_py /wrkdirs/usr/ports/devel/py-subversion/work-py37/subversion-1.14.1/subversion/bindings/swig/python/../../../libsvn_*; do if [ -n "$DYLD_LIBRARY_PATH" ]; then LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$d/.libs"; else LD_LIBRARY_PATH="$d/.libs"; fi; done; export LD_LIBRARY_PATH; fi; cd /wrkdirs/usr/ports/devel/py-subversion/work-py37/subversion-1.14.1/subversion/bindings/swig/python; /usr/local/bin/python3.7 /wrkdirs/usr/ports/devel/py-subversion/work-py37/subversion-1.14.1/subversion/bindings/swig/python/tests/run_all.py
> Traceback (most recent call last):
> File "/wrkdirs/usr/ports/devel/py-subversion/work-py37/subversion-1.14.1/subversion/bindings/swig/python/tests/run_all.py", line 23, in <module>
> import mergeinfo, core, client, delta, checksum, pool, fs, ra, wc, repository, \
> File "/wrkdirs/usr/ports/devel/py-subversion/work-py37/subversion-1.14.1/subversion/bindings/swig/python/tests/mergeinfo.py", line 22, in <module>
> from svn import core, repos, fs
> File "/wrkdirs/usr/ports/devel/py-subversion/work-py37/subversion-1.14.1/subversion/bindings/swig/python/svn/core.py", line 26, in <module>
> from libsvn.core import *
> File "/wrkdirs/usr/ports/devel/py-subversion/work-py37/subversion-1.14.1/subversion/bindings/swig/python/libsvn/core.py", line 26, in <module>
> from . import _core
> ImportError: cannot import name '_core' from 'libsvn' (/wrkdirs/usr/ports/devel/py-subversion/work-py37/subversion-1.14.1/subversion/bindings/swig/python/libsvn/__init__.py)
> *** [check-swig-py] Error code 1
>
I tried to reproduce, but I couldn't reproduce the issue.
Did there exist subversion/bindings/swig/python/.libs/_core.so?
How about subversion/libsvn_client/.libs/libsvn_client-1.so.0, etc?
I did below on FreeBSD 12.2:
[[[
tar xpf /usr/ports/distfiles/subversion-1.14.1.tar.bz2
mkdir out-of-tree-svn-1.14.1
cd out-of-tree-svn-1.14.1
env PYTHON=/usr/local/bin/python3.7 sh ../subversion-1.14.1/configure \
--with-sqlite=/usr/local \
--with-expat=/usr/local/include:/usr/local/lib:expat --without-swig \
--with-apr=/usr/local/bin/apr-1-config \
--with-apr-util=/usr/local/bin/apu-1-config \
--without-gnome-keyring --without-kwallet \
--with-apxs=/usr/local/sbin/apxs \
--prefix=/usr/local --localstatedir=/var --mandir=/usr/local/man \
--infodir=/usr/local/info --with-py3c=/usr/local
make check-swig-py
]]]
and it passed the test.
(Note: if source tree subversion-1.14.1 is not clean, "make swig-py"
stopped with error before building Python bindings.)
Result of ldd _core.so:
[[[
$ ldd subversion/bindings/swig/python/.libs/_core.so
subversion/bindings/swig/python/.libs/_core.so:
libsvn_swig_py-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/bindings/swig/python/libsvn_swig_py/.libs/libsvn_swig_py-1.so.0 (0x80071d000)
libsvn_client-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_client/.libs/libsvn_client-1.so.0 (0x800734000)
libsvn_wc-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_wc/.libs/libsvn_wc-1.so.0 (0x800e00000)
libsvn_diff-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_diff/.libs/libsvn_diff-1.so.0 (0x8007c0000)
libsvn_ra-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_ra/.libs/libsvn_ra-1.so.0 (0x8007da000)
libsvn_ra_local-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_ra_local/.libs/libsvn_ra_local-1.so.0 (0x8007ea000)
libsvn_repos-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_repos/.libs/libsvn_repos-1.so.0 (0x800ea9000)
libsvn_fs-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_fs/.libs/libsvn_fs-1.so.0 (0x800ee8000)
libsvn_fs_fs-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_fs_fs/.libs/libsvn_fs_fs-1.so.0 (0x800ef8000)
libsvn_fs_x-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_fs_x/.libs/libsvn_fs_x-1.so.0 (0x800f4b000)
libsvn_fs_base-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_fs_base/.libs/libsvn_fs_base-1.so.0 (0x800fbf000)
libdb-5.3.so.0 => /usr/local/lib/libdb-5.3.so.0 (0x800fef000)
libsvn_fs_util-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_fs_util/.libs/libsvn_fs_util-1.so.0 (0x8007f6000)
libsvn_ra_svn-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_ra_svn/.libs/libsvn_ra_svn-1.so.0 (0x801197000)
libsvn_ra_serf-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_ra_serf/.libs/libsvn_ra_serf-1.so.0 (0x8011bf000)
libserf-1.so.1 => /usr/local/lib/libserf-1.so.1 (0x8011f3000)
libsvn_delta-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_delta/.libs/libsvn_delta-1.so.0 (0x801211000)
libsvn_subr-1.so.0 => /home/staff7/work/out-of-tree-svn-1.14.1/subversion/libsvn_subr/.libs/libsvn_subr-1.so.0 (0x801232000)
libaprutil-1.so.0 => /usr/local/lib/libaprutil-1.so.0 (0x8012c7000)
libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x8012f8000)
libz.so.6 => /lib/libz.so.6 (0x801325000)
libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x801341000)
libmagic.so.4 => /usr/lib/libmagic.so.4 (0x8014e5000)
liblz4.so.1 => /usr/local/lib/liblz4.so.1 (0x80150f000)
libutf8proc.so.2 => /usr/local/lib/libutf8proc.so.2 (0x80153d000)
libapr-1.so.0 => /usr/local/lib/libapr-1.so.0 (0x801592000)
libintl.so.8 => /usr/local/lib/libintl.so.8 (0x8015d3000)
libthr.so.3 => /lib/libthr.so.3 (0x8015e1000)
libc.so.7 => /lib/libc.so.7 (0x80024e000)
libssl.so.111 => /usr/lib/libssl.so.111 (0x80160e000)
libcrypto.so.111 => /lib/libcrypto.so.111 (0x8016a6000)
libcrypt.so.5 => /lib/libcrypt.so.5 (0x801998000)
libgdbm.so.6 => /usr/local/lib/libgdbm.so.6 (0x8019b9000)
libm.so.5 => /lib/libm.so.5 (0x8019ca000)
]]]
Cheers,
--
Yasuhito FUTATSUKI <
futa...@yf.bsclub.org>