diff --git a/thirdparty/build-thirdparty.sh b/thirdparty/build-thirdparty.sh index e6126df77cc34b..2a468540484fd3 100755 --- a/thirdparty/build-thirdparty.sh +++ b/thirdparty/build-thirdparty.sh @@ -2144,37 +2144,26 @@ build_lance_c() { exit 1 fi + local required_rust_version="1.91.0" local cargo_env=( "CARGO_BUILD_JOBS=${PARALLEL}" "CARGO_TARGET_DIR=${PWD}/${BUILD_DIR}" "PROTOC=${TP_INSTALL_DIR}/bin/protoc" ) if command -v rustup >/dev/null 2>&1 && [[ -z "${RUSTUP_TOOLCHAIN}" ]]; then - if rustup toolchain list | grep -q '^1.91.0'; then - cargo_env+=("RUSTUP_TOOLCHAIN=1.91.0") + if ! rustup toolchain list | grep -Eq '^1\.91\.0([[:space:]-]|$)'; then + rustup toolchain install "${required_rust_version}" --profile minimal fi + cargo_env+=("RUSTUP_TOOLCHAIN=${required_rust_version}") fi - local required_rust_version="1.91.0" local cargo_version if ! cargo_version="$(env "${cargo_env[@]}" "${cargo_bin}" --version | awk '{print $2}')"; then echo "failed to get cargo version for lance-c. Install Rust ${required_rust_version} or set LANCE_C_CARGO/RUSTUP_TOOLCHAIN." exit 1 fi - if ! awk -v required="${required_rust_version}" -v actual="${cargo_version}" 'BEGIN { - split(required, r, "."); - split(actual, a, "."); - for (i = 1; i <= 3; i++) { - if ((a[i] + 0) > (r[i] + 0)) { - exit 0; - } - if ((a[i] + 0) < (r[i] + 0)) { - exit 1; - } - } - exit 0; - }'; then - echo "lance-c requires Rust/Cargo ${required_rust_version} or newer, but found ${cargo_version}." + if [[ "${cargo_version}" != "${required_rust_version}" ]]; then + echo "lance-c requires Rust/Cargo ${required_rust_version}, but found ${cargo_version}." echo "Install Rust ${required_rust_version} or set LANCE_C_CARGO/RUSTUP_TOOLCHAIN." exit 1 fi diff --git a/thirdparty/patches/brpc-1.4.0-secondary-package-name.patch b/thirdparty/patches/brpc-1.4.0-secondary-package-name.patch index 8d8a37ec0e71a0..34a519314f2990 100644 --- a/thirdparty/patches/brpc-1.4.0-secondary-package-name.patch +++ b/thirdparty/patches/brpc-1.4.0-secondary-package-name.patch @@ -17,7 +17,7 @@ index 2087cbcf..7aede561 100644 Tabbed* tabbed = dynamic_cast(service); for (int i = 0; i < sd->method_count(); ++i) { const google::protobuf::MethodDescriptor* md = sd->method(i); -@@ -1282,6 +1290,14 @@ int Server::AddServiceInternal(google::protobuf::Service* service, +@@ -1282,6 +1290,16 @@ int Server::AddServiceInternal(google::protobuf::Service* service, mp.method = md; mp.status = new MethodStatus; _method_map[md->full_name()] = mp; @@ -27,17 +27,21 @@ index 2087cbcf..7aede561 100644 + secondary_method_name.append(secondary_full_name); + secondary_method_name.push_back('.'); + secondary_method_name.append(md->name()); -+ _method_map[secondary_method_name] = mp; ++ MethodProperty secondary_mp = mp; ++ secondary_mp.own_method_status = false; ++ _method_map[secondary_method_name] = secondary_mp; + } if (is_idl_support && sd->name() != sd->full_name()/*has ns*/) { MethodProperty mp2 = mp; mp2.own_method_status = false; -@@ -1306,6 +1322,9 @@ int Server::AddServiceInternal(google::protobuf::Service* service, +@@ -1306,6 +1324,11 @@ int Server::AddServiceInternal(google::protobuf::Service* service, is_builtin_service, svc_opt.ownership, service, NULL }; _fullname_service_map[sd->full_name()] = ss; _service_map[sd->name()] = ss; + if (!secondary_full_name.empty()) { -+ _fullname_service_map[secondary_full_name] = ss; ++ ServiceProperty secondary_ss = ss; ++ secondary_ss.ownership = SERVER_DOESNT_OWN_SERVICE; ++ _fullname_service_map[secondary_full_name] = secondary_ss; + } if (is_builtin_service) { ++_builtin_service_count;