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

Reply via email to