diff --git a/Application/src/grabber/CMakeLists.txt b/Application/src/grabber/CMakeLists.txt index 00894b873db27c8f773473b78157fe6bbff89056..7b1f0ab20521bdec8e01816cdb4e5508b150bb13 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 95b4ce377de475b552c6a2f3b6f823afc4801217..67fd0a5eaacb033706459ef4edfc7bb2427ecaf5 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 e7a20df91330016c6e8271f93efb7711f186766b..76993250ac1ff3236d7d063a381ed8c2c617a2cb 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 d9317fc4b69c414c3ca8cfd5b6165288ace62341..ec6c57891812608b14370efcdfa8f12ea6ac462b 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 741ea9263e63391761689911941c01bf17037502..687df25a834d7b692d9de8bd5e85be7012ff3300 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 d64dfc0fa5ff9c0bc920342acb32053bec8cc800..bd68e905667e058ea3e535699466599cc0d0a08b 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 822af08a28a0dff22f616dda84d576b96c833eb2..7bd1b8df7f9f533662698c6d111c82b8bb7d41a7 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 2cc29cb9815231e15a121219348883a7338e4c27..c8e2e1f9617488cda9f8a9fc67c498792400217d 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 58ceabc352da9bc38cf602733f514be06640b3e3..eeec5cb558ebe48e83d05616b0d6660b1d8ba4c3 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: