From f14c2211231803eefbbfe9b0ec026d230a1e18d7 Mon Sep 17 00:00:00 2001 From: Enwei Jiao Date: Wed, 19 Apr 2023 16:52:30 +0800 Subject: [PATCH] Revert "Opt compile time for Mac (#23453)" (#23533) Signed-off-by: Enwei Jiao --- .github/workflows/mac.yaml | 35 +++++++++++++++++++++------- internal/core/CMakeLists.txt | 1 + internal/core/cmake/BuildUtils.cmake | 15 ++++++++++++ scripts/core_build.sh | 14 ++++------- 4 files changed, 47 insertions(+), 18 deletions(-) diff --git a/.github/workflows/mac.yaml b/.github/workflows/mac.yaml index 58b6c5bd39..1947e11ffc 100644 --- a/.github/workflows/mac.yaml +++ b/.github/workflows/mac.yaml @@ -19,6 +19,7 @@ on: - Makefile - '!**.md' - '!build/ci/jenkins/**' + # FIXME(wxyu): not need to run code check, update the ci-passed rules and remove these two lines - go.mod - go.sum @@ -30,6 +31,18 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 + - name: 'Generate CCache Hash' + env: + CORE_HASH: ${{ hashFiles( 'internal/core/**/*.cpp', 'internal/core/**/*.cc', 'internal/core/**/*.c', 'internal/core/**/*.h', 'internal/core/**/*.hpp', 'internal/core/**/CMakeLists.txt') }} + run: | + echo "corehash=${CORE_HASH}" >> $GITHUB_ENV + echo "Set CCache hash to ${CORE_HASH}" + - name: Mac Cache CCache Volumes + uses: pat-s/always-upload-cache@v3 + with: + path: /var/tmp/ccache + key: macos-ccache-${{ env.corehash }} + restore-keys: macos-ccache- - name: Setup Go environment uses: actions/setup-go@v2.2.0 with: @@ -43,18 +56,22 @@ jobs: - name: Mac Cache Conan Packages uses: pat-s/always-upload-cache@v3 with: - path: ~/.conan/data - key: macos-conan - + path: ~/.conan + key: macos-conan-${{ hashFiles('internal/core/conanfile.*') }} + restore-keys: macos-conan- - name: Code Check env: - BUILD_CACHE: sccache - AWS_ACCESS_KEY_ID: ${{ secrets.BUILD_CACHE_S3_AK }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.BUILD_CACHE_S3_SK }} - SCCACHE_BUCKET: milvus-github-action-build-cache - SCCACHE_REGION: us-west-2 + CCACHE_DIR: /var/tmp/ccache + CCACHE_COMPILERCHECK: content + CCACHE_COMPRESS: 1 + CCACHE_COMPRESSLEVEL: 5 + CCACHE_MAXSIZE: 2G run: | - brew install libomp ninja openblas sccache pkg-config + if [[ ! -d "/var/tmp/ccache" ]];then + mkdir -p /var/tmp/ccache + fi + ls -alh /var/tmp/ccache + brew install libomp ninja openblas ccache pkg-config pip3 install conan==1.58.0 if [[ ! -d "/usr/local/opt/llvm" ]]; then ln -s /usr/local/opt/llvm@14 /usr/local/opt/llvm diff --git a/internal/core/CMakeLists.txt b/internal/core/CMakeLists.txt index 38b18c8cc6..7de3328fd8 100644 --- a/internal/core/CMakeLists.txt +++ b/internal/core/CMakeLists.txt @@ -95,6 +95,7 @@ set( CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${CONAN_PROTOBUF_ROOT}) include( CTest ) include( BuildUtils ) include( DefineOptions ) +using_ccache_if_defined(MILVUS_USE_CCACHE) include( ExternalProject ) include( GNUInstallDirs ) diff --git a/internal/core/cmake/BuildUtils.cmake b/internal/core/cmake/BuildUtils.cmake index 02ca37dd92..b7dd0bb6de 100644 --- a/internal/core/cmake/BuildUtils.cmake +++ b/internal/core/cmake/BuildUtils.cmake @@ -220,3 +220,18 @@ MACRO (import_mysql_inc) include_directories(${MYSQL_INCLUDE_DIR}) endif () ENDMACRO (import_mysql_inc) + +MACRO(using_ccache_if_defined MILVUS_USE_CCACHE) + if (MILVUS_USE_CCACHE) + find_program(CCACHE_FOUND ccache) + if (CCACHE_FOUND) + message(STATUS "Using ccache: ${CCACHE_FOUND}") + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE_FOUND}) + set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE_FOUND}) + # let ccache preserve C++ comments, because some of them may be + # meaningful to the compiler + set(ENV{CCACHE_COMMENTS} "1") + endif (CCACHE_FOUND) + endif () +ENDMACRO(using_ccache_if_defined) + diff --git a/scripts/core_build.sh b/scripts/core_build.sh index 534966db80..5f61af559d 100755 --- a/scripts/core_build.sh +++ b/scripts/core_build.sh @@ -188,12 +188,8 @@ if [[ ${MAKE_CLEAN} == "ON" ]]; then exit 0 fi -CACHE="${BUILD_CACHE:-ccache}" - export CONAN_REVISIONS_ENABLED=1 -if [[ ! `conan remote list` == *default-conan-local* ]]; then - conan remote add default-conan-local https://milvus01.jfrog.io/artifactory/api/conan/default-conan-local -fi +conan remote add default-conan-local https://milvus01.jfrog.io/artifactory/api/conan/default-conan-local unameOut="$(uname -s)" case "${unameOut}" in Darwin*) @@ -209,8 +205,8 @@ case "${unameOut}" in fi llvm_prefix="$(brew --prefix llvm@${llvm_version})" export CLANG_TOOLS_PATH="${llvm_prefix}/bin" - export CC="${CACHE} ${llvm_prefix}/bin/clang" - export CXX="${CACHE} ${llvm_prefix}/bin/clang++" + export CC="ccache ${llvm_prefix}/bin/clang" + export CXX="ccache ${llvm_prefix}/bin/clang++" export ASM="${llvm_prefix}/bin/clang" export CFLAGS="-Wno-deprecated-declarations -I$(brew --prefix libomp)/include" export CXXFLAGS=${CFLAGS} @@ -280,9 +276,9 @@ else make -j ${jobs} install || exit 1 fi -if command -v ${CACHE} &> /dev/null +if command -v ccache &> /dev/null then - ${CACHE} -s + ccache -s fi popd