Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libbullet for openSUSE:Factory 
checked in at 2026-05-20 15:23:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libbullet (Old)
 and      /work/SRC/openSUSE:Factory/.libbullet.new.1966 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libbullet"

Wed May 20 15:23:34 2026 rev:12 rq:1353813 version:3.25

Changes:
--------
--- /work/SRC/openSUSE:Factory/libbullet/libbullet.changes      2024-03-08 
18:08:19.476204494 +0100
+++ /work/SRC/openSUSE:Factory/.libbullet.new.1966/libbullet.changes    
2026-05-20 15:24:02.300946623 +0200
@@ -1,0 +2,21 @@
+Fri May  9 00:00:00 UTC 2026 - [email protected]
+
+- Update to 3.25
+  * Various bug fixes and improvements from 3.17 through 3.25
+  * Improved deformable body simulation
+  * Performance improvements in collision detection
+- Add python3-pybullet subpackage with Python bindings
+  * Enables pybullet physics simulation from Python
+  * Includes NumPy support for array-based data exchange
+  * Enables robotics simulation (BulletRoboticsGUI, BulletRobotics)
+- Add BuildRequires: python3-devel, python3-numpy, python3-numpy-devel, 
pkgconfig(gl), pkgconfig(egl)
+- Add fix-gwen-linux-link.patch: link libgwen against OpenGLWindow on Linux
+  to resolve glad_glXxx symbol references at shared library link time
+- Add fix-pybullet-numpy2-compat.patch: cast PyObject* to PyArrayObject* in
+  PyArray_DATA() calls to fix build with GCC 14 and NumPy 2.x
+- Add fix-pybullet-link-python-linux.patch: explicitly link pybullet.so
+  against libpython and libm on Linux to satisfy -Wl,--no-undefined
+- Switch BUILD_OPENGL3_DEMOS=ON so SimpleOpenGL3App compiles (Demos3 dir
+  absent, only effect is removal of -DNO_OPENGL3 guard)
+
+-------------------------------------------------------------------

Old:
----
  bullet3-3.17.tar.gz

New:
----
  bullet3-3.25.tar.gz
  fix-gwen-linux-link.patch
  fix-pybullet-link-python-linux.patch
  fix-pybullet-numpy2-compat.patch

----------(New B)----------
  New:- Add BuildRequires: python3-devel, python3-numpy, python3-numpy-devel, 
pkgconfig(gl), pkgconfig(egl)
- Add fix-gwen-linux-link.patch: link libgwen against OpenGLWindow on Linux
  to resolve glad_glXxx symbol references at shared library link time
  New:  PyArray_DATA() calls to fix build with GCC 14 and NumPy 2.x
- Add fix-pybullet-link-python-linux.patch: explicitly link pybullet.so
  against libpython and libm on Linux to satisfy -Wl,--no-undefined
  New:  to resolve glad_glXxx symbol references at shared library link time
- Add fix-pybullet-numpy2-compat.patch: cast PyObject* to PyArrayObject* in
  PyArray_DATA() calls to fix build with GCC 14 and NumPy 2.x
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libbullet.spec ++++++
--- /var/tmp/diff_new_pack.XuW0pK/_old  2026-05-20 15:24:05.009058001 +0200
+++ /var/tmp/diff_new_pack.XuW0pK/_new  2026-05-20 15:24:05.009058001 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package libbullet
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,11 +16,13 @@
 #
 
 
-%define sover   3_17
+%define sover   3_25
 %define lname   libbullet%{sover}
 %define pdesc   Bullet is a Collision Detection and Rigid Body Dynamics 
