From a2e5d257f29f30b7f83ab0bead85ca6ada13d79c Mon Sep 17 00:00:00 2001 From: Tristan Walter <twalter@orn.mpg.de> Date: Tue, 13 Oct 2020 16:18:37 +0200 Subject: [PATCH] this is not a hard error, and should not be handled as one use latest commit compiling TREX_PYTHON_PATH into all executables --- Application/src/grabber/CMakeLists.txt | 14 ++++++++++++++ Application/src/grabber/main.cpp | 2 +- Application/src/grabber/pvinfo.cpp | 2 +- Application/src/grabber/tgrabs.cpp | 12 +++++++++--- Application/src/tracker/CMakeLists.txt | 14 ++++++++++++++ Application/src/tracker/main.cpp | 4 ++-- Application/src/tracker/misc/default_config.cpp | 13 ++++++++----- Application/src/tracker/trex.cpp | 12 +++++++++--- conda/meta.yaml | 2 +- 9 files changed, 59 insertions(+), 16 deletions(-) diff --git a/Application/src/grabber/CMakeLists.txt b/Application/src/grabber/CMakeLists.txt index 00894b8..7b1f0ab 100644 --- a/Application/src/grabber/CMakeLists.txt +++ b/Application/src/grabber/CMakeLists.txt @@ -128,6 +128,19 @@ set_target_properties(${TGRABS_EXEC_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist ) +if(TREX_CONDA_PACKAGE_INSTALL) + set(CONDA_PREFIX_VAR "$ENV{PREFIX}") +else() + set(CONDA_PREFIX_VAR "${PYTHON_EXECUTABLE}") +endif() + +string(REPLACE "\\" "\\\\" CONDA_PREFIX_VAR "${CONDA_PREFIX_VAR}") +message(STATUS "Setting TREX_PYTHON_PATH=${CONDA_PREFIX_VAR}") + +target_compile_definitions(pvinfo PRIVATE TREX_PYTHON_PATH="${CONDA_PREFIX_VAR}") +target_compile_definitions(pvconvert PRIVATE TREX_PYTHON_PATH="${CONDA_PREFIX_VAR}") +target_compile_definitions(${TGRABS_EXEC_NAME} PRIVATE TREX_PYTHON_PATH="${CONDA_PREFIX_VAR}") + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/gfx/GrabberIcon.icns PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") set(RESOURCE_COPY_FILES @@ -203,6 +216,7 @@ if(APPLE) target_link_libraries(tgrabs_starter PRIVATE cpputils) set_target_properties(tgrabs_starter PROPERTIES OUTPUT_NAME tgrabs) set(targets ${targets} tgrabs_starter) + target_compile_definitions(tgrabs_starter PRIVATE TREX_PYTHON_PATH="${CONDA_PREFIX_VAR}") endif() diff --git a/Application/src/grabber/main.cpp b/Application/src/grabber/main.cpp index 95b4ce3..67fd0a5 100644 --- a/Application/src/grabber/main.cpp +++ b/Application/src/grabber/main.cpp @@ -369,7 +369,7 @@ int main(int argc, char** argv) //Debug("change directory to conda environment resource folder: '%S'", &_wd.str()); if(chdir(_wd.c_str())) - U_EXCEPTION("Cannot change directory to '%S'", &_wd.str()); + Except("Cannot change directory to '%S'", &_wd.str()); } #endif diff --git a/Application/src/grabber/pvinfo.cpp b/Application/src/grabber/pvinfo.cpp index e7a20df..7699325 100644 --- a/Application/src/grabber/pvinfo.cpp +++ b/Application/src/grabber/pvinfo.cpp @@ -202,7 +202,7 @@ int main(int argc, char**argv) { //Debug("change directory to conda environment resource folder: '%S'", &_wd.str()); if(chdir(_wd.c_str())) - U_EXCEPTION("Cannot change directory to '%S'", &_wd.str()); + Except("Cannot change directory to '%S'", &_wd.str()); } #endif diff --git a/Application/src/grabber/tgrabs.cpp b/Application/src/grabber/tgrabs.cpp index d9317fc..ec6c578 100644 --- a/Application/src/grabber/tgrabs.cpp +++ b/Application/src/grabber/tgrabs.cpp @@ -11,12 +11,20 @@ #endif std::string conda_environment_path(const char* argv) { +#ifdef TREX_PYTHON_PATH + auto compiled_path = file::Path(TREX_PYTHON_PATH).is_regular() ? file::Path(TREX_PYTHON_PATH).remove_filename().str() : file::Path(TREX_PYTHON_PATH).str(); +#else + std::string compiled_path = ""; +#endif + #ifdef TREX_CONDA_PACKAGE_INSTALL + return compiled_path; +#else auto conda_prefix = getenv("CONDA_PREFIX"); std::string envs = "envs"; envs += OS_SEP; - std::string home; + std::string home = compiled_path; if(conda_prefix) { // we are inside a conda environment home = conda_prefix; @@ -37,8 +45,6 @@ std::string conda_environment_path(const char* argv) { } } return home; -#else - return ""; #endif } diff --git a/Application/src/tracker/CMakeLists.txt b/Application/src/tracker/CMakeLists.txt index 741ea92..687df25 100644 --- a/Application/src/tracker/CMakeLists.txt +++ b/Application/src/tracker/CMakeLists.txt @@ -214,6 +214,20 @@ target_link_libraries(trex_starter PRIVATE ${EXTRA_LIBS}) set_target_properties(trex_starter PROPERTIES OUTPUT_NAME trex) set(targets ${targets} trex_starter) + +if(TREX_CONDA_PACKAGE_INSTALL) + set(CONDA_PREFIX_VAR "$ENV{PREFIX}") + string(REPLACE "\\" "\\\\" CONDA_PREFIX_VAR "${CONDA_PREFIX_VAR}") + target_compile_definitions(trex_starter PRIVATE TREX_PYTHON_PATH="${CONDA_PREFIX_VAR}") + message(STATUS "Setting TREX_PYTHON_PATH=${CONDA_PREFIX_VAR}") +else() + message(STATUS "Adding compile definitions: ${PYTHON_EXECUTABLE}") + target_compile_definitions(trex_starter PRIVATE + TREX_PYTHON_PATH="${PYTHON_EXECUTABLE}" + ) + message(STATUS "Setting TREX_PYTHON_PATH=${PYTHON_EXECUTABLE}") +endif() + endif() install(TARGETS ${targets} diff --git a/Application/src/tracker/main.cpp b/Application/src/tracker/main.cpp index d64dfc0..bd68e90 100644 --- a/Application/src/tracker/main.cpp +++ b/Application/src/tracker/main.cpp @@ -283,8 +283,8 @@ int main(int argc, char** argv) else Error("Cannot change directory to '%S'.", &_wd); #elif defined(TREX_CONDA_PACKAGE_INSTALL) - char *conda_prefix = getenv("CONDA_PREFIX"); - if(conda_prefix != nullptr) { + auto conda_prefix = ::default_config::conda_environment_path().str(); + if(!conda_prefix.empty()) { file::Path _wd(conda_prefix); _wd = _wd / "usr" / "share" / "trex"; //Debug("change directory to conda environment resource folder: '%S'", &_wd.str()); diff --git a/Application/src/tracker/misc/default_config.cpp b/Application/src/tracker/misc/default_config.cpp index 822af08..7bd1b8d 100644 --- a/Application/src/tracker/misc/default_config.cpp +++ b/Application/src/tracker/misc/default_config.cpp @@ -100,12 +100,15 @@ namespace default_config { }; file::Path conda_environment_path() { +#ifdef TREX_PYTHON_PATH + auto compiled_path = file::Path(TREX_PYTHON_PATH).is_regular() ? file::Path(TREX_PYTHON_PATH).remove_filename().str() : file::Path(TREX_PYTHON_PATH).str(); +#else + std::string compiled_path = ""; +#endif + auto home = SETTING(python_path).value<file::Path>().str(); - if(home == "CONDA_PREFIX") { + if(home != "CONDA_PREFIX" && home != "" && home != compiled_path) { auto conda_prefix = getenv("CONDA_PREFIX"); - if(conda_prefix) { - // check if we are inside that environment - } if(conda_prefix) { // we are inside a conda environment @@ -127,7 +130,7 @@ file::Path conda_environment_path() { } } } else - home = ""; + home = compiled_path; return home;; } diff --git a/Application/src/tracker/trex.cpp b/Application/src/tracker/trex.cpp index 2cc29cb..c8e2e1f 100644 --- a/Application/src/tracker/trex.cpp +++ b/Application/src/tracker/trex.cpp @@ -13,12 +13,20 @@ #endif std::string conda_environment_path(const char* argv) { +#ifdef TREX_PYTHON_PATH + auto compiled_path = file::Path(TREX_PYTHON_PATH).is_regular() ? file::Path(TREX_PYTHON_PATH).remove_filename().str() : file::Path(TREX_PYTHON_PATH).str(); +#else + std::string compiled_path = ""; +#endif + #ifdef TREX_CONDA_PACKAGE_INSTALL + return compiled_path; +#else auto conda_prefix = getenv("CONDA_PREFIX"); std::string envs = "envs"; envs += OS_SEP; - std::string home; + std::string home = compiled_path; if(conda_prefix) { // we are inside a conda environment home = conda_prefix; @@ -39,8 +47,6 @@ std::string conda_environment_path(const char* argv) { } } return home; -#else - return ""; #endif } diff --git a/conda/meta.yaml b/conda/meta.yaml index 58ceabc..eeec5cb 100644 --- a/conda/meta.yaml +++ b/conda/meta.yaml @@ -4,7 +4,7 @@ package: source: git_url: https://github.com/mooch443/trex.git - git_rev: 4b449e1acbee862dfe70bbe4ed84ddfd40bea2b3 + git_rev: latest git_depth: 1 build: -- GitLab