Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ML] Portability improvements #2313

Merged
Merged
Show file tree
Hide file tree
Changes from 4 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
2 changes: 1 addition & 1 deletion 3rd_party/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ add_custom_target(
eigen
DEPENDS 3rd_party.sh pull-eigen.sh
COMMAND bash -c "./3rd_party.sh --add ${INSTALL_DIR}"
COMMAND bash -c "./pull-eigen.sh"
COMMAND ${CMAKE_COMMAND} -P "./pull-eigen.cmake"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

Expand Down
45 changes: 45 additions & 0 deletions 3rd_party/pull-eigen.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License
# 2.0 and the following additional limitation. Functionality enabled by the
# files subject to the Elastic License 2.0 may only be used in production when
# invoked by an Elasticsearch process with a license key installed that permits
# use of machine learning features. You may not use this file except in
# compliance with the Elastic License 2.0 and the foregoing additional
# limitation.
#

# Script to get the appropriate version of Eigen, if not already present.
#
# If updating this script ensure the license information is correct in the
# licenses sub-directory.

# This cmake script is expected to be called from a target or custom command with WORKING_DIRECTORY set to this file's location

# This is the file where Eigen stores its version
set(VERSION_FILE "eigen/Eigen/src/Core/util/Macros.h")

if(EXISTS ${VERSION_FILE})

file(READ ${VERSION_FILE} TMPTXT)

# We want Eigen version 3.4.0 for our current branch
string(FIND "${TMPTXT}" "#define EIGEN_WORLD_VERSION 3" world)
string(FIND "${TMPTXT}" "#define EIGEN_MAJOR_VERSION 4" major)
string(FIND "${TMPTXT}" "#define EIGEN_MINOR_VERSION 0" minor)

if(${world} EQUAL -1 OR ${major} EQUAL -1 OR ${minor} EQUAL -1)
set(PULL_EIGEN TRUE)
endif ()
else()
set(PULL_EIGEN TRUE)
endif()

if(PULL_EIGEN)
execute_process(
COMMAND ${CMAKE_COMMAND} -E rm -rf eigen
)
execute_process(
COMMAND git -c advice.detachedHead=false clone --depth=1 --branch=3.4.0 https://gitlab.com/libeigen/eigen.git
)
endif()
31 changes: 0 additions & 31 deletions 3rd_party/pull-eigen.sh

This file was deleted.

32 changes: 24 additions & 8 deletions cmake/compiler/vs2019.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,36 @@ else()
set (VS2019_VARIABLES_ 1)
endif()

edsavage marked this conversation as resolved.
Show resolved Hide resolved
set(ROOT "/c")
# TODO: when everything else that needs to be consistent is ready, set this to the current drive instead of hard coding C:
set(ROOT "C:")
if(DEFINED ENV{ROOT})
set(ROOT $ENV{ROOT})
endif()

execute_process(COMMAND bash -c "cygpath -m -s \"${ROOT}/Program Files (x86)/Microsoft Visual Studio/2019/Professional\"" OUTPUT_VARIABLE VCBASE OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND bash -c "cygpath -m -s \"${ROOT}/Program Files (x86)/Windows Kits\"" OUTPUT_VARIABLE WINSDKBASE OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND bash -c "cygpath -m -s \"${ROOT}/Program Files (x86)\"" OUTPUT_VARIABLE PFX86_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND bash -c "cd ${PFX86_DIR} && cygpath -m -s \"Microsoft Visual Studio\"" OUTPUT_VARIABLE MSVC_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND bash -c "cd ${PFX86_DIR} && cygpath -m -s \"Windows Kits\"" OUTPUT_VARIABLE WIN_KITS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND bash -c "/bin/ls -1 ${PFX86_DIR}/${MSVC_DIR}/2019/Professional/VC/Tools/MSVC" COMMAND bash -c "tail -1" OUTPUT_VARIABLE VCVER OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND bash -c "/bin/ls -1 ${WINSDKBASE}/10/Include" COMMAND bash -c "tail -1" OUTPUT_VARIABLE UCRTVER OUTPUT_STRIP_TRAILING_WHITESPACE)
set(PFX86_DIR "${ROOT}/Program Files (x86)")
set(MSVC_DIR "${PFX86_DIR}/Microsoft Visual Studio")
set(VCBASE "${MSVC_DIR}/2019/Professional")
set(WINSDKBASE "${PFX86_DIR}/Windows Kits")
set(WIN_KITS_DIR "${PFX86_DIR}/Windows Kits")

file(GLOB MSVC_VERS "${VCBASE}/VC/Tools/MSVC/*")
list(GET MSVC_VERS -1 MSVC_VER)
if(${MSVC_VER} MATCHES "/([^/]+)$")
set(VCVER ${CMAKE_MATCH_1})
endif()

file(GLOB WINSDK_VERS "${WINSDKBASE}/10/Include/*")
list(GET WINSDK_VERS -1 WINSDK_VER)
message(STATUS "WINSDK_VER ${WINSDK_VER}")
if(${WINSDK_VER} MATCHES "/([^/]+)$")
set(UCRTVER ${CMAKE_MATCH_1})
endif()

message(STATUS "VCBASE ${VCBASE}")
message(STATUS "WINSDKBASE ${WINSDKBASE}")
message(STATUS "VCVER ${VCVER}")
message(STATUS "UCRTVER ${UCRTVER}")

STRING(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" VCVER_REGEX_MATCH ${VCVER})
set(VCVER_MAJOR ${CMAKE_MATCH_1})
set(VCVER_MINOR ${CMAKE_MATCH_2})
Expand Down
9 changes: 7 additions & 2 deletions cmake/variables.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,11 @@ set(SNAPSHOT yes)

set(ML_APP_NAME controller)

execute_process(COMMAND awk -F= "/elasticsearchVersion/ {gsub(/-.*/,\"\"); print $2}"
$ENV{CPP_SRC_HOME}/gradle.properties OUTPUT_VARIABLE ML_VERSION_NUM OUTPUT_STRIP_TRAILING_WHITESPACE)
file(READ ${CMAKE_SOURCE_DIR}/gradle.properties GRADLE_PROPERTIES)
if(${GRADLE_PROPERTIES} MATCHES "elasticsearchVersion=([0-9\.]+)")
set(ML_VERSION_NUM "${CMAKE_MATCH_1}")
endif()

message(STATUS "ML_VERSION_NUM ${ML_VERSION_NUM}")

message(STATUS "CMAKE_CXX_COMPILER_VERSION ${CMAKE_CXX_COMPILER_VERSION}")
Expand All @@ -41,6 +44,8 @@ else()
set(CMAKE_INSTALL_PREFIX $ENV{CMAKE_INSTALL_PREFIX})
endif()

string(REPLACE "\\" "/" CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
message(STATUS "CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}")

if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
if (CMAKE_CROSSCOMPILING)
Expand Down
24 changes: 16 additions & 8 deletions lib/ver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,22 @@
project("ML Ver")

# Prepare values to substitute into the template
execute_process(COMMAND date "+%Y" OUTPUT_VARIABLE BUILD_YEAR OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND id COMMAND awk -F ")" "{ print $1 }" COMMAND awk -F "(" "{ print $2 }" OUTPUT_VARIABLE USER_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND awk -F= "/elasticsearchVersion/ {gsub(/-.*/,\"\"); print $2}"
$ENV{CPP_SRC_HOME}/gradle.properties OUTPUT_VARIABLE PRODUCT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)

if(${VERSION_QUALIFIER})
set(PRODUCT_VERSION "${PRODUCT_VERSION}-${VERSION_QUALIFIER}")
string(TIMESTAMP BUILD_YEAR "%Y")

if(WIN32)
set(USER_NAME $ENV{USERNAME})
else()
execute_process(COMMAND id COMMAND awk -F ")" "{ print $1 }" COMMAND awk -F "(" "{ print $2 }" OUTPUT_VARIABLE USER_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
set(PRODUCT_VERSION "${ML_VERSION_NUM}")

message(STATUS "PRODUCT_VERSION ${PRODUCT_VERSION}")
message(STATUS "USER_NAME ${USER_NAME}")
message(STATUS "BUILD_YEAR ${BUILD_YEAR}")

if($ENV{VERSION_QUALIFIER})
set(PRODUCT_VERSION "${PRODUCT_VERSION}-$ENV{VERSION_QUALIFIER}")
endif()

if(SNAPSHOT STREQUAL "yes")
Expand Down
8 changes: 4 additions & 4 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ ml_add_test(bin/controller/unittest controller)
ml_add_test(bin/pytorch_inference/unittest pytorch_inference)

add_custom_target(build_tests
DEPENDS ${ML_BUILD_TEST_DEPENDS}
)
DEPENDS ${ML_BUILD_TEST_DEPENDS}
)
add_custom_target(test
DEPENDS ${ML_TEST_DEPENDS}
)
DEPENDS ${ML_TEST_DEPENDS}
)