Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions compiler/common-artifacts/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
#[[ Generate common python virtual enviornment ]]
# NOTE find_package try to use at least python3.8 as follows depending on platform version
# Ubuntu18.04; explictly installed python3.8 (default is python3.6)
# Ubuntu20.04; default python3.8
# NOTE find_package try to use at least python3.10 as follows depending on platform version
# Ubuntu20.04; explictly installed python3.10 (default is python3.8)
# Ubuntu22.04; default python3.10
# Ubuntu24.04; default python3.12
# refer https://github.com/Samsung/ONE/issues/9962
# find python 3.8 or above
find_package(Python 3.8 EXACT COMPONENTS Interpreter QUIET)
# refer https://github.com/Samsung/ONE/issues/15226
# find python 3.10 or above
find_package(Python 3.10 EXACT COMPONENTS Interpreter QUIET)
if(NOT Python_FOUND)
find_package(Python 3.8 COMPONENTS Interpreter QUIET)
find_package(Python 3.10 COMPONENTS Interpreter QUIET)
endif()

if(NOT Python_Interpreter_FOUND)
message(STATUS "Build common-artifacts: FAILED (Python3 is missing)")
return()
endif()

# NOTE assume only use 3.8.x or 3.10.x or 3.12.x
if((Python_VERSION VERSION_GREATER_EQUAL 3.8) AND (Python_VERSION VERSION_LESS 3.9))
set(PYTHON_VERSION_MINOR 8)
elseif((Python_VERSION VERSION_GREATER_EQUAL 3.10) AND (Python_VERSION VERSION_LESS 3.11))
# NOTE assume only use 3.10.x or 3.12.x
if((Python_VERSION VERSION_GREATER_EQUAL 3.10) AND (Python_VERSION VERSION_LESS 3.11))
set(PYTHON_VERSION_MINOR 10)
elseif((Python_VERSION VERSION_GREATER_EQUAL 3.12) AND (Python_VERSION VERSION_LESS 3.13))
set(PYTHON_VERSION_MINOR 12)
Expand Down Expand Up @@ -48,8 +46,8 @@ set(REQUIREMENTS_FILE "requirements.txt")
set(REQUIREMENTS_OVERLAY_PATH "${VIRTUALENV_OVERLAY}/${REQUIREMENTS_FILE}")

set(PYTHON_OVERLAY python3)
if(PYTHON_EXECUTABLE MATCHES python3.8)
set(PYTHON_OVERLAY python3.8)
if(PYTHON_EXECUTABLE MATCHES python3.10)
set(PYTHON_OVERLAY python3.10)
endif()

# NOTE when using behind proxy with self signed certificate, need to set '--trusted-host' options
Expand Down
18 changes: 8 additions & 10 deletions compiler/dalgona/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
# NOTE find_package will try to use at least python3.8 as follows depending on platform version
# Ubuntu18.04; explictly installed python3.8 (default is python3.6)
# Ubuntu20.04; default python3.8
# NOTE find_package will try to use at least python3.10 as follows depending on platform version
# Ubuntu20.04; explictly installed python3.10 (default is python3.8)
# Ubuntu22.04; default python3.10
# Ubuntu24.04; default python3.12
# refer https://github.com/Samsung/ONE/issues/9962
# refer https://github.com/Samsung/ONE/issues/15226
# NOTE Require same python version of common-artifacts
# find python 3.8 or above
find_package(Python 3.8 EXACT COMPONENTS Interpreter Development QUIET)
# find python 3.10 or above
find_package(Python 3.10 EXACT COMPONENTS Interpreter Development QUIET)
if(NOT Python_FOUND)
find_package(Python 3.8 COMPONENTS Interpreter Development QUIET)
find_package(Python 3.10 COMPONENTS Interpreter Development QUIET)
endif()

if(NOT Python_Development_FOUND)
message(STATUS "Build dalgona: FAILED (Python3 development package is missing)")
return()
endif()

