git: 85d5c8e4949b - main - math/py-python-fcl: update 0.0.12 → 0.7.0.11
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 15 Sep 2026 23:28:52 UTC
The branch main has been updated by yuri:
URL: https://cgit.FreeBSD.org/ports/commit/?id=85d5c8e4949bb126234333edf6678de4c422ad50
commit 85d5c8e4949bb126234333edf6678de4c422ad50
Author: Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-09-15 23:12:01 +0000
Commit: Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-09-15 23:28:46 +0000
math/py-python-fcl: update 0.0.12 → 0.7.0.11
This commit prevents this port removal.
Ports should be fixed instead of being removed.
The version had to be bumped in order to unbreak it.
This port is a dependency of several important
software packages that can be ported.
PR: 298101
Approved by: portmgr (unbreak; blanket)
---
math/py-python-fcl/Makefile | 29 +++++++++++--------
math/py-python-fcl/distinfo | 6 ++--
math/py-python-fcl/files/patch-pyproject.toml | 14 +++++++++
math/py-python-fcl/files/patch-setup.py | 33 ----------------------
.../files/patch-src_fcl_fcl__defs.pxd | 15 ++++++++++
.../files/patch-tests_test__precision.py | 30 ++++++++++++++++++++
math/py-python-fcl/pkg-descr | 4 +--
7 files changed, 81 insertions(+), 50 deletions(-)
diff --git a/math/py-python-fcl/Makefile b/math/py-python-fcl/Makefile
index 4d54c8596b46..2d63df3e5077 100644
--- a/math/py-python-fcl/Makefile
+++ b/math/py-python-fcl/Makefile
@@ -1,32 +1,37 @@
PORTNAME= python-fcl
-PORTVERSION= 0.0.12
-PORTREVISION= 6
+DISTVERSIONPREFIX= v
+DISTVERSION= 0.7.0.11
CATEGORIES= math python
-MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= db@FreeBSD.org
COMMENT= Python bindings for the Flexible Collision Library
-WWW= https://libraries.io/pypi/python-fcl
+WWW= https://github.com/berkeleyautomation/python-fcl
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
-DEPRECATED= Depends on expired lang/cython0
-EXPIRATION_DATE=2026-09-15
-
-LIB_DEPENDS= libfcl05.so:math/fcl05 \
+LIB_DEPENDS= libfcl.so:math/fcl \
liboctomap.so:math/octomap
-BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}numpy>=1.16:math/py-numpy@${PY_FLAVOR}
-RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}numpy>=1.16:math/py-numpy@${PY_FLAVOR}
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}numpy>=1.26:math/py-numpy@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}setuptools>=63.1.0:devel/py-setuptools@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}numpy>=1.26:math/py-numpy@${PY_FLAVOR}
USES= compiler:c++11-lang eigen:3 python
+USE_GITHUB= yes
+GH_ACCOUNT= berkeleyautomation
-USE_PYTHON= autoplist concurrent cython0 distutils
+USE_PYTHON= autoplist concurrent cython pep517 pytest
-PYDISTUTILS_BUILD_TARGET= build_ext
+TEST_ENV= ${MAKE_ENV} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
+TEST_WRKDIR= ${WRKSRC}/tests
+TEST_ARGS= --disable-plugin-autoload
post-install:
${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/fcl/fcl*.so
+# tests as of 0.7.0.11: 12 passed, 3 skipped in 0.08s
+# (3 signed-distance tests skipped due to upstream FCL bug on FreeBSD)
+
.include <bsd.port.mk>
diff --git a/math/py-python-fcl/distinfo b/math/py-python-fcl/distinfo
index 64523c990796..17560e444384 100644
--- a/math/py-python-fcl/distinfo
+++ b/math/py-python-fcl/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1584798153
-SHA256 (python-fcl-0.0.12.tar.gz) = f5e60c4f2f43f72f0029435dd4bac61a7e5867c53cf14adc54afe67dc8ad3510
-SIZE (python-fcl-0.0.12.tar.gz) = 17204
+TIMESTAMP = 1789509148
+SHA256 (berkeleyautomation-python-fcl-v0.7.0.11_GH0.tar.gz) = 5aac8b9b8ba1b2e94971db7ae9b05649985df3ff099b6c6a2785bef9ff5f9b85
+SIZE (berkeleyautomation-python-fcl-v0.7.0.11_GH0.tar.gz) = 24942
diff --git a/math/py-python-fcl/files/patch-pyproject.toml b/math/py-python-fcl/files/patch-pyproject.toml
new file mode 100644
index 000000000000..79c29af91019
--- /dev/null
+++ b/math/py-python-fcl/files/patch-pyproject.toml
@@ -0,0 +1,14 @@
+-- Lower the setuptools build-system requirement to the version provided by
+-- the FreeBSD ports tree (devel/py-setuptools), which is currently 63.1.0.
+-- Upstream requires >=70.0.0, but that version is not available in ports.
+
+--- pyproject.toml.orig 2026-09-15 21:53:37 UTC
++++ pyproject.toml
+@@ -1,6 +1,6 @@ requires = [
+ [build-system]
+ requires = [
+- "setuptools>=70.0.0",
++ "setuptools>=63.1.0",
+ "Cython>=3.0",
+ "numpy; python_version<'3.12'",
+ "numpy>=1.26.0b1; python_version>='3.12'"]
diff --git a/math/py-python-fcl/files/patch-setup.py b/math/py-python-fcl/files/patch-setup.py
deleted file mode 100644
index 8d1b75c3a11b..000000000000
--- a/math/py-python-fcl/files/patch-setup.py
+++ /dev/null
@@ -1,33 +0,0 @@
---- setup.py.orig 2019-06-12 18:08:59 UTC
-+++ setup.py
-@@ -18,12 +18,14 @@ platform_supported = False
- for prefix in ['darwin', 'linux', 'bsd']:
- if prefix in sys.platform:
- platform_supported = True
-- include_dirs = ['/usr/include',
-+ include_dirs = [ '/usr/include',
-+ '/usr/local/include/fcl05',
- '/usr/local/include',
- '/usr/include/eigen3']
- lib_dirs = ['/usr/lib',
-- '/usr/local/lib']
--
-+ '/usr/local/lib/',
-+ '/usr/local/lib/']
-+
- if 'CPATH' in os.environ:
- include_dirs += os.environ['CPATH'].split(':')
- if 'LD_LIBRARY_PATH' in os.environ:
-@@ -78,9 +80,10 @@ setup(
- include_dirs = include_dirs,
- library_dirs = lib_dirs,
- libraries=[
-- "fcl","octomap"
-+ "fcl05","octomap"
- ],
- language="c++",
-- extra_compile_args = ["-std=c++11"]
-+ extra_compile_args = ["-std=c++11"],
-+ extra_link_args = ['-Wl,-rpath, '+'/usr/local/lib/fcl05']
- )]
- )
diff --git a/math/py-python-fcl/files/patch-src_fcl_fcl__defs.pxd b/math/py-python-fcl/files/patch-src_fcl_fcl__defs.pxd
new file mode 100644
index 000000000000..0ba3da861c02
--- /dev/null
+++ b/math/py-python-fcl/files/patch-src_fcl_fcl__defs.pxd
@@ -0,0 +1,15 @@
+-- FCL 0.7 changed the octree class from the OcTreed alias to the template
+-- class fcl::OcTree<double>. Map the Cython OcTreed wrapper to the real
+-- C++ template name so the wrapper compiles against FCL 0.7.
+
+--- src/fcl/fcl_defs.pxd.orig 2026-04-08 04:49:56 UTC
++++ src/fcl/fcl_defs.pxd
+@@ -402,7 +402,7 @@ cdef extern from "fcl/geometry/octree/octree.h" namesp
+
+
+ cdef extern from "fcl/geometry/octree/octree.h" namespace "fcl":
+- cdef cppclass OcTreed(CollisionGeometryd):
++ cdef cppclass OcTreed "fcl::OcTree<double>"(CollisionGeometryd):
+ # Constructing
+ OcTreed(double resolution) except +
+ OcTreed(shared_ptr[octomap.OcTree]& tree_) except +
diff --git a/math/py-python-fcl/files/patch-tests_test__precision.py b/math/py-python-fcl/files/patch-tests_test__precision.py
new file mode 100644
index 000000000000..2730861491ea
--- /dev/null
+++ b/math/py-python-fcl/files/patch-tests_test__precision.py
@@ -0,0 +1,30 @@
+-- Skip signed-distance tests because they trigger an infinite loop in upstream
+-- FCL's libccd signed-distance code on FreeBSD.
+-- See https://github.com/flexible-collision-library/fcl/issues/578
+
+--- tests/test_precision.py.orig 2026-09-15 22:26:08 UTC
++++ tests/test_precision.py
+@@ -127,6 +127,7 @@ class TestPrecision(unittest.TestCase):
+ ret = fcl.distance(self.o2, self.o1, request, result)
+ assert ret == -1
+
++ @unittest.skip("Upstream FCL signed-distance bug; hangs on FreeBSD")
+ def test_obj_obj_signed_distance(self):
+ request = fcl.DistanceRequest(
+ enable_nearest_points=True, enable_signed_distance=True
+@@ -164,6 +165,7 @@ class TestPrecision(unittest.TestCase):
+ self.mgr2.collide(self.mgr1, rdata, fcl.defaultCollisionCallback)
+ assert rdata.result.is_collision
+
++ @unittest.skip("Upstream FCL signed-distance bug; hangs on FreeBSD")
+ def test_mgr_obj_signed_distance(self):
+ req = fcl.DistanceRequest(enable_signed_distance=True, enable_nearest_points=True)
+ ddata = fcl.DistanceData(req)
+@@ -183,6 +185,7 @@ class TestPrecision(unittest.TestCase):
+ abs(ddata.result.min_distance),
+ )
+
++ @unittest.skip("Upstream FCL signed-distance bug; hangs on FreeBSD")
+ def test_mgr_mgr_signed_distance(self):
+ req = fcl.DistanceRequest(enable_signed_distance=True, enable_nearest_points=True)
+ ddata = fcl.DistanceData(req)
diff --git a/math/py-python-fcl/pkg-descr b/math/py-python-fcl/pkg-descr
index 114087345c38..90cf4dc8b953 100644
--- a/math/py-python-fcl/pkg-descr
+++ b/math/py-python-fcl/pkg-descr
@@ -1,4 +1,4 @@
Python-FCL is an (unofficial) Python interface for the Flexible Collision
Library (FCL), an excellent C++ library for performing proximity and
-collision queries on pairs of geometric models. Currently, this package
-is targeted for FCL 0.5.0.
+collision queries on pairs of geometric models. Currently, this package is
+targeted for FCL 0.7.0.