Temporary disabling of Stable extension builds in preparation for Slicer 5.8 Release & Visual Studio update

Update:

We’ve identified the root cause of the crash occurring after installing binary Python wheels (e.g., ITK wheels). The issue stems from recent wheels being built with the newer std::string ABI, while the official Slicer and Python binaries target the older ABI. This mismatch leads to compatibility issues.

To learn more about the Dual ABI, refer to GCC’s Dual ABI Documentation.

Proposed Solution

To resolve this, we plan to introduce an option that packages a _manylinux.py module specific to the build environment. This module will restrict the latest compatible version of GLIBC, ensuring compatibility with the host system.

For example, adding the following _manylinux.py module to the environment ensures compatibility with manylinux_2_17 or older wheels, avoiding the installation of newer, incompatible wheels like manylinux_2_28:

from typing import NamedTuple


class _GLibCVersion(NamedTuple):
    major: int
    minor: int


def manylinux_compatible(tag_major, tag_minor, tag_arch, **_):  # PEP 600
    if _GLibCVersion(tag_major, tag_minor) > _GLibCVersion(2, 17):
        return False
    return True

This ensures compatible wheels are installed on Ubuntu systems.

References

Next Steps

Later today, we’ll validate this solution by running the full SlicerMorph and SlicerANTs workflows. Once confirmed, we’ll integrate the fix into Slicer and proceed with the release process.

:warning: For now, Preview and Stable builds remain disabled. :warning:

Thank you for understanding. :pray:

cc: @muratmaga

2 Likes