From 5f924464cbf300748c3b9e4aebf32d78d54d1b5b Mon Sep 17 00:00:00 2001 From: Adrian Ostrowski <81568391+aostrowski-hbn@users.noreply.github.com> Date: Mon, 31 Mar 2025 13:25:46 -0700 Subject: [PATCH 1/6] Fix Fedora/RedHat installation location Those OSes have separate platlib and purelib directories. Symengine was installed partially into both from version 0.10.0 onwards. This change marks some of it's packages as ext_modules, which makes setuptools treat the wheel as platform specific and install if fully into platlib (lib64) instead of purelib (lib). This should solve #474. --- cmake/FindPython.cmake | 2 +- setup.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cmake/FindPython.cmake b/cmake/FindPython.cmake index df8bfdc1..c1f6c439 100644 --- a/cmake/FindPython.cmake +++ b/cmake/FindPython.cmake @@ -60,7 +60,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") endif() execute_process( - COMMAND ${PYTHON_BIN} -c "from sysconfig import get_paths; print(get_paths()['purelib'])" + COMMAND ${PYTHON_BIN} -c "from sysconfig import get_paths; print(get_paths()['platlib'])" OUTPUT_VARIABLE PYTHON_INSTALL_PATH_tmp ) string(STRIP ${PYTHON_INSTALL_PATH_tmp} PYTHON_INSTALL_PATH_tmp) diff --git a/setup.py b/setup.py index c082f3ea..fcd97ec9 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ if use_setuptools: try: - from setuptools import setup + from setuptools import Extension, setup from setuptools.command.install import install as _install from setuptools.command.build_ext import build_ext as _build_ext except ImportError: @@ -36,7 +36,7 @@ from distutils.command.build import build as _build if not use_setuptools: - from distutils.core import setup + from distutils.core import Extension, setup from distutils.command.install import install as _install from distutils.command.build_ext import build_ext as _build_ext from distutils.command.build import build as _build @@ -232,7 +232,8 @@ def finalize_options(self): url="https://github.com/symengine/symengine.py", python_requires='>=3.9,<4', zip_safe=False, - packages=['symengine', 'symengine.lib', 'symengine.tests'], + ext_modules=[Extension(name='symengine.lib', sources=[])], + packages=['symengine', 'symengine.tests'], cmdclass = cmdclass, classifiers=[ 'License :: OSI Approved :: MIT License', From 6da52ebc8687f6477d54963524c8c841ce37f582 Mon Sep 17 00:00:00 2001 From: Adrian Ostrowski Date: Tue, 1 Apr 2025 16:34:43 +0200 Subject: [PATCH 2/6] Fix CMake 4.0.0 build break --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index fcd97ec9..5adb759f 100644 --- a/setup.py +++ b/setup.py @@ -42,7 +42,8 @@ from distutils.command.build import build as _build cmake_opts = [("PYTHON_BIN", sys.executable), - ("CMAKE_INSTALL_RPATH_USE_LINK_PATH", "yes")] + ("CMAKE_INSTALL_RPATH_USE_LINK_PATH", "yes"), + ("CMAKE_POLICY_VERSION_MINIMUM", "3.5")] cmake_generator = [None] cmake_build_type = ["Release"] From 03918d1183d65a2cde1fb8809f2467ebed633257 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Tue, 1 Apr 2025 10:34:11 -0500 Subject: [PATCH 3/6] install py files from cmake --- setup.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/setup.py b/setup.py index 5adb759f..28d05bce 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ if use_setuptools: try: - from setuptools import Extension, setup + from setuptools import setup from setuptools.command.install import install as _install from setuptools.command.build_ext import build_ext as _build_ext except ImportError: @@ -36,14 +36,13 @@ from distutils.command.build import build as _build if not use_setuptools: - from distutils.core import Extension, setup + from distutils.core import setup from distutils.command.install import install as _install from distutils.command.build_ext import build_ext as _build_ext from distutils.command.build import build as _build cmake_opts = [("PYTHON_BIN", sys.executable), - ("CMAKE_INSTALL_RPATH_USE_LINK_PATH", "yes"), - ("CMAKE_POLICY_VERSION_MINIMUM", "3.5")] + ("CMAKE_INSTALL_RPATH_USE_LINK_PATH", "yes")] cmake_generator = [None] cmake_build_type = ["Release"] @@ -118,7 +117,7 @@ def cmake_build(self): cmake_cmd = ["cmake", source_dir, "-DCMAKE_BUILD_TYPE=" + cmake_build_type[0], - "-DSYMENGINE_INSTALL_PY_FILES=OFF", + "-DSYMENGINE_INSTALL_PY_FILES=ON", ] cmake_cmd.extend(process_opts(cmake_opts)) if not path.exists(path.join(build_dir, "CMakeCache.txt")): @@ -233,8 +232,7 @@ def finalize_options(self): url="https://github.com/symengine/symengine.py", python_requires='>=3.9,<4', zip_safe=False, - ext_modules=[Extension(name='symengine.lib', sources=[])], - packages=['symengine', 'symengine.tests'], + packages=[], cmdclass = cmdclass, classifiers=[ 'License :: OSI Approved :: MIT License', From fe654772f35b6bd2d285d26e6136ab3dd081a903 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Tue, 1 Apr 2025 10:39:47 -0500 Subject: [PATCH 4/6] fix cmake_minimum_required --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3c83e7cf..e83c95b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 2.8.12...4.0.0) if (POLICY CMP0057) cmake_policy(SET CMP0057 NEW) # needed for llvm >= 16 From 973e4c392d691b277b783ae604e8d78c9dba72d3 Mon Sep 17 00:00:00 2001 From: Adrian Ostrowski <81568391+aostrowski-hbn@users.noreply.github.com> Date: Tue, 1 Apr 2025 15:49:30 -0700 Subject: [PATCH 5/6] fix rhel again --- setup.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index 28d05bce..45a5d515 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ if use_setuptools: try: - from setuptools import setup + from setuptools import Extension, setup from setuptools.command.install import install as _install from setuptools.command.build_ext import build_ext as _build_ext except ImportError: @@ -36,7 +36,7 @@ from distutils.command.build import build as _build if not use_setuptools: - from distutils.core import setup + from distutils.core import Extension, setup from distutils.command.install import install as _install from distutils.command.build_ext import build_ext as _build_ext from distutils.command.build import build as _build @@ -232,7 +232,8 @@ def finalize_options(self): url="https://github.com/symengine/symengine.py", python_requires='>=3.9,<4', zip_safe=False, - packages=[], + ext_modules=[Extension(name='symengine.lib', sources=[])], + packages=['symengine', 'symengine.tests'], cmdclass = cmdclass, classifiers=[ 'License :: OSI Approved :: MIT License', From 85fd800224f9cce50790ac9f53938bfdf8bb139a Mon Sep 17 00:00:00 2001 From: Adrian Ostrowski <81568391+aostrowski-hbn@users.noreply.github.com> Date: Tue, 1 Apr 2025 16:46:31 -0700 Subject: [PATCH 6/6] Fix build_ext on MSVC --- setup.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 45a5d515..04b7bf3c 100644 --- a/setup.py +++ b/setup.py @@ -221,6 +221,13 @@ def finalize_options(self): ''' +ext_modules = [] +packages = ['symengine', 'symengine.tests'] +if platform.system() == 'Windows': + packages += ['symengine.lib'] +else: + ext_modules += [Extension(name='symengine.lib', sources=[])] + setup(name="symengine", version="0.14.0", description="Python library providing wrappers to SymEngine", @@ -232,8 +239,8 @@ def finalize_options(self): url="https://github.com/symengine/symengine.py", python_requires='>=3.9,<4', zip_safe=False, - ext_modules=[Extension(name='symengine.lib', sources=[])], - packages=['symengine', 'symengine.tests'], + ext_modules=ext_modules, + packages=packages, cmdclass = cmdclass, classifiers=[ 'License :: OSI Approved :: MIT License',