[Debian-med-packaging] Bug#1092510: RFS: python-freecontact: FTBFS: ImportError: /lib/x86_64-linux-gnu/libboost_python313.so.1.83.0: undefined symbol: PyObject_DelAttr

Nilesh Patra nilesh at riseup.net
Tue Jan 14 12:23:47 GMT 2025


Control: tags -1 patch

Hi,

This is due to an improper version of boost linked against 3.12 .so of
freecontact. The work-around for linking boost in d/rules is wrong when
there are more than 1 python version.

The below patch links the correct versions and gets it building.

diff --git a/debian/patches/fix_boost_linkage.patch
b/debian/patches/fix_boost_linkage.patch
new file mode 100644
index 0000000..7880c97
--- /dev/null
+++ b/debian/patches/fix_boost_linkage.patch
@@ -0,0 +1,27 @@
+Description: boost python libs are versioned. Simply using
liboost_python does not work.
+ Added in a small function to return proper boost version as per
interpreter
+Author: Nilesh Patra <nilesh at debian.org>
+Last-Update: 2025-01-14
+--- a/setup.py
++++ b/setup.py
+@@ -17,6 +17,11 @@
+ #
+ from distutils.core import setup, Extension
+ from glob import glob
++import sys
++
++def get_boost_version():
++    return 'boost_python%s%s' \
++            % (sys.version_info.major, sys.version_info.minor)
+
+ setup(        name = 'python-freecontact',
+       version = '1.1',
+@@ -30,7 +35,7 @@
+         ext_modules = [Extension(
+             name = 'freecontact',
+             sources = glob('src/*.cpp'),
+-            libraries = ['freecontact', 'boost_python'])]
++            libraries = ['freecontact', get_boost_version()])]
+       )
+
+ # vim:et:ts=4:ai:
diff --git a/debian/patches/series b/debian/patches/series
index 6cf0ae4..d950698 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 fix_test_failed.patch
+fix_boost_linkage.patch
diff --git a/debian/rules b/debian/rules
index da19e08..ca7cd56 100755
--- a/debian/rules
+++ b/debian/rules
@@ -5,14 +5,6 @@ export DEB_BUILD_MAINT_OPTIONS=hardening=+all

 export PYBUILD_NAME = freecontact

-export PY3SO = $(shell py3versions --default --version | sed 's/\.//')
-
-# Workaround linker error, failing to locate -lboost_python.
-export LIBRARY_PATH = $(CURDIR)
-execute_before_dh_auto_build:
-       ln -sv /usr/lib/$(DEB_HOST_MULTIARCH)/libboost_python$(PY3SO).so \
-               $(CURDIR)/libboost_python.so
-
 %:
        dh $@ --with python3 --buildsystem=pybuild
--builddirectory=$(CURDIR)/builddir



More information about the Debian-med-packaging mailing list