On 16.02.2021 19:51, Yasuhito FUTATSUKI 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.
 It was not so for long time (including 1.14.0) with "patched" (re-generated) 
build-outputs.mk.

--- 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?
 Yes.

How about subversion/libsvn_client/.libs/libsvn_client-1.so.0, etc?
  No. But it didn't exist for 1.14.0 too.


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.

 As you know about FreeBSD, try to build `devel/py-subversion' from fresh port 
tree. You'll get error. Revert ports tree to before 1.14.1 import and try 
again. No error.

 Really, new "from . import _XXX" causes problem. I've patched all 
subversion/bindings/swig/python/*.py files and it helps. I'm not python programmer and I don't know what is 
difference between old "import _XXX" and new "from . import _XXX", but it helps.

(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
[[[
> ldd 
./work-py37/subversion-1.14.1/subversion/bindings/swig/python/.libs/_core.so
./work-py37/subversion-1.14.1/subversion/bindings/swig/python/.libs/_core.so:
        libsvn_swig_py-1.so.0 => 
/usr/home/lev/FreeBSD/ports/devel/py-subversion/work-py37/subversion-1.14.1/subversion/bindings/swig/python/libsvn_swig_py/.libs/libsvn_swig_py-1.so.0
 (0x800727000)
        libsvn_client-1.so.0 => /usr/local/lib/libsvn_client-1.so.0 
(0x80073f000)
        libsvn_wc-1.so.0 => /usr/local/lib/libsvn_wc-1.so.0 (0x800e00000)
        libsvn_ra-1.so.0 => /usr/local/lib/libsvn_ra-1.so.0 (0x8007d1000)
        libsvn_delta-1.so.0 => /usr/local/lib/libsvn_delta-1.so.0 (0x800eb1000)
        libaprutil-1.so.0 => /usr/local/lib/libaprutil-1.so.0 (0x800ed3000)
        libsvn_diff-1.so.0 => /usr/local/lib/libsvn_diff-1.so.0 (0x8007e1000)
        libsvn_subr-1.so.0 => /usr/local/lib/libsvn_subr-1.so.0 (0x800f02000)
        libapr-1.so.0 => /usr/local/lib/libapr-1.so.0 (0x800f9c000)
        libthr.so.3 => /lib/libthr.so.3 (0x800fdd000)
        libc.so.7 => /lib/libc.so.7 (0x80024e000)
        libsvn_ra_local-1.so.0 => /usr/local/lib/libsvn_ra_local-1.so.0 
(0x80100a000)
        libsvn_repos-1.so.0 => /usr/local/lib/libsvn_repos-1.so.0 (0x801016000)
        libsvn_fs-1.so.0 => /usr/local/lib/libsvn_fs-1.so.0 (0x801057000)
        libsvn_fs_fs-1.so.0 => /usr/local/lib/libsvn_fs_fs-1.so.0 (0x801067000)
        libsvn_fs_x-1.so.0 => /usr/local/lib/libsvn_fs_x-1.so.0 (0x8010be000)
        libsvn_fs_util-1.so.0 => /usr/local/lib/libsvn_fs_util-1.so.0 
(0x801115000)
        libsvn_ra_svn-1.so.0 => /usr/local/lib/libsvn_ra_svn-1.so.0 
(0x80111a000)
        libsvn_ra_serf-1.so.0 => /usr/local/lib/libsvn_ra_serf-1.so.0 
(0x801143000)
        libserf-1.so.1 => /usr/local/lib/libserf-1.so.1 (0x801179000)
        libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x8011b8000)
        libz.so.6 => /lib/libz.so.6 (0x8011e5000)
        libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x801201000)
        libmagic.so.4 => /usr/lib/libmagic.so.4 (0x8013a5000)
        liblz4.so.1 => /usr/local/lib/liblz4.so.1 (0x8013cf000)
        libutf8proc.so.2 => /usr/local/lib/libutf8proc.so.2 (0x8013fd000)
        libintl.so.8 => /usr/local/lib/libintl.so.8 (0x801452000)
        libcrypt.so.5 => /lib/libcrypt.so.5 (0x801461000)
        libssl.so.111 => /usr/lib/libssl.so.111 (0x801482000)
        libcrypto.so.111 => /lib/libcrypto.so.111 (0x80151a000)
        libm.so.5 => /lib/libm.so.5 (0x80180c000)
]]]

--
// Black Lion AKA Lev Serebryakov

Reply via email to