create python environment instead of using pyinstaller

This commit is contained in:
mlangkabel
2021-01-25 18:45:27 +01:00
parent fd05f0fbc5
commit 093261232c
4 changed files with 101 additions and 107 deletions
+1
View File
@@ -26,6 +26,7 @@ build-*
.DS_Store
.idea
.vscode
__pycache__
/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailExtension/bin
/ide_plugins/vs/vs2015/SourcetrailPlugin/SourcetrailExtension/obj
+39 -6
View File
@@ -482,10 +482,38 @@ else()
endif()
string(REGEX REPLACE "/" "\\\\" BACKSLASHED_CMAKE_BINARY_DIR ${CMAKE_BINARY_DIR})
string(REGEX REPLACE "/" "\\\\" BACKSLASHED_CMAKE_SOURCE_DIR ${CMAKE_SOURCE_DIR})
# Lib Python ---------------------------------------------------------------------
if (BUILD_PYTHON_LANGUAGE_PACKAGE)
file (STRINGS "${CMAKE_SOURCE_DIR}/submodules/SourcetrailPythonIndexer/SourcetrailDB/version.txt" VERSION_STRING)
string(REGEX REPLACE "v([0-9]+)\\..*" "\\1" INTERFACE_VERSION "${VERSION_STRING}")
string(REGEX REPLACE "v[0-9]+\\.db([0-9]+)\\..*" "\\1" DATABASE_VERSION "${VERSION_STRING}")
string(REGEX REPLACE "v[0-9]+\\.db[0-9]+\\.p([0-9]+).*" "\\1" PATCH_VERSION "${VERSION_STRING}")
set(VERSION_STRING_UNDERSCORE "v${INTERFACE_VERSION}_db${DATABASE_VERSION}_p${PATCH_VERSION}")
message(STATUS "SourcetrailDB Version: ${VERSION_STRING}")
message(STATUS "Interface Version: ${INTERFACE_VERSION}")
message(STATUS "Database Version: ${DATABASE_VERSION}")
message(STATUS "Patch Version: ${PATCH_VERSION}")
set(LIB_CORE_TARGET_NAME "SourcetrailDB_core_lib")
add_subdirectory(
"${CMAKE_SOURCE_DIR}/submodules/SourcetrailPythonIndexer/SourcetrailDB/core"
"${CMAKE_BINARY_DIR}/SourcetrailPythonIndexer/SourcetrailDB/core")
set(PYTHON_BINDING_TARGET_NAME "bindings_python")
set(PYTHON_BINDING_OUTPUT_DIR "")
add_subdirectory(
"${CMAKE_SOURCE_DIR}/submodules/SourcetrailPythonIndexer/SourcetrailDB/bindings_python"
"${CMAKE_BINARY_DIR}/SourcetrailPythonIndexer/SourcetrailDB/bindings_python")
add_library(${LIB_PYTHON_PROJECT_NAME} ${LIB_PYTHON_FILES})
create_source_groups(${LIB_PYTHON_FILES})
@@ -502,14 +530,22 @@ if (BUILD_PYTHON_LANGUAGE_PACKAGE)
#link_directories(${Boost_LIBRARY_DIRS})
target_link_libraries(${LIB_PYTHON_PROJECT_NAME} ${LIB_UTILITY_PROJECT_NAME} ${LIB_PROJECT_NAME})
add_dependencies(${LIB_PYTHON_PROJECT_NAME} _${PYTHON_BINDING_TARGET_NAME})
string(REGEX REPLACE "\\\\" "/" FORWARDSLASHED_PYTHON_INCLUDE_DIR ${PYTHON_INCLUDE_DIR})
set(PYTHON_ENVIRONMENT_DIR "${BACKSLASHED_CMAKE_SOURCE_DIR}\\bin\\app\\data\\python\\environment")
add_custom_command(
TARGET ${LIB_PYTHON_PROJECT_NAME}
PRE_BUILD
COMMAND ${PROJECT_SOURCE_DIR}/script/download_python_indexer.sh
COMMENT "download python indexer"
COMMAND ${PROJECT_SOURCE_DIR}/script/update_python_indexer.sh
COMMENT "updating python indexer scripts"
)
execute_process(
COMMAND "cmd.exe" "/k" "rmdir" "${PYTHON_ENVIRONMENT_DIR}" & "${PYTHON_INCLUDE_DIR}/../python.exe" "-m" "venv" "--clear" "--copies" "${PYTHON_ENVIRONMENT_DIR}" & "${PYTHON_ENVIRONMENT_DIR}/Scripts/pip" "install" "-r" "${CMAKE_SOURCE_DIR}/submodules/SourcetrailPythonIndexer/requirements.txt" & exit
)
else()
message(STATUS "Building the Python indexer will be skipped. You can enable building this target by setting 'BUILD_PYTHON_LANGUAGE_PACKAGE' to 'ON'.")
@@ -695,9 +731,6 @@ if (WIN32)
TARGET ${APP_PROJECT_NAME}
PROPERTY VS_DEBUGGER_WORKING_DIRECTORY
"${CMAKE_SOURCE_DIR}/bin/app")
string(REGEX REPLACE "/" "\\\\" BACKSLASHED_CMAKE_BINARY_DIR ${CMAKE_BINARY_DIR})
string(REGEX REPLACE "/" "\\\\" BACKSLASHED_CMAKE_SOURCE_DIR ${CMAKE_SOURCE_DIR})
else ()
add_executable(${APP_PROJECT_NAME} ${APP_FILES})
endif ()
-101
View File
@@ -1,101 +0,0 @@
#!/bin/bash
SOURCETRAIL_PYTHON_INDEXER_VERSION="v1_db25_p5"
# Determine current platform
PLATFORM='unknown'
if [ "$(uname)" == "Darwin" ]; then
PLATFORM='osx'
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
PLATFORM='linux'
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then
PLATFORM='windows'
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]; then
PLATFORM='windows'
elif [ "$OSTYPE" == "msys" ]; then
PLATFORM='windows'
fi
PACKAGE_NAME="SourcetrailPythonIndexer_${SOURCETRAIL_PYTHON_INDEXER_VERSION}-${PLATFORM}"
PACKAGE_FILE_NAME="${PACKAGE_NAME}.zip"
PACKAGE_URL="https://github.com/CoatiSoftware/SourcetrailPythonIndexer/releases/download/${SOURCETRAIL_PYTHON_INDEXER_VERSION}/${PACKAGE_FILE_NAME}"
TEMP_PATH="build/temp"
TARGET_PATH="bin/app/data/python"
ABORT="\033[31mAbort:\033[00m"
SUCCESS="\033[32mSuccess:\033[00m"
INFO="\033[33mInfo:\033[00m"
if [ $PLATFORM == "windows" ]; then
SCRIPT=`realpath $0`
if [ "$SCRIPT" == "" ]; then
ORIGINAL_PATH_TO_SCRIPT="${0}"
CLEANED_PATH_TO_SCRIPT="${ORIGINAL_PATH_TO_SCRIPT//\\//}"
SCRIPT_DIR=${CLEANED_PATH_TO_SCRIPT%/*}
else
ORIGINAL_PATH_TO_SCRIPT=`dirname $SCRIPT`
SCRIPT_DIR="${ORIGINAL_PATH_TO_SCRIPT//\\//}"
fi
else
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
fi
echo "This script is running in: $SCRIPT_DIR"
# Enter main directory
cd $SCRIPT_DIR/
cd ..
BINARY_PATH="$TARGET_PATH/SourcetrailPythonIndexer"
if [ $PLATFORM == "windows" ]; then
BINARY_PATH="${BINARY_PATH}.exe"
fi
if [ -e "${BINARY_PATH}" ]; then
echo -e $INFO "SourcetrailPythonIndexer already exists, checking version..."
INSTALLED_VERSION="$(${BINARY_PATH} --version)"
INSTALLED_VERSION=${INSTALLED_VERSION#* }
INSTALLED_VERSION="${INSTALLED_VERSION//./$'_'}"
if [ "$INSTALLED_VERSION" == "$SOURCETRAIL_PYTHON_INDEXER_VERSION" ]; then
echo -e $INFO "Nothing to update. Target version of SourcetrailPythonIndexer is already installed."
exit
fi
fi
mkdir -p $TEMP_PATH
echo -e $INFO "starting to download $PACKAGE_FILE_NAME"
if [ $PLATFORM == "linux" ]; then
wget -O $TEMP_PATH/$PACKAGE_FILE_NAME $PACKAGE_URL
elif [ $PLATFORM == "osx" ]; then
wget -O $TEMP_PATH/$PACKAGE_FILE_NAME $PACKAGE_URL
elif [ $PLATFORM == "windows" ]; then
certutil.exe -urlcache -split -f $PACKAGE_URL $TEMP_PATH/$PACKAGE_FILE_NAME
fi
echo -e $INFO "finished downloading $PACKAGE_FILE_NAME"
if [ $PLATFORM == "linux" ]; then
unzip -d $TEMP_PATH $TEMP_PATH/$PACKAGE_FILE_NAME
elif [ $PLATFORM == "osx" ]; then
unzip -d $TEMP_PATH $TEMP_PATH/$PACKAGE_FILE_NAME
elif [ $PLATFORM == "windows" ]; then
7z x $TEMP_PATH/$PACKAGE_FILE_NAME -o$TEMP_PATH
fi
echo -e $INFO "clearing $TARGET_PATH"
rm -rf $TARGET_PATH
mkdir -p $TARGET_PATH
cp -r $TEMP_PATH/$PACKAGE_NAME/* $TARGET_PATH
echo -e $INFO "clearing temporary data at $TEMP_PATH"
rm -rf $TEMP_PATH
+61
View File
@@ -0,0 +1,61 @@
#!/bin/bash
# Determine current platform
PLATFORM='unknown'
if [ "$(uname)" == "Darwin" ]; then
PLATFORM='osx'
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
PLATFORM='linux'
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then
PLATFORM='windows'
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]; then
PLATFORM='windows'
elif [ "$OSTYPE" == "msys" ]; then
PLATFORM='windows'
fi
INPUT_DIR="submodules/SourcetrailPythonIndexer"
OUTPUT_DIR="bin/app/data/python"
PYTHON_ENVIRONMENT_DIR="$OUTPUT_DIR/environment"
PYTHON_INDEXER_DIR="$OUTPUT_DIR/indexer"
ABORT="\033[31mAbort:\033[00m"
SUCCESS="\033[32mSuccess:\033[00m"
INFO="\033[33mInfo:\033[00m"
if [ $PLATFORM == "windows" ]; then
SCRIPT=`realpath $0`
if [ "$SCRIPT" == "" ]; then
ORIGINAL_PATH_TO_SCRIPT="${0}"
CLEANED_PATH_TO_SCRIPT="${ORIGINAL_PATH_TO_SCRIPT//\\//}"
SCRIPT_DIR=${CLEANED_PATH_TO_SCRIPT%/*}
else
ORIGINAL_PATH_TO_SCRIPT=`dirname $SCRIPT`
SCRIPT_DIR="${ORIGINAL_PATH_TO_SCRIPT//\\//}"
fi
else
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
fi
echo "This script is running in: $SCRIPT_DIR"
# Enter main directory
cd $SCRIPT_DIR/
cd ..
echo "Clean $PYTHON_INDEXER_DIR"
rm -rf $PYTHON_INDEXER_DIR
echo "Copy python indexer files to $PYTHON_INDEXER_DIR"
mkdir $PYTHON_INDEXER_DIR
cp $INPUT_DIR/_version.py $PYTHON_INDEXER_DIR
cp $INPUT_DIR/run.py $PYTHON_INDEXER_DIR
cp $INPUT_DIR/indexer.py $PYTHON_INDEXER_DIR
cp $INPUT_DIR/shallow_indexer.py $PYTHON_INDEXER_DIR