From 4411a6ea45e034ffefea7a332fbfdfaea99191fd Mon Sep 17 00:00:00 2001 From: "mei, yang" Date: Mon, 20 Mar 2023 16:50:49 +0800 Subject: [PATCH] WA to resolve conflict between paddlepaddle and protobuf 3.20.3 (#16315) --- src/frontends/paddle/tests/CMakeLists.txt | 19 ++++++++++++++---- .../paddle/tests/paddle_pip_check.py | 20 +++++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 src/frontends/paddle/tests/paddle_pip_check.py diff --git a/src/frontends/paddle/tests/CMakeLists.txt b/src/frontends/paddle/tests/CMakeLists.txt index cdf879a94eb..8945f7e083d 100644 --- a/src/frontends/paddle/tests/CMakeLists.txt +++ b/src/frontends/paddle/tests/CMakeLists.txt @@ -25,10 +25,21 @@ ov_add_test_target( ) # Test model generating -ov_check_pip_packages(REQUIREMENTS_FILE "${CMAKE_CURRENT_SOURCE_DIR}/requirements.txt" - MESSAGE_MODE WARNING - WARNING_MESSAGE "PaddlePaddle frontend unit tests will be skipped" - RESULT_VAR paddlepaddle_FOUND) +set(PADDLE_REQ "${CMAKE_CURRENT_SOURCE_DIR}/requirements.txt") +if(PYTHONINTERP_FOUND) + execute_process( + 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) target_compile_definitions(${TARGET_NAME} PRIVATE -D TEST_PADDLE_MODELS_DIRNAME=\"${TEST_PADDLE_MODELS_DIRNAME}/\") diff --git a/src/frontends/paddle/tests/paddle_pip_check.py b/src/frontends/paddle/tests/paddle_pip_check.py new file mode 100644 index 00000000000..4c7f860202b --- /dev/null +++ b/src/frontends/paddle/tests/paddle_pip_check.py @@ -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)