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

**URL:** <https://discourse.slicer.org/t/temporary-disabling-of-stable-extension-builds-in-preparation-for-slicer-5-8-release-visual-studio-update/41207>\
**Category:** Development\
**Created:** [January 22, 2025, 3:55am UTC](https://discourse.slicer.org/t/temporary-disabling-of-stable-extension-builds-in-preparation-for-slicer-5-8-release-visual-studio-update/41207 "2025-01-22T03:55:30Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![jcfr](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jcfr/32/17825_2.png) [@jcfr](https://discourse.slicer.org/u/jcfr)\
**Post date:** [January 24, 2025, 1:50am UTC](https://discourse.slicer.org/t/temporary-disabling-of-stable-extension-builds-in-preparation-for-slicer-5-8-release-visual-studio-update/41207/8 "2025-01-24T01:50:34Z")

</div>

**Updates:**

> To resolve this, we plan to introduce an option that packages a `_manylinux.py` module

The corresponding fix has been reviewed and integrated. For reference, see pull request [Slicer#8168](https://github.com/Slicer/Slicer/pull/8168).

## Add support for configuring `_manylinux` module

_For convenience and future reference, the associated [pull request description](https://github.com/Slicer/Slicer/pull/8168) is also copied below:_

* * *

> This commit introduces the ability to configure a `_manylinux` module in the Slicer build system to enhance compatibility when installing binary Python wheels.
> 
> This update resolves potential issues with installing Python wheels built for newer GLIBC versions or ABIs, which could cause crashes in environments with older configurations.
> 
> Specifically, installing `manylinux_2_28_x86_64` ITK wheels compiled with `_GLIBCXX_USE_CXX11_ABI=1` was causing segmentation faults in the _Stable_ Slicer version, which is compiled with `_GLIBCXX_USE_CXX11_ABI=0`. The `_manylinux` module ensures that `manylinux_2_17_x86_64` ITK wheels are always installed, even when Slicer and its associated Python interpreter are executed on newer operating systems.
> 
> The `_manylinux.py` module is dynamically generated during the build process and ensures that Python packages installed via `pip` are compatible with the GLIBC version used in the Slicer build environment.
> 
> ### Summary of Changes
> 
> **`External_python.cmake`** :
> 
> - Added logic to configure `_manylinux.py` for Linux-based build environments.
> - By default, `_manylinux.py` is generated. If disabled using the CMake option `PYTHON_CONFIGURE_MANYLINUX_MODULE`, any existing `_manylinux.py` module is removed to prevent inadvertent impacts on Python package installations.
> - Introduced a CMake option `PYTHON_REMOVE_MANYLINUX_MODULE_IF_EXISTS` to allow users to disable the removal of an existing `_manylinux.py` module.
> 
> **`python_configure_manylinux_module.cmake`** :
> 
> - New CMake script to detect the system’s GLIBC version using `ldd`.
> - Dynamically generates the `_manylinux.py` module, which includes:
> - A `manylinux_compatible` function to override the default behavior of `pip` for checking compatibility of manylinux tags.
> - Embedded documentation and compatibility checks to prevent crashes caused by mismatched ABI or GLIBC versions.
> 
> By restricting installed packages to compatible manylinux tags, this update ensures stability and reliability for Python packages in the Slicer ecosystem.
> 
> ### References
> 
> - [PEP 600: Manylinux Platform Tag](https://peps.python.org/pep-0600/)
> - [GCC Dual ABI Documentation](https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html)

* * *

---

_[View the full topic](https://discourse.slicer.org/t/temporary-disabling-of-stable-extension-builds-in-preparation-for-slicer-5-8-release-visual-studio-update/41207)._