Library.
+%global python3_inc %(python3 -c "import sysconfig; 
print(sysconfig.get_path('include'))")
+%global python3_lib %(python3 -c "import sysconfig, os; 
d=sysconfig.get_config_vars(); print(os.path.join(d['LIBDIR'], 
d['LDLIBRARY']))")
 Name:           libbullet
-Version:        3.17
+Version:        3.25
 Release:        0
 Summary:        Bullet Continuous Collision Detection and Physics Library
 License:        Zlib
@@ -30,12 +32,23 @@
 # PATCH-FIX-OPENSUSE fix-pkgconfig-includedir.patch
 Patch1:         fix-pkgconfig-includedir.patch
 Patch2:         use-system-libs.patch
+# PATCH-FIX-OPENSUSE fix-gwen-linux-link.patch - link gwen against 
OpenGLWindow on Linux to resolve glad symbols
+Patch3:         fix-gwen-linux-link.patch
+# PATCH-FIX-OPENSUSE fix-pybullet-numpy2-compat.patch - cast PyObject* to 
PyArrayObject* for PyArray_DATA() (GCC14/NumPy2 compat)
+Patch4:         fix-pybullet-numpy2-compat.patch
+# PATCH-FIX-OPENSUSE fix-pybullet-link-python-linux.patch - link pybullet.so 
against libpython on Linux for -Wl,--no-undefined
+Patch5:         fix-pybullet-link-python-linux.patch
 BuildRequires:  cmake
 BuildRequires:  dos2unix
 BuildRequires:  fdupes
 BuildRequires:  freeglut-devel
 BuildRequires:  gcc-c++
 BuildRequires:  pkgconfig
+BuildRequires:  python3-devel
+BuildRequires:  python3-numpy
+BuildRequires:  python3-numpy-devel
+BuildRequires:  pkgconfig(egl)
+BuildRequires:  pkgconfig(gl)
 BuildRequires:  pkgconfig(libxml-2.0)
 BuildRequires:  pkgconfig(tinyxml2)
 
@@ -116,6 +129,20 @@
 This package contain all that is needed to developer or compile
 appliancation with the Bullet library.
 
+%package -n python3-pybullet
+Summary:        Python bindings for the Bullet Physics library
+Group:          Development/Libraries/Python
+Requires:       %{lname} = %{version}
+Requires:       libBulletFileLoader%{sover} = %{version}
+Requires:       libBulletWorldImporter%{sover} = %{version}
+
+%description -n python3-pybullet
+%{pdesc}
+
+This package provides Python 3 bindings (pybullet) for the Bullet
+physics simulation library, including support for robotics simulation,
+rigid body dynamics, and soft body simulation.
+
 %prep
 %autosetup -p1 -n bullet3-%{version}
 
@@ -124,8 +151,6 @@
 rm -rf build3/xcode*
 rm -rf build3/*osx*
 rm -rf build3/premake*
-rm -rf data
-rm -rf examples
 
 # Fix any file permissions and formats
 dos2unix -c ascii README.md
@@ -135,23 +160,31 @@
        -DCMAKE_C_FLAGS="%{optflags} -fno-strict-aliasing" \
        -DCMAKE_CXX_FLAGS="%{optflags} -fno-strict-aliasing" \
        -DINCLUDE_INSTALL_DIR="%{_includedir}/bullet" \
-       -DBUILD_BULLET2_DEMOS=OFF \
+       -DBUILD_BULLET2_DEMOS=ON \
        -DBUILD_CPU_DEMOS=OFF \
        -DBUILD_EXTRAS=ON \
-       -DBUILD_OPENGL3_DEMOS=OFF \
+       -DBUILD_OPENGL3_DEMOS=ON \
+       -DBUILD_PYBULLET=ON \
+       -DBUILD_PYBULLET_NUMPY=ON \
        -DBUILD_SHARED_LIBS=ON \
-       -DBUILD_UNIT_TESTS=off \
+       -DBUILD_UNIT_TESTS=ON \
        -DINSTALL_EXTRA_LIBS=ON \
        -DINSTALL_LIBS=ON \
        -DUSE_DOUBLE_PRECISION=ON \
-       -DBUILD_BULLET_ROBOTICS_GUI_EXTRA=OFF \
-       -DBUILD_BULLET_ROBOTICS_EXTRA=OFF \
-       -DBUILD_OBJ2SDF_EXTRA=OFF
+       -DBUILD_OBJ2SDF_EXTRA=OFF \
+       -DPYTHON_INCLUDE_DIR=%{python3_inc} \
+       -DPYTHON_LIBRARY=%{python3_lib} \
+       -DPYTHON_SITE_PACKAGES=%{python3_sitearch}
 
 make VERBOSE=1 %{?_smp_mflags}
 
+%check
+%ctest
+
 %install
 %cmake_install
+# Fix double-slash in pkgconfig Cflags generated when INCLUDE_INSTALL_DIR is 
absolute
+sed -i 's|/usr//usr|/usr|g' 
%{buildroot}%{_libdir}/pkgconfig/bullet_robotics*.pc
 %fdupes -s %{buildroot}/%{_includedir}
 
 %post -n %{lname} -p /sbin/ldconfig
@@ -162,6 +195,7 @@
 %post -n libConvexDecomposition%{sover} -p /sbin/ldconfig
 %post -n libGIMPACTUtils%{sover} -p /sbin/ldconfig
 %post -n libHACD%{sover} -p /sbin/ldconfig
+%post -n python3-pybullet -p /sbin/ldconfig
 %postun -n %{lname} -p /sbin/ldconfig
 %postun -n libBulletFileLoader%{sover} -p /sbin/ldconfig
 %postun -n libBulletInverseDynamicsUtils%{sover} -p /sbin/ldconfig
@@ -170,16 +204,19 @@
 %postun -n libConvexDecomposition%{sover} -p /sbin/ldconfig
 %postun -n libGIMPACTUtils%{sover} -p /sbin/ldconfig
 %postun -n libHACD%{sover} -p /sbin/ldconfig
+%postun -n python3-pybullet -p /sbin/ldconfig
 
 %files -n %{lname}
 %doc README.md AUTHORS.txt
 %license LICENSE.txt
 %{_libdir}/libB*.so.*
 %{_libdir}/libLinearMath*.so.*
+%exclude %{_libdir}/libBulletExampleBrowserLib.so*
 %exclude %{_libdir}/libBulletFileLoader.so.*
 %exclude %{_libdir}/libBulletInverseDynamicsUtils.so.*
 %exclude %{_libdir}/libBulletWorldImporter.so.*
 %exclude %{_libdir}/libBulletXmlWorldImporter.so.*
+%exclude %{_libdir}/libBussIK.so*
 
 %files -n libBulletFileLoader%{sover}
 %{_libdir}/libBulletFileLoader.so.*
@@ -206,5 +243,28 @@
 %{_includedir}/bullet/
 %{_libdir}/cmake/bullet
 %{_libdir}/lib*.so
+%{_libdir}/libBulletExampleBrowserLib.so
+%exclude %{_libdir}/libBulletExampleBrowserLib.so.*
+%exclude %{_libdir}/libBussIK.so*
+%exclude %{_libdir}/libgwen.so*
+%exclude %{_libdir}/libOpenGLWindow.so*
 %{_libdir}/pkgconfig/bullet.pc
+%{_libdir}/pkgconfig/bullet_robotics.pc
+%{_libdir}/pkgconfig/bullet_robotics_gui.pc
+# clsocket headers and static lib installed by bullet3 into global include/lib
+%exclude %{_includedir}/ActiveSocket.h
+%exclude %{_includedir}/Host.h
+%exclude %{_includedir}/PassiveSocket.h
+%exclude %{_includedir}/SimpleSocket.h
+%exclude %{_includedir}/StatTimer.h
+%exclude /usr/lib/libclsocket.a
+
+%files -n python3-pybullet
+%doc README.md
+%license LICENSE.txt
+%{python3_sitearch}/pybullet.so*
+%{_libdir}/libBulletExampleBrowserLib.so.*
+%{_libdir}/libOpenGLWindow.so*
+%{_libdir}/libBussIK.so*
+%{_libdir}/libgwen.so*
 

++++++ bullet3-3.17.tar.gz -> bullet3-3.25.tar.gz ++++++
/work/SRC/openSUSE:Factory/libbullet/bullet3-3.17.tar.gz 
/work/SRC/openSUSE:Factory/.libbullet.new.1966/bullet3-3.25.tar.gz differ: char 
13, line 1

++++++ fix-gwen-linux-link.patch ++++++
--- a/examples/ThirdPartyLibs/Gwen/CMakeLists.txt
+++ b/examples/ThirdPartyLibs/Gwen/CMakeLists.txt
@@ -24,6 +24,8 @@ ADD_LIBRARY(gwen ${gwen_SRCS} ${gwen_HDRS})
 IF (BUILD_SHARED_LIBS)
 IF(WIN32 OR APPLE)
   target_link_libraries(gwen ${OPENGL_gl_LIBRARY})
+ELSE()
+  target_link_libraries(gwen OpenGLWindow)
 ENDIF()
 ENDIF()

++++++ fix-pybullet-link-python-linux.patch ++++++
--- a/examples/pybullet/CMakeLists.txt
+++ b/examples/pybullet/CMakeLists.txt
@@ -85,8 +85,9 @@ IF (WIN32)
   TARGET_LINK_LIBRARIES(pybullet ${PYTHON_LIBRARIES})
 ELSEIF (APPLE)
   SET_TARGET_PROPERTIES(pybullet PROPERTIES LINK_FLAGS "-undefined 
dynamic_lookup")
+ELSE ()
+  TARGET_LINK_LIBRARIES(pybullet ${PYTHON_LIBRARIES} m)
 ENDIF ()
-# else Linux: dont link

 IF(WIN32)
   SET(PYTHON_SITE_PACKAGES Lib/site-packages CACHE PATH "Python install path")

++++++ fix-pybullet-numpy2-compat.patch ++++++
--- a/examples/pybullet/pybullet.c
+++ b/examples/pybullet/pybullet.c
@@ -10199,11 +10199,11 @@
                                pyDep = PyArray_SimpleNew(2, dep_dims, 
NPY_FLOAT32);
                                pySeg = PyArray_SimpleNew(2, seg_dims, 
NPY_INT32);

-                               memcpy(PyArray_DATA(pyRGB), 
imageData.m_rgbColorData,
+                               memcpy(PyArray_DATA((PyArrayObject*)pyRGB), 
imageData.m_rgbColorData,
                                           imageData.m_pixelHeight * 
imageData.m_pixelWidth * bytesPerPixel);
-                               memcpy(PyArray_DATA(pyDep), 
imageData.m_depthValues,
+                               memcpy(PyArray_DATA((PyArrayObject*)pyDep), 
imageData.m_depthValues,
                                           imageData.m_pixelHeight * 
imageData.m_pixelWidth * sizeof(float));
-                               memcpy(PyArray_DATA(pySeg), 
imageData.m_segmentationMaskValues,
+                               memcpy(PyArray_DATA((PyArrayObject*)pySeg), 
imageData.m_segmentationMaskValues,
                                           imageData.m_pixelHeight * 
imageData.m_pixelWidth * sizeof(int));

                                PyTuple_SetItem(pyResultList, 2, pyRGB);
@@ -10625,11 +10625,11 @@
                                pyDep = PyArray_SimpleNew(2, dep_dims, 
NPY_FLOAT32);
                                pySeg = PyArray_SimpleNew(2, seg_dims, 
NPY_INT32);

-                               memcpy(PyArray_DATA(pyRGB), 
imageData.m_rgbColorData,
+                               memcpy(PyArray_DATA((PyArrayObject*)pyRGB), 
imageData.m_rgbColorData,
                                           imageData.m_pixelHeight * 
imageData.m_pixelWidth * bytesPerPixel);
-                               memcpy(PyArray_DATA(pyDep), 
imageData.m_depthValues,
+                               memcpy(PyArray_DATA((PyArrayObject*)pyDep), 
imageData.m_depthValues,
                                           imageData.m_pixelHeight * 
imageData.m_pixelWidth);
-                               memcpy(PyArray_DATA(pySeg), 
imageData.m_segmentationMaskValues,
+                               memcpy(PyArray_DATA((PyArrayObject*)pySeg), 
imageData.m_segmentationMaskValues,
                                           imageData.m_pixelHeight * 
imageData.m_pixelWidth);

                                PyTuple_SetItem(pyResultList, 2, pyRGB);

Reply via email to