# NOTE assume only use 3.8.x or 3.10.x or 3.12.x
if((Python_VERSION VERSION_GREATER_EQUAL 3.8) AND (Python_VERSION VERSION_LESS 3.9))
set(PYTHON_VERSION_MINOR 8)
elseif((Python_VERSION VERSION_GREATER_EQUAL 3.10) AND (Python_VERSION VERSION_LESS 3.11))
# NOTE assume only use 3.10.x or 3.12.x
if((Python_VERSION VERSION_GREATER_EQUAL 3.10) AND (Python_VERSION VERSION_LESS 3.11))
set(PYTHON_VERSION_MINOR 10)
elseif((Python_VERSION VERSION_GREATER_EQUAL 3.12) AND (Python_VERSION VERSION_LESS 3.13))
set(PYTHON_VERSION_MINOR 12)
Expand Down
46 changes: 35 additions & 11 deletions compiler/fm-equalize-value-py-test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ if (NOT DEFINED ONE_PYTHON_VERSION_MINOR)
endif()
set(PYTHON_SITE_PACKAGES "${VIRTUALENV}/lib/python3.${ONE_PYTHON_VERSION_MINOR}/site-packages")

message(STATUS "!!! PYTHON_SITE_PACKAGES: ${PYTHON_SITE_PACKAGES}")

get_target_property(ARTIFACTS_BIN_PATH testDataGenerator BINARY_DIR)
get_target_property(FM_EQUALIZE_BIN_PATH fm-equalize BINARY_DIR)
get_target_property(FME_DETECT_BIN_PATH fme-detect BINARY_DIR)
Expand Down Expand Up @@ -40,13 +42,25 @@ macro(eval RECIPE)
set(AFTER_CIRCLE_PATTERN_PATH "${CMAKE_CURRENT_BINARY_DIR}/${AFETR_PATTERN_FILE}")

# Apply fm-equalize
#add_custom_command(OUTPUT ${AFTER_CIRCLE_OUTPUT_PATH} ${AFTER_CIRCLE_PATTERN_PATH}
# COMMAND ${CMAKE_COMMAND} -E env
# PYTHONPATH=${PYTHON_SITE_PACKAGES}
# ${VIRTUALENV}/bin/python ${FM_EQUALIZE_BIN} -i ${OPT_CIRCLE_OUTPUT_PATH}
# -o ${AFTER_CIRCLE_OUTPUT_PATH} -f ${AFTER_CIRCLE_PATTERN_PATH}
# --fme_detect ${FME_DETECT_BIN} --dalgona ${DALGONA_BIN}
# --fme_apply ${FME_APPLY_BIN}
# DEPENDS ${FM_EQUALIZE_BIN} ${OPT_CIRCLE_OUTPUT_PATH} ${FME_APPLY_BIN} ${FME_DETECT_BIN} ${DALGONA_BIN}
# COMMENT "Apply fm-equalize to ${OPT_CIRCLE_OUTPUT_PATH}"
#)

