improve grpc (#1912)

* improve grpc

* fix url for windows

* disable shared for windows
pull/1918/head
ruki 2 years ago committed by GitHub
parent 7fb3e89fd3
commit 3dd620d552
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      packages/g/grpc/patches/1.51.3/disable-download-archive.patch
  2. 16
      packages/g/grpc/patches/1.51.3/static-linking-in-linux.patch
  3. 38
      packages/g/grpc/xmake.lua

@ -0,0 +1,12 @@
diff --git a/cmake/download_archive.cmake b/cmake/download_archive.cmake
index 820aafafb7..a59b785c7e 100644
--- a/cmake/download_archive.cmake
+++ b/cmake/download_archive.cmake
@@ -19,6 +19,7 @@ file(MAKE_DIRECTORY ${_download_archive_TEMPORARY_DIR})
# Note that strip_prefix strips the directory path prefix of the extracted
# archive content, and it may strip multiple directories.
function(download_archive destination url hash strip_prefix)
+ return()
# Fetch and validate
set(_TEMPORARY_FILE ${_download_archive_TEMPORARY_DIR}/${strip_prefix}.tar.gz)
message(STATUS "Downloading from ${url}, if failed, please try configuring again")

@ -0,0 +1,16 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8f78306f77..e09f8fcc1e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -211,6 +211,11 @@ if (NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE)
endif()
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
+if (gRPC_STATIC_LINKING AND NOT _gRPC_PLATFORM_WINDOWS)
+ # Force to static link
+ set(CMAKE_EXE_LINKER_FLAGS "-Bstatic")
+endif()
+
if(MSVC)
include(cmake/msvc_static_runtime.cmake)
add_definitions(-D_WIN32_WINNT=0x600 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS)

@ -3,8 +3,12 @@ package("grpc")
set_description("The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)")
set_license("Apache-2.0")
add_urls("https://github.com/grpc/grpc.git")
add_versions("v1.46.3", "53d69cc581c5b7305708587f4f1939278477c28a")
add_urls("https://github.com/grpc/grpc/archive/refs/tags/$(version).zip",
"https://github.com/grpc/grpc.git")
add_versions("v1.51.3", "17720fd0a690e904a468b4b3dae6fa5ec40b0d1f4d418e2ca092e2f92f06fce0")
add_patches("1.51.3", path.join(os.scriptdir(), "patches", "1.51.3", "disable-download-archive.patch"), "90fdd6e4a51cbc9756d1fcdd0f65e665d4b78cfd91fdbeb0228cc4e9c4ba1b73")
add_patches("1.51.3", path.join(os.scriptdir(), "patches", "1.51.3", "static-linking-in-linux.patch"), "176474919883f93be0c5056098eccad408038663c6c7361f2e049cdf7247a19c")
add_deps("cmake")
if is_plat("linux") then
@ -15,22 +19,30 @@ package("grpc")
add_extsources("brew::shtool")
elseif is_plat("windows") then
add_deps("nasm")
add_configs("shared", {description = "Build shared libraries.", default = false, type = "boolean", readonly = true})
add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
end
add_deps("c-ares", "re2", "abseil", "protobuf-cpp", "openssl", "zlib")
if is_plat("linux") then
add_syslinks("pthread", "dl", "m")
end
on_load("linux", "macosx", function (package)
if package:config("shared") then
package:add("links", "absl_city", "absl_raw_logging_internal", "absl_flags_config", "absl_scoped_set_env", "absl_flags_usage", "absl_strings_internal", "absl_failure_signal_handler", "absl_flags_parse", "absl_statusor", "absl_flags_marshalling", "absl_cord", "absl_exponential_biased", "grpc++", "protobuf-lite", "absl_examine_stack", "grpc++_unsecure", "absl_random_internal_distribution_test_util", "absl_bad_any_cast_impl", "gpr", "absl_leak_check", "absl_cordz_sample_token", "absl_cordz_functions", "absl_str_format_internal", "absl_random_internal_randen_slow", "grpc++_reflection", "absl_int128", "absl_cordz_info", "absl_flags_commandlineflag", "grpc++_alts", "absl_leak_check_disable", "absl_cord_internal", "absl_stacktrace", "absl_spinlock_wait", "absl_status", "absl_symbolize", "z", "grpc_unsecure", "absl_random_internal_platform", "absl_cordz_handle", "absl_flags_commandlineflag_internal", "absl_flags_program_name", "absl_random_seed_gen_exception", "absl_raw_hash_set", "absl_malloc_internal", "absl_bad_optional_access", "absl_flags_usage_internal", "re2", "absl_graphcycles_internal", "crypto", "absl_debugging_internal", "absl_base", "upb", "address_sorting", "absl_random_internal_randen", "absl_throw_delegate", "absl_strerror", "grpc", "absl_strings", "absl_flags_reflection", "absl_random_internal_randen_hwaes", "grpc_plugin_support", "absl_flags", "absl_flags_private_handle_accessor", "absl_random_internal_randen_hwaes_impl", "absl_random_internal_pool_urbg", "absl_flags_internal", "absl_random_distributions", "absl_time_zone", "absl_hashtablez_sampler", "absl_random_seed_sequences", "grpc++_error_details", "absl_low_level_hash", "absl_random_internal_seed_material", "protobuf", "protoc", "ssl", "cares", "absl_bad_variant_access", "absl_civil_time", "absl_synchronization", "absl_demangle_internal", "absl_periodic_sampler", "grpcpp_channelz", "absl_hash", "absl_log_severity", "absl_time")
else
package:add("links", "pthread", "dl", "m", "c")
end
end)
on_install("linux", "macosx", "windows", function (package)
local configs = {}
local configs = {
"-DCMAKE_CXX_STANDARD=17", -- abseil need c++17
"-DgRPC_BUILD_TESTS=OFF",
"-DgRPC_ZLIB_PROVIDER=package",
"-DgRPC_ABSL_PROVIDER=package",
"-DgRPC_CARES_PROVIDER=package",
"-DgRPC_RE2_PROVIDER=package",
"-DgRPC_SSL_PROVIDER=package",
"-DgRPC_PROTOBUF_PROVIDER=package",
"-DgRPC_UPB_PROVIDER=module", -- TODO
"-DgRPC_BENCHMARK_PROVIDER=none",
"-DgRPC_PROTOBUF_PACKAGE_TYPE=CONFIG"}
table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
io.replace("third_party/boringssl-with-bazel/CMakeLists.txt", "target_link_libraries(bssl ssl crypto)", "target_link_libraries(ssl crypto)\ntarget_link_libraries(bssl ssl crypto)", {plain = true})
import("package.tools.cmake").install(package, configs)
end)

Loading…
Cancel
Save