WA to resolve conflict between paddlepaddle and protobuf 3.20.3 (#16315)

This commit is contained in:
mei, yang 2023-03-20 16:50:49 +08:00 committed by GitHub
parent a46fc47e6a
commit 4411a6ea45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 4 deletions

View File

@ -25,10 +25,21 @@ ov_add_test_target(
) )
# Test model generating # Test model generating
ov_check_pip_packages(REQUIREMENTS_FILE "${CMAKE_CURRENT_SOURCE_DIR}/requirements.txt" set(PADDLE_REQ "${CMAKE_CURRENT_SOURCE_DIR}/requirements.txt")
MESSAGE_MODE WARNING if(PYTHONINTERP_FOUND)
WARNING_MESSAGE "PaddlePaddle frontend unit tests will be skipped" execute_process(
RESULT_VAR paddlepaddle_FOUND) COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/paddle_pip_check.py" ${PADDLE_REQ}
RESULT_VARIABLE EXIT_CODE
OUTPUT_VARIABLE OUTPUT_TEXT
ERROR_VARIABLE ERROR_TEXT)
endif()
if(NOT EXIT_CODE EQUAL 0)
set(paddlepaddle_FOUND OFF)
message(WARNING "Python requirement file ${PADDLE_REQ} is not installed, PaddlePaddle frontend unit tests will be skipped")
else()
set(paddlepaddle_FOUND ON)
endif()
set(TEST_PADDLE_MODELS_DIRNAME test_model_zoo/paddle_test_models) set(TEST_PADDLE_MODELS_DIRNAME test_model_zoo/paddle_test_models)
target_compile_definitions(${TARGET_NAME} PRIVATE -D TEST_PADDLE_MODELS_DIRNAME=\"${TEST_PADDLE_MODELS_DIRNAME}/\") target_compile_definitions(${TARGET_NAME} PRIVATE -D TEST_PADDLE_MODELS_DIRNAME=\"${TEST_PADDLE_MODELS_DIRNAME}/\")

View File

@ -0,0 +1,20 @@
import pkg_resources
import re
import sys
req_file=sys.argv[1]
try:
pkg_resources.require(open(req_file, mode='r'))
except Exception as inst:
pattern = re.compile(r"protobuf .*, Requirement.parse\('protobuf<=3\.20\.0,>=3\.1\.0'\), {'paddlepaddle'}")
result = pattern.findall(str(inst))
if len(result) == 0:
raise inst
else:
env = pkg_resources.Environment()
env['protobuf'].clear()
env.add(pkg_resources.DistInfoDistribution(project_name="protobuf", version="3.20.0"))
ws = pkg_resources.working_set
reqs = pkg_resources.parse_requirements(open(req_file, mode='r'))
dists = ws.resolve(reqs, env, replace_conflicting=True)