From 4d6a0b37a9653f07554cba3a6c75fc38b96bf9bd Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Fri, 29 Jul 2022 15:46:57 -0700 Subject: [PATCH 01/13] Make cpython version user specifiable at build time --- multipy/runtime/interpreter/CMakeLists.txt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/multipy/runtime/interpreter/CMakeLists.txt b/multipy/runtime/interpreter/CMakeLists.txt index 2b458b4d..9d3d2979 100644 --- a/multipy/runtime/interpreter/CMakeLists.txt +++ b/multipy/runtime/interpreter/CMakeLists.txt @@ -13,17 +13,19 @@ include_directories(BEFORE "${PYTORCH_ROOT}/torch/include/torch/csrc/api/include SET(MULTIPY_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../../utils") # Build cpython +SET(CPYTHON_VERSION 3.8 CACHE STRING "Default version of Cpython to bundle.") +SET(CPYTHON_VERSION_GIT_TAG 3.8.6 CACHE STRING "Git tag for default version of Cpython to bundle.") SET(PYTHON_INSTALL_DIR "${INTERPRETER_DIR}/cpython") -SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python3.8") -SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python3.8" PARENT_SCOPE) -SET(PYTHON_LIB "${PYTHON_INSTALL_DIR}/lib/libpython3.8.a") +SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python{CPYTHON_VERSION}") +SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python{CPYTHON_VERSION}" PARENT_SCOPE) +SET(PYTHON_LIB "${PYTHON_INSTALL_DIR}/lib/libpython{CPYTHON_VERSION}.a") SET(PYTHON_BIN "${PYTHON_INSTALL_DIR}/bin/python3") include(ExternalProject) ExternalProject_Add( cpython PREFIX cpython GIT_REPOSITORY https://github.com/python/cpython.git - GIT_TAG v3.8.6 + GIT_TAG v{CPYTHON_VERSION_GIT_TAG} UPDATE_COMMAND "" PATCH_COMMAND git apply ${CMAKE_CURRENT_SOURCE_DIR}/cpython_patch.diff BUILD_IN_SOURCE True @@ -47,9 +49,9 @@ include(GoogleTest) # the modules in a strange nested path, and then that path is relative to the # Cmake ExternalProject root in the cmake build dir. ExternalProject_Get_property(cpython SOURCE_DIR) -SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-3.8/${SOURCE_DIR}/Modules") +SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-{CPYTHON_VERSION}/${SOURCE_DIR}/Modules") SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") -SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib3.8.a") +SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib{CPYTHON_VERSION}.a") # Then we use a hardcoded list of expected module names and include them in our lib include("CMakePythonModules.txt") ExternalProject_Add_Step( From abd325126a8d9a8368450d6e2b1bda9cf04added Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Fri, 29 Jul 2022 17:01:09 -0700 Subject: [PATCH 02/13] [Support cpython 3.10+][1/n] Add libmpdec mem module conditionally --- multipy/runtime/interpreter/CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/multipy/runtime/interpreter/CMakeLists.txt b/multipy/runtime/interpreter/CMakeLists.txt index 9d3d2979..b9715db2 100644 --- a/multipy/runtime/interpreter/CMakeLists.txt +++ b/multipy/runtime/interpreter/CMakeLists.txt @@ -52,6 +52,12 @@ ExternalProject_Get_property(cpython SOURCE_DIR) SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-{CPYTHON_VERSION}/${SOURCE_DIR}/Modules") SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib{CPYTHON_VERSION}.a") + +if(${CPYTHON_VERSION} MATCHES "3\.[8-9]") + SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o") +elseif(${CPYTHON_VERSION} MATCHES "3\.1[0-1]") + SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpalloc.o") +endif() # Then we use a hardcoded list of expected module names and include them in our lib include("CMakePythonModules.txt") ExternalProject_Add_Step( @@ -59,7 +65,7 @@ ExternalProject_Add_Step( archive_stdlib DEPENDEES install BYPRODUCTS ${PYTHON_STDLIB} - COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} + COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} ${PYTHON_MEM_MODULE} VERBATIM ) # Get python typing extension, needed by torch From 31a45b6b9346b0adf042d5f3b8829f9485e918e2 Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Fri, 29 Jul 2022 17:01:09 -0700 Subject: [PATCH 03/13] [Support cpython 3.10+][1/n] Add libmpdec mem module conditionally --- multipy/runtime/interpreter/CMakePythonModules.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multipy/runtime/interpreter/CMakePythonModules.txt b/multipy/runtime/interpreter/CMakePythonModules.txt index c6bc9cab..f26ea2a0 100644 --- a/multipy/runtime/interpreter/CMakePythonModules.txt +++ b/multipy/runtime/interpreter/CMakePythonModules.txt @@ -22,7 +22,7 @@ SET(PYTHON_MODULES ${PYTHON_MODULE_DIR}/_cursesmodule.o ${PYTHON_MODULE_DIR}/_curses_panel.o ${PYTHON_MODULE_DIR}/_datetimemodule.o - ${PYTHON_MODULE_DIR}/_decimal/_decimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/basearith.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/constants.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/context.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/convolute.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/crt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/difradix2.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fnt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fourstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/io.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpdecimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/numbertheory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/sixstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/transpose.o + ${PYTHON_MODULE_DIR}/_decimal/_decimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/basearith.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/constants.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/context.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/convolute.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/crt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/difradix2.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fnt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fourstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/io.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpdecimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/numbertheory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/sixstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/transpose.o ${PYTHON_MODULE_DIR}/_elementtree.o ${PYTHON_MODULE_DIR}/fcntlmodule.o ${PYTHON_MODULE_DIR}/grpmodule.o From 1dd266c1ab0ccd352bd82368a8138da4d7ec0bd1 Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Fri, 29 Jul 2022 17:10:56 -0700 Subject: [PATCH 04/13] Undoing addl commits Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: --- multipy/runtime/interpreter/CMakeLists.txt | 7 +------ multipy/runtime/interpreter/CMakePythonModules.txt | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/multipy/runtime/interpreter/CMakeLists.txt b/multipy/runtime/interpreter/CMakeLists.txt index b9715db2..1f460c13 100644 --- a/multipy/runtime/interpreter/CMakeLists.txt +++ b/multipy/runtime/interpreter/CMakeLists.txt @@ -53,11 +53,6 @@ SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-{CPYTHON_VERSION}/$ SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib{CPYTHON_VERSION}.a") -if(${CPYTHON_VERSION} MATCHES "3\.[8-9]") - SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o") -elseif(${CPYTHON_VERSION} MATCHES "3\.1[0-1]") - SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpalloc.o") -endif() # Then we use a hardcoded list of expected module names and include them in our lib include("CMakePythonModules.txt") ExternalProject_Add_Step( @@ -65,7 +60,7 @@ ExternalProject_Add_Step( archive_stdlib DEPENDEES install BYPRODUCTS ${PYTHON_STDLIB} - COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} ${PYTHON_MEM_MODULE} + COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} VERBATIM ) # Get python typing extension, needed by torch diff --git a/multipy/runtime/interpreter/CMakePythonModules.txt b/multipy/runtime/interpreter/CMakePythonModules.txt index f26ea2a0..c6bc9cab 100644 --- a/multipy/runtime/interpreter/CMakePythonModules.txt +++ b/multipy/runtime/interpreter/CMakePythonModules.txt @@ -22,7 +22,7 @@ SET(PYTHON_MODULES ${PYTHON_MODULE_DIR}/_cursesmodule.o ${PYTHON_MODULE_DIR}/_curses_panel.o ${PYTHON_MODULE_DIR}/_datetimemodule.o - ${PYTHON_MODULE_DIR}/_decimal/_decimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/basearith.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/constants.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/context.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/convolute.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/crt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/difradix2.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fnt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fourstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/io.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpdecimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/numbertheory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/sixstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/transpose.o + ${PYTHON_MODULE_DIR}/_decimal/_decimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/basearith.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/constants.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/context.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/convolute.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/crt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/difradix2.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fnt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fourstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/io.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpdecimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/numbertheory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/sixstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/transpose.o ${PYTHON_MODULE_DIR}/_elementtree.o ${PYTHON_MODULE_DIR}/fcntlmodule.o ${PYTHON_MODULE_DIR}/grpmodule.o From 65c41b8073f7dc4ae94a53fd4306485ea673f0f6 Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Fri, 29 Jul 2022 17:16:34 -0700 Subject: [PATCH 05/13] [3.10+][1/n] Add conditional archiving for libmpdec module Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: --- multipy/runtime/interpreter/CMakeLists.txt | 8 +++++++- multipy/runtime/interpreter/CMakePythonModules.txt | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/multipy/runtime/interpreter/CMakeLists.txt b/multipy/runtime/interpreter/CMakeLists.txt index 1f460c13..9dbe1a69 100644 --- a/multipy/runtime/interpreter/CMakeLists.txt +++ b/multipy/runtime/interpreter/CMakeLists.txt @@ -53,6 +53,12 @@ SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-{CPYTHON_VERSION}/$ SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib{CPYTHON_VERSION}.a") +if(${CPYTHON_VERSION} MATCHES "3\.[8-9]") + SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o") +elseif(${CPYTHON_VERSION} MATCHES "3\.1[0-1]") + SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpalloc.o") +endif() + # Then we use a hardcoded list of expected module names and include them in our lib include("CMakePythonModules.txt") ExternalProject_Add_Step( @@ -60,7 +66,7 @@ ExternalProject_Add_Step( archive_stdlib DEPENDEES install BYPRODUCTS ${PYTHON_STDLIB} - COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} + COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} ${PYTHON_MEM_MODULE} VERBATIM ) # Get python typing extension, needed by torch diff --git a/multipy/runtime/interpreter/CMakePythonModules.txt b/multipy/runtime/interpreter/CMakePythonModules.txt index c6bc9cab..f26ea2a0 100644 --- a/multipy/runtime/interpreter/CMakePythonModules.txt +++ b/multipy/runtime/interpreter/CMakePythonModules.txt @@ -22,7 +22,7 @@ SET(PYTHON_MODULES ${PYTHON_MODULE_DIR}/_cursesmodule.o ${PYTHON_MODULE_DIR}/_curses_panel.o ${PYTHON_MODULE_DIR}/_datetimemodule.o - ${PYTHON_MODULE_DIR}/_decimal/_decimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/basearith.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/constants.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/context.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/convolute.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/crt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/difradix2.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fnt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fourstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/io.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpdecimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/numbertheory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/sixstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/transpose.o + ${PYTHON_MODULE_DIR}/_decimal/_decimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/basearith.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/constants.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/context.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/convolute.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/crt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/difradix2.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fnt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fourstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/io.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpdecimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/numbertheory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/sixstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/transpose.o ${PYTHON_MODULE_DIR}/_elementtree.o ${PYTHON_MODULE_DIR}/fcntlmodule.o ${PYTHON_MODULE_DIR}/grpmodule.o From 2f322a408a97ed43784e4694a309ab48e38d553e Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Tue, 9 Aug 2022 21:01:53 -0700 Subject: [PATCH 06/13] Updates Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: --- multipy/runtime/interpreter/CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/multipy/runtime/interpreter/CMakeLists.txt b/multipy/runtime/interpreter/CMakeLists.txt index 9dbe1a69..3c3e87f2 100644 --- a/multipy/runtime/interpreter/CMakeLists.txt +++ b/multipy/runtime/interpreter/CMakeLists.txt @@ -16,16 +16,16 @@ SET(MULTIPY_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../../utils") SET(CPYTHON_VERSION 3.8 CACHE STRING "Default version of Cpython to bundle.") SET(CPYTHON_VERSION_GIT_TAG 3.8.6 CACHE STRING "Git tag for default version of Cpython to bundle.") SET(PYTHON_INSTALL_DIR "${INTERPRETER_DIR}/cpython") -SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python{CPYTHON_VERSION}") -SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python{CPYTHON_VERSION}" PARENT_SCOPE) -SET(PYTHON_LIB "${PYTHON_INSTALL_DIR}/lib/libpython{CPYTHON_VERSION}.a") +SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python${CPYTHON_VERSION}") +SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python${CPYTHON_VERSION}" PARENT_SCOPE) +SET(PYTHON_LIB "${PYTHON_INSTALL_DIR}/lib/libpython${CPYTHON_VERSION}.a") SET(PYTHON_BIN "${PYTHON_INSTALL_DIR}/bin/python3") include(ExternalProject) ExternalProject_Add( cpython PREFIX cpython GIT_REPOSITORY https://github.com/python/cpython.git - GIT_TAG v{CPYTHON_VERSION_GIT_TAG} + GIT_TAG v${CPYTHON_VERSION_GIT_TAG} UPDATE_COMMAND "" PATCH_COMMAND git apply ${CMAKE_CURRENT_SOURCE_DIR}/cpython_patch.diff BUILD_IN_SOURCE True @@ -49,9 +49,9 @@ include(GoogleTest) # the modules in a strange nested path, and then that path is relative to the # Cmake ExternalProject root in the cmake build dir. ExternalProject_Get_property(cpython SOURCE_DIR) -SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-{CPYTHON_VERSION}/${SOURCE_DIR}/Modules") +SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-${CPYTHON_VERSION}/${SOURCE_DIR}/Modules") SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") -SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib{CPYTHON_VERSION}.a") +SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib${CPYTHON_VERSION}.a") if(${CPYTHON_VERSION} MATCHES "3\.[8-9]") SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o") From 0f3a97e91e84b63eb43fc64a2a202a32600b3a3b Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Tue, 9 Aug 2022 21:16:13 -0700 Subject: [PATCH 07/13] Updates Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: --- multipy/runtime/interpreter/CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/multipy/runtime/interpreter/CMakeLists.txt b/multipy/runtime/interpreter/CMakeLists.txt index 9dbe1a69..3c3e87f2 100644 --- a/multipy/runtime/interpreter/CMakeLists.txt +++ b/multipy/runtime/interpreter/CMakeLists.txt @@ -16,16 +16,16 @@ SET(MULTIPY_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../../utils") SET(CPYTHON_VERSION 3.8 CACHE STRING "Default version of Cpython to bundle.") SET(CPYTHON_VERSION_GIT_TAG 3.8.6 CACHE STRING "Git tag for default version of Cpython to bundle.") SET(PYTHON_INSTALL_DIR "${INTERPRETER_DIR}/cpython") -SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python{CPYTHON_VERSION}") -SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python{CPYTHON_VERSION}" PARENT_SCOPE) -SET(PYTHON_LIB "${PYTHON_INSTALL_DIR}/lib/libpython{CPYTHON_VERSION}.a") +SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python${CPYTHON_VERSION}") +SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python${CPYTHON_VERSION}" PARENT_SCOPE) +SET(PYTHON_LIB "${PYTHON_INSTALL_DIR}/lib/libpython${CPYTHON_VERSION}.a") SET(PYTHON_BIN "${PYTHON_INSTALL_DIR}/bin/python3") include(ExternalProject) ExternalProject_Add( cpython PREFIX cpython GIT_REPOSITORY https://github.com/python/cpython.git - GIT_TAG v{CPYTHON_VERSION_GIT_TAG} + GIT_TAG v${CPYTHON_VERSION_GIT_TAG} UPDATE_COMMAND "" PATCH_COMMAND git apply ${CMAKE_CURRENT_SOURCE_DIR}/cpython_patch.diff BUILD_IN_SOURCE True @@ -49,9 +49,9 @@ include(GoogleTest) # the modules in a strange nested path, and then that path is relative to the # Cmake ExternalProject root in the cmake build dir. ExternalProject_Get_property(cpython SOURCE_DIR) -SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-{CPYTHON_VERSION}/${SOURCE_DIR}/Modules") +SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-${CPYTHON_VERSION}/${SOURCE_DIR}/Modules") SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") -SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib{CPYTHON_VERSION}.a") +SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib${CPYTHON_VERSION}.a") if(${CPYTHON_VERSION} MATCHES "3\.[8-9]") SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o") From fb6f24cfb0d5bc5dd03b4111113c08ae9c73749f Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Wed, 10 Aug 2022 21:43:34 -0700 Subject: [PATCH 08/13] Small refactor Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: --- multipy/runtime/interpreter/CMakeLists.txt | 54 ++++++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/multipy/runtime/interpreter/CMakeLists.txt b/multipy/runtime/interpreter/CMakeLists.txt index 3c3e87f2..ac5c49c2 100644 --- a/multipy/runtime/interpreter/CMakeLists.txt +++ b/multipy/runtime/interpreter/CMakeLists.txt @@ -4,6 +4,7 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. + SET(INTERPRETER_DIR "${DEPLOY_DIR}/interpreter" ) SET(INTERPRETER_DIR "${DEPLOY_DIR}/interpreter" PARENT_SCOPE) @@ -12,6 +13,8 @@ include_directories(BEFORE "${PYTORCH_ROOT}/torch/include") include_directories(BEFORE "${PYTORCH_ROOT}/torch/include/torch/csrc/api/include/") SET(MULTIPY_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../../utils") + +## Test from other devsvr # Build cpython SET(CPYTHON_VERSION 3.8 CACHE STRING "Default version of Cpython to bundle.") SET(CPYTHON_VERSION_GIT_TAG 3.8.6 CACHE STRING "Git tag for default version of Cpython to bundle.") @@ -36,6 +39,28 @@ ExternalProject_Add( LOG_OUTPUT_ON_FAILURE True ) +# Build cpython +# SET(PYTHON_INSTALL_DIR "${INTERPRETER_DIR}/cpython") +# SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python3.10") +# SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python3.10" PARENT_SCOPE) +# SET(PYTHON_LIB "${PYTHON_INSTALL_DIR}/lib/libpython3.10.a") +# SET(PYTHON_BIN "${PYTHON_INSTALL_DIR}/bin/python3") +# include(ExternalProject) +# ExternalProject_Add( +# cpython +# PREFIX cpython +# GIT_REPOSITORY https://github.com/python/cpython.git +# GIT_TAG v3.10.5 +# UPDATE_COMMAND "" +# PATCH_COMMAND git apply ${CMAKE_CURRENT_SOURCE_DIR}/cpython_patch.diff +# BUILD_IN_SOURCE True +# CONFIGURE_COMMAND PYTHON_INSTALL_DIR=${PYTHON_INSTALL_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/configure_cpython.sh +# BUILD_COMMAND CFLAGS=-fPIC CPPFLAGS=-fPIC make -j8 +# INSTALL_COMMAND make install +# BYPRODUCTS ${PYTHON_MODULES} ${PYTHON_LIB} ${PYTHON_BIN} ${PYTHON_INSTALL_DIR}/lib/libssl.a ${PYTHON_INSTALL_DIR}/lib/libcrypto.a +# LOG_OUTPUT_ON_FAILURE True +# ) + # add gtest dependency include(FetchContent) FetchContent_Declare( @@ -48,15 +73,22 @@ include(GoogleTest) # We find the built python modules, this is confusing because python build already outputs # the modules in a strange nested path, and then that path is relative to the # Cmake ExternalProject root in the cmake build dir. +## From test devsrvr ExternalProject_Get_property(cpython SOURCE_DIR) SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-${CPYTHON_VERSION}/${SOURCE_DIR}/Modules") SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib${CPYTHON_VERSION}.a") -if(${CPYTHON_VERSION} MATCHES "3\.[8-9]") +if(${CPYTHON_VERSION} MATCHES "3\.(7|8)") SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o") -elseif(${CPYTHON_VERSION} MATCHES "3\.1[0-1]") + SET(LEGACY_PARSER_MODULE "${PYTHON_MODULE_DIR}/parsermodule.o") + # We want to include legacy parsermodule for Cpython 3.8 and earlier. The module has been + # deprecated in 3.9 and the module source removed from 3.10. + # Macro is referenced in register_frozenpython. + add_compile_definitions(INCLUDE_LEGACY_PARSER_MODULE) +elseif(${CPYTHON_VERSION} MATCHES "3\.(9|1[0-9]*)") SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpalloc.o") + SET(LEGACY_PARSER_MODULE "") endif() # Then we use a hardcoded list of expected module names and include them in our lib @@ -66,9 +98,25 @@ ExternalProject_Add_Step( archive_stdlib DEPENDEES install BYPRODUCTS ${PYTHON_STDLIB} - COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} ${PYTHON_MEM_MODULE} + COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} ${PYTHON_MEM_MODULE} ${LEGACY_PARSER_MODULE} VERBATIM ) + +# ExternalProject_Get_property(cpython SOURCE_DIR) +# SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-3.10/${SOURCE_DIR}/Modules") +# SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") +# SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib3.10.a") +# Then we use a hardcoded list of expected module names and include them in our lib +# include("CMakePythonModules.txt") +# ExternalProject_Add_Step( +# cpython +# archive_stdlib +# DEPENDEES install +# BYPRODUCTS ${PYTHON_STDLIB} +# COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} +# VERBATIM +# ) + # Get python typing extension, needed by torch SET(TYPING_PKG "${INTERPRETER_DIR}/third_party/typing_extensions.py") ExternalProject_Add( From 439d99ba36b32b279b5e37df63738ffbade41d94 Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Wed, 10 Aug 2022 21:46:47 -0700 Subject: [PATCH 09/13] Small refactor Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: --- multipy/runtime/interpreter/CMakeLists.txt | 52 ---------------------- 1 file changed, 52 deletions(-) diff --git a/multipy/runtime/interpreter/CMakeLists.txt b/multipy/runtime/interpreter/CMakeLists.txt index ac5c49c2..ebb4ddc7 100644 --- a/multipy/runtime/interpreter/CMakeLists.txt +++ b/multipy/runtime/interpreter/CMakeLists.txt @@ -13,8 +13,6 @@ include_directories(BEFORE "${PYTORCH_ROOT}/torch/include") include_directories(BEFORE "${PYTORCH_ROOT}/torch/include/torch/csrc/api/include/") SET(MULTIPY_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../../utils") - -## Test from other devsvr # Build cpython SET(CPYTHON_VERSION 3.8 CACHE STRING "Default version of Cpython to bundle.") SET(CPYTHON_VERSION_GIT_TAG 3.8.6 CACHE STRING "Git tag for default version of Cpython to bundle.") @@ -39,28 +37,6 @@ ExternalProject_Add( LOG_OUTPUT_ON_FAILURE True ) -# Build cpython -# SET(PYTHON_INSTALL_DIR "${INTERPRETER_DIR}/cpython") -# SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python3.10") -# SET(PYTHON_INC_DIR "${PYTHON_INSTALL_DIR}/include/python3.10" PARENT_SCOPE) -# SET(PYTHON_LIB "${PYTHON_INSTALL_DIR}/lib/libpython3.10.a") -# SET(PYTHON_BIN "${PYTHON_INSTALL_DIR}/bin/python3") -# include(ExternalProject) -# ExternalProject_Add( -# cpython -# PREFIX cpython -# GIT_REPOSITORY https://github.com/python/cpython.git -# GIT_TAG v3.10.5 -# UPDATE_COMMAND "" -# PATCH_COMMAND git apply ${CMAKE_CURRENT_SOURCE_DIR}/cpython_patch.diff -# BUILD_IN_SOURCE True -# CONFIGURE_COMMAND PYTHON_INSTALL_DIR=${PYTHON_INSTALL_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/configure_cpython.sh -# BUILD_COMMAND CFLAGS=-fPIC CPPFLAGS=-fPIC make -j8 -# INSTALL_COMMAND make install -# BYPRODUCTS ${PYTHON_MODULES} ${PYTHON_LIB} ${PYTHON_BIN} ${PYTHON_INSTALL_DIR}/lib/libssl.a ${PYTHON_INSTALL_DIR}/lib/libcrypto.a -# LOG_OUTPUT_ON_FAILURE True -# ) - # add gtest dependency include(FetchContent) FetchContent_Declare( @@ -78,19 +54,6 @@ ExternalProject_Get_property(cpython SOURCE_DIR) SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-${CPYTHON_VERSION}/${SOURCE_DIR}/Modules") SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib${CPYTHON_VERSION}.a") - -if(${CPYTHON_VERSION} MATCHES "3\.(7|8)") - SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o") - SET(LEGACY_PARSER_MODULE "${PYTHON_MODULE_DIR}/parsermodule.o") - # We want to include legacy parsermodule for Cpython 3.8 and earlier. The module has been - # deprecated in 3.9 and the module source removed from 3.10. - # Macro is referenced in register_frozenpython. - add_compile_definitions(INCLUDE_LEGACY_PARSER_MODULE) -elseif(${CPYTHON_VERSION} MATCHES "3\.(9|1[0-9]*)") - SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpalloc.o") - SET(LEGACY_PARSER_MODULE "") -endif() - # Then we use a hardcoded list of expected module names and include them in our lib include("CMakePythonModules.txt") ExternalProject_Add_Step( @@ -102,21 +65,6 @@ ExternalProject_Add_Step( VERBATIM ) -# ExternalProject_Get_property(cpython SOURCE_DIR) -# SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-3.10/${SOURCE_DIR}/Modules") -# SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") -# SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib3.10.a") -# Then we use a hardcoded list of expected module names and include them in our lib -# include("CMakePythonModules.txt") -# ExternalProject_Add_Step( -# cpython -# archive_stdlib -# DEPENDEES install -# BYPRODUCTS ${PYTHON_STDLIB} -# COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} -# VERBATIM -# ) - # Get python typing extension, needed by torch SET(TYPING_PKG "${INTERPRETER_DIR}/third_party/typing_extensions.py") ExternalProject_Add( From 14a77e770d8d14d6a296edc99161024c03c606ea Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Wed, 10 Aug 2022 21:49:13 -0700 Subject: [PATCH 10/13] Updates Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: --- multipy/runtime/interpreter/CMakeLists.txt | 11 ++++++++--- multipy/runtime/interpreter/CMakePythonModules.txt | 1 - 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/multipy/runtime/interpreter/CMakeLists.txt b/multipy/runtime/interpreter/CMakeLists.txt index 3c3e87f2..6bb4c016 100644 --- a/multipy/runtime/interpreter/CMakeLists.txt +++ b/multipy/runtime/interpreter/CMakeLists.txt @@ -4,6 +4,7 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. + SET(INTERPRETER_DIR "${DEPLOY_DIR}/interpreter" ) SET(INTERPRETER_DIR "${DEPLOY_DIR}/interpreter" PARENT_SCOPE) @@ -48,15 +49,18 @@ include(GoogleTest) # We find the built python modules, this is confusing because python build already outputs # the modules in a strange nested path, and then that path is relative to the # Cmake ExternalProject root in the cmake build dir. +## From test devsrvr ExternalProject_Get_property(cpython SOURCE_DIR) SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-${CPYTHON_VERSION}/${SOURCE_DIR}/Modules") SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib${CPYTHON_VERSION}.a") -if(${CPYTHON_VERSION} MATCHES "3\.[8-9]") +if(${CPYTHON_VERSION} MATCHES "3\.(7|8)") SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o") -elseif(${CPYTHON_VERSION} MATCHES "3\.1[0-1]") + SET(LEGACY_PARSER_MODULE "${PYTHON_MODULE_DIR}/parsermodule.o") +elseif(${CPYTHON_VERSION} MATCHES "3\.(9|1[0-9]*)") SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpalloc.o") + SET(LEGACY_PARSER_MODULE "") endif() # Then we use a hardcoded list of expected module names and include them in our lib @@ -66,9 +70,10 @@ ExternalProject_Add_Step( archive_stdlib DEPENDEES install BYPRODUCTS ${PYTHON_STDLIB} - COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} ${PYTHON_MEM_MODULE} + COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} ${PYTHON_MEM_MODULE} ${LEGACY_PARSER_MODULE} VERBATIM ) + # Get python typing extension, needed by torch SET(TYPING_PKG "${INTERPRETER_DIR}/third_party/typing_extensions.py") ExternalProject_Add( diff --git a/multipy/runtime/interpreter/CMakePythonModules.txt b/multipy/runtime/interpreter/CMakePythonModules.txt index f26ea2a0..0447686e 100644 --- a/multipy/runtime/interpreter/CMakePythonModules.txt +++ b/multipy/runtime/interpreter/CMakePythonModules.txt @@ -39,7 +39,6 @@ SET(PYTHON_MODULES ${PYTHON_MODULE_DIR}/nismodule.o ${PYTHON_MODULE_DIR}/_opcode.o ${PYTHON_MODULE_DIR}/ossaudiodev.o - ${PYTHON_MODULE_DIR}/parsermodule.o ${PYTHON_MODULE_DIR}/_pickle.o ${PYTHON_MODULE_DIR}/_posixsubprocess.o ${PYTHON_MODULE_DIR}/pyexpat.o ${PYTHON_MODULE_DIR}/expat/xmlparse.o ${PYTHON_MODULE_DIR}/expat/xmlrole.o ${PYTHON_MODULE_DIR}/expat/xmltok.o From f833e4b23636cb6b290b264a7f2d495261aebe2e Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Wed, 10 Aug 2022 22:01:47 -0700 Subject: [PATCH 11/13] Cleanup Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: --- multipy/runtime/interpreter/CMakePythonModules.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multipy/runtime/interpreter/CMakePythonModules.txt b/multipy/runtime/interpreter/CMakePythonModules.txt index f26ea2a0..c6bc9cab 100644 --- a/multipy/runtime/interpreter/CMakePythonModules.txt +++ b/multipy/runtime/interpreter/CMakePythonModules.txt @@ -22,7 +22,7 @@ SET(PYTHON_MODULES ${PYTHON_MODULE_DIR}/_cursesmodule.o ${PYTHON_MODULE_DIR}/_curses_panel.o ${PYTHON_MODULE_DIR}/_datetimemodule.o - ${PYTHON_MODULE_DIR}/_decimal/_decimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/basearith.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/constants.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/context.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/convolute.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/crt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/difradix2.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fnt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fourstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/io.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpdecimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/numbertheory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/sixstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/transpose.o + ${PYTHON_MODULE_DIR}/_decimal/_decimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/basearith.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/constants.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/context.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/convolute.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/crt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/difradix2.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fnt.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/fourstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/io.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpdecimal.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/numbertheory.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/sixstep.o ${PYTHON_MODULE_DIR}/_decimal/libmpdec/transpose.o ${PYTHON_MODULE_DIR}/_elementtree.o ${PYTHON_MODULE_DIR}/fcntlmodule.o ${PYTHON_MODULE_DIR}/grpmodule.o From 12269b68c32a0aca175d3e14a018c672b78b30d8 Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Wed, 10 Aug 2022 22:02:40 -0700 Subject: [PATCH 12/13] Cleanup Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: --- multipy/runtime/interpreter/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multipy/runtime/interpreter/CMakeLists.txt b/multipy/runtime/interpreter/CMakeLists.txt index ebb4ddc7..0c62c51a 100644 --- a/multipy/runtime/interpreter/CMakeLists.txt +++ b/multipy/runtime/interpreter/CMakeLists.txt @@ -61,7 +61,7 @@ ExternalProject_Add_Step( archive_stdlib DEPENDEES install BYPRODUCTS ${PYTHON_STDLIB} - COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} ${PYTHON_MEM_MODULE} ${LEGACY_PARSER_MODULE} + COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} VERBATIM ) From 58416223a2bda201a11ed35b35c50a1324f17723 Mon Sep 17 00:00:00 2001 From: Anirban Roychowdhury Date: Wed, 10 Aug 2022 21:49:13 -0700 Subject: [PATCH 13/13] Manual rebase. Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: --- multipy/runtime/interpreter/CMakeLists.txt | 11 ++++++++++- multipy/runtime/interpreter/CMakePythonModules.txt | 1 - 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/multipy/runtime/interpreter/CMakeLists.txt b/multipy/runtime/interpreter/CMakeLists.txt index 0c62c51a..6bb4c016 100644 --- a/multipy/runtime/interpreter/CMakeLists.txt +++ b/multipy/runtime/interpreter/CMakeLists.txt @@ -54,6 +54,15 @@ ExternalProject_Get_property(cpython SOURCE_DIR) SET(PYTHON_MODULE_DIR "${SOURCE_DIR}/build/temp.linux-x86_64-${CPYTHON_VERSION}/${SOURCE_DIR}/Modules") SET(PYTHON_STDLIB_DIR "${SOURCE_DIR}/Lib") SET(PYTHON_STDLIB "${PYTHON_INSTALL_DIR}/lib/libpython_stdlib${CPYTHON_VERSION}.a") + +if(${CPYTHON_VERSION} MATCHES "3\.(7|8)") + SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/memory.o") + SET(LEGACY_PARSER_MODULE "${PYTHON_MODULE_DIR}/parsermodule.o") +elseif(${CPYTHON_VERSION} MATCHES "3\.(9|1[0-9]*)") + SET(PYTHON_MEM_MODULE "${PYTHON_MODULE_DIR}/_decimal/libmpdec/mpalloc.o") + SET(LEGACY_PARSER_MODULE "") +endif() + # Then we use a hardcoded list of expected module names and include them in our lib include("CMakePythonModules.txt") ExternalProject_Add_Step( @@ -61,7 +70,7 @@ ExternalProject_Add_Step( archive_stdlib DEPENDEES install BYPRODUCTS ${PYTHON_STDLIB} - COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} + COMMAND ar -rc ${PYTHON_STDLIB} ${PYTHON_MODULES} ${PYTHON_MEM_MODULE} ${LEGACY_PARSER_MODULE} VERBATIM ) diff --git a/multipy/runtime/interpreter/CMakePythonModules.txt b/multipy/runtime/interpreter/CMakePythonModules.txt index c6bc9cab..61eb8d35 100644 --- a/multipy/runtime/interpreter/CMakePythonModules.txt +++ b/multipy/runtime/interpreter/CMakePythonModules.txt @@ -39,7 +39,6 @@ SET(PYTHON_MODULES ${PYTHON_MODULE_DIR}/nismodule.o ${PYTHON_MODULE_DIR}/_opcode.o ${PYTHON_MODULE_DIR}/ossaudiodev.o - ${PYTHON_MODULE_DIR}/parsermodule.o ${PYTHON_MODULE_DIR}/_pickle.o ${PYTHON_MODULE_DIR}/_posixsubprocess.o ${PYTHON_MODULE_DIR}/pyexpat.o ${PYTHON_MODULE_DIR}/expat/xmlparse.o ${PYTHON_MODULE_DIR}/expat/xmlrole.o ${PYTHON_MODULE_DIR}/expat/xmltok.o