add_custom_command(OUTPUT ${AFTER_CIRCLE_OUTPUT_PATH} ${AFTER_CIRCLE_PATTERN_PATH}
COMMAND ${CMAKE_COMMAND} -E env
PYTHONPATH=${PYTHON_SITE_PACKAGES}
${VIRTUALENV}/bin/python ${FM_EQUALIZE_BIN} -i ${OPT_CIRCLE_OUTPUT_PATH}
-o ${AFTER_CIRCLE_OUTPUT_PATH} -f ${AFTER_CIRCLE_PATTERN_PATH}
--fme_detect ${FME_DETECT_BIN} --dalgona ${DALGONA_BIN}
--fme_apply ${FME_APPLY_BIN}
COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${PYTHON_SITE_PACKAGES}
bash run_equalize_bin.sh ${VIRTUALENV}
${FM_EQUALIZE_BIN} ${OPT_CIRCLE_OUTPUT_PATH}
${AFTER_CIRCLE_OUTPUT_PATH} ${AFTER_CIRCLE_PATTERN_PATH}
${FME_DETECT_BIN} ${DALGONA_BIN}
${FME_APPLY_BIN}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${FM_EQUALIZE_BIN} ${OPT_CIRCLE_OUTPUT_PATH} ${FME_APPLY_BIN} ${FME_DETECT_BIN} ${DALGONA_BIN}
COMMENT "Apply fm-equalize to ${OPT_CIRCLE_OUTPUT_PATH}"
)
Expand All @@ -63,11 +77,21 @@ include("test.local.lst" OPTIONAL)
add_custom_target(fm_equalize_value_py_test_files ALL DEPENDS ${TEST_DEPS})
add_dependencies(fm_equalize_value_py_test_files common_artifacts_deps)

#add_test(NAME fm_equalize_value_py_test
# COMMAND ${VIRTUALENV}/bin/python -m pytest -sv test_luci_eval.py
# --test_list ${TEST_LIST_FILE}
# --tflite_dir ${ARTIFACTS_BIN_PATH}
# --circle_dir ${CMAKE_CURRENT_BINARY_DIR}
# --luci_eval_driver $<TARGET_FILE:luci_eval_driver>
# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
#)

add_test(NAME fm_equalize_value_py_test
COMMAND ${VIRTUALENV}/bin/python -m pytest -sv test_luci_eval.py
--test_list ${TEST_LIST_FILE}
--tflite_dir ${ARTIFACTS_BIN_PATH}
--circle_dir ${CMAKE_CURRENT_BINARY_DIR}
--luci_eval_driver $<TARGET_FILE:luci_eval_driver>
COMMAND bash test_luci_eval.sh
${VIRTUALENV}
${TEST_LIST_FILE}
${ARTIFACTS_BIN_PATH}
${CMAKE_CURRENT_BINARY_DIR}
$<TARGET_FILE:luci_eval_driver>
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
24 changes: 24 additions & 0 deletions compiler/fm-equalize-value-py-test/run_equalize_bin.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

# TODO add check arguments

VIRTUAL_ENV=$1; shift
FM_EQUALIZE_BIN=$1; shift
OPT_CIRCLE_OUTPUT_PATH=$1; shift
AFTER_CIRCLE_OUTPUT_PATH=$1; shift
AFTER_CIRCLE_PATTERN_PATH=$1; shift
FME_DETECT_BIN=$1; shift
DALGONA_BIN=$1; shift
FME_APPLY_BIN=$1; shift

source ${VIRTUAL_ENV}/bin/activate

python ${FM_EQUALIZE_BIN} \
-i ${OPT_CIRCLE_OUTPUT_PATH} \
-o ${AFTER_CIRCLE_OUTPUT_PATH} \
-f ${AFTER_CIRCLE_PATTERN_PATH} \
--fme_detect ${FME_DETECT_BIN} \
--dalgona ${DALGONA_BIN} \
--fme_apply ${FME_APPLY_BIN}

deactivate
19 changes: 19 additions & 0 deletions compiler/fm-equalize-value-py-test/test_luci_eval.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash

# TODO add check arguments

VIRTUAL_ENV=$1; shift
TEST_LIST_FILE=$1; shift
ARTIFACTS_BIN_PATH=$1; shift
CMAKE_CURRENT_BINARY_DIR=$1; shift
LUCI_EVAL_DRIVER=$1; shift

source ${VIRTUAL_ENV}/bin/activate

python -m pytest -sv test_luci_eval.py \
--test_list ${TEST_LIST_FILE} \
--tflite_dir ${ARTIFACTS_BIN_PATH} \
--circle_dir ${CMAKE_CURRENT_BINARY_DIR} \
--luci_eval_driver ${LUCI_EVAL_DRIVER}

deactivate