Package: nanobind-dev Version: 2.2.0-1 Severity: normal Control: affects -1 fenics-dolfinx
Everytime nanobind makes an upgrade (e.g. currently from 2.1 to 2.2) it effectively makes an ABI transition. This meanings packages using nanobind break and need to be rebuilt. More precisely, packages using packages that use nanobind break. For instance fenics-dolfinx now fails tests when rebuilding, e.g. https://buildd.debian.org/status/fetch.php?pkg=fenics-dolfinx&arch=amd64&ver=1%3A0.8.0-11%2Bb2&stamp=1728807262&raw=0 _________________________ test_petsc_assemble_manifold _________________________ e = <basix.finite_element.FiniteElement object at 0x7f79afbba240> @coordinate_element.register(basix.finite_element.FiniteElement) def _(e: basix.finite_element.FiniteElement): """Create a Lagrange CoordinateElement from a Basix finite element. Coordinate elements are typically used when creating meshes. Args: e: Basix finite element. Returns: A coordinate element. """ try: > return CoordinateElement(_cpp.fem.CoordinateElement_float32(e._e)) E TypeError: __init__(): incompatible function arguments. The following argument types are supported: E 1. __init__(self, celltype: dolfinx.cpp.mesh.CellType, degree: int) -> None E 2. __init__(self, element: basix::FiniteElement<float>) -> None E 3. __init__(self, celltype: dolfinx.cpp.mesh.CellType, degree: int, variant: int) -> None E E Invoked with types: dolfinx.cpp.fem.CoordinateElement_float32, basix._basixcpp.FiniteElement_float64 The reason is that dolfinx is building against the new nanobind, while basix was built against the old nanobind. Can we think of a mechanism we could introduce to help identify nanobind upgrades as equivalant to library ABI upgrades? Then the upgrade could proceed the same way as a normal library package transition, with binNMU applied to affected packages. Would a virtual package carrying the name of the "ABI" be suitable? injecting into ${shlibs:Depends} (or create ${nanobind:Depends}) perhaps similar to the numpy ABI mechanism? -- System Information: Debian Release: trixie/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 6.11.2-amd64 (SMP w/8 CPU threads; PREEMPT) Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), LANGUAGE=en_AU:en Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages nanobind-dev depends on: ii libeigen3-dev 3.4.0-4 ii robin-map-dev 1.3.0-1 nanobind-dev recommends no packages. nanobind-dev suggests no packages. -- no debconf information

