From a251c002471d8931eecc12201f84aa8e8e01dbbb Mon Sep 17 00:00:00 2001 From: 7FrogTW Date: Sat, 22 Oct 2022 01:32:45 +0800 Subject: [PATCH] chore: upgrade tensorflow-cc portfile (#24861) (#24861) Co-authored-by: Jonliu1993 <13720414433@163.com> --- ports/tensorflow-cc/vcpkg.json | 12 ++-- ports/tensorflow-common/fix-build-error.patch | 2 +- .../generate_static_link_cmd_linux.py | 2 +- .../tensorflow-common/tensorflow-common.cmake | 54 ++++++++++++---- ports/tensorflow-common/vcpkg.json | 6 +- ports/tensorflow/vcpkg.json | 12 ++-- ports/vcpkg-tool-bazel/portfile.cmake | 64 +++++++++++++++++++ ports/vcpkg-tool-bazel/vcpkg.json | 8 +++ versions/baseline.json | 16 +++-- versions/t-/tensorflow-cc.json | 5 ++ versions/t-/tensorflow-common.json | 5 ++ versions/t-/tensorflow.json | 5 ++ versions/v-/vcpkg-tool-bazel.json | 9 +++ 13 files changed, 170 insertions(+), 30 deletions(-) create mode 100644 ports/vcpkg-tool-bazel/portfile.cmake create mode 100644 ports/vcpkg-tool-bazel/vcpkg.json create mode 100644 versions/v-/vcpkg-tool-bazel.json diff --git a/ports/tensorflow-cc/vcpkg.json b/ports/tensorflow-cc/vcpkg.json index 9bb69848cd..de99c8a65c 100644 --- a/ports/tensorflow-cc/vcpkg.json +++ b/ports/tensorflow-cc/vcpkg.json @@ -1,11 +1,15 @@ { "name": "tensorflow-cc", - "version-semver": "2.7.0", - "port-version": 2, + "version-semver": "2.10.0", "description": "Library for computation using data flow graphs for scalable machine learning (C++ API version)", "homepage": "https://github.com/tensorflow/tensorflow", - "supports": "!(x86 | arm | uwp)", + "license": "Apache-2.0", + "supports": "!(x86 | arm | uwp) | (arm64 & osx)", "dependencies": [ - "tensorflow-common" + "tensorflow-common", + { + "name": "vcpkg-tool-bazel", + "host": true + } ] } diff --git a/ports/tensorflow-common/fix-build-error.patch b/ports/tensorflow-common/fix-build-error.patch index eb2a91c97c..e500853b9e 100644 --- a/ports/tensorflow-common/fix-build-error.patch +++ b/ports/tensorflow-common/fix-build-error.patch @@ -1,7 +1,7 @@ diff --git a/tensorflow/core/platform/default/logging.h b/tensorflow/core/platform/default/logging.h --- a/tensorflow/core/platform/default/logging.h +++ b/tensorflow/core/platform/default/logging.h -@@ -104,13 +104,13 @@ class LogMessageFatal : public LogMessage { +@@ -104,13 +104,13 @@ class LogMessageNull : public std::basic_ostringstream { }; #define _TF_LOG_INFO \ diff --git a/ports/tensorflow-common/generate_static_link_cmd_linux.py b/ports/tensorflow-common/generate_static_link_cmd_linux.py index 56a31ca0ab..45b8f6d1e0 100644 --- a/ports/tensorflow-common/generate_static_link_cmd_linux.py +++ b/ports/tensorflow-common/generate_static_link_cmd_linux.py @@ -8,7 +8,7 @@ lib_suffix = "" if len(sys.argv) < 5 else sys.argv[4] with open(sys.argv[1], "r") as f_in: with open("static_link.sh", "w") as f_out: p_cd = re.compile(r"^\((cd .*) && \\$") - p_linker = re.compile(fr"^\s*(.+)gcc.+(@bazel-out\S+libtensorflow{lib_suffix}\.so\.\d\.\d\.\d-2\.params).*") + p_linker = re.compile(fr"^\s*(.+)gcc.+(@bazel-out\S+libtensorflow{lib_suffix}\.so\.\d+\.\d+\.\d+-2\.params).*") f_out.write("#!/bin/bash\n# note: ar/binutils version 2.27 required to support output files > 4GB\n") env = [] for line in f_in: diff --git a/ports/tensorflow-common/tensorflow-common.cmake b/ports/tensorflow-common/tensorflow-common.cmake index fd1ff2b021..9d4fa85054 100644 --- a/ports/tensorflow-common/tensorflow-common.cmake +++ b/ports/tensorflow-common/tensorflow-common.cmake @@ -1,10 +1,10 @@ -set(TF_VERSION 2.7.0) -set(TF_VERSION_SHORT 2.7) +set(TF_VERSION 2.10.0) +set(TF_VERSION_SHORT 2.10) -vcpkg_find_acquire_program(BAZEL) +find_program(BAZEL bazel PATHS "${CURRENT_HOST_INSTALLED_DIR}/tools" REQUIRED) get_filename_component(BAZEL_DIR "${BAZEL}" DIRECTORY) -vcpkg_add_to_path(PREPEND ${BAZEL_DIR}) -set(ENV{BAZEL_BIN_PATH} "${BAZEL}") +vcpkg_add_to_path(PREPEND "${BAZEL_DIR}") +set(ENV{BAZEL_BIN_PATH} "${BAZEL_DIR}") function(tensorflow_try_remove_recurse_wait PATH_TO_REMOVE) file(REMOVE_RECURSE ${PATH_TO_REMOVE}) @@ -43,6 +43,19 @@ if(CMAKE_HOST_WIN32) else() vcpkg_find_acquire_program(PYTHON3) + # on macos arm64 use conda miniforge + if (VCPKG_HOST_IS_OSX) + EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE HOST_ARCH) + if(HOST_ARCH STREQUAL "arm64") + message(STATUS "Using python from miniforge3 ") + + if (NOT EXISTS ${CURRENT_BUILDTREES_DIR}/miniforge3) + vcpkg_execute_required_process(COMMAND curl -fsSLo Miniforge3.sh "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh" WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR} LOGNAME prerequisites-miniforge3-${TARGET_TRIPLET}) + vcpkg_execute_required_process(COMMAND bash ./Miniforge3.sh -p ${CURRENT_BUILDTREES_DIR}/miniforge3 -b WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR} LOGNAME prerequisites-miniforge3-${TARGET_TRIPLET}) + SET(PYTHON3 ${CURRENT_BUILDTREES_DIR}/miniforge3/bin/python3) + endif() + endif() + endif() vcpkg_execute_required_process(COMMAND ${PYTHON3} -m venv --symlinks "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-venv" WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR} LOGNAME prerequisites-venv-${TARGET_TRIPLET}) vcpkg_add_to_path(PREPEND ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-venv/bin) set(PYTHON3 ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-venv/bin/python3) @@ -88,9 +101,15 @@ set(ENV{TF_SET_ANDROID_WORKSPACE} 0) set(ENV{TF_DOWNLOAD_CLANG} 0) set(ENV{TF_NCCL_VERSION} ${TF_VERSION_SHORT}) set(ENV{NCCL_INSTALL_PATH} "") -set(ENV{CC_OPT_FLAGS} "/arch:AVX") set(ENV{TF_NEED_CUDA} 0) set(ENV{TF_CONFIGURE_IOS} 0) +set(ENV{CC_OPT_FLAGS} "-Wno-sign-compare") + +if(VCPKG_TARGET_IS_WINDOWS) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" ) + set(ENV{CC_OPT_FLAGS} "/arch:AVX") + endif() +endif() if(VCPKG_TARGET_IS_WINDOWS) set(BAZEL_LIB_NAME tensorflow${TF_LIB_SUFFIX}.dll) @@ -152,7 +171,7 @@ foreach(BUILD_TYPE IN LISTS PORT_BUILD_CONFIGS) OUT_SOURCE_PATH SOURCE_PATH REPO tensorflow/tensorflow REF "v${TF_VERSION}" - SHA512 f1e892583c7b3a73d4d39ec65dc135a5b02c789b357d57414ad2b6d05ad9fbfc8ef81918ba6410e314abd6928b76f764e6ef64c0b0c84b58b50796634be03f39 + SHA512 bf8a6f16393499c227fc70f27bcfb6d44ada53325aee2b217599309940f60db8ee00dd90e3d82b87d9c309f5621c404edab55e97ab8bfa09e4fc67859b9e3967 HEAD_REF master PATCHES "${CMAKE_CURRENT_LIST_DIR}/fix-build-error.patch" # Fix namespace error @@ -191,6 +210,8 @@ foreach(BUILD_TYPE IN LISTS PORT_BUILD_CONFIGS) set(COPTS) set(CXXOPTS) set(LINKOPTS) + set(BUILD_OPTS --jobs ${VCPKG_CONCURRENCY}) + message(STATUS "Build Tensorflow with concurrent level: ${VCPKG_CONCURRENCY}") if(VCPKG_TARGET_IS_WINDOWS) set(PLATFORM_COMMAND WINDOWS_COMMAND) else() @@ -198,11 +219,15 @@ foreach(BUILD_TYPE IN LISTS PORT_BUILD_CONFIGS) endif() if(BUILD_TYPE STREQUAL dbg) if(VCPKG_TARGET_IS_WINDOWS) - set(BUILD_OPTS "--compilation_mode=dbg --features=fastbuild") # link with /DEBUG:FASTLINK instead of /DEBUG:FULL to avoid .pdb >4GB error + list(APPEND BUILD_OPTS "--compilation_mode=dbg --features=fastbuild") # link with /DEBUG:FASTLINK instead of /DEBUG:FULL to avoid .pdb >4GB error elseif(VCPKG_TARGET_IS_OSX) - set(BUILD_OPTS --compilation_mode=fastbuild) # debug build on macOS currently broken + if (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + list(APPEND BUILD_OPTS --compilation_mode=opt) # debug & fastbuild build on macOS arm64 currently broken + else() + list(APPEND BUILD_OPTS --compilation_mode=fastbuild) # debug build on macOS x86_64 currently broken + endif() else() - set(BUILD_OPTS --compilation_mode=dbg) + list(APPEND BUILD_OPTS --compilation_mode=dbg) endif() separate_arguments(VCPKG_C_FLAGS ${PLATFORM_COMMAND} ${VCPKG_C_FLAGS}) @@ -221,7 +246,7 @@ foreach(BUILD_TYPE IN LISTS PORT_BUILD_CONFIGS) list(APPEND LINKOPTS "--linkopt=${OPT}") endforeach() else() - set(BUILD_OPTS --compilation_mode=opt) + list(APPEND BUILD_OPTS --compilation_mode=opt) separate_arguments(VCPKG_C_FLAGS ${PLATFORM_COMMAND} ${VCPKG_C_FLAGS}) separate_arguments(VCPKG_C_FLAGS_RELEASE ${PLATFORM_COMMAND} ${VCPKG_C_FLAGS_RELEASE}) @@ -240,6 +265,13 @@ foreach(BUILD_TYPE IN LISTS PORT_BUILD_CONFIGS) endforeach() endif() + if(VCPKG_TARGET_IS_OSX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + # tensorflow supports 10.12.6 (Sierra) or higher (64-bit) + # but actually does not compile with < 10.14 + # https://www.tensorflow.org/install/pip#macos + list(APPEND BUILD_OPTS --macos_minimum_os=10.14) + endif() + if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) if(VCPKG_TARGET_IS_WINDOWS) list(JOIN COPTS " " COPTS) diff --git a/ports/tensorflow-common/vcpkg.json b/ports/tensorflow-common/vcpkg.json index 56d7b1b3c0..9f485f0f6d 100644 --- a/ports/tensorflow-common/vcpkg.json +++ b/ports/tensorflow-common/vcpkg.json @@ -1,7 +1,7 @@ { "name": "tensorflow-common", - "version-semver": "2.7.0", - "port-version": 2, + "version-semver": "2.10.0", "description": "This meta package holds common files for the C [tensorflow] and the C++ [tensorflow-cc] API version of TensorFlow but is not installable on its own.", - "homepage": "https://github.com/tensorflow/tensorflow" + "homepage": "https://github.com/tensorflow/tensorflow", + "license": "Apache-2.0" } diff --git a/ports/tensorflow/vcpkg.json b/ports/tensorflow/vcpkg.json index 2c00ec901f..846cbacc8b 100644 --- a/ports/tensorflow/vcpkg.json +++ b/ports/tensorflow/vcpkg.json @@ -1,11 +1,15 @@ { "name": "tensorflow", - "version-semver": "2.7.0", - "port-version": 2, + "version-semver": "2.10.0", "description": "Library for computation using data flow graphs for scalable machine learning (C API version)", "homepage": "https://github.com/tensorflow/tensorflow", - "supports": "!(x86 | arm | uwp)", + "license": "Apache-2.0", + "supports": "!(x86 | arm | uwp) | (arm64 & osx)", "dependencies": [ - "tensorflow-common" + "tensorflow-common", + { + "name": "vcpkg-tool-bazel", + "host": true + } ] } diff --git a/ports/vcpkg-tool-bazel/portfile.cmake b/ports/vcpkg-tool-bazel/portfile.cmake new file mode 100644 index 0000000000..534b086e6a --- /dev/null +++ b/ports/vcpkg-tool-bazel/portfile.cmake @@ -0,0 +1,64 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +set(program bazel) +set(program_version 5.2.0) + +if(VCPKG_CROSSCOMPILING) + message(FATAL_ERROR "This is a host only port!") +endif() + +if(VCPKG_TARGET_IS_LINUX) + set(tool_subdirectory "${program_version}-linux") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-arm64") + set(download_filename "bazel-${tool_subdirectory}-arm64") + set(raw_executable ON) + set(download_sha512 11e953717f0edd599053a9c6ab849c266f6b34cd6f39dd99301a138aeb9d10113d055f7a2452f6ae601a9e9c19c816d22732958bb147e493dae9c63b13e0f1e0) + else() + set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64") + set(download_filename "bazel-${tool_subdirectory}-x86_64") + set(raw_executable ON) + set(download_sha512 c9f117414f31bc85a1f6a91f3d1c0a4884a4bb346bb60b00599c2da8225d085f67bc865f1429c897681cb99471767171aed148c77ce80d9525841c873d9cc912) + endif() +elseif(VCPKG_TARGET_IS_OSX) + set(tool_subdirectory "${program_version}-darwin") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-arm64") + set(download_filename "bazel-${tool_subdirectory}-arm64") + set(raw_executable ON) + set(download_sha512 303b5c897eab93fb164dda53ecf6294fd3376a5de17a752388f4e7f612a8a537acc7d99a021ca616c1d7989d10c3c14cd87689dad60b9f654bf75ecc606bb23e) + else() + set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64") + set(download_filename "bazel-${tool_subdirectory}-x86_64") + set(raw_executable ON) + set(download_sha512 609db0a2f9d6eab292271b44acf08978159ca43a90f3228e32afe430e830f5418a041480d75e5b502be192897693f6b80a9ab9e7ce549e3655e188c39d29baaf) + endif() +elseif(VCPKG_TARGET_IS_WINDOWS) + set(tool_subdirectory "${program_version}-windows") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-arm64.exe") + set(download_filename "bazel-${tool_subdirectory}-arm64.exe") + set(download_sha512 02c8f331daa3ea37319cf06d96618f433e297f749a1a6de863d243e2b826bfb12c058696cd6216afe38d35177f52cc1c66af98a8bcb191e198f436a44f2c2a1a) + else() + set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64.exe") + set(download_filename "bazel-${tool_subdirectory}-x86_64.exe") + set(download_sha512 4917dd714345359c24e40451e20862b2ed705824ceffe536d42e56ffcd66fcea581317857dfb5339b56534b0681efd8376e8eebdcf9daff0d087444b060bdc53) + endif() +endif() + +vcpkg_download_distfile(archive_path + URLS ${download_urls} + SHA512 "${download_sha512}" + FILENAME "${download_filename}" +) +message(STATUS "archive_path: '${archive_path}'") + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools") +file(INSTALL "${archive_path}" + DESTINATION "${CURRENT_PACKAGES_DIR}/tools" + RENAME "${program}" + FILE_PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE +) diff --git a/ports/vcpkg-tool-bazel/vcpkg.json b/ports/vcpkg-tool-bazel/vcpkg.json new file mode 100644 index 0000000000..77357d21e1 --- /dev/null +++ b/ports/vcpkg-tool-bazel/vcpkg.json @@ -0,0 +1,8 @@ +{ + "name": "vcpkg-tool-bazel", + "version": "5.2.0", + "description": "Bazel build system", + "homepage": "https://github.com/bazelbuild/bazel", + "license": "Apache-2.0", + "supports": "native" +} diff --git a/versions/baseline.json b/versions/baseline.json index 95b9b98a32..a0c788cc34 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -7281,16 +7281,16 @@ "port-version": 1 }, "tensorflow": { - "baseline": "2.7.0", - "port-version": 2 + "baseline": "2.10.0", + "port-version": 0 }, "tensorflow-cc": { - "baseline": "2.7.0", - "port-version": 2 + "baseline": "2.10.0", + "port-version": 0 }, "tensorflow-common": { - "baseline": "2.7.0", - "port-version": 2 + "baseline": "2.10.0", + "port-version": 0 }, "tensorpipe": { "baseline": "2022-03-16", @@ -7772,6 +7772,10 @@ "baseline": "2.7.18", "port-version": 0 }, + "vcpkg-tool-bazel": { + "baseline": "5.2.0", + "port-version": 0 + }, "vectorclass": { "baseline": "2.02.00", "port-version": 0 diff --git a/versions/t-/tensorflow-cc.json b/versions/t-/tensorflow-cc.json index 475c71d108..6bdefabb34 100644 --- a/versions/t-/tensorflow-cc.json +++ b/versions/t-/tensorflow-cc.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "0bec9080305d95ca6559f088d425d47ba44cc12c", + "version-semver": "2.10.0", + "port-version": 0 + }, { "git-tree": "c0b8bf99d3056c5b117dd2eabba3125f1d867442", "version-semver": "2.7.0", diff --git a/versions/t-/tensorflow-common.json b/versions/t-/tensorflow-common.json index d276daf00f..4dee70b93c 100644 --- a/versions/t-/tensorflow-common.json +++ b/versions/t-/tensorflow-common.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "958295999ce648940c11c6671f0897f38944841a", + "version-semver": "2.10.0", + "port-version": 0 + }, { "git-tree": "1f37cd68d08ecbb0ca6c2d630598d3f568f1fcc4", "version-semver": "2.7.0", diff --git a/versions/t-/tensorflow.json b/versions/t-/tensorflow.json index e47e81c730..9e1c9a1cbf 100644 --- a/versions/t-/tensorflow.json +++ b/versions/t-/tensorflow.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "87372cfe6baffa73e3dd20d50fda320ff2f1f023", + "version-semver": "2.10.0", + "port-version": 0 + }, { "git-tree": "07b6bd8bae65b448a163db4e720c46afd605a1cc", "version-semver": "2.7.0", diff --git a/versions/v-/vcpkg-tool-bazel.json b/versions/v-/vcpkg-tool-bazel.json new file mode 100644 index 0000000000..f5d6b7207d --- /dev/null +++ b/versions/v-/vcpkg-tool-bazel.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "2594b8f7c3cb557af7882e87fee900f76fe895a8", + "version": "5.2.0", + "port-version": 0 + } + ] +}