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 <[email protected